build: one standard to rule them all

This commit is contained in:
Marcus Holland-Moritz 2025-07-28 22:25:11 +02:00
parent 48c1d2a1e5
commit 997118da6e
8 changed files with 14 additions and 12 deletions

View File

@ -77,6 +77,8 @@ if(WITH_ALL_BENCHMARKS)
set(WITH_BENCHMARKS ON) set(WITH_BENCHMARKS ON)
endif() endif()
set(DWARFS_CXX_STANDARD 20)
# Libraries that we can fetch on demand if necessary # Libraries that we can fetch on demand if necessary
# #
# All of these libraries are header-only and not strictly required once # All of these libraries are header-only and not strictly required once
@ -472,8 +474,8 @@ if(WITH_TESTS OR WITH_BENCHMARKS OR WITH_FUZZ)
if(WITH_BENCHMARKS) if(WITH_BENCHMARKS)
target_sources(dwarfs_test_helpers PRIVATE test/test_strings.cpp) target_sources(dwarfs_test_helpers PRIVATE test/test_strings.cpp)
endif() endif()
target_link_libraries(dwarfs_test_helpers PUBLIC dwarfs_common dwarfs_writer dwarfs_tool) target_link_libraries(dwarfs_test_helpers PUBLIC dwarfs_reader dwarfs_writer dwarfs_tool)
set_property(TARGET dwarfs_test_helpers PROPERTY CXX_STANDARD 20) set_property(TARGET dwarfs_test_helpers PROPERTY CXX_STANDARD ${DWARFS_CXX_STANDARD})
endif() endif()
if(WITH_TESTS) if(WITH_TESTS)
@ -818,7 +820,7 @@ foreach(tgt ${LIBDWARFS_TARGETS} ${LIBDWARFS_OBJECT_TARGETS} dwarfs_test_helpers
) )
endif() endif()
set_property(TARGET ${tgt} PROPERTY CXX_STANDARD 20) set_property(TARGET ${tgt} PROPERTY CXX_STANDARD ${DWARFS_CXX_STANDARD})
set_property(TARGET ${tgt} PROPERTY CXX_STANDARD_REQUIRED ON) set_property(TARGET ${tgt} PROPERTY CXX_STANDARD_REQUIRED ON)
set_property(TARGET ${tgt} PROPERTY CXX_EXTENSIONS OFF) set_property(TARGET ${tgt} PROPERTY CXX_EXTENSIONS OFF)

View File

@ -75,7 +75,7 @@ endif()
set(default_build_type "Release") set(default_build_type "Release")
set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD ${DWARFS_CXX_STANDARD})
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)

View File

@ -38,13 +38,13 @@ add_compile_definitions(GLOG_NO_ABBREVIATED_SEVERITIES NOMINMAX NOGDI)
add_compile_definitions(GLOG_USE_GLOG_EXPORT) add_compile_definitions(GLOG_USE_GLOG_EXPORT)
set( set(
CXX_STD "gnu++20" CXX_STD "gnu++${DWARFS_CXX_STANDARD}"
CACHE STRING CACHE STRING
"The C++ standard argument to pass to the compiler." "The C++ standard argument to pass to the compiler."
) )
set( set(
MSVC_LANGUAGE_VERSION "c++20" MSVC_LANGUAGE_VERSION "c++${DWARFS_CXX_STANDARD}"
CACHE STRING CACHE STRING
"The C++ standard argument to pass to the compiler." "The C++ standard argument to pass to the compiler."
) )
@ -143,7 +143,7 @@ if(WIN32)
) )
endif() endif()
set_property(TARGET dwarfs_folly_lite PROPERTY CXX_STANDARD 20) set_property(TARGET dwarfs_folly_lite PROPERTY CXX_STANDARD ${DWARFS_CXX_STANDARD})
target_include_directories( target_include_directories(
dwarfs_folly_lite SYSTEM PUBLIC dwarfs_folly_lite SYSTEM PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/folly> $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/folly>

View File

@ -239,7 +239,7 @@ endif()
target_link_libraries(dwarfs_extractor PRIVATE PkgConfig::LIBARCHIVE) target_link_libraries(dwarfs_extractor PRIVATE PkgConfig::LIBARCHIVE)
target_include_directories(dwarfs_common SYSTEM PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/fsst>) target_include_directories(dwarfs_common SYSTEM PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/fsst>)
set_property(TARGET dwarfs_fsst PROPERTY CXX_STANDARD 20) set_property(TARGET dwarfs_fsst PROPERTY CXX_STANDARD ${DWARFS_CXX_STANDARD})
set_property(TARGET dwarfs_fsst PROPERTY CXX_STANDARD_REQUIRED ON) set_property(TARGET dwarfs_fsst PROPERTY CXX_STANDARD_REQUIRED ON)
set_property(TARGET dwarfs_fsst PROPERTY CXX_EXTENSIONS OFF) set_property(TARGET dwarfs_fsst PROPERTY CXX_EXTENSIONS OFF)

View File

@ -28,7 +28,7 @@ if(PREFER_SYSTEM_GTEST)
try_compile( try_compile(
GTEST_SUPPORTS_U8STRING GTEST_SUPPORTS_U8STRING
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/checks/gtest-u8string.cpp SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/checks/gtest-u8string.cpp
CXX_STANDARD 20 CXX_STANDARD ${DWARFS_CXX_STANDARD}
) )
if(NOT GTEST_SUPPORTS_U8STRING) if(NOT GTEST_SUPPORTS_U8STRING)

View File

@ -23,7 +23,7 @@ try_run(
PHMAP_COMPILE_RESULT PHMAP_COMPILE_RESULT
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/checks/phmap-version.cpp SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/checks/phmap-version.cpp
CMAKE_FLAGS -DINCLUDE_DIRECTORIES=${TRY_RUN_INCLUDE_DIRECTORIES} CMAKE_FLAGS -DINCLUDE_DIRECTORIES=${TRY_RUN_INCLUDE_DIRECTORIES}
CXX_STANDARD 20 CXX_STANDARD ${DWARFS_CXX_STANDARD}
RUN_OUTPUT_VARIABLE PHMAP_VERSION RUN_OUTPUT_VARIABLE PHMAP_VERSION
COMPILE_OUTPUT_VARIABLE PHMAP_COMPILE_OUTPUT COMPILE_OUTPUT_VARIABLE PHMAP_COMPILE_OUTPUT
) )

View File

@ -57,7 +57,7 @@ add_library(
${THRIFT_GENERATED_DIR}/thrift/lib/thrift/gen-cpp2/frozen_types_compact.cpp ${THRIFT_GENERATED_DIR}/thrift/lib/thrift/gen-cpp2/frozen_types_compact.cpp
) )
set_property(TARGET dwarfs_thrift_lite PROPERTY CXX_STANDARD 20) set_property(TARGET dwarfs_thrift_lite PROPERTY CXX_STANDARD ${DWARFS_CXX_STANDARD})
target_link_libraries(dwarfs_thrift_lite PUBLIC dwarfs_folly_lite) target_link_libraries(dwarfs_thrift_lite PUBLIC dwarfs_folly_lite)
target_include_directories(dwarfs_thrift_lite SYSTEM PUBLIC target_include_directories(dwarfs_thrift_lite SYSTEM PUBLIC

View File

@ -141,6 +141,6 @@ function(add_cpp2_thrift_library idlfile)
if(NOT WIN32) if(NOT WIN32)
target_compile_options(${_THRIFT_TARGET} PRIVATE -Wno-deprecated-declarations) target_compile_options(${_THRIFT_TARGET} PRIVATE -Wno-deprecated-declarations)
endif() endif()
set_property(TARGET ${_THRIFT_TARGET} PROPERTY CXX_STANDARD 20) set_property(TARGET ${_THRIFT_TARGET} PROPERTY CXX_STANDARD ${DWARFS_CXX_STANDARD})
endif() endif()
endfunction() endfunction()