Skip to content

Commit 0e7637f

Browse files
authored
A bunch of CMake fixes (#1178)
1 parent 5e6c081 commit 0e7637f

File tree

6 files changed

+18
-34
lines changed

6 files changed

+18
-34
lines changed

AWSCRTAndroidTestRunner/app/src/main/cpp/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
# Sets the minimum version of CMake required to build the native library.
55

6-
cmake_minimum_required(VERSION 3.9)
6+
cmake_minimum_required(VERSION 3.9...3.31)
77

88
# AWS lib
99
set(path_to_common "${CMAKE_CURRENT_LIST_DIR}/../../../../..")

CMakeLists.txt

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,13 @@
33

44
# As of October 2024, we picked 3.9 as our version because internally we still support RHEL5 and AL2012, and CMake 3.9
55
# was the latest version available on those platforms.
6-
cmake_minimum_required(VERSION 3.9)
6+
cmake_minimum_required(VERSION 3.9...3.31)
77
option(ALLOW_CROSS_COMPILED_TESTS "Allow tests to be compiled via cross compile, for use with qemu" OFF)
88

99
project(aws-c-common LANGUAGES C VERSION 0.1.0)
1010

1111
message(STATUS "CMake ${CMAKE_VERSION}")
1212

13-
if (POLICY CMP0077)
14-
cmake_policy(SET CMP0077 OLD) # Enable options to get their values from normal variables
15-
endif()
16-
1713
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
1814
include(AwsCFlags)
1915
include(AwsCheckHeaders)
@@ -23,6 +19,7 @@ include(AwsSanitizers)
2319
include(AwsThreadAffinity)
2420
include(AwsThreadName)
2521
include(CTest)
22+
include(GNUInstallDirs)
2623

2724
set(GENERATED_ROOT_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
2825
set(GENERATED_INCLUDE_DIR "${GENERATED_ROOT_DIR}/include")
@@ -247,7 +244,7 @@ foreach(HEADER_SRCPATH IN ITEMS ${AWS_COMMON_HEADERS} ${AWS_COMMON_OS_HEADERS} $
247244

248245
unset(HEADER_DSTDIR)
249246

250-
foreach(POTENTIAL_PREFIX IN ITEMS ${GENERATED_ROOT_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
247+
foreach(POTENTIAL_PREFIX IN ITEMS "${GENERATED_INCLUDE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/include")
251248
string(LENGTH ${POTENTIAL_PREFIX} _prefixlen)
252249
string(SUBSTRING ${HEADER_DIR} 0 ${_prefixlen} _actual_prefix)
253250
if(${_actual_prefix} STREQUAL ${POTENTIAL_PREFIX})
@@ -261,7 +258,7 @@ foreach(HEADER_SRCPATH IN ITEMS ${AWS_COMMON_HEADERS} ${AWS_COMMON_OS_HEADERS} $
261258
endif()
262259

263260
install(FILES ${HEADER_SRCPATH}
264-
DESTINATION ${HEADER_DSTDIR}
261+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${HEADER_DSTDIR}"
265262
COMPONENT Development)
266263
endforeach()
267264

@@ -278,12 +275,12 @@ else()
278275
endif()
279276

280277
install(EXPORT "${PROJECT_NAME}-targets"
281-
DESTINATION "${LIBRARY_DIRECTORY}/${PROJECT_NAME}/cmake/${TARGET_DIR}"
278+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/${TARGET_DIR}"
282279
NAMESPACE AWS::
283280
COMPONENT Development)
284281

285282
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
286-
DESTINATION "${LIBRARY_DIRECTORY}/${PROJECT_NAME}/cmake"
283+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
287284
COMPONENT Development)
288285

289286
list(APPEND EXPORT_MODULES
@@ -300,7 +297,7 @@ list(APPEND EXPORT_MODULES
300297
)
301298

302299
install(FILES ${EXPORT_MODULES}
303-
DESTINATION "${LIBRARY_DIRECTORY}/cmake"
300+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/modules"
304301
COMPONENT Development)
305302

306303
# This should come last, to ensure all variables defined by cmake will be available for export

bin/system_info/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
project(print-sys-info C)
22

3-
list(APPEND CMAKE_MODULE_PATH "${CMAKE_INSTALL_PREFIX}/lib/cmake")
4-
53
file(GLOB SI_SRC
64
"*.c"
75
)

cmake/AwsSharedLibSetup.cmake

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,32 @@
11
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
# SPDX-License-Identifier: Apache-2.0.
33

4-
set(LIBRARY_DIRECTORY lib)
5-
set(RUNTIME_DIRECTORY bin)
6-
# Set the default lib installation path on GNU systems with GNUInstallDirs
7-
if (UNIX AND NOT APPLE)
8-
include(GNUInstallDirs)
9-
set(LIBRARY_DIRECTORY ${CMAKE_INSTALL_LIBDIR})
10-
set(RUNTIME_DIRECTORY ${CMAKE_INSTALL_BINDIR})
11-
12-
# this is the absolute dumbest thing in the world, but find_package won't work without it
13-
# also I verified this is correctly NOT "lib64" when CMAKE_C_FLAGS includes "-m32"
14-
if (${LIBRARY_DIRECTORY} STREQUAL "lib64")
15-
set(FIND_LIBRARY_USE_LIB64_PATHS true)
16-
endif()
17-
endif()
18-
4+
include(GNUInstallDirs)
195

206
function(aws_prepare_shared_lib_exports target)
217
if (BUILD_SHARED_LIBS)
228
install(TARGETS ${target}
239
EXPORT ${target}-targets
2410
ARCHIVE
25-
DESTINATION ${LIBRARY_DIRECTORY}
11+
DESTINATION ${CMAKE_INSTALL_LIBDIR}
2612
COMPONENT Development
2713
LIBRARY
28-
DESTINATION ${LIBRARY_DIRECTORY}
14+
DESTINATION ${CMAKE_INSTALL_LIBDIR}
2915
NAMELINK_SKIP
3016
COMPONENT Runtime
3117
RUNTIME
32-
DESTINATION ${RUNTIME_DIRECTORY}
18+
DESTINATION ${CMAKE_INSTALL_BINDIR}
3319
COMPONENT Runtime)
3420
install(TARGETS ${target}
3521
EXPORT ${target}-targets
3622
LIBRARY
37-
DESTINATION ${LIBRARY_DIRECTORY}
23+
DESTINATION ${CMAKE_INSTALL_LIBDIR}
3824
NAMELINK_ONLY
3925
COMPONENT Development)
4026
else()
4127
install(TARGETS ${target}
4228
EXPORT ${target}-targets
43-
ARCHIVE DESTINATION ${LIBRARY_DIRECTORY}
29+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
4430
COMPONENT Development)
4531
endif()
4632
endfunction()

cmake/CPackConfig.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ endif()
6262
# By default, we'll try to claim the cmake directory under the library directory
6363
# and the aws include directory. We have to share both of these
6464
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION
65-
/usr/${LIBRARY_DIRECTORY}/cmake
65+
/usr/${CMAKE_INSTALL_LIBDIR}/cmake
6666
/usr/include/aws)
6767

6868
# Include CPack, which generates the package target

cmake/aws-c-common-config.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# make installed modules (e.g. AwsCFlags.cmake) available to dependencies
2+
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/modules)
3+
14
set(THREADS_PREFER_PTHREAD_FLAG ON)
25

36
if(WIN32 OR UNIX OR APPLE)

0 commit comments

Comments
 (0)