1
- cmake_minimum_required (VERSION 3.9 )
1
+ cmake_minimum_required (VERSION 3.5 )
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 (CheckIPOSupported)
9
+ include (CheckCXXCompilerFlag)
10
+
11
+ check_cxx_compiler_flag("-Wl,-flto" LTO_CAPABLE)
10
12
11
13
add_library (${PROJECT_NAME}
12
14
"src/logging.cpp"
@@ -15,21 +17,12 @@ add_library(${PROJECT_NAME}
15
17
"${CMAKE_CURRENT_BINARY_DIR} /version.cpp"
16
18
)
17
19
18
- set_target_properties (${PROJECT_NAME} PROPERTIES
19
- SOVERSION 0
20
- VERSION ${PROJECT_VERSION} )
20
+ set_target_properties (${PROJECT_NAME} PROPERTIES 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
-
33
26
find_package (CURL REQUIRED)
34
27
if (CMAKE_VERSION VERSION_LESS 3.12)
35
28
target_link_libraries (${PROJECT_NAME} PRIVATE ${CURL_LIBRARIES} )
@@ -43,7 +36,6 @@ target_compile_options(${PROJECT_NAME} PRIVATE
43
36
"-fno-exceptions"
44
37
"-fno-rtti"
45
38
"-fvisibility=hidden"
46
- "-fvisibility-inlines-hidden"
47
39
"-Wall"
48
40
"-Wextra"
49
41
"-Werror"
@@ -72,6 +64,11 @@ else ()
72
64
target_compile_definitions (${PROJECT_NAME} PRIVATE "AWS_LAMBDA_LOG=0" )
73
65
endif ()
74
66
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
+
75
72
#tests
76
73
if (ENABLE_TESTS)
77
74
enable_testing ()
@@ -84,37 +81,24 @@ configure_file(
84
81
"${CMAKE_CURRENT_BINARY_DIR} /version.cpp"
85
82
NEWLINE_STYLE LF)
86
83
87
- include (CMakePackageConfigHelpers)
88
-
89
- write_basic_package_version_file("${PROJECT_NAME} -config-version.cmake"
90
- VERSION ${PROJECT_VERSION}
91
- COMPATIBILITY SameMajorVersion)
92
-
93
84
# installation
94
85
install (FILES "include/aws/http/response.h"
95
86
DESTINATION "include/aws/http" )
96
87
97
- install (FILES
88
+ install (FILES
98
89
"include/aws/lambda-runtime/runtime.h"
99
90
"include/aws/lambda-runtime/version.h"
100
91
"include/aws/lambda-runtime/outcome.h"
101
- DESTINATION "include/aws/lambda-runtime"
102
- COMPONENT ${PROJECT_NAME} -Development)
92
+ DESTINATION "include/aws/lambda-runtime" )
103
93
104
94
install (FILES "include/aws/logging/logging.h"
105
95
DESTINATION "include/aws/logging" )
106
96
107
- include (GNUInstallDirs)
108
97
install (TARGETS ${PROJECT_NAME}
109
98
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)
118
102
119
103
configure_file ("${CMAKE_SOURCE_DIR} /cmake/${PROJECT_NAME} -config.cmake"
120
104
"${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} -config.cmake"
@@ -127,7 +111,6 @@ install(EXPORT "${PROJECT_NAME}-targets"
127
111
NAMESPACE AWS::)
128
112
129
113
install (FILES "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} -config.cmake"
130
- ${PROJECT_NAME} -config-version .cmake
131
114
DESTINATION "lib/${PROJECT_NAME} /cmake/" )
132
115
133
116
install (PROGRAMS "${CMAKE_SOURCE_DIR} /packaging/packager"
0 commit comments