From 14c5d3648e46e53ada52a5931601b18d56ace70b Mon Sep 17 00:00:00 2001 From: Enrico Seiler Date: Fri, 7 Mar 2025 12:03:11 +0100 Subject: [PATCH] [INFRA] Outsource cxx config --- CMakeLists.txt | 2 ++ cmake/cxx_config.cmake | 25 +++++++++++++++++++++++++ cmake/package-lock.cmake | 3 +-- test/hibf-test.cmake | 23 ++--------------------- test/tutorial/CMakeLists.txt | 4 ++-- util/CMakeLists.txt | 22 +--------------------- 6 files changed, 33 insertions(+), 46 deletions(-) create mode 100644 cmake/cxx_config.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 218cec49..a6298cb8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,8 @@ if (NOT CMAKE_BUILD_TYPE) CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE) endif () +include (cmake/cxx_config.cmake) + set (HIBF_HEADER_PATH "${HIBF_SOURCE_DIR}/include") include (cmake/configuration.cmake) add_subdirectory (src) diff --git a/cmake/cxx_config.cmake b/cmake/cxx_config.cmake new file mode 100644 index 00000000..f5dc3977 --- /dev/null +++ b/cmake/cxx_config.cmake @@ -0,0 +1,25 @@ +# SPDX-FileCopyrightText: 2006-2025, Knut Reinert & Freie Universität Berlin +# SPDX-FileCopyrightText: 2016-2025, Knut Reinert & MPI für molekulare Genetik +# SPDX-License-Identifier: BSD-3-Clause + +if (NOT DEFINED CMAKE_CXX_STANDARD) + set (CMAKE_CXX_STANDARD 23) +endif () + +if (NOT DEFINED CMAKE_CXX_STANDARD_REQUIRED) + set (CMAKE_CXX_STANDARD_REQUIRED ON) +endif () + +if (NOT DEFINED CMAKE_CXX_EXTENSIONS) + set (CMAKE_CXX_EXTENSIONS OFF) +endif () + +# LTO support. +include (CheckIPOSupported) +check_ipo_supported ( + RESULT HIBF_TEST_HAS_LTO + OUTPUT HIBF_TEST_HAS_LTO_OUTPUT + LANGUAGES CXX) +if (HIBF_TEST_HAS_LTO) + set (CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) +endif () diff --git a/cmake/package-lock.cmake b/cmake/package-lock.cmake index 931e2838..eb812737 100644 --- a/cmake/package-lock.cmake +++ b/cmake/package-lock.cmake @@ -38,8 +38,7 @@ CPMDeclarePackage (googletest VERSION ${HIBF_GOOGLETEST_VERSION} GITHUB_REPOSITORY google/googletest SYSTEM TRUE - OPTIONS "BUILD_GMOCK OFF" "INSTALL_GTEST OFF" "CMAKE_CXX_STANDARD 23" - "CMAKE_MESSAGE_LOG_LEVEL WARNING") + OPTIONS "BUILD_GMOCK OFF" "INSTALL_GTEST OFF" "CMAKE_MESSAGE_LOG_LEVEL WARNING") # doxygen-awesome set (HIBF_DOXYGEN_AWESOME_VERSION 2.3.4 CACHE STRING "" FORCE) CPMDeclarePackage (doxygen_awesome diff --git a/test/hibf-test.cmake b/test/hibf-test.cmake index 8be9e73b..f584c867 100644 --- a/test/hibf-test.cmake +++ b/test/hibf-test.cmake @@ -13,29 +13,10 @@ cmake_minimum_required (VERSION 3.20...3.31) # have to be adapted or the option deactivated. option (HIBF_BENCHMARK_ALIGN_LOOPS "Pass -falign-loops=32 to the benchmark builds." ON) -if (NOT DEFINED CMAKE_CXX_STANDARD) - set (CMAKE_CXX_STANDARD 23) -endif () - -if (NOT DEFINED CMAKE_CXX_STANDARD_REQUIRED) - set (CMAKE_CXX_STANDARD_REQUIRED ON) -endif () - -if (NOT DEFINED CMAKE_CXX_EXTENSIONS) - set (CMAKE_CXX_EXTENSIONS OFF) -endif () - -include (CheckIPOSupported) -check_ipo_supported ( - RESULT HIBF_TEST_HAS_LTO - OUTPUT HIBF_TEST_HAS_LTO_OUTPUT - LANGUAGES CXX) -if (HIBF_TEST_HAS_LTO) - set (CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) -endif () - get_filename_component (HIBF_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE) +include (${HIBF_ROOT_DIR}/cmake/cxx_config.cmake) + option (HIBF_POST_INSTALL_TEST "Tests should use installed library." OFF) if (HIBF_POST_INSTALL_TEST) find_package (hibf CONFIG REQUIRED) diff --git a/test/tutorial/CMakeLists.txt b/test/tutorial/CMakeLists.txt index d14de50d..483c715d 100644 --- a/test/tutorial/CMakeLists.txt +++ b/test/tutorial/CMakeLists.txt @@ -13,14 +13,14 @@ include (../hibf-test.cmake) set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") CPMAddPackage (NAME seqan3 - GIT_TAG 9a07fdb5283aad0b05301905bddb2d8253f5e067 + GIT_TAG main GITHUB_REPOSITORY seqan/seqan3 SYSTEM TRUE EXCLUDE_FROM_ALL TRUE OPTIONS "INSTALL_SEQAN3 OFF" "CMAKE_MESSAGE_LOG_LEVEL WARNING") CPMAddPackage (NAME sharg - GIT_TAG da92d2314e9fedba0e1d9d317b5977360dae8ac9 + GIT_TAG main GITHUB_REPOSITORY seqan/sharg-parser SYSTEM TRUE EXCLUDE_FROM_ALL TRUE diff --git a/util/CMakeLists.txt b/util/CMakeLists.txt index f67f4bf4..c37b6029 100644 --- a/util/CMakeLists.txt +++ b/util/CMakeLists.txt @@ -5,29 +5,9 @@ cmake_minimum_required (VERSION 3.20...3.31) project (hibf_util CXX) -include (CheckIPOSupported) -check_ipo_supported ( - RESULT HIBF_TEST_HAS_LTO - OUTPUT HIBF_TEST_HAS_LTO_OUTPUT - LANGUAGES CXX) -if (HIBF_TEST_HAS_LTO) - set (CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) -endif () - -if (NOT DEFINED CMAKE_CXX_STANDARD) - set (CMAKE_CXX_STANDARD 23) -endif () - -if (NOT DEFINED CMAKE_CXX_STANDARD_REQUIRED) - set (CMAKE_CXX_STANDARD_REQUIRED ON) -endif () - -if (NOT DEFINED CMAKE_CXX_EXTENSIONS) - set (CMAKE_CXX_EXTENSIONS OFF) -endif () - # Dependency: seqan::hibf get_filename_component (HIBF_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE) +include (${HIBF_ROOT_DIR}/cmake/cxx_config.cmake) add_subdirectory ("${HIBF_ROOT_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/hibf_lib") # Dependency: Sharg