diff options
| author | Vollstrecker <werner@vollstreckernet.de> | 2025-12-30 14:29:38 +0100 |
|---|---|---|
| committer | Mark Adler <git@madler.net> | 2026-01-12 10:55:15 -0800 |
| commit | b74a346cbf6b9fac87ec2746a8c678bd0a65b7c8 (patch) | |
| tree | 4a99abd744e7598ff8202c6062438ccf8ee03178 | |
| parent | fa448d45d647442e0a769cdb14075872c2b39a63 (diff) | |
| download | zlib-b74a346cbf6b9fac87ec2746a8c678bd0a65b7c8.tar.gz zlib-b74a346cbf6b9fac87ec2746a8c678bd0a65b7c8.tar.bz2 zlib-b74a346cbf6b9fac87ec2746a8c678bd0a65b7c8.zip | |
CMake: Added contrib/ada.
| -rw-r--r-- | contrib/CMakeLists.txt | 8 | ||||
| -rw-r--r-- | contrib/ada/CMakeLists.txt | 214 | ||||
| -rw-r--r-- | contrib/ada/cmake/Modules/CMakeADACompiler.cmake.in | 23 | ||||
| -rw-r--r-- | contrib/ada/cmake/Modules/CMakeADAInformation.cmake | 149 | ||||
| -rw-r--r-- | contrib/ada/cmake/Modules/CMakeDetermineADACompiler.cmake | 33 | ||||
| -rw-r--r-- | contrib/ada/cmake/Modules/CMakeTestADACompiler.cmake | 46 | ||||
| -rw-r--r-- | contrib/ada/cmake/binder_helper.cmake | 41 | ||||
| -rw-r--r-- | contrib/ada/cmake/compile_helper.cmake | 32 | ||||
| -rw-r--r-- | contrib/ada/cmake/exe_link_helper.cmake | 53 | ||||
| -rw-r--r-- | contrib/ada/cmake/shared_link_helper.cmake | 52 | ||||
| -rw-r--r-- | contrib/ada/cmake/static_link_helper.cmake | 25 |
11 files changed, 676 insertions, 0 deletions
diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index 94e28757..cc4b3310 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt | |||
| @@ -1,5 +1,13 @@ | |||
| 1 | option(ZLIB_BUILD_ADA "Enable building of Ada bindings" OFF) | ||
| 1 | option(ZLIB_BUILD_MINIZIP "Enable building libminizip contrib library" OFF) | 2 | option(ZLIB_BUILD_MINIZIP "Enable building libminizip contrib library" OFF) |
| 2 | 3 | ||
| 4 | if(ZLIB_BUILD_ADA) | ||
| 5 | set(ZLIBADA_BUILD_SHARED ${ZLIB_BUILD_SHARED}) | ||
| 6 | set(ZLIBADA_BUILD_STATIC ${ZLIB_BUILD_STATIC}) | ||
| 7 | set(ZLIBADA_BUILD_TESTING ${ZLIB_BUILD_TESTING}) | ||
| 8 | add_subdirectory(ada/) | ||
| 9 | endif(ZLIB_BUILD_ADA) | ||
| 10 | |||
| 3 | if(ZLIB_BUILD_MINIZIP) | 11 | if(ZLIB_BUILD_MINIZIP) |
| 4 | set(MINIZIP_BUILD_SHARED ${ZLIB_BUILD_SHARED}) | 12 | set(MINIZIP_BUILD_SHARED ${ZLIB_BUILD_SHARED}) |
| 5 | set(MINIZIP_BUILD_STATIC ${ZLIB_BUILD_STATIC}) | 13 | set(MINIZIP_BUILD_STATIC ${ZLIB_BUILD_STATIC}) |
diff --git a/contrib/ada/CMakeLists.txt b/contrib/ada/CMakeLists.txt new file mode 100644 index 00000000..98f7b978 --- /dev/null +++ b/contrib/ada/CMakeLists.txt | |||
| @@ -0,0 +1,214 @@ | |||
| 1 | cmake_minimum_required(VERSION 3.12...3.31) | ||
| 2 | |||
| 3 | set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules") | ||
| 4 | |||
| 5 | project( | ||
| 6 | zlibAda | ||
| 7 | VERSION 1.0.0 | ||
| 8 | LANGUAGES ADA | ||
| 9 | DESCRIPTION "A library for creating zipfiles based in zlib" | ||
| 10 | HOMEPAGE_URL "https://www.zlib.net") | ||
| 11 | |||
| 12 | option(ZLIBADA_BUILD_SHARED "Enable building ada bindings shared library" ON) | ||
| 13 | option(ZLIBADA_BUILD_STATIC "Enable building ada bindings static library" ON) | ||
| 14 | option(ZLIBADA_BUILD_TESTING "Enable building tests for ada bindings library" ON) | ||
| 15 | |||
| 16 | if(WIN32 OR CYGWIN) | ||
| 17 | set(zlibAda_static_suffix "s") | ||
| 18 | set(CMAKE_DEBUG_POSTFIX "d") | ||
| 19 | endif(WIN32 OR CYGWIN) | ||
| 20 | |||
| 21 | if(NOT DEFINED ZLIB_BUILD_ADA) | ||
| 22 | if(ZLIBADA_BUILD_SHARED) | ||
| 23 | list(APPEND REQUIRED_COMPONENTS "shared") | ||
| 24 | endif(ZLIBADA_BUILD_SHARED) | ||
| 25 | |||
| 26 | if(ZLIBADA_BUILD_STATIC) | ||
| 27 | list(APPEND REQUIRED_COMPONENTS "static") | ||
| 28 | endif(ZLIB_BUILD_STATIC) | ||
| 29 | |||
| 30 | find_package(ZLIB REQUIRED COMPONENTS ${REQUIRED_COMPONENTS} CONFIG) | ||
| 31 | endif(NOT DEFINED ZLIB_BUILD_ADA) | ||
| 32 | |||
| 33 | function(ZLIBADA_findTestEnv testName) | ||
| 34 | set(testEnv "PATH=") | ||
| 35 | |||
| 36 | if(MSVC OR MINGW) | ||
| 37 | set(separator "\\\;") | ||
| 38 | else() | ||
| 39 | set(separator ":") | ||
| 40 | endif() | ||
| 41 | |||
| 42 | string(APPEND testEnv "$<TARGET_FILE_DIR:ZLIB::ZLIB>${separator}") | ||
| 43 | string(APPEND testEnv "$ENV{PATH}") | ||
| 44 | |||
| 45 | set_tests_properties(${testName} PROPERTIES ENVIRONMENT "${testEnv}") | ||
| 46 | endfunction(ZLIBADA_findTestEnv testName) | ||
| 47 | |||
| 48 | if(ZLIBADA_BUILD_SHARED) | ||
| 49 | ada_add_library(zlib-Ada SHARED | ||
| 50 | zlib-thin.adb | ||
| 51 | zlib.adb) | ||
| 52 | |||
| 53 | target_link_libraries(zlib-Ada | ||
| 54 | INTERFACE ZLIB::ZLIB) | ||
| 55 | |||
| 56 | ada_add_library(zlib-streams SHARED | ||
| 57 | zlib-streams.adb) | ||
| 58 | |||
| 59 | target_link_libraries(zlib-streams | ||
| 60 | PUBLIC | ||
| 61 | zlib-Ada) | ||
| 62 | |||
| 63 | ada_find_ali(zlib-streams) | ||
| 64 | |||
| 65 | if(ZLIBADA_BUILD_TESTING) | ||
| 66 | enable_testing() | ||
| 67 | ada_add_executable(ada-test test.adb) | ||
| 68 | |||
| 69 | target_link_libraries(ada-test | ||
| 70 | PRIVATE | ||
| 71 | zlib-Ada | ||
| 72 | zlib-streams) | ||
| 73 | |||
| 74 | ada_find_ali(ada-test) | ||
| 75 | |||
| 76 | add_test(NAME zlibAda_ada-test COMMAND ada-test) | ||
| 77 | set_tests_properties(zlibAda_ada-test PROPERTIES FIXTURES_REQUIRED ada_cleanup) | ||
| 78 | |||
| 79 | if(MSVC | ||
| 80 | OR MSYS | ||
| 81 | OR MINGW | ||
| 82 | OR CYGWIN) | ||
| 83 | zlibada_findtestenv(zlibAda_ada-test) | ||
| 84 | endif( | ||
| 85 | MSVC | ||
| 86 | OR MSYS | ||
| 87 | OR MINGW | ||
| 88 | OR CYGWIN) | ||
| 89 | |||
| 90 | ada_add_executable(buffer_demo buffer_demo.adb) | ||
| 91 | |||
| 92 | target_link_libraries(buffer_demo | ||
| 93 | PRIVATE | ||
| 94 | zlib-Ada) | ||
| 95 | |||
| 96 | ada_find_ali(buffer_demo) | ||
| 97 | |||
| 98 | add_test(NAME zlibAda_buffer-demo COMMAND buffer_demo) | ||
| 99 | |||
| 100 | if(MSVC | ||
| 101 | OR MSYS | ||
| 102 | OR MINGW | ||
| 103 | OR CYGWIN) | ||
| 104 | zlibada_findtestenv(zlibAda_buffer-demo) | ||
| 105 | endif( | ||
| 106 | MSVC | ||
| 107 | OR MSYS | ||
| 108 | OR MINGW | ||
| 109 | OR CYGWIN) | ||
| 110 | |||
| 111 | ada_add_executable(mtest mtest.adb) | ||
| 112 | |||
| 113 | target_link_libraries(mtest | ||
| 114 | PRIVATE | ||
| 115 | zlib-Ada) | ||
| 116 | |||
| 117 | ada_find_ali(mtest) | ||
| 118 | |||
| 119 | #Not adding test as this is an endless-loop | ||
| 120 | |||
| 121 | ada_add_executable(read read.adb) | ||
| 122 | |||
| 123 | target_link_libraries(read | ||
| 124 | PRIVATE | ||
| 125 | zlib-Ada) | ||
| 126 | |||
| 127 | ada_find_ali(read) | ||
| 128 | |||
| 129 | add_test(NAME zlibAda_read COMMAND read) | ||
| 130 | |||
| 131 | if(MSVC | ||
| 132 | OR MSYS | ||
| 133 | OR MINGW | ||
| 134 | OR CYGWIN) | ||
| 135 | zlibada_findtestenv(zlibAda_read) | ||
| 136 | endif( | ||
| 137 | MSVC | ||
| 138 | OR MSYS | ||
| 139 | OR MINGW | ||
| 140 | OR CYGWIN) | ||
| 141 | endif(ZLIBADA_BUILD_TESTING) | ||
| 142 | endif(ZLIBADA_BUILD_SHARED) | ||
| 143 | |||
| 144 | if(ZLIBADA_BUILD_STATIC) | ||
| 145 | ada_add_library(zlib-AdaStatic STATIC | ||
| 146 | zlib-thin.adb | ||
| 147 | zlib.adb) | ||
| 148 | |||
| 149 | target_link_libraries(zlib-AdaStatic | ||
| 150 | INTERFACE ZLIB::ZLIBSTATIC) | ||
| 151 | |||
| 152 | set_target_properties(zlib-AdaStatic | ||
| 153 | PROPERTIES OUTPUT_NAME zlib-Ada${zlibAda_static_suffix}) | ||
| 154 | |||
| 155 | ada_add_library(zlib-streamsStatic STATIC | ||
| 156 | zlib-streams.adb) | ||
| 157 | |||
| 158 | target_link_libraries(zlib-streamsStatic | ||
| 159 | PUBLIC | ||
| 160 | zlib-AdaStatic) | ||
| 161 | |||
| 162 | ada_find_ali(zlib-streamsStatic) | ||
| 163 | |||
| 164 | if(ZLIBADA_BUILD_TESTING) | ||
| 165 | enable_testing() | ||
| 166 | ada_add_executable(ada-testStatic test.adb) | ||
| 167 | |||
| 168 | target_link_libraries(ada-testStatic | ||
| 169 | PRIVATE | ||
| 170 | zlib-AdaStatic | ||
| 171 | zlib-streamsStatic) | ||
| 172 | |||
| 173 | ada_find_ali(ada-testStatic) | ||
| 174 | |||
| 175 | add_test(NAME zlibAda_ada-testStatic COMMAND ada-testStatic) | ||
| 176 | set_tests_properties(zlibAda_ada-testStatic PROPERTIES FIXTURES_REQUIRED ada_cleanup) | ||
| 177 | |||
| 178 | ada_add_executable(buffer_demoStatic buffer_demo.adb) | ||
| 179 | |||
| 180 | target_link_libraries(buffer_demoStatic | ||
| 181 | PRIVATE | ||
| 182 | zlib-AdaStatic) | ||
| 183 | |||
| 184 | ada_find_ali(buffer_demoStatic) | ||
| 185 | |||
| 186 | add_test(NAME zlibAda-buffer-demoStatic COMMAND buffer_demoStatic) | ||
| 187 | |||
| 188 | ada_add_executable(mtestStatic mtest.adb) | ||
| 189 | |||
| 190 | target_link_libraries(mtestStatic | ||
| 191 | PRIVATE | ||
| 192 | zlib-AdaStatic) | ||
| 193 | |||
| 194 | ada_find_ali(mtestStatic) | ||
| 195 | |||
| 196 | # Not adding test as this is an endless-loop | ||
| 197 | |||
| 198 | ada_add_executable(readStatic read.adb) | ||
| 199 | |||
| 200 | target_link_libraries(readStatic | ||
| 201 | PRIVATE | ||
| 202 | zlib-AdaStatic) | ||
| 203 | |||
| 204 | ada_find_ali(readStatic) | ||
| 205 | |||
| 206 | add_test(NAME zlibAda_readStatic COMMAND readStatic) | ||
| 207 | endif(ZLIBADA_BUILD_TESTING) | ||
| 208 | endif(ZLIBADA_BUILD_STATIC) | ||
| 209 | |||
| 210 | if(ZLIBADA_BUILD_TESTING) | ||
| 211 | add_test(NAME zlibAda_cleanup COMMAND ${CMAKE_COMMAND} -E rm ${CMAKE_CURRENT_BINARY_DIR}/testzlib.in | ||
| 212 | ${CMAKE_CURRENT_BINARY_DIR}/testzlib.out ${CMAKE_CURRENT_BINARY_DIR}/testzlib.zlb) | ||
| 213 | set_tests_properties(zlibAda_cleanup PROPERTIES FIXTURES_CLEANUP ada_cleanup) | ||
| 214 | endif(ZLIBADA_BUILD_TESTING) | ||
diff --git a/contrib/ada/cmake/Modules/CMakeADACompiler.cmake.in b/contrib/ada/cmake/Modules/CMakeADACompiler.cmake.in new file mode 100644 index 00000000..a3a4086b --- /dev/null +++ b/contrib/ada/cmake/Modules/CMakeADACompiler.cmake.in | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | set(CMAKE_ADA_COMPILER "@CMAKE_ADA_COMPILER@") | ||
| 2 | set(CMAKE_ADA_COMPILER_ARG1 "@CMAKE_ADA_COMPILER_ARG1@") | ||
| 3 | set(CMAKE_ADA_COMPILER_ID "@CMAKE_ADA_COMPILER_ID@") | ||
| 4 | set(CMAKE_ADA_COMPILER_VERSION "@CMAKE_ADA_COMPILER_VERSION@") | ||
| 5 | set(CMAKE_ADA_PLATFORM_ID "@CMAKE_ADA_PLATFORM_ID@") | ||
| 6 | set(CMAKE_AR "@CMAKE_AR@") | ||
| 7 | #set(CMAKE_RANLIB "@CMAKE_RANLIB@") | ||
| 8 | #set(CMAKE_LINKER "@CMAKE_LINKER@") | ||
| 9 | set(CMAKE_ADA_COMPILER_LOADED TRUE) | ||
| 10 | set(CMAKE_ADA_COMPILER_WORKS @CMAKE_ADA_COMPILER_WORKS@) | ||
| 11 | #set(CMAKE_ADA_ABI_COMPILED @CMAKE_ADA_ABI_COMPILED@) | ||
| 12 | |||
| 13 | set(CMAKE_ADA_COMPILER_ENV_VAR "ADA") | ||
| 14 | |||
| 15 | set(CMAKE_ADA_COMPILER_ID_RUN TRUE) | ||
| 16 | set(CMAKE_ADA_SOURCE_FILE_EXTENSIONS adb;ADB) | ||
| 17 | set(CMAKE_ADA_IGNORE_EXTENSIONS ;o;O;obj;OBJ;ali) | ||
| 18 | |||
| 19 | set(CMAKE_ADA_BINDER_HELPER "@CMAKE_ADA_BINDER_HELPER@") | ||
| 20 | set(CMAKE_ADA_COMPILER_HELPER "@CMAKE_ADA_COMPILER_HELPER@") | ||
| 21 | set(CMAKE_ADA_EXE_LINK_HELPER "@CMAKE_ADA_EXE_LINK_HELPER@") | ||
| 22 | set(CMAKE_ADA_SHARED_LINK_HELPER "@CMAKE_ADA_SHARED_LINK_HELPER@") | ||
| 23 | set(CMAKE_ADA_STATIC_LINK_HELPER "@CMAKE_ADA_STATIC_LINK_HELPER@") | ||
diff --git a/contrib/ada/cmake/Modules/CMakeADAInformation.cmake b/contrib/ada/cmake/Modules/CMakeADAInformation.cmake new file mode 100644 index 00000000..70755fa0 --- /dev/null +++ b/contrib/ada/cmake/Modules/CMakeADAInformation.cmake | |||
| @@ -0,0 +1,149 @@ | |||
| 1 | include(CMakeLanguageInformation) | ||
| 2 | |||
| 3 | set(CMAKE_ADA_OUTPUT_EXTENSION .o) | ||
| 4 | set(CMAKE_ADA_OUTPUT_EXTENSION_REPLACE TRUE) | ||
| 5 | |||
| 6 | if(CMAKE_USER_MAKE_RULES_OVERRIDE) | ||
| 7 | include(${CMAKE_USER_MAKE_RULES_OVERRIDE} RESULT_VARIABLE _override) | ||
| 8 | set(CMAKE_USER_MAKE_RULES_OVERRIDE "${_override}") | ||
| 9 | endif(CMAKE_USER_MAKE_RULES_OVERRIDE) | ||
| 10 | |||
| 11 | |||
| 12 | if(CMAKE_USER_MAKE_RULES_OVERRIDE_ADA) | ||
| 13 | include(${CMAKE_USER_MAKE_RULES_OVERRIDE_ADA} RESULT_VARIABLE _override) | ||
| 14 | set(CMAKE_USER_MAKE_RULES_OVERRIDE_ADA "${_override}") | ||
| 15 | endif(CMAKE_USER_MAKE_RULES_OVERRIDE_ADA) | ||
| 16 | |||
| 17 | set(CMAKE_ADA_FLAGS_INIT "$ENV{ADAFLAGS} ${CMAKE_ADA_FLAGS_INIT}") | ||
| 18 | |||
| 19 | string(APPEND CMAKE_ADA_FLAGS_INIT " ") | ||
| 20 | string(APPEND CMAKE_ADA_FLAGS_DEBUG_INIT " -g") | ||
| 21 | string(APPEND CMAKE_ADA_FLAGS_MINSIZEREL_INIT " -Os") | ||
| 22 | string(APPEND CMAKE_ADA_FLAGS_RELEASE_INIT " -O3") | ||
| 23 | string(APPEND CMAKE_ADA_FLAGS_RELWITHDEBINFO_INIT " -O2 -g") | ||
| 24 | |||
| 25 | cmake_initialize_per_config_variable(CMAKE_ADA_FLAGS "Flags used by the Ada compiler") | ||
| 26 | |||
| 27 | if(CMAKE_ADA_STANDARD_LIBRARIES_INIT) | ||
| 28 | set(CMAKE_ADA_STANDARD_LIBRARIES | ||
| 29 | "${CMAKE_ADA_STANDARD_LIBRARIES_INIT}" | ||
| 30 | CACHE | ||
| 31 | STRING "Libraries linked by default with all Ada applications.") | ||
| 32 | mark_as_advanced(CMAKE_ADA_STANDARD_LIBRARIES) | ||
| 33 | endif(CMAKE_ADA_STANDARD_LIBRARIES_INIT) | ||
| 34 | |||
| 35 | if(NOT CMAKE_ADA_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_ADA_COMPILER_LAUNCHER}) | ||
| 36 | set(CMAKE_ADA_COMPILER_LAUNCHER | ||
| 37 | "$ENV{CMAKE_ADA_COMPILER_LAUNCHER}" | ||
| 38 | CACHE | ||
| 39 | STRING "Compiler launcher for Ada.") | ||
| 40 | endif(NOT CMAKE_ADA_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_ADA_COMPILER_LAUNCHER}) | ||
| 41 | |||
| 42 | if(NOT CMAKE_ADA_LINKER_LAUNCHER AND DEFINED ENV{CMAKE_ADA_LINKER_LAUNCHER}) | ||
| 43 | set(CMAKE_ADA_LINKER_LAUNCHER | ||
| 44 | "$ENV{CMAKE_ADA_LINKER_LAUNCHER}" | ||
| 45 | CACHE | ||
| 46 | STRING "Linker launcher for Ada.") | ||
| 47 | endif(NOT CMAKE_ADA_LINKER_LAUNCHER AND DEFINED ENV{CMAKE_ADA_LINKER_LAUNCHER}) | ||
| 48 | |||
| 49 | include(CMakeCommonLanguageInclude) | ||
| 50 | _cmake_common_language_platform_flags(ADA) | ||
| 51 | |||
| 52 | if(NOT CMAKE_ADA_CREATE_SHARED_LIBRARY) | ||
| 53 | set(CMAKE_ADA_CREATE_SHARED_LIBRARY | ||
| 54 | "${CMAKE_ADA_BINDER_HELPER} <CMAKE_ADA_COMPILER> <OBJECTS> FLAGS <FLAGS> <LINK_FLAGS>" | ||
| 55 | "${CMAKE_ADA_SHARED_LINK_HELPER} <CMAKE_ADA_COMPILER> <TARGET> <OBJECTS> <LINK_LIBRARIES>") | ||
| 56 | endif(NOT CMAKE_ADA_CREATE_SHARED_LIBRARY) | ||
| 57 | |||
| 58 | if(NOT CMAKE_ADA_CREATE_STATIC_LIBRARY) | ||
| 59 | set(CMAKE_ADA_CREATE_STATIC_LIBRARY | ||
| 60 | "${CMAKE_ADA_STATIC_LINK_HELPER} ${CMAKE_AR} <TARGET> <OBJECTS>") | ||
| 61 | endif(NOT CMAKE_ADA_CREATE_STATIC_LIBRARY) | ||
| 62 | # create a C shared module just copy the shared library rule | ||
| 63 | #if(NOT CMAKE_C_CREATE_SHARED_MODULE) | ||
| 64 | # set(CMAKE_C_CREATE_SHARED_MODULE ${CMAKE_C_CREATE_SHARED_LIBRARY}) | ||
| 65 | #endif() | ||
| 66 | |||
| 67 | # Create a static archive incrementally for large object file counts. | ||
| 68 | # If CMAKE_C_CREATE_STATIC_LIBRARY is set it will override these. | ||
| 69 | #if(NOT DEFINED CMAKE_C_ARCHIVE_CREATE) | ||
| 70 | # set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>") | ||
| 71 | #endif() | ||
| 72 | #if(NOT DEFINED CMAKE_C_ARCHIVE_APPEND) | ||
| 73 | # set(CMAKE_C_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>") | ||
| 74 | #endif() | ||
| 75 | #if(NOT DEFINED CMAKE_C_ARCHIVE_FINISH) | ||
| 76 | # set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>") | ||
| 77 | #endif() | ||
| 78 | |||
| 79 | if(NOT CMAKE_ADA_COMPILE_OBJECT) | ||
| 80 | set(CMAKE_ADA_COMPILE_OBJECT | ||
| 81 | "${CMAKE_ADA_COMPILER_HELPER} <CMAKE_ADA_COMPILER> <OBJECT_DIR> <SOURCE> <FLAGS>") | ||
| 82 | endif(NOT CMAKE_ADA_COMPILE_OBJECT) | ||
| 83 | |||
| 84 | if(NOT CMAKE_ADA_LINK_EXECUTABLE) | ||
| 85 | set(CMAKE_ADA_LINK_EXECUTABLE | ||
| 86 | "${CMAKE_ADA_BINDER_HELPER} <CMAKE_ADA_COMPILER> <OBJECTS> FLAGS <FLAGS> <LINK_FLAGS>" | ||
| 87 | "${CMAKE_ADA_EXE_LINK_HELPER} <CMAKE_ADA_COMPILER> <TARGET> <FLAGS> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> OBJ <OBJECTS> LIBS <LINK_LIBRARIES>") | ||
| 88 | endif(NOT CMAKE_ADA_LINK_EXECUTABLE) | ||
| 89 | |||
| 90 | function(ada_add_executable) | ||
| 91 | if(ARGC GREATER 1) | ||
| 92 | math(EXPR last_index "${ARGC} - 1") | ||
| 93 | foreach(source RANGE 1 ${last_index}) | ||
| 94 | list(APPEND SOURCES ${ARGV${source}}) | ||
| 95 | string(REPLACE ".adb" "" ali "${ARGV${source}}") | ||
| 96 | set(clean_file "CMakeFiles/${ARGV0}.dir/${ali}.ali") | ||
| 97 | list(APPEND CLEAN_FILES ${clean_file}) | ||
| 98 | list(APPEND CLEAN_FILES b~${ali}.adb) | ||
| 99 | list(APPEND CLEAN_FILES b~${ali}.ads) | ||
| 100 | list(APPEND CLEAN_FILES b~${ali}.ali) | ||
| 101 | list(APPEND CLEAN_FILES b~${ali}.o) | ||
| 102 | endforeach(source RANGE 1 ${ARGC}) | ||
| 103 | |||
| 104 | add_executable(${ARGV0} ${ARGV1} ${SOURCES}) | ||
| 105 | |||
| 106 | set_target_properties(${ARGV0} | ||
| 107 | PROPERTIES | ||
| 108 | ADDITIONAL_CLEAN_FILES "${CLEAN_FILES}") | ||
| 109 | endif(ARGC GREATER 1) | ||
| 110 | endfunction(ada_add_executable) | ||
| 111 | |||
| 112 | function(ada_add_library) | ||
| 113 | if(ARGC GREATER 2) | ||
| 114 | math(EXPR last_index "${ARGC} - 1") | ||
| 115 | foreach(source RANGE 2 ${last_index}) | ||
| 116 | list(APPEND SOURCES ${ARGV${source}}) | ||
| 117 | string(REPLACE ".adb" "" ali "${ARGV${source}}") | ||
| 118 | set(clean_file "CMakeFiles/${ARGV0}.dir/${ali}.ali") | ||
| 119 | list(APPEND CLEAN_FILES ${clean_file}) | ||
| 120 | list(APPEND CLEAN_FILES b~${ali}.adb) | ||
| 121 | list(APPEND CLEAN_FILES b~${ali}.ads) | ||
| 122 | list(APPEND CLEAN_FILES b~${ali}.ali) | ||
| 123 | list(APPEND CLEAN_FILES b~${ali}.o) | ||
| 124 | endforeach(source RANGE 2 ${ARGC}) | ||
| 125 | |||
| 126 | add_library(${ARGV0} ${ARGV1} ${SOURCES}) | ||
| 127 | |||
| 128 | set_target_properties(${ARGV0} | ||
| 129 | PROPERTIES | ||
| 130 | ADDITIONAL_CLEAN_FILES "${CLEAN_FILES};dummylib.adb;dummylib.ali;dummylib.o" | ||
| 131 | ALI_FLAG "-aO${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${ARGV0}.dir/") | ||
| 132 | endif(ARGC GREATER 2) | ||
| 133 | endfunction(ada_add_library) | ||
| 134 | |||
| 135 | function(ada_find_ali) | ||
| 136 | get_target_property(link_libs ${ARGV0} LINK_LIBRARIES) | ||
| 137 | |||
| 138 | foreach(lib IN LISTS link_libs) | ||
| 139 | get_target_property(ali ${lib} ALI_FLAG) | ||
| 140 | string(APPEND FLAGS ${ali} " ") | ||
| 141 | unset(ali) | ||
| 142 | endforeach(lib IN LISTS link_libs) | ||
| 143 | |||
| 144 | set_target_properties(${ARGV0} | ||
| 145 | PROPERTIES | ||
| 146 | LINK_FLAGS ${FLAGS}) | ||
| 147 | endfunction(ada_find_ali) | ||
| 148 | |||
| 149 | set(CMAKE_ADA_INFORMATION_LOADED TRUE) | ||
diff --git a/contrib/ada/cmake/Modules/CMakeDetermineADACompiler.cmake b/contrib/ada/cmake/Modules/CMakeDetermineADACompiler.cmake new file mode 100644 index 00000000..1562a6c9 --- /dev/null +++ b/contrib/ada/cmake/Modules/CMakeDetermineADACompiler.cmake | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake) | ||
| 2 | |||
| 3 | # Load system-specific compiler preferences for this language. | ||
| 4 | include(Platform/${CMAKE_SYSTEM_NAME}-Determine-Ada OPTIONAL) | ||
| 5 | include(Platform/${CMAKE_SYSTEM_NAME}-Ada OPTIONAL) | ||
| 6 | |||
| 7 | if(NOT CMAKE_ADA_COMPILER_NAMES) | ||
| 8 | set(CMAKE_ADA_COMPILER_NAMES gnat) | ||
| 9 | |||
| 10 | foreach(ver RANGE 11 99) | ||
| 11 | list(APPEND CMAKE_ADA_COMPILER_NAMES gnat-${ver}) | ||
| 12 | endforeach(ver RANGE 11 99) | ||
| 13 | endif(NOT CMAKE_ADA_COMPILER_NAMES) | ||
| 14 | |||
| 15 | if(NOT CMAKE_ADA_COMPILER) | ||
| 16 | set(CMAKE_ADA_COMPILER_INIT NOTFOUND) | ||
| 17 | _cmake_find_compiler(ADA) | ||
| 18 | else(NOT CMAKE_REAL_ADA_COMPILER) | ||
| 19 | _cmake_find_compiler_path(ADA) | ||
| 20 | endif(NOT CMAKE_ADA_COMPILER) | ||
| 21 | |||
| 22 | mark_as_advanced(CMAKE_ADA_COMPILER) | ||
| 23 | set(CMAKE_ADA_COMPILER_ID "GNU") | ||
| 24 | set(CMAKE_ADA_BINDER_HELPER "${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/binder_helper.cmake") | ||
| 25 | set(CMAKE_ADA_COMPILER_HELPER "${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compile_helper.cmake") | ||
| 26 | set(CMAKE_ADA_EXE_LINK_HELPER "${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/exe_link_helper.cmake") | ||
| 27 | set(CMAKE_ADA_SHARED_LINK_HELPER "${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/shared_link_helper.cmake") | ||
| 28 | set(CMAKE_ADA_STATIC_LINK_HELPER "${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/static_link_helper.cmake") | ||
| 29 | |||
| 30 | configure_file( | ||
| 31 | ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/CMakeADACompiler.cmake.in | ||
| 32 | ${CMAKE_PLATFORM_INFO_DIR}/CMakeADACompiler.cmake | ||
| 33 | @ONLY) | ||
diff --git a/contrib/ada/cmake/Modules/CMakeTestADACompiler.cmake b/contrib/ada/cmake/Modules/CMakeTestADACompiler.cmake new file mode 100644 index 00000000..889c93c0 --- /dev/null +++ b/contrib/ada/cmake/Modules/CMakeTestADACompiler.cmake | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | include(CMakeTestCompilerCommon) | ||
| 2 | unset(CMAKE_ADA_COMPILER_WORKS CACHE) | ||
| 3 | |||
| 4 | if(NOT CMAKE_ADA_COMPILER_WORKS) | ||
| 5 | PrintTestCompilerStatus("ADA" "") | ||
| 6 | set(_ADA_TEST_FILE "${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/CMakeTmp/main.adb") | ||
| 7 | |||
| 8 | file(WRITE ${_ADA_TEST_FILE} | ||
| 9 | "with Ada.Text_IO; use Ada.Text_IO;\n" | ||
| 10 | "\n" | ||
| 11 | "procedure main is\n" | ||
| 12 | "begin\n" | ||
| 13 | "Put_Line(\"Hello, World!\");\n" | ||
| 14 | "end Main;\n") | ||
| 15 | |||
| 16 | try_compile(CMAKE_ADA_COMPILER_WORKS ${CMAKE_BINARY_DIR} | ||
| 17 | ${_ADA_TEST_FILE} | ||
| 18 | OUTPUT_VARIABLE __CMAKE_ADA_COMPILER_OUTPUT) | ||
| 19 | |||
| 20 | set(CMAKE_ADA_COMPILER_WORKS ${CMAKE_ADA_COMPILER_WORKS}) | ||
| 21 | unset(CMAKE_ADA_COMPILER_WORKS CACHE) | ||
| 22 | set(ADA_TEST_WAS_RUN TRUE) | ||
| 23 | endif(NOT CMAKE_ADA_COMPILER_WORKS) | ||
| 24 | |||
| 25 | if(NOT CMAKE_ADA_COMPILER_WORKS) | ||
| 26 | PrintTestCompilerStatus("ADA" " -- broken") | ||
| 27 | |||
| 28 | file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log | ||
| 29 | "Determining if the Ada compiler works failed with " | ||
| 30 | "the following output:\n${__CMAKE_ADA_COMPILER_OUTPUT}\n\n") | ||
| 31 | |||
| 32 | message(FATAL_ERROR "The Ada compiler \"${CMAKE_ADA_COMPILER}\" " | ||
| 33 | "is not able to compile a simple test program.\nIt fails " | ||
| 34 | "with the following output:\n ${__CMAKE_ADA_COMPILER_OUTPUT}\n\n" | ||
| 35 | "CMake will not be able to correctly generate this project.") | ||
| 36 | else(NOT CMAKE_ADA_COMPILER_WORKS) | ||
| 37 | if(ADA_TEST_WAS_RUN) | ||
| 38 | PrintTestCompilerStatus("ADA" " -- works") | ||
| 39 | |||
| 40 | file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log | ||
| 41 | "Determining if the Ada compiler works passed with " | ||
| 42 | "the following output:\n${__CMAKE_ADA_COMPILER_OUTPUT}\n\n") | ||
| 43 | endif(ADA_TEST_WAS_RUN) | ||
| 44 | endif(NOT CMAKE_ADA_COMPILER_WORKS) | ||
| 45 | |||
| 46 | unset(__CMAKE_ADA_COMPILER_OUTPUT) | ||
diff --git a/contrib/ada/cmake/binder_helper.cmake b/contrib/ada/cmake/binder_helper.cmake new file mode 100644 index 00000000..cc70d7ce --- /dev/null +++ b/contrib/ada/cmake/binder_helper.cmake | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | #CMAKE_ARGV0 = /path/to/cmake | ||
| 2 | #CMAKE_ARGV1 = -P | ||
| 3 | #CMAKE_ARGV2 = path/to/this/file | ||
| 4 | #CMAKE_ARGV3 = binder | ||
| 5 | #CMAKE_ARGV4 = ali | ||
| 6 | |||
| 7 | if(NOT CMAKE_ARGV3) | ||
| 8 | message(FATAL_ERROR "binder not set") | ||
| 9 | endif(NOT CMAKE_ARGV3) | ||
| 10 | |||
| 11 | string(REPLACE ".o" ".ali" ALI ${CMAKE_ARGV4}) | ||
| 12 | |||
| 13 | set (REACHED_FLAGS FALSE) | ||
| 14 | #iterate over additional objects, only the main one is needed | ||
| 15 | foreach(arg RANGE 5 ${CMAKE_ARGC}) | ||
| 16 | if(CMAKE_ARGV${arg} STREQUAL FLAGS) | ||
| 17 | set(REACHED_FLAGS TRUE) | ||
| 18 | continue() | ||
| 19 | endif(CMAKE_ARGV${arg} STREQUAL FLAGS) | ||
| 20 | |||
| 21 | if(REACHED_FLAGS) | ||
| 22 | list(APPEND FLAGS ${CMAKE_ARGV${arg}}) | ||
| 23 | endif(REACHED_FLAGS) | ||
| 24 | endforeach(arg RANGE 5 CMAKE_ARGC) | ||
| 25 | |||
| 26 | #first see if there is a main function | ||
| 27 | execute_process(COMMAND ${CMAKE_ARGV3} bind ${ALI} ${FLAGS} | ||
| 28 | RESULT_VARIABLE MAIN_RESULT | ||
| 29 | OUTPUT_VARIABLE dont_care | ||
| 30 | ERROR_VARIABLE ERROR) | ||
| 31 | |||
| 32 | if(MAIN_RESULT) | ||
| 33 | execute_process(COMMAND ${CMAKE_ARGV3} bind -n ${ALI} ${FLAGS} | ||
| 34 | RESULT_VARIABLE RESULT | ||
| 35 | OUTPUT_VARIABLE dont_care | ||
| 36 | ERROR_VARIABLE ERROR) | ||
| 37 | endif(MAIN_RESULT) | ||
| 38 | |||
| 39 | if(RESULT) | ||
| 40 | message(FATAL_ERROR ${RESULT} ${ERROR}) | ||
| 41 | endif(RESULT) | ||
diff --git a/contrib/ada/cmake/compile_helper.cmake b/contrib/ada/cmake/compile_helper.cmake new file mode 100644 index 00000000..fe4821e3 --- /dev/null +++ b/contrib/ada/cmake/compile_helper.cmake | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | #CMAKE_ARGV0 = /path/to/cmake | ||
| 2 | #CMAKE_ARGV1 = -P | ||
| 3 | #CMAKE_ARGV2 = path/to/this/file | ||
| 4 | #CMAKE_ARGV3 = compiler | ||
| 5 | #CMAKE_ARGV4 = OBJECT-DIR | ||
| 6 | #CMAKE_ARGV5 = source-file | ||
| 7 | |||
| 8 | if(NOT CMAKE_ARGV3) | ||
| 9 | message(FATAL_ERROR "compiler not set") | ||
| 10 | endif(NOT CMAKE_ARGV3) | ||
| 11 | |||
| 12 | if(NOT CMAKE_ARGV4) | ||
| 13 | message(FATAL_ERROR "object dir not set") | ||
| 14 | endif(NOT CMAKE_ARGV4) | ||
| 15 | |||
| 16 | if(NOT CMAKE_ARGV5) | ||
| 17 | message(FATAL_ERROR "source not set") | ||
| 18 | endif(NOT CMAKE_ARGV5) | ||
| 19 | |||
| 20 | foreach(arg RANGE 6 ${CMAKE_ARGC}) | ||
| 21 | list(APPEND FLAGS "${CMAKE_ARGV${arg}}") | ||
| 22 | endforeach(arg RANGE 6 ${CMAKE_ARGC}) | ||
| 23 | |||
| 24 | execute_process(COMMAND ${CMAKE_ARGV3} compile ${FLAGS} ${CMAKE_ARGV5} | ||
| 25 | WORKING_DIRECTORY ${CMAKE_ARGV4} | ||
| 26 | RESULT_VARIABLE RESULT | ||
| 27 | OUTPUT_VARIABLE dont_care | ||
| 28 | ERROR_VARIABLE ERROR) | ||
| 29 | |||
| 30 | if(RESULT) | ||
| 31 | message(FATAL_ERROR ${RESULT} ${ERROR}) | ||
| 32 | endif(RESULT) | ||
diff --git a/contrib/ada/cmake/exe_link_helper.cmake b/contrib/ada/cmake/exe_link_helper.cmake new file mode 100644 index 00000000..79378909 --- /dev/null +++ b/contrib/ada/cmake/exe_link_helper.cmake | |||
| @@ -0,0 +1,53 @@ | |||
| 1 | #CMAKE_ARGV0 = /path/to/cmake | ||
| 2 | #CMAKE_ARGV1 = -P | ||
| 3 | #CMAKE_ARGV2 = path/to/this/file | ||
| 4 | #CMAKE_ARGV3 = linker | ||
| 5 | #CMAKE_ARGV4 = output-name | ||
| 6 | #CMAKE_ARGV5...CMAKE_AGVN = OBJECTS | ||
| 7 | #CMAKE_ARGVN+1 = LIBS | ||
| 8 | #CMAKE_ARGVN+2...CMAKE_ARGVM libraries | ||
| 9 | |||
| 10 | if(NOT CMAKE_ARGV3) | ||
| 11 | message(FATAL_ERROR "linker not set") | ||
| 12 | endif(NOT CMAKE_ARGV3) | ||
| 13 | |||
| 14 | set(REACHED_LIBS FALSE) | ||
| 15 | set(REACHED_OBJ FALSE) | ||
| 16 | foreach(arg RANGE 5 ${CMAKE_ARGC}) | ||
| 17 | if(CMAKE_ARGV${arg} STREQUAL LIBS) | ||
| 18 | set(REACHED_LIBS TRUE) | ||
| 19 | set(REACHED_OBJ FALSE) | ||
| 20 | continue() | ||
| 21 | endif(CMAKE_ARGV${arg} STREQUAL LIBS) | ||
| 22 | |||
| 23 | if(CMAKE_ARGV${arg} STREQUAL OBJ) | ||
| 24 | set(REACHED_LIBS FALSE) | ||
| 25 | set(REACHED_OBJ TRUE) | ||
| 26 | continue() | ||
| 27 | endif(CMAKE_ARGV${arg} STREQUAL OBJ) | ||
| 28 | |||
| 29 | if(CMAKE_ARGC EQUAL arg) | ||
| 30 | continue() | ||
| 31 | endif(CMAKE_ARGC EQUAL arg) | ||
| 32 | |||
| 33 | if(REACHED_LIBS) | ||
| 34 | list(APPEND LIBS "${CMAKE_ARGV${arg}}") | ||
| 35 | elseif(REACHED_OBJ AND NOT ALI) | ||
| 36 | string(REPLACE ".o" ".ali" ALI "${CMAKE_ARGV${arg}}") | ||
| 37 | else(REACHED_LIBS) | ||
| 38 | string(SUBSTRING "${CMAKE_ARGV${arg}}" 0 3 start) | ||
| 39 | |||
| 40 | if(NOT start STREQUAL -aO) | ||
| 41 | list(APPEND FLAGS "${CMAKE_ARGV${arg}}") | ||
| 42 | endif(NOT start STREQUAL -aO) | ||
| 43 | endif(REACHED_LIBS) | ||
| 44 | endforeach(arg RANGE 5 ${CMAKE_ARGC}) | ||
| 45 | |||
| 46 | execute_process(COMMAND ${CMAKE_ARGV3} link ${ALI} -o ${CMAKE_ARGV4} ${FLAGS} ${OTHER_OBJECTS} ${LIBS} | ||
| 47 | RESULT_VARIABLE RESULT | ||
| 48 | OUTPUT_VARIABLE dont_care | ||
| 49 | ERROR_VARIABLE ERROR) | ||
| 50 | |||
| 51 | if(RESULT) | ||
| 52 | message(FATAL_ERROR ${RESULT} ${ERROR}) | ||
| 53 | endif(RESULT) | ||
diff --git a/contrib/ada/cmake/shared_link_helper.cmake b/contrib/ada/cmake/shared_link_helper.cmake new file mode 100644 index 00000000..baea9a1a --- /dev/null +++ b/contrib/ada/cmake/shared_link_helper.cmake | |||
| @@ -0,0 +1,52 @@ | |||
| 1 | #CMAKE_ARGV0 = /path/to/cmake | ||
| 2 | #CMAKE_ARGV1 = -P | ||
| 3 | #CMAKE_ARGV2 = path/to/this/file | ||
| 4 | #CMAKE_ARGV3 = linker | ||
| 5 | #CMAKE_ARGV4 = output-name | ||
| 6 | #CMAKE_ARGV5...CMAKE_AGVN = OBJECTS | ||
| 7 | #CMAKE_ARGVN+1 = LIBS | ||
| 8 | #CMAKE_ARGVN+2...CMAKE_ARGVM libraries | ||
| 9 | |||
| 10 | if(NOT CMAKE_ARGV3) | ||
| 11 | message(FATAL_ERROR "linker not set") | ||
| 12 | endif(NOT CMAKE_ARGV3) | ||
| 13 | |||
| 14 | set(REACHED_FILES FALSE) | ||
| 15 | foreach(arg RANGE 5 ${CMAKE_ARGC}) | ||
| 16 | if(CMAKE_ARGV${arg} STREQUAL "LIBS") | ||
| 17 | set(REACHED_FILES TRUE) | ||
| 18 | continue() | ||
| 19 | endif(CMAKE_ARGV${arg} STREQUAL "LIBS") | ||
| 20 | |||
| 21 | if(CMAKE_ARGC EQUAL arg) | ||
| 22 | continue() | ||
| 23 | endif(CMAKE_ARGC EQUAL arg) | ||
| 24 | |||
| 25 | if(REACHED_LIBS) | ||
| 26 | list(APPEND LIBS "${CMAKE_ARGV${arg}} ") | ||
| 27 | else(REACHED_LIBS) | ||
| 28 | list(APPEND OBJECT_FILES "${CMAKE_ARGV${arg}}") | ||
| 29 | endif(REACHED_LIBS) | ||
| 30 | endforeach(arg RANGE 5 ${CMAKE_ARGC}) | ||
| 31 | |||
| 32 | file(WRITE dummylib.adb | ||
| 33 | "procedure dummylib is\n" | ||
| 34 | "begin\n" | ||
| 35 | " null;\n" | ||
| 36 | "end;\n") | ||
| 37 | |||
| 38 | execute_process(COMMAND ${CMAKE_ARGV3} compile -fPIC dummylib.adb | ||
| 39 | OUTPUT_VARIABLE dont_care | ||
| 40 | ERROR_VARIABLE ERROR) | ||
| 41 | execute_process(COMMAND ${CMAKE_ARGV3} bind -n dummylib.ali | ||
| 42 | OUTPUT_VARIABLE dont_care | ||
| 43 | ERROR_VARIABLE ERROR) | ||
| 44 | |||
| 45 | execute_process(COMMAND ${CMAKE_ARGV3} link -shared dummylib.ali -o ${CMAKE_ARGV4} ${OBJECT_FILES} ${LIBS} | ||
| 46 | RESULT_VARIABLE RESULT | ||
| 47 | OUTPUT_VARIABLE dont_care | ||
| 48 | ERROR_VARIABLE ERROR) | ||
| 49 | |||
| 50 | if(RESULT) | ||
| 51 | message(FATAL_ERROR ${RESULT} ${ERROR}) | ||
| 52 | endif(RESULT) | ||
diff --git a/contrib/ada/cmake/static_link_helper.cmake b/contrib/ada/cmake/static_link_helper.cmake new file mode 100644 index 00000000..eb3ff2bb --- /dev/null +++ b/contrib/ada/cmake/static_link_helper.cmake | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | #CMAKE_ARGV0 = /path/to/cmake | ||
| 2 | #CMAKE_ARGV1 = -P | ||
| 3 | #CMAKE_ARGV2 = path/to/this/file | ||
| 4 | #CMAKE_ARGV3 = path/to/ar | ||
| 5 | #CMAKE_ARGV4 = output-name | ||
| 6 | #CMAKE_ARGV5...CMAKE_AGVN = OBJECTS | ||
| 7 | |||
| 8 | if(NOT CMAKE_ARGV3) | ||
| 9 | message(FATAL_ERROR "linker not set") | ||
| 10 | endif(NOT CMAKE_ARGV3) | ||
| 11 | |||
| 12 | foreach(arg RANGE 5 ${CMAKE_ARGC}) | ||
| 13 | if(NOT CMAKE_ARGC EQUAL arg) | ||
| 14 | list(APPEND OBJECT_FILES "${CMAKE_ARGV${arg}}") | ||
| 15 | endif(NOT CMAKE_ARGC EQUAL arg) | ||
| 16 | endforeach(arg RANGE 6 ${CMAKE_ARGC}) | ||
| 17 | |||
| 18 | execute_process(COMMAND ${CMAKE_ARGV3} rcs ${CMAKE_ARGV4} ${OBJECT_FILES} | ||
| 19 | RESULT_VARIABLE RESULT | ||
| 20 | OUTPUT_VARIABLE dont_care | ||
| 21 | ERROR_VARIABLE ERROR) | ||
| 22 | |||
| 23 | if(RESULT) | ||
| 24 | message(FATAL_ERROR ${RESULT} ${ERROR}) | ||
| 25 | endif(RESULT) | ||
