1
- cmake_minimum_required (VERSION 3.5 )
1
+ cmake_minimum_required (VERSION 3.9 )
2
2
set (CMAKE_CXX_STANDARD 11)
3
3
project (aws-lambda-runtime
4
4
VERSION 0.2.4
5
5
LANGUAGES CXX)
6
6
7
7
option (ENABLE_TESTS "Enables building the test project, requires AWS C++ SDK." OFF )
8
8
9
- include (CheckCXXCompilerFlag)
10
-
11
- check_cxx_compiler_flag("-Wl,-flto" LTO_CAPABLE)
9
+ include (CheckIPOSupported)
12
10
13
11
add_library (${PROJECT_NAME}
14
12
"src/logging.cpp"
@@ -17,12 +15,21 @@ add_library(${PROJECT_NAME}
17
15
"${CMAKE_CURRENT_BINARY_DIR} /version.cpp"
18
16
)
19
17
20
- set_target_properties (${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION} )
18
+ set_target_properties (${PROJECT_NAME} PROPERTIES
19
+ SOVERSION 0
20
+ VERSION ${PROJECT_VERSION} )
21
21
22
22
target_include_directories (${PROJECT_NAME} PUBLIC
23
23
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR} /include >
24
24
$<INSTALL_INTERFACE:include >)
25
25
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
+
26
33
find_package (CURL REQUIRED)
27
34
if (CMAKE_VERSION VERSION_LESS 3.12)
28
35
target_link_libraries (${PROJECT_NAME} PRIVATE ${CURL_LIBRARIES} )
@@ -36,6 +43,7 @@ target_compile_options(${PROJECT_NAME} PRIVATE
36
43
"-fno-exceptions"
37
44
"-fno-rtti"
38
45
"-fvisibility=hidden"
46
+ "-fvisibility-inlines-hidden"
39
47
"-Wall"
40
48
"-Wextra"
41
49
"-Werror"
@@ -64,11 +72,6 @@ else ()
64
72
target_compile_definitions (${PROJECT_NAME} PRIVATE "AWS_LAMBDA_LOG=0" )
65
73
endif ()
66
74
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
-
72
75
#tests
73
76
if (ENABLE_TESTS)
74
77
enable_testing ()
@@ -81,6 +84,12 @@ configure_file(
81
84
"${CMAKE_CURRENT_BINARY_DIR} /version.cpp"
82
85
NEWLINE_STYLE LF)
83
86
87
+ include (CMakePackageConfigHelpers)
88
+
89
+ write_basic_package_version_file("${PROJECT_NAME} -config-version.cmake"
90
+ VERSION ${PROJECT_VERSION}
91
+ COMPATIBILITY SameMajorVersion)
92
+
84
93
# installation
85
94
install (FILES "include/aws/http/response.h"
86
95
DESTINATION "include/aws/http" )
@@ -94,11 +103,13 @@ install(FILES
94
103
install (FILES "include/aws/logging/logging.h"
95
104
DESTINATION "include/aws/logging" )
96
105
106
+ include (GNUInstallDirs)
97
107
install (TARGETS ${PROJECT_NAME}
98
108
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
+ )
102
113
103
114
configure_file ("${CMAKE_SOURCE_DIR} /cmake/${PROJECT_NAME} -config.cmake"
104
115
"${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} -config.cmake"
@@ -111,6 +122,7 @@ install(EXPORT "${PROJECT_NAME}-targets"
111
122
NAMESPACE AWS::)
112
123
113
124
install (FILES "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} -config.cmake"
125
+ "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} -config-version.cmake"
114
126
DESTINATION "lib/${PROJECT_NAME} /cmake/" )
115
127
116
128
install (PROGRAMS "${CMAKE_SOURCE_DIR} /packaging/packager"
0 commit comments