Skip to content

Commit ca3a2a6

Browse files
authored
Cmake modules (#702)
1 parent 11fb6c0 commit ca3a2a6

15 files changed

+33
-64
lines changed

CMakeLists.txt

+19-44
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
cmake_minimum_required(VERSION 3.9)
2-
3-
if(POLICY CMP0077)
4-
cmake_policy(SET CMP0077 NEW)
5-
endif()
1+
cmake_minimum_required(VERSION 3.9...3.31)
62

73
option(BUILD_DEPS "Builds aws common runtime dependencies as part of build. Turn off if you want to control your dependency chain." ON)
84
option(BYO_CRYPTO "Don't build a tls implementation or link against a crypto interface. This feature is only for unix builds currently" OFF)
@@ -30,24 +26,7 @@ project("aws-crt-cpp"
3026
VERSION ${SIMPLE_VERSION})
3127

3228
include(CTest)
33-
34-
if(DEFINED CMAKE_PREFIX_PATH)
35-
file(TO_CMAKE_PATH "${CMAKE_PREFIX_PATH}" CMAKE_PREFIX_PATH)
36-
endif()
37-
38-
if(DEFINED CMAKE_INSTALL_PREFIX)
39-
file(TO_CMAKE_PATH "${CMAKE_INSTALL_PREFIX}" CMAKE_INSTALL_PREFIX)
40-
endif()
41-
42-
if(UNIX AND NOT APPLE)
43-
include(GNUInstallDirs)
44-
elseif(NOT DEFINED CMAKE_INSTALL_LIBDIR)
45-
set(CMAKE_INSTALL_LIBDIR "lib")
46-
endif()
47-
48-
if(${CMAKE_INSTALL_LIBDIR} STREQUAL "lib64")
49-
set(FIND_LIBRARY_USE_LIB64_PATHS true)
50-
endif()
29+
include(GNUInstallDirs)
5130

5231
if(NOT CMAKE_CXX_STANDARD)
5332
set(CMAKE_CXX_STANDARD 11)
@@ -65,13 +44,6 @@ set(GENERATED_INCLUDE_DIR "${GENERATED_ROOT_DIR}/include")
6544
set(GENERATED_CONFIG_HEADER "${GENERATED_INCLUDE_DIR}/aws/crt/Config.h")
6645
configure_file(include/aws/crt/Config.h.in ${GENERATED_CONFIG_HEADER} @ONLY)
6746

68-
# This is required in order to append /lib/cmake to each element in CMAKE_PREFIX_PATH
69-
set(AWS_MODULE_DIR "/${CMAKE_INSTALL_LIBDIR}/cmake")
70-
string(REPLACE ";" "${AWS_MODULE_DIR};" AWS_MODULE_PATH "${CMAKE_PREFIX_PATH}${AWS_MODULE_DIR}")
71-
72-
# Append that generated list to the module search path
73-
list(APPEND CMAKE_MODULE_PATH ${AWS_MODULE_PATH})
74-
7547
if(BUILD_DEPS)
7648
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/crt/aws-c-common/cmake")
7749

@@ -132,6 +104,9 @@ if(BUILD_DEPS)
132104
add_subdirectory(crt/aws-c-s3)
133105
set(BUILD_TESTING ${BUILD_TESTING_PREV})
134106
else()
107+
# this is required so we can use aws-c-common's CMake modules
108+
find_package(aws-c-common REQUIRED)
109+
135110
include(AwsFindPackage)
136111
set(IN_SOURCE_BUILD OFF)
137112
endif()
@@ -356,23 +331,23 @@ aws_add_sanitizers(${PROJECT_NAME})
356331

357332
target_link_libraries(${PROJECT_NAME} PUBLIC ${DEP_AWS_LIBS})
358333

359-
install(FILES ${AWS_CRT_HEADERS} DESTINATION "include/aws/crt" COMPONENT Development)
360-
install(FILES ${AWS_CRT_AUTH_HEADERS} DESTINATION "include/aws/crt/auth" COMPONENT Development)
361-
install(FILES ${AWS_CRT_CHECKSUM_HEADERS} DESTINATION "include/aws/crt/checksum" COMPONENT Development)
362-
install(FILES ${AWS_CRT_CRYPTO_HEADERS} DESTINATION "include/aws/crt/crypto" COMPONENT Development)
363-
install(FILES ${AWS_CRT_IO_HEADERS} DESTINATION "include/aws/crt/io" COMPONENT Development)
364-
install(FILES ${AWS_CRT_IOT_HEADERS} DESTINATION "include/aws/iot" COMPONENT Development)
365-
install(FILES ${AWS_CRT_MQTT_HEADERS} DESTINATION "include/aws/crt/mqtt" COMPONENT Development)
366-
install(FILES ${AWS_CRT_HTTP_HEADERS} DESTINATION "include/aws/crt/http" COMPONENT Development)
367-
install(FILES ${AWS_CRT_ENDPOINT_HEADERS} DESTINATION "include/aws/crt/endpoints" COMPONENT Development)
368-
install(FILES ${AWS_CRT_CBOR_HEADERS} DESTINATION "include/aws/crt/cbor" COMPONENT Development)
334+
install(FILES ${AWS_CRT_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aws/crt" COMPONENT Development)
335+
install(FILES ${AWS_CRT_AUTH_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aws/crt/auth" COMPONENT Development)
336+
install(FILES ${AWS_CRT_CHECKSUM_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aws/crt/checksum" COMPONENT Development)
337+
install(FILES ${AWS_CRT_CRYPTO_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aws/crt/crypto" COMPONENT Development)
338+
install(FILES ${AWS_CRT_IO_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aws/crt/io" COMPONENT Development)
339+
install(FILES ${AWS_CRT_IOT_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aws/iot" COMPONENT Development)
340+
install(FILES ${AWS_CRT_MQTT_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aws/crt/mqtt" COMPONENT Development)
341+
install(FILES ${AWS_CRT_HTTP_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aws/crt/http" COMPONENT Development)
342+
install(FILES ${AWS_CRT_ENDPOINT_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aws/crt/endpoints" COMPONENT Development)
343+
install(FILES ${AWS_CRT_CBOR_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aws/crt/cbor" COMPONENT Development)
369344

370345
install(
371346
TARGETS ${PROJECT_NAME}
372347
EXPORT ${PROJECT_NAME}-targets
373348
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development
374349
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development
375-
RUNTIME DESTINATION bin COMPONENT Runtime
350+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Runtime
376351
)
377352

378353
if(BUILD_SHARED_LIBS)
@@ -382,7 +357,7 @@ else()
382357
endif()
383358

384359
install(EXPORT "${PROJECT_NAME}-targets"
385-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/cmake/${TARGET_DIR}"
360+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/${TARGET_DIR}"
386361
NAMESPACE AWS::
387362
COMPONENT Development)
388363

@@ -398,11 +373,11 @@ write_basic_package_version_file(
398373
)
399374

400375
install(FILES "${GENERATED_ROOT_DIR}/${PROJECT_NAME}-config.cmake"
401-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/cmake/"
376+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/"
402377
COMPONENT Development)
403378

404379
install(FILES "${GENERATED_ROOT_DIR}/${PROJECT_NAME}-config-version.cmake"
405-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/cmake/"
380+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/"
406381
COMPONENT Development)
407382

408383
if(NOT CMAKE_CROSSCOMPILING)

bin/elasticurl_cpp/CMakeLists.txt

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
project(elasticurl_cpp CXX)
22

3-
list(APPEND CMAKE_MODULE_PATH "${CMAKE_PREFIX_PATH}/lib/cmake")
4-
53
file(GLOB ELASTICURL_CPP_SRC
64
"*.cpp"
75
)
@@ -43,5 +41,5 @@ install(TARGETS ${ELASTICURL_CPP_PROJECT_NAME}
4341
EXPORT ${ELASTICURL_CPP_PROJECT_NAME}-targets
4442
COMPONENT Runtime
4543
RUNTIME
46-
DESTINATION bin
44+
DESTINATION ${CMAKE_INSTALL_BINDIR}
4745
COMPONENT Runtime)

bin/mqtt5_app/CMakeLists.txt

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
project(mqtt5_app CXX)
22

3-
list(APPEND CMAKE_MODULE_PATH "${CMAKE_PREFIX_PATH}/lib/cmake")
4-
53
file(GLOB MQTT5_APP_SRC
64
"*.cpp"
75
)
@@ -43,5 +41,5 @@ install(TARGETS ${MQTT5_APP_PROJECT_NAME}
4341
EXPORT ${MQTT5_APP_PROJECT_NAME}-targets
4442
COMPONENT Runtime
4543
RUNTIME
46-
DESTINATION bin
44+
DESTINATION ${CMAKE_INSTALL_BINDIR}
4745
COMPONENT Runtime)

bin/mqtt5_canary/CMakeLists.txt

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
project(mqtt5_canary CXX)
22

3-
list(APPEND CMAKE_MODULE_PATH "${CMAKE_PREFIX_PATH}/lib/cmake")
4-
53
file(GLOB MQTT5_CANARY_SRC
64
"*.cpp"
75
)
@@ -43,5 +41,5 @@ install(TARGETS ${MQTT5_CANARY_PROJECT_NAME}
4341
EXPORT ${MQTT5_CANARY_PROJECT_NAME}-targets
4442
COMPONENT Runtime
4543
RUNTIME
46-
DESTINATION bin
44+
DESTINATION ${CMAKE_INSTALL_BINDIR}
4745
COMPONENT Runtime)

crt/aws-c-sdkutils

0 commit comments

Comments
 (0)