build: try moving to cmake 3.28

This commit is contained in:
Marcus Holland-Moritz 2024-05-16 09:23:05 +02:00
parent cc997e6778
commit 5f6b03bb10
4 changed files with 27 additions and 59 deletions

View File

@ -16,7 +16,7 @@
# dwarfs. If not, see <https://www.gnu.org/licenses/>.
#
cmake_minimum_required(VERSION 3.25.0)
cmake_minimum_required(VERSION 3.28.0)
# Enable CMAKE_MSVC_RUNTIME_LIBRARY
cmake_policy(SET CMP0091 NEW)
@ -95,6 +95,7 @@ if(BUILD_SHARED_LIBS)
endif()
set(BUILD_SHARED_LIBS OFF)
set(CMAKE_CXX_SCAN_FOR_MODULES OFF)
if(NOT DISABLE_CCACHE)
find_program(CCACHE_EXE ccache ccache.exe PATHS "c:/bin")
@ -246,13 +247,9 @@ if(NOT fmt_FOUND)
fmt
GIT_REPOSITORY ${LIBFMT_GIT_REPO}
GIT_TAG ${LIBFMT_PREFERRED_VERSION}
EXCLUDE_FROM_ALL
)
# FetchContent_MakeAvailable(fmt)
FetchContent_GetProperties(fmt)
if(NOT fmt_POPULATED)
FetchContent_Populate(fmt)
add_subdirectory(${fmt_SOURCE_DIR} ${fmt_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
FetchContent_MakeAvailable(fmt)
endif()
if(NOT USE_PREFERRED_LIBS)
@ -264,13 +261,9 @@ if(NOT range-v3_FOUND)
range-v3
GIT_REPOSITORY ${RANGE_V3_GIT_REPO}
GIT_TAG ${RANGE_V3_PREFERRED_VERSION}
EXCLUDE_FROM_ALL
)
# FetchContent_MakeAvailable(range-v3)
FetchContent_GetProperties(range-v3)
if(NOT range-v3_POPULATED)
FetchContent_Populate(range-v3)
add_subdirectory(${range-v3_SOURCE_DIR} ${range-v3_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
FetchContent_MakeAvailable(range-v3)
endif()
if(NOT USE_PREFERRED_LIBS)
@ -289,13 +282,9 @@ else()
parallel-hashmap
GIT_REPOSITORY ${PARALLEL_HASHMAP_GIT_REPO}
GIT_TAG v${PARALLEL_HASHMAP_PREFERRED_VERSION}
EXCLUDE_FROM_ALL
)
# FetchContent_MakeAvailable(parallel-hashmap)
FetchContent_GetProperties(parallel-hashmap)
if(NOT parallel-hashmap_POPULATED)
FetchContent_Populate(parallel-hashmap)
add_subdirectory(${parallel-hashmap_SOURCE_DIR} ${parallel-hashmap_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
FetchContent_MakeAvailable(parallel-hashmap)
endif()
find_package(Boost 1.67 REQUIRED COMPONENTS chrono iostreams program_options)
@ -364,31 +353,22 @@ else()
GIT_REPOSITORY ${XXHASH_GIT_REPO}
GIT_TAG v${XXHASH_PREFERRED_VERSION}
SOURCE_SUBDIR cmake_unofficial
EXCLUDE_FROM_ALL
)
# FetchContent_MakeAvailable(libxxhash)
FetchContent_GetProperties(libxxhash)
if(NOT libxxhash_POPULATED)
FetchContent_Populate(libxxhash)
add_subdirectory(${libxxhash_SOURCE_DIR}/cmake_unofficial ${libxxhash_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
FetchContent_MakeAvailable(libxxhash)
endif()
if(ZSTD_FOUND)
add_library(zstd::zstd ALIAS PkgConfig::ZSTD)
add_library(libzstd_static ALIAS PkgConfig::ZSTD)
else()
FetchContent_Declare(
zstd
GIT_REPOSITORY ${ZSTD_GIT_REPO}
GIT_TAG v${ZSTD_PREFERRED_VERSION}
SOURCE_SUBDIR build/cmake
EXCLUDE_FROM_ALL
)
# FetchContent_MakeAvailable(zstd)
FetchContent_GetProperties(zstd)
if(NOT zstd_POPULATED)
FetchContent_Populate(zstd)
add_subdirectory(${zstd_SOURCE_DIR}/build/cmake ${zstd_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
add_library(zstd::zstd ALIAS libzstd_static)
FetchContent_MakeAvailable(zstd)
endif()
if(USE_JEMALLOC)
@ -572,15 +552,11 @@ if(WITH_TESTS)
googletest
GIT_REPOSITORY ${GOOGLETEST_GIT_REPO}
GIT_TAG v${GOOGLETEST_PREFERRED_VERSION}
EXCLUDE_FROM_ALL
)
# For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
# FetchContent_MakeAvailable(googletest)
FetchContent_GetProperties(googletest)
if(NOT googletest_POPULATED)
FetchContent_Populate(googletest)
add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
FetchContent_MakeAvailable(googletest)
endif()
enable_testing()
@ -1166,8 +1142,8 @@ target_link_libraries(
# target_link_libraries(dwarfs PkgConfig::LIBMAGIC)
# endif()
target_link_libraries(dwarfs_categorizer zstd::zstd)
target_link_libraries(dwarfs_compression zstd::zstd)
target_link_libraries(dwarfs_categorizer libzstd_static)
target_link_libraries(dwarfs_compression libzstd_static)
if(LIBLZ4_FOUND)
target_link_libraries(dwarfs_compression PkgConfig::LIBLZ4)

View File

@ -16,7 +16,7 @@
# dwarfs. If not, see <https://www.gnu.org/licenses/>.
#
cmake_minimum_required(VERSION 3.25.0)
cmake_minimum_required(VERSION 3.28.0)
function(add_cpp2_thrift_library idlfile)
set(_options FROZEN METADATA CONSTANTS NO_LIBRARY)

View File

@ -16,7 +16,7 @@
# dwarfs. If not, see <https://www.gnu.org/licenses/>.
#
cmake_minimum_required(VERSION 3.25.0)
cmake_minimum_required(VERSION 3.28.0)
set(VERSION_SRC_FILE ${CMAKE_CURRENT_SOURCE_DIR}/src/dwarfs/version.cpp)
set(VERSION_HDR_FILE ${CMAKE_CURRENT_SOURCE_DIR}/include/dwarfs/version.h)

View File

@ -16,24 +16,20 @@
# ricepp. If not, see <https://www.gnu.org/licenses/>.
#
cmake_minimum_required(VERSION 3.25.0)
cmake_minimum_required(VERSION 3.28.0)
project(ricepp)
include(FetchContent)
if(NOT TARGET range-v3)
if(NOT TARGET range-v3::range-v3)
FetchContent_Declare(
range-v3
GIT_REPOSITORY https://github.com/ericniebler/range-v3
GIT_TAG 0.12.0
EXCLUDE_FROM_ALL
)
# FetchContent_MakeAvailable(range-v3)
FetchContent_GetProperties(range-v3)
if(NOT range-v3_POPULATED)
FetchContent_Populate(range-v3)
add_subdirectory(${range-v3_SOURCE_DIR} ${range-v3_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
FetchContent_MakeAvailable(range-v3)
endif()
if(WIN32)
@ -73,13 +69,13 @@ endif()
foreach(target ${RICEPP_LIBS_CPUSPECIFIC})
message(STATUS "[ricepp] adding CPU target: ${target}")
target_include_directories(${target} PUBLIC include)
target_link_libraries(${target} PUBLIC range-v3)
target_link_libraries(${target} PUBLIC range-v3::range-v3)
target_compile_features(${target} PUBLIC cxx_std_20)
list(APPEND RICEPP_OBJECTS_CPUSPECIFIC $<TARGET_OBJECTS:${target}>)
endforeach()
add_library(ricepp ricepp.cpp ${RICEPP_OBJECTS_CPUSPECIFIC})
target_link_libraries(ricepp PUBLIC range-v3)
target_link_libraries(ricepp PUBLIC range-v3::range-v3)
target_include_directories(ricepp PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
@ -167,13 +163,9 @@ if(WITH_TESTS)
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG v1.14.0
EXCLUDE_FROM_ALL
)
# FetchContent_MakeAvailable(googletest)
FetchContent_GetProperties(googletest)
if(NOT googletest_POPULATED)
FetchContent_Populate(googletest)
add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
FetchContent_MakeAvailable(googletest)
endif()
enable_testing()