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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 5 additions & 24 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 3 deletions
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

Lines changed: 5 additions & 19 deletions
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

Lines changed: 5 additions & 19 deletions
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)

0 commit comments

Comments
 (0)