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 63 if(NOT CMAKE_ADA_COMPILE_OBJECT) 64 set(CMAKE_ADA_COMPILE_OBJECT 65 "${CMAKE_ADA_COMPILER_HELPER} <CMAKE_ADA_COMPILER> <OBJECT_DIR> <SOURCE> <FLAGS>") 66 endif(NOT CMAKE_ADA_COMPILE_OBJECT) 67 68 if(NOT CMAKE_ADA_LINK_EXECUTABLE) 69 set(CMAKE_ADA_LINK_EXECUTABLE 70 "${CMAKE_ADA_BINDER_HELPER} <CMAKE_ADA_COMPILER> <OBJECTS> FLAGS <FLAGS> <LINK_FLAGS>" 71 "${CMAKE_ADA_EXE_LINK_HELPER} <CMAKE_ADA_COMPILER> <TARGET> <FLAGS> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> OBJ <OBJECTS> LIBS <LINK_LIBRARIES>") 72 endif(NOT CMAKE_ADA_LINK_EXECUTABLE) 73 74 function(ada_add_executable) 75 if(ARGC GREATER 1) 76 math(EXPR last_index "${ARGC} - 1") 77 foreach(source RANGE 1 ${last_index}) 78 list(APPEND SOURCES ${ARGV${source}}) 79 string(REPLACE ".adb" "" ali "${ARGV${source}}") 80 set(clean_file "CMakeFiles/${ARGV0}.dir/${ali}.ali") 81 list(APPEND CLEAN_FILES ${clean_file}) 82 list(APPEND CLEAN_FILES b~${ali}.adb) 83 list(APPEND CLEAN_FILES b~${ali}.ads) 84 list(APPEND CLEAN_FILES b~${ali}.ali) 85 list(APPEND CLEAN_FILES b~${ali}.o) 86 endforeach(source RANGE 1 ${ARGC}) 87 88 add_executable(${ARGV0} ${ARGV1} ${SOURCES}) 89 90 set_target_properties(${ARGV0} 91 PROPERTIES 92 ADDITIONAL_CLEAN_FILES "${CLEAN_FILES}") 93 endif(ARGC GREATER 1) 94 endfunction(ada_add_executable) 95 96 function(ada_add_library) 97 if(ARGC GREATER 2) 98 math(EXPR last_index "${ARGC} - 1") 99 foreach(source RANGE 2 ${last_index}) 100 list(APPEND SOURCES ${ARGV${source}}) 101 string(REPLACE ".adb" "" ali "${ARGV${source}}") 102 set(clean_file "CMakeFiles/${ARGV0}.dir/${ali}.ali") 103 list(APPEND CLEAN_FILES ${clean_file}) 104 list(APPEND CLEAN_FILES b~${ali}.adb) 105 list(APPEND CLEAN_FILES b~${ali}.ads) 106 list(APPEND CLEAN_FILES b~${ali}.ali) 107 list(APPEND CLEAN_FILES b~${ali}.o) 108 endforeach(source RANGE 2 ${ARGC}) 109 110 add_library(${ARGV0} ${ARGV1} ${SOURCES}) 111 112 set_target_properties(${ARGV0} 113 PROPERTIES 114 ADDITIONAL_CLEAN_FILES "${CLEAN_FILES};dummylib.adb;dummylib.ali;dummylib.o" 115 ALI_FLAG "-aO${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${ARGV0}.dir/") 116 endif(ARGC GREATER 2) 117 endfunction(ada_add_library) 118 119 function(ada_find_ali) 120 get_target_property(link_libs ${ARGV0} LINK_LIBRARIES) 121 122 foreach(lib IN LISTS link_libs) 123 get_target_property(ali ${lib} ALI_FLAG) 124 string(APPEND FLAGS ${ali} " ") 125 unset(ali) 126 endforeach(lib IN LISTS link_libs) 127 128 set_target_properties(${ARGV0} 129 PROPERTIES 130 LINK_FLAGS ${FLAGS}) 131 endfunction(ada_find_ali) 132 133 set(CMAKE_ADA_INFORMATION_LOADED TRUE) 134