1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
# src_lib/CMakeLists.txt
set(SOURCE_LIST
${CMAKE_CURRENT_SOURCE_DIR}/hello_1.adb
${CMAKE_CURRENT_SOURCE_DIR}/hello_1.ads
)
# These are Ada library information files built by gnat. I am not
# sure whether the name suffixes correspond to the *.adb or *.ads files
# above or the union of them. In any case, if any of the names change
# above, then this list will probably have to be changed as well.)
# N.B. the absolute location prefix of these files may have to be changed
# in the future since this is currently a CMake internal.
set(ALI_PREFIX
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/hello_1.dir
)
# This variable references the Ada library information file for the library.
# and is useful for cleaning and/or installing the *.ali files.
set(ALI_LIST
${ALI_PREFIX}/hello_1.ali
)
# CMake assumes compilation results only in object files being generated.
# However, gnatmake generates both object files and *.ali (Ada library
# information) files so it doesn't intrinsically know how to clean those
# additional *.ali files.
# Here is a workaround for this fundamental CMake limitation.
# Add generated .ali files to the list of additional files to be
# removed by make clean
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${ALI_LIST}")
add_library(hello_1 ${SOURCE_LIST})
# Link to GNAT_LIB to avoid underlinking the hello_1 library (which causes
# link errors on at least the Cygwin platform), but use
# the PRIVATE keyword (on all platforms) to avoid overlinking Ada applications
# that link to hello_1.
target_link_libraries(hello_1 PRIVATE ${GNAT_LIB})
if(USE_RPATH)
set_target_properties(
hello_1
PROPERTIES
INSTALL_RPATH "${LIB_INSTALL_RPATH}"
)
else(USE_RPATH)
set_target_properties(
hello_1
PROPERTIES
INSTALL_NAME_DIR "${LIB_DIR}"
)
endif(USE_RPATH)
set_target_properties(hello_1
PROPERTIES
SOVERSION 0
VERSION 0.0
OUTPUT_NAME hello
POSITION_INDEPENDENT_CODE ON
)
install(FILES ${SOURCE_LIST}
DESTINATION ${ADA_INCLUDE_DIR}
)
# Permissions of *.ali files in accordance with
# http://people.debian.org/~lbrenta/debian-ada-policy.html
install(FILES ${ALI_LIST}
DESTINATION ${ADA_LIB_DIR}
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
)
install(TARGETS hello_1
EXPORT export_test_ada
ARCHIVE DESTINATION ${LIB_DIR}
LIBRARY DESTINATION ${LIB_DIR}
RUNTIME DESTINATION ${BIN_DIR}
)
# This exports information for every target for the whole build that
# has the EXPORT export_test_ada signature for the
# install(TARGETS ...) command. The only such target in this test_ada
# project is the hello_1 target above.
install(EXPORT export_test_ada DESTINATION ${LIB_DIR}/cmake/test_ada)
# Install overall configuration file describing the above export
install(FILES test_adaConfig.cmake DESTINATION ${LIB_DIR}/cmake/test_ada)
|