Home | History | Annotate | Line # | Download | only in Modules
      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