1- cmake_minimum_required (VERSION 3.5 )
1+ cmake_minimum_required (VERSION 3.9 )
22set (CMAKE_CXX_STANDARD 11)
33project (aws-lambda-runtime
44 VERSION 0.2.4
55 LANGUAGES CXX)
66
77option (ENABLE_TESTS "Enables building the test project, requires AWS C++ SDK." OFF )
88
9- include (CheckCXXCompilerFlag)
10-
11- check_cxx_compiler_flag("-Wl,-flto" LTO_CAPABLE)
9+ include (CheckIPOSupported)
1210
1311add_library (${PROJECT_NAME}
1412 "src/logging.cpp"
@@ -17,12 +15,21 @@ add_library(${PROJECT_NAME}
1715 "${CMAKE_CURRENT_BINARY_DIR} /version.cpp"
1816 )
1917
20- set_target_properties (${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION} )
18+ set_target_properties (${PROJECT_NAME} PROPERTIES
19+ SOVERSION 0
20+ VERSION ${PROJECT_VERSION} )
2121
2222target_include_directories (${PROJECT_NAME} PUBLIC
2323 $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR} /include >
2424 $<INSTALL_INTERFACE:include >)
2525
26+ check_ipo_supported(RESULT has_lto OUTPUT lto_check_output)
27+ if (has_lto)
28+ set_property (TARGET ${PROJECT_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE )
29+ else ()
30+ message (WARNING "Link-time optimization (LTO) is not supported: ${lto_check_output} " )
31+ endif ()
32+
2633find_package (CURL REQUIRED)
2734if (CMAKE_VERSION VERSION_LESS 3.12)
2835 target_link_libraries (${PROJECT_NAME} PRIVATE ${CURL_LIBRARIES} )
@@ -36,6 +43,7 @@ target_compile_options(${PROJECT_NAME} PRIVATE
3643 "-fno-exceptions"
3744 "-fno-rtti"
3845 "-fvisibility=hidden"
46+ "-fvisibility-inlines-hidden"
3947 "-Wall"
4048 "-Wextra"
4149 "-Werror"
@@ -64,11 +72,6 @@ else ()
6472 target_compile_definitions (${PROJECT_NAME} PRIVATE "AWS_LAMBDA_LOG=0" )
6573endif ()
6674
67- if ((BUILD_SHARED_LIBS ) AND (LTO_CAPABLE))
68- target_compile_options (${PROJECT_NAME} PRIVATE "-flto" )
69- target_link_libraries (${PROJECT_NAME} PRIVATE "-flto" )
70- endif ()
71-
7275#tests
7376if (ENABLE_TESTS)
7477 enable_testing ()
@@ -81,6 +84,12 @@ configure_file(
8184 "${CMAKE_CURRENT_BINARY_DIR} /version.cpp"
8285 NEWLINE_STYLE LF)
8386
87+ include (CMakePackageConfigHelpers)
88+
89+ write_basic_package_version_file("${PROJECT_NAME} -config-version.cmake"
90+ VERSION ${PROJECT_VERSION}
91+ COMPATIBILITY SameMajorVersion)
92+
8493# installation
8594install (FILES "include/aws/http/response.h"
8695 DESTINATION "include/aws/http" )
@@ -94,11 +103,13 @@ install(FILES
94103install (FILES "include/aws/logging/logging.h"
95104 DESTINATION "include/aws/logging" )
96105
106+ include (GNUInstallDirs)
97107install (TARGETS ${PROJECT_NAME}
98108 EXPORT ${PROJECT_NAME} -targets
99- ARCHIVE DESTINATION lib
100- LIBRARY DESTINATION lib
101- RUNTIME DESTINATION bin)
109+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
110+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
111+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
112+ )
102113
103114configure_file ("${CMAKE_SOURCE_DIR} /cmake/${PROJECT_NAME} -config.cmake"
104115 "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} -config.cmake"
@@ -111,6 +122,7 @@ install(EXPORT "${PROJECT_NAME}-targets"
111122 NAMESPACE AWS::)
112123
113124install (FILES "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} -config.cmake"
125+ "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} -config-version.cmake"
114126 DESTINATION "lib/${PROJECT_NAME} /cmake/" )
115127
116128install (PROGRAMS "${CMAKE_SOURCE_DIR} /packaging/packager"
0 commit comments