Skip to content

Commit d371cb1

Browse files
authored
A bunch of CMake fixes (#769)
* Various CMake improvements * Fixes for CI
1 parent 284eea0 commit d371cb1

File tree

46 files changed

+87
-245
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+87
-245
lines changed

.github/workflows/ci.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ env:
4343

4444
jobs:
4545
linux-compat:
46-
runs-on: ubuntu-latest
46+
runs-on: ubuntu-22.04
4747
strategy:
4848
matrix:
4949
image:
@@ -447,7 +447,7 @@ jobs:
447447
python3 ./devicedefender/script/DDTestRun.py mqtt5
448448
# Runs the samples and ensures that everything is working
449449
linux-smoke-tests:
450-
runs-on: ubuntu-latest
450+
runs-on: ubuntu-22.04
451451
strategy:
452452
fail-fast: false
453453
permissions:

CMakeLists.txt

+5-24
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 3.9)
1+
cmake_minimum_required(VERSION 3.9...3.31)
22

33
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
44
include(AwsGetVersion)
@@ -14,33 +14,11 @@ option(BUILD_DEPS "Builds aws common runtime dependencies as part of build. Turn
1414
option(USE_EXTERNAL_DEPS_SOURCES "Use dependencies provided by add_subdirectory command" OFF)
1515
option(BUILD_SAMPLES "(DEPRECATED) Build samples as part of the build" OFF)
1616

17-
if (DEFINED CMAKE_PREFIX_PATH)
18-
file(TO_CMAKE_PATH "${CMAKE_PREFIX_PATH}" CMAKE_PREFIX_PATH)
19-
endif()
20-
21-
if (DEFINED CMAKE_INSTALL_PREFIX)
22-
file(TO_CMAKE_PATH "${CMAKE_INSTALL_PREFIX}" CMAKE_INSTALL_PREFIX)
23-
endif()
24-
2517
if (NOT CMAKE_CXX_STANDARD)
2618
set(CMAKE_CXX_STANDARD 11)
2719
endif()
2820

29-
if (UNIX AND NOT APPLE)
30-
include(GNUInstallDirs)
31-
elseif(NOT DEFINED CMAKE_INSTALL_LIBDIR)
32-
set(CMAKE_INSTALL_LIBDIR "lib")
33-
endif()
34-
35-
if (${CMAKE_INSTALL_LIBDIR} STREQUAL "lib64")
36-
set(FIND_LIBRARY_USE_LIB64_PATHS true)
37-
endif()
38-
39-
# This is required in order to append /lib/cmake to each element in CMAKE_PREFIX_PATH
40-
set(AWS_MODULE_DIR "/${CMAKE_INSTALL_LIBDIR}/cmake")
41-
string(REPLACE ";" "${AWS_MODULE_DIR};" AWS_MODULE_PATH "${CMAKE_PREFIX_PATH}${AWS_MODULE_DIR}")
42-
# Append that generated list to the module search path
43-
list(APPEND CMAKE_MODULE_PATH ${AWS_MODULE_PATH})
21+
include(GNUInstallDirs)
4422

4523
if (NOT CMAKE_BUILD_TYPE)
4624
if (NOT WIN32)
@@ -92,6 +70,9 @@ else()
9270

9371
set(IN_SOURCE_BUILD ON)
9472
else()
73+
# this is required so we can use aws-c-common's CMake modules
74+
find_package(aws-c-common REQUIRED)
75+
9576
set(IN_SOURCE_BUILD OFF)
9677
endif()
9778

deviceadvisor/tests/mqtt_connect/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 3.9)
1+
cmake_minimum_required(VERSION 3.9...3.31)
22
# note: cxx-17 requires cmake 3.8, cxx-20 requires cmake 3.12
33
project(mqtt_connect CXX)
44

deviceadvisor/tests/mqtt_publish/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 3.9)
1+
cmake_minimum_required(VERSION 3.9...3.31)
22
# note: cxx-17 requires cmake 3.8, cxx-20 requires cmake 3.12
33
project(mqtt_publish CXX)
44

deviceadvisor/tests/mqtt_subscribe/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 3.9)
1+
cmake_minimum_required(VERSION 3.9...3.31)
22
# note: cxx-17 requires cmake 3.8, cxx-20 requires cmake 3.12
33
project(mqtt_subscribe CXX)
44

deviceadvisor/tests/shadow_update/CMakeLists.txt

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 3.9)
1+
cmake_minimum_required(VERSION 3.9...3.31)
22
# note: cxx-17 requires cmake 3.8, cxx-20 requires cmake 3.12
33
project(shadow_update CXX)
44

@@ -23,6 +23,4 @@ endif ()
2323
find_package(aws-crt-cpp REQUIRED)
2424
find_package(IotShadow-cpp REQUIRED)
2525

26-
install(TARGETS ${PROJECT_NAME} DESTINATION bin)
27-
2826
target_link_libraries(${PROJECT_NAME} PRIVATE AWS::aws-crt-cpp AWS::IotShadow-cpp)

devicedefender/CMakeLists.txt

+5-19
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,12 @@
1-
cmake_minimum_required(VERSION 3.9)
1+
cmake_minimum_required(VERSION 3.9...3.31)
22

33
project(IotDeviceDefender-cpp LANGUAGES CXX VERSION ${SIMPLE_VERSION})
44

5-
set(RUNTIME_DIRECTORY bin)
6-
7-
if (UNIX AND NOT APPLE)
8-
include(GNUInstallDirs)
9-
elseif(NOT DEFINED CMAKE_INSTALL_LIBDIR)
10-
set(CMAKE_INSTALL_LIBDIR "lib")
11-
12-
if (${CMAKE_INSTALL_LIBDIR} STREQUAL "lib64")
13-
set(FIND_LIBRARY_USE_LIB64_PATHS true)
14-
endif()
15-
endif()
16-
175
set(GENERATED_ROOT_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
186
set(GENERATED_INCLUDE_DIR "${GENERATED_ROOT_DIR}/include")
197
set(GENERATED_CONFIG_HEADER "${GENERATED_INCLUDE_DIR}/aws/iotdevicedefender/Config.h")
208
configure_file(include/aws/iotdevicedefender/Config.h.in ${GENERATED_CONFIG_HEADER} @ONLY)
219

22-
list(APPEND CMAKE_MODULE_PATH "${CMAKE_PREFIX_PATH}/${CMAKE_INSTALL_LIBDIR}/cmake")
23-
2410
if (NOT CMAKE_CXX_STANDARD)
2511
set(CMAKE_CXX_STANDARD 11)
2612
endif()
@@ -75,7 +61,7 @@ if (BUILD_SHARED_LIBS)
7561
NAMELINK_SKIP
7662
COMPONENT Runtime
7763
RUNTIME
78-
DESTINATION ${RUNTIME_DIRECTORY}
64+
DESTINATION ${CMAKE_INSTALL_BINDIR}
7965
COMPONENT Runtime)
8066

8167
install(TARGETS IotDeviceDefender-cpp
@@ -104,7 +90,7 @@ endif()
10490

10591
target_link_libraries(IotDeviceDefender-cpp IotDeviceCommon-cpp)
10692

107-
install(FILES ${AWS_IOTDEVICEDEFENDER_HEADERS} DESTINATION "include/aws/iotdevicedefender/" COMPONENT Development)
93+
install(FILES ${AWS_IOTDEVICEDEFENDER_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aws/iotdevicedefender/" COMPONENT Development)
10894

10995
if (BUILD_SHARED_LIBS)
11096
set(TARGET_DIR "shared")
@@ -121,7 +107,7 @@ if (DEFINED SIMPLE_VERSION)
121107
endif()
122108

123109
install(EXPORT "IotDeviceDefender-cpp-targets"
124-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/IotDeviceDefender-cpp/cmake/${TARGET_DIR}"
110+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/IotDeviceDefender-cpp/${TARGET_DIR}"
125111
NAMESPACE AWS::
126112
COMPONENT Development)
127113

@@ -130,7 +116,7 @@ configure_file("cmake/iotdevicedefender-cpp-config.cmake"
130116
@ONLY)
131117

132118
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/iotdevicedefender-cpp-config.cmake"
133-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/IotDeviceDefender-cpp/cmake/"
119+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/IotDeviceDefender-cpp/"
134120
COMPONENT Development)
135121

136122
if (BUILD_TESTING)

discovery/CMakeLists.txt

+5-19
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,12 @@
1-
cmake_minimum_required(VERSION 3.9)
1+
cmake_minimum_required(VERSION 3.9...3.31)
22

33
project(Discovery-cpp LANGUAGES CXX VERSION ${SIMPLE_VERSION})
44

5-
set(RUNTIME_DIRECTORY bin)
6-
7-
if (UNIX AND NOT APPLE)
8-
include(GNUInstallDirs)
9-
elseif(NOT DEFINED CMAKE_INSTALL_LIBDIR)
10-
set(CMAKE_INSTALL_LIBDIR "lib")
11-
12-
if (${CMAKE_INSTALL_LIBDIR} STREQUAL "lib64")
13-
set(FIND_LIBRARY_USE_LIB64_PATHS true)
14-
endif()
15-
endif()
16-
175
set(GENERATED_ROOT_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
186
set(GENERATED_INCLUDE_DIR "${GENERATED_ROOT_DIR}/include")
197
set(GENERATED_CONFIG_HEADER "${GENERATED_INCLUDE_DIR}/aws/discovery/Config.h")
208
configure_file(include/aws/discovery/Config.h.in ${GENERATED_CONFIG_HEADER} @ONLY)
219

22-
list(APPEND CMAKE_MODULE_PATH "${CMAKE_PREFIX_PATH}/${CMAKE_INSTALL_LIBDIR}/cmake")
23-
2410
if (NOT CMAKE_CXX_STANDARD)
2511
set(CMAKE_CXX_STANDARD 11)
2612
endif()
@@ -75,7 +61,7 @@ if (BUILD_SHARED_LIBS)
7561
NAMELINK_SKIP
7662
COMPONENT Runtime
7763
RUNTIME
78-
DESTINATION ${RUNTIME_DIRECTORY}
64+
DESTINATION ${CMAKE_INSTALL_BINDIR}
7965
COMPONENT Runtime)
8066

8167
install(TARGETS Discovery-cpp
@@ -103,7 +89,7 @@ endif()
10389

10490
target_link_libraries(Discovery-cpp ${DEP_AWS_LIBS})
10591

106-
install(FILES ${AWS_DISCOVERY_HEADERS} DESTINATION "include/aws/discovery/" COMPONENT Development)
92+
install(FILES ${AWS_DISCOVERY_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aws/discovery/" COMPONENT Development)
10793

10894
if (BUILD_SHARED_LIBS)
10995
set (TARGET_DIR "shared")
@@ -120,7 +106,7 @@ if (DEFINED SIMPLE_VERSION)
120106
endif()
121107

122108
install(EXPORT "Discovery-cpp-targets"
123-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/Discovery-cpp/cmake/${TARGET_DIR}"
109+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Discovery-cpp/${TARGET_DIR}"
124110
NAMESPACE AWS::
125111
COMPONENT Development)
126112

@@ -129,5 +115,5 @@ configure_file("cmake/discovery-cpp-config.cmake"
129115
@ONLY)
130116

131117
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/discovery-cpp-config.cmake"
132-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/Discovery-cpp/cmake/"
118+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Discovery-cpp/"
133119
COMPONENT Development)

eventstream_rpc/CMakeLists.txt

+5-19
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,12 @@
1-
cmake_minimum_required(VERSION 3.9)
1+
cmake_minimum_required(VERSION 3.9...3.31)
22

33
project(EventstreamRpc-cpp LANGUAGES CXX VERSION ${SIMPLE_VERSION})
44

5-
set(RUNTIME_DIRECTORY bin)
6-
7-
if (UNIX AND NOT APPLE)
8-
include(GNUInstallDirs)
9-
elseif(NOT DEFINED CMAKE_INSTALL_LIBDIR)
10-
set(CMAKE_INSTALL_LIBDIR "lib")
11-
12-
if (${CMAKE_INSTALL_LIBDIR} STREQUAL "lib64")
13-
set(FIND_LIBRARY_USE_LIB64_PATHS true)
14-
endif()
15-
endif()
16-
175
set(GENERATED_ROOT_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
186
set(GENERATED_INCLUDE_DIR "${GENERATED_ROOT_DIR}/include")
197
set(GENERATED_CONFIG_HEADER "${GENERATED_INCLUDE_DIR}/aws/eventstreamrpc/Config.h")
208
configure_file(include/aws/eventstreamrpc/Config.h.in ${GENERATED_CONFIG_HEADER} @ONLY)
219

22-
list(APPEND CMAKE_MODULE_PATH "${CMAKE_PREFIX_PATH}/${CMAKE_INSTALL_LIBDIR}/cmake")
23-
2410
if (NOT CMAKE_CXX_STANDARD)
2511
set(CMAKE_CXX_STANDARD 11)
2612
endif()
@@ -75,7 +61,7 @@ if (BUILD_SHARED_LIBS)
7561
NAMELINK_SKIP
7662
COMPONENT Runtime
7763
RUNTIME
78-
DESTINATION ${RUNTIME_DIRECTORY}
64+
DESTINATION ${CMAKE_INSTALL_BINDIR}
7965
COMPONENT Runtime)
8066

8167
install(TARGETS EventstreamRpc-cpp
@@ -102,7 +88,7 @@ endif()
10288

10389
target_link_libraries(EventstreamRpc-cpp ${DEP_AWS_LIBS})
10490

105-
install(FILES ${AWS_EVENTSTREAMRPC_HEADERS} DESTINATION "include/aws/eventstreamrpc/" COMPONENT Development)
91+
install(FILES ${AWS_EVENTSTREAMRPC_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aws/eventstreamrpc/" COMPONENT Development)
10692

10793
if (BUILD_SHARED_LIBS)
10894
set(TARGET_DIR "shared")
@@ -119,7 +105,7 @@ if (DEFINED SIMPLE_VERSION)
119105
endif()
120106

121107
install(EXPORT "EventstreamRpc-cpp-targets"
122-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/EventstreamRpc-cpp/cmake/${TARGET_DIR}"
108+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/EventstreamRpc-cpp/${TARGET_DIR}"
123109
NAMESPACE AWS::
124110
COMPONENT Development)
125111

@@ -128,7 +114,7 @@ configure_file("cmake/eventstreamrpc-cpp-config.cmake"
128114
@ONLY)
129115

130116
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/eventstreamrpc-cpp-config.cmake"
131-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/EventstreamRpc-cpp/cmake/"
117+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/EventstreamRpc-cpp/"
132118
COMPONENT Development)
133119

134120
if (BUILD_TESTING)

eventstream_rpc/tests/CMakeLists.txt

+1-12
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,11 @@ if (WIN32)
1818
endif ()
1919
endif()
2020

21-
if (UNIX AND NOT APPLE)
22-
include(GNUInstallDirs)
23-
elseif(NOT DEFINED CMAKE_INSTALL_LIBDIR)
24-
set(CMAKE_INSTALL_LIBDIR "lib")
25-
26-
if (${CMAKE_INSTALL_LIBDIR} STREQUAL "lib64")
27-
set(FIND_LIBRARY_USE_LIB64_PATHS true)
28-
endif()
29-
endif()
30-
list(APPEND CMAKE_MODULE_PATH "${CMAKE_PREFIX_PATH}/${CMAKE_INSTALL_LIBDIR}/cmake")
31-
3221
if (NOT CMAKE_CXX_STANDARD)
3322
set(CMAKE_CXX_STANDARD 11)
3423
endif()
3524

36-
install(FILES ${AWS_ECHOTESTRPC_HEADERS} DESTINATION "include/awstest/" COMPONENT Development)
25+
install(FILES ${AWS_ECHOTESTRPC_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/awstest/" COMPONENT Development)
3726

3827
file(GLOB TEST_SRC "*.cpp")
3928
file(GLOB TEST_HDRS "*.h")

greengrass_ipc/CMakeLists.txt

+5-19
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,12 @@
1-
cmake_minimum_required(VERSION 3.9)
1+
cmake_minimum_required(VERSION 3.9...3.31)
22

33
project(GreengrassIpc-cpp LANGUAGES CXX VERSION ${SIMPLE_VERSION})
44

5-
set(RUNTIME_DIRECTORY bin)
6-
7-
if (UNIX AND NOT APPLE)
8-
include(GNUInstallDirs)
9-
elseif(NOT DEFINED CMAKE_INSTALL_LIBDIR)
10-
set(CMAKE_INSTALL_LIBDIR "lib")
11-
12-
if (${CMAKE_INSTALL_LIBDIR} STREQUAL "lib64")
13-
set(FIND_LIBRARY_USE_LIB64_PATHS true)
14-
endif()
15-
endif()
16-
175
set(GENERATED_ROOT_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
186
set(GENERATED_INCLUDE_DIR "${GENERATED_ROOT_DIR}/include")
197
set(GENERATED_CONFIG_HEADER "${GENERATED_INCLUDE_DIR}/aws/greengrass/Config.h")
208
configure_file(include/aws/greengrass/Config.h.in ${GENERATED_CONFIG_HEADER} @ONLY)
219

22-
list(APPEND CMAKE_MODULE_PATH "${CMAKE_PREFIX_PATH}/${CMAKE_INSTALL_LIBDIR}/cmake")
23-
2410
if (NOT CMAKE_CXX_STANDARD)
2511
set(CMAKE_CXX_STANDARD 11)
2612
endif()
@@ -83,7 +69,7 @@ if (BUILD_SHARED_LIBS)
8369
NAMELINK_SKIP
8470
COMPONENT Runtime
8571
RUNTIME
86-
DESTINATION ${RUNTIME_DIRECTORY}
72+
DESTINATION ${CMAKE_INSTALL_BINDIR}
8773
COMPONENT Runtime)
8874

8975
install(TARGETS GreengrassIpc-cpp
@@ -110,7 +96,7 @@ endif()
11096

11197
target_link_libraries(GreengrassIpc-cpp ${DEP_AWS_LIBS})
11298

113-
install(FILES ${AWS_GREENGRASSIPC_HEADERS} DESTINATION "include/aws/greengrass/" COMPONENT Development)
99+
install(FILES ${AWS_GREENGRASSIPC_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aws/greengrass/" COMPONENT Development)
114100

115101
if (BUILD_SHARED_LIBS)
116102
set(TARGET_DIR "shared")
@@ -127,7 +113,7 @@ if (DEFINED SIMPLE_VERSION)
127113
endif()
128114

129115
install(EXPORT "GreengrassIpc-cpp-targets"
130-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/GreengrassIpc-cpp/cmake/${TARGET_DIR}"
116+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/GreengrassIpc-cpp/${TARGET_DIR}"
131117
NAMESPACE AWS::
132118
COMPONENT Development)
133119

@@ -136,5 +122,5 @@ configure_file("cmake/greengrassipc-cpp-config.cmake"
136122
@ONLY)
137123

138124
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/greengrassipc-cpp-config.cmake"
139-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/GreengrassIpc-cpp/cmake/"
125+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/GreengrassIpc-cpp/"
140126
COMPONENT Development)

0 commit comments

Comments
 (0)