1- cmake_minimum_required (VERSION 3.9 )
1+ cmake_minimum_required (VERSION 3.5 )
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 (CheckIPOSupported)
9+ include (CheckCXXCompilerFlag)
10+
11+ check_cxx_compiler_flag("-Wl,-flto" LTO_CAPABLE)
1012
1113add_library (${PROJECT_NAME}
1214 "src/logging.cpp"
@@ -15,21 +17,12 @@ add_library(${PROJECT_NAME}
1517 "${CMAKE_CURRENT_BINARY_DIR} /version.cpp"
1618 )
1719
18- set_target_properties (${PROJECT_NAME} PROPERTIES
19- SOVERSION 0
20- VERSION ${PROJECT_VERSION} )
20+ set_target_properties (${PROJECT_NAME} PROPERTIES 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-
3326find_package (CURL REQUIRED)
3427if (CMAKE_VERSION VERSION_LESS 3.12)
3528 target_link_libraries (${PROJECT_NAME} PRIVATE ${CURL_LIBRARIES} )
@@ -43,7 +36,6 @@ target_compile_options(${PROJECT_NAME} PRIVATE
4336 "-fno-exceptions"
4437 "-fno-rtti"
4538 "-fvisibility=hidden"
46- "-fvisibility-inlines-hidden"
4739 "-Wall"
4840 "-Wextra"
4941 "-Werror"
@@ -72,6 +64,11 @@ else ()
7264 target_compile_definitions (${PROJECT_NAME} PRIVATE "AWS_LAMBDA_LOG=0" )
7365endif ()
7466
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+
7572#tests
7673if (ENABLE_TESTS)
7774 enable_testing ()
@@ -84,37 +81,24 @@ configure_file(
8481 "${CMAKE_CURRENT_BINARY_DIR} /version.cpp"
8582 NEWLINE_STYLE LF)
8683
87- include (CMakePackageConfigHelpers)
88-
89- write_basic_package_version_file("${PROJECT_NAME} -config-version.cmake"
90- VERSION ${PROJECT_VERSION}
91- COMPATIBILITY SameMajorVersion)
92-
9384# installation
9485install (FILES "include/aws/http/response.h"
9586 DESTINATION "include/aws/http" )
9687
97- install (FILES
88+ install (FILES
9889 "include/aws/lambda-runtime/runtime.h"
9990 "include/aws/lambda-runtime/version.h"
10091 "include/aws/lambda-runtime/outcome.h"
101- DESTINATION "include/aws/lambda-runtime"
102- COMPONENT ${PROJECT_NAME} -Development)
92+ DESTINATION "include/aws/lambda-runtime" )
10393
10494install (FILES "include/aws/logging/logging.h"
10595 DESTINATION "include/aws/logging" )
10696
107- include (GNUInstallDirs)
10897install (TARGETS ${PROJECT_NAME}
10998 EXPORT ${PROJECT_NAME} -targets
110- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
111- COMPONENT ${PROJECT_NAME} -Development
112- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
113- COMPONENT ${PROJECT_NAME} -Runtime
114- NAMELINK_COMPONENT ${PROJECT_NAME} -Developemnt
115- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
116- COMPONENT ${PROJECT_NAME} -Runtime
117- )
99+ ARCHIVE DESTINATION lib
100+ LIBRARY DESTINATION lib
101+ RUNTIME DESTINATION bin)
118102
119103configure_file ("${CMAKE_SOURCE_DIR} /cmake/${PROJECT_NAME} -config.cmake"
120104 "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} -config.cmake"
@@ -127,7 +111,6 @@ install(EXPORT "${PROJECT_NAME}-targets"
127111 NAMESPACE AWS::)
128112
129113install (FILES "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} -config.cmake"
130- ${PROJECT_NAME} -config-version .cmake
131114 DESTINATION "lib/${PROJECT_NAME} /cmake/" )
132115
133116install (PROGRAMS "${CMAKE_SOURCE_DIR} /packaging/packager"
0 commit comments