Loading .ci/init_x86_64.sh +8 −8 Original line number Diff line number Diff line Loading @@ -8,12 +8,12 @@ if [ "$(uname)" = "Linux" ]; then if [ "$( cat /etc/*-release | grep "CentOS Linux 7" )" ]; then echo "Detected CentOS Linux 7" OS=centos7 elif [ "$( cat /etc/*-release | grep "CentOS Linux 8" )" ] || [ "$( cat /etc/*-release | grep "CentOS Stream release 8" )" ]; then echo "Detected CentOS Linux 8" OS=centos8 elif [ "$( cat /etc/*-release | grep "CentOS Stream release 9" )" ]; then echo "Detected CentOS Linux 9" OS=centos9 elif [ "$( cat /etc/*-release | grep "Red Hat Enterprise Linux 9" )" ]; then echo "Detected Red Hat Enterprise Linux 9" OS=el9 elif [ "$( cat /etc/*-release | grep "AlmaLinux 9" )" ]; then echo "Detected AlmaLinux 9" OS=el9 else echo "Cannot detect OS, falling back to CentOS7" OS=centos7 Loading Loading @@ -58,7 +58,7 @@ fi # Determine which LCG version to use DEFAULT_LCG="LCG_103" DEFAULT_LCG="LCG_104" if [ -z ${ALLPIX_LCG_VERSION} ]; then echo "No explicit LCG version set, using ${DEFAULT_LCG}." Loading @@ -83,7 +83,7 @@ if [ ${COMPILER_TYPE} = "llvm" ]; then if [ "$(uname)" = "Darwin" ]; then COMPILER_VERSION="clang120" else COMPILER_VERSION="clang12" COMPILER_VERSION="clang16" fi echo "Compiler type set to LLVM, version ${COMPILER_VERSION}." fi Loading .clang-format +1 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ AccessModifierOffset: -4 AlignConsecutiveAssignments: false AlignConsecutiveDeclarations: false AllowShortIfStatementsOnASingleLine: false AllowShortFunctionsOnASingleLine: Inline AllowShortFunctionsOnASingleLine: All BinPackParameters: false BinPackArguments: false ColumnLimit: 125 Loading .gitlab-ci.yml +39 −50 Original line number Diff line number Diff line Loading @@ -38,8 +38,8 @@ stages: - source .ci/init_x86_64.sh - mkdir -p build/ && cd build/ .centos9: image: gitlab-registry.cern.ch/sft/docker/centos9:latest .alma9: image: gitlab-registry.cern.ch/sft/docker/alma9:latest tags: - cvmfs variables: Loading @@ -56,7 +56,7 @@ stages: - mkdir -p build/ && cd build/ .lxplus: image: gitlab-registry.cern.ch/sft/docker/centos7:latest image: gitlab-registry.cern.ch/sft/docker/alma9:latest tags: - cvmfs variables: Loading Loading @@ -104,6 +104,7 @@ cmp:lxplus-gcc: - .lxplus - .compile script: - export CCACHE_DIR=`pwd`/ccache - cmake -GNinja -DCMAKE_CXX_FLAGS="-Werror" -DBUILD_ALL_MODULES=ON -DCMAKE_BUILD_TYPE=RELEASE .. - ninja -k0 - ninja install Loading @@ -122,16 +123,16 @@ cmp:cc7-gcc: - .centos7 - .compile cmp:cc7-llvm: cmp:el9-llvm: extends: - .centos7 - .alma9 - .compile variables: COMPILER_TYPE: "llvm" cmp:cc9-gcc: cmp:el9-gcc: extends: - .centos9 - .alma9 - .compile cmp:macos-clang: Loading @@ -153,17 +154,17 @@ cmp:macos-clang: stage: formatting needs: [] dependencies: [] extends: .centos7 extends: .alma9 variables: COMPILER_TYPE: "llvm" fmt:cc7-llvm-format: fmt:clang-format: extends: .format script: - cmake -GNinja -DCMAKE_CXX_FLAGS="-Werror" -DBUILD_ALL_MODULES=ON -DCMAKE_BUILD_TYPE=RELEASE .. - ninja check-format fmt:cc7-llvm-lint: fmt:clang-lint: extends: .format script: - cmake -GNinja -DCMAKE_CXX_FLAGS="-Werror" -DBUILD_ALL_MODULES=ON -DCMAKE_BUILD_TYPE=RELEASE .. Loading @@ -172,7 +173,7 @@ fmt:cc7-llvm-lint: - schedules - tags fmt:cc7-llvm-lint-diff: fmt:clang-lint-diff: extends: .format script: - git remote add upstream $REPOSITORY && git fetch upstream Loading Loading @@ -218,7 +219,6 @@ fmt:proselint: - find . -name "*md" -not -path "./build/*" -print0 | xargs -0 proselint --config .proselint.json fmt:coverity: image: gitlab-registry.cern.ch/sft/docker/centos9:latest extends: .format only: - schedules Loading Loading @@ -339,41 +339,41 @@ core:cc7-gcc: - job: cmp:cc7-gcc artifacts: true mod:cc7-llvm: # AlmaLinux 9 mod:el9-gcc: extends: - .centos7 - .alma9 - .testmod variables: COMPILER_TYPE: "llvm" needs: - job: cmp:cc7-llvm - job: cmp:el9-gcc artifacts: true core:cc7-llvm: core:el9-gcc: extends: - .centos7 - .alma9 - .testcore variables: COMPILER_TYPE: "llvm" needs: - job: cmp:cc7-llvm - job: cmp:el9-gcc artifacts: true # CentOS 8 mod:cc9-gcc: mod:el9-llvm: extends: - .centos9 - .alma9 - .testmod variables: COMPILER_TYPE: "llvm" needs: - job: cmp:cc9-gcc - job: cmp:el9-llvm artifacts: true core:cc9-gcc: core:el9-llvm: extends: - .centos9 - .alma9 - .testcore variables: COMPILER_TYPE: "llvm" needs: - job: cmp:cc9-gcc - job: cmp:el9-llvm artifacts: true # Mac OS Loading Loading @@ -418,17 +418,6 @@ perf:cc7-gcc: - job: cmp:cc7-gcc artifacts: true # Temporarily hide LLVM job, have to find out why this is so slow. .perf:cc7-llvm: extends: - .centos7 - .testperf variables: COMPILER_TYPE: "llvm" needs: - job: cmp:cc7-llvm artifacts: true # Mac OS # Temporarily disable Mac OS X performance until tests are adapted to actual performance .perf:macos-clang: Loading Loading @@ -470,7 +459,7 @@ docs:doxygen: # Create file tree for hugo docs:usermanual-hugo: extends: .doc image: gitlab-registry.cern.ch/sft/docker/centos7:latest image: gitlab-registry.cern.ch/sft/docker/alma9:latest tags: - cvmfs script: Loading Loading @@ -522,22 +511,22 @@ pkg:cc7-gcc: - job: cmp:cc7-gcc artifacts: true pkg:cc7-llvm: pkg:el9-llvm: extends: - .centos7 - .alma9 - .pack needs: - job: cmp:cc7-llvm - job: cmp:el9-llvm artifacts: true variables: COMPILER_TYPE: "llvm" pkg:cc9-gcc: pkg:el9-gcc: extends: - .centos9 - .alma9 - .pack needs: - job: cmp:cc9-gcc - job: cmp:el9-gcc artifacts: true pkg:macos-clang: Loading Loading @@ -588,8 +577,8 @@ deploy:cvmfs: stage: deployment dependencies: - pkg:cc7-gcc - pkg:cc7-llvm - pkg:cc9-gcc - pkg:el9-llvm - pkg:el9-gcc - pkg:macos-clang tags: - cvmfs-deploy Loading CMakeLists.txt +38 −28 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ # CMake File for the Allpix Squared Framework # ############################################### CMAKE_MINIMUM_REQUIRED(VERSION 3.6.3 FATAL_ERROR) CMAKE_MINIMUM_REQUIRED(VERSION 3.7.0 FATAL_ERROR) IF(COMMAND CMAKE_POLICY) CMAKE_POLICY(SET CMP0003 NEW) # change linker path search behaviour CMAKE_POLICY(SET CMP0048 NEW) # set project version Loading Loading @@ -178,6 +178,34 @@ ENDIF() # We need PkgConfig for some dependencies: FIND_PACKAGE(PkgConfig REQUIRED) ################################# # Figure out ROOT's C++ version # ################################# FIND_PACKAGE(ROOT REQUIRED COMPONENTS Geom Core GenVector Hist RIO NO_MODULE) IF(NOT ROOT_FOUND) MESSAGE(FATAL_ERROR "Could not find ROOT, make sure to source the ROOT environment\n" "$ source YOUR_ROOT_DIR/bin/thisroot.sh") ENDIF() # Check which C++ version ROOT was built against IF(ROOT_CXX_FLAGS MATCHES ".*std=c\\+\\+2[0a].*") SET(ROOT_CXX_STD 20) ELSEIF(ROOT_CXX_FLAGS MATCHES ".*std=c\\+\\+1[7z].*") SET(ROOT_CXX_STD 17) ELSEIF(ROOT_CXX_FLAGS MATCHES ".*std=c\\+\\+.*") MESSAGE(FATAL_ERROR "ROOT was built with an unsupported C++ version, at least C++17 is required: ${ROOT_CXX_FLAGS}") ELSE() MESSAGE(FATAL_ERROR "Could not deduce ROOT's C++ version from build flags: ${ROOT_CXX_FLAGS}") ENDIF() # Check ROOT version IF(NOT ${ROOT_VERSION} VERSION_GREATER "6.0") MESSAGE(FATAL_ERROR "ROOT versions below 6.0 are not supported") ENDIF() ################################### # Define build flags for allpix # ################################### Loading Loading @@ -226,13 +254,18 @@ IF(CCACHE_FOUND) CACHE PATH "CCache program" FORCE) ENDIF() # Require C++17 # Require C++17 or C++20 CHECK_CXX_COMPILER_FLAG(-std=c++17 SUPPORT_STD_CXX17) IF(NOT SUPPORT_STD_CXX17) MESSAGE(FATAL_ERROR "Compiler does not support required standard C++17") CHECK_CXX_COMPILER_FLAG(-std=c++20 SUPPORT_STD_CXX20) IF(ROOT_CXX_STD EQUAL 20 AND NOT SUPPORT_STD_CXX20) MESSAGE(FATAL_ERROR "Compiler does not support standard required by ROOT: C++20") ELSEIF(ROOT_CXX_STD EQUAL 17 AND NOT SUPPORT_STD_CXX17) MESSAGE(FATAL_ERROR "Compiler does not support standard required by ROOT: C++17") ENDIF() SET(CMAKE_CXX_STANDARD 17) # Build with C++20 or C++17 SET(CMAKE_CXX_STANDARD "${ROOT_CXX_STD}") MESSAGE(STATUS "Building against C++ version ${CMAKE_CXX_STANDARD}") SET(CMAKE_CXX_STANDARD_REQUIRED ON) SET(CMAKE_CXX_EXTENSIONS OFF) Loading Loading @@ -292,29 +325,6 @@ SET(ALLPIX_BUILD_GEANT4_INTERFACE "OFF" CACHE BOOL "Build Geant4 interface library" FORCE) # ROOT is required for vector and persistency etc FIND_PACKAGE(ROOT REQUIRED COMPONENTS Geom Core GenVector Hist RIO NO_MODULE) IF(NOT ROOT_FOUND) MESSAGE(FATAL_ERROR "Could not find ROOT, make sure to source the ROOT environment\n" "$ source YOUR_ROOT_DIR/bin/thisroot.sh") ENDIF() # Downgrade to C++14 if ROOT is not build with C++17 support IF(ROOT_CXX_FLAGS MATCHES ".*std=c\\+\\+1[7z].*") IF(NOT SUPPORT_STD_CXX17) MESSAGE(FATAL_ERROR "ROOT was built with C++17 support but current compiler doesn't support it") ENDIF() ELSEIF(ROOT_CXX_FLAGS MATCHES ".*std=c\\+\\+.*") MESSAGE(FATAL_ERROR "ROOT was built with an unsupported C++ version, C++17 is required: ${ROOT_CXX_FLAGS}") ELSE() MESSAGE(FATAL_ERROR "Could not deduce ROOT's C++ version from build flags: ${ROOT_CXX_FLAGS}") ENDIF() # Check ROOT version IF(NOT ${ROOT_VERSION} VERSION_GREATER "6.0") MESSAGE(FATAL_ERROR "ROOT versions below 6.0 are not supported") ENDIF() # Prepare ROOT Targets if necessary: ALLPIX_SETUP_ROOT_TARGETS() Loading cmake/clang-cpp-checks.cmake +12 −6 Original line number Diff line number Diff line Loading @@ -44,13 +44,13 @@ IF(CLANG_FORMAT) STRING(REGEX REPLACE ".* ([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" CLANG_MAJOR_VERSION ${CLANG_VERSION}) # Let's treat macOS differently because they don't have up-to-date versions IF(${CLANG_MAJOR_VERSION} EQUAL ${CLANG_FORMAT_VERSION} OR DEFINED APPLE) IF(${CLANG_MAJOR_VERSION} GREATER_EQUAL ${CLANG_FORMAT_VERSION} OR DEFINED APPLE) # On macOS we might have the right version - or not.. IF(NOT ${CLANG_MAJOR_VERSION} EQUAL ${CLANG_FORMAT_VERSION}) IF(NOT ${CLANG_MAJOR_VERSION} GREATER_EQUAL ${CLANG_FORMAT_VERSION}) MESSAGE( WARNING "Found ${CLANG_FORMAT} version ${CLANG_MAJOR_VERSION}, this might lead to incompatible formatting") ELSE() MESSAGE(STATUS "Found ${CLANG_FORMAT} version ${CLANG_FORMAT_VERSION}, adding formatting targets") MESSAGE(STATUS "Found ${CLANG_FORMAT} version ${CLANG_MAJOR_VERSION}, adding formatting targets") ENDIF() ADD_CUSTOM_TARGET( Loading Loading @@ -85,7 +85,13 @@ ENDIF() FIND_PROGRAM(CLANG_TIDY NAMES "clang-tidy-${CLANG_TIDY_VERSION}" "clang-tidy") # Enable clang tidy only if using a clang compiler IF(CLANG_TIDY AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") MESSAGE(STATUS "Found ${CLANG_TIDY}, adding linting targets") EXEC_PROGRAM( ${CLANG_TIDY} ${CMAKE_CURRENT_SOURCE_DIR} ARGS --version OUTPUT_VARIABLE CTIDY_VERSION) STRING(REGEX REPLACE ".* ([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" CLANG_TIDY_MAJOR_VERSION ${CTIDY_VERSION}) MESSAGE(STATUS "Found ${CLANG_TIDY} version ${CLANG_TIDY_MAJOR_VERSION}") # If debug build enabled do automatic clang tidy IF(CMAKE_BUILD_TYPE MATCHES Debug) Loading @@ -111,7 +117,7 @@ IF(CLANG_TIDY AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") GET_FILENAME_COMPONENT(CLANG_DIR ${CLANG_TIDY} DIRECTORY) FIND_PROGRAM( RUN_CLANG_TIDY NAMES "run-clang-tidy.py" "run-clang-tidy-${CLANG_TIDY_VERSION}.py" NAMES "run-clang-tidy" "run-clang-tidy.py" "run-clang-tidy-${CLANG_TIDY_MAJOR_VERSION}.py" HINTS /usr/share/clang/ ${CLANG_DIR}/../share/clang/ /usr/bin/) IF(RUN_CLANG_TIDY) MESSAGE(STATUS "Found ${RUN_CLANG_TIDY}, adding full-code linting targets") Loading @@ -136,7 +142,7 @@ IF(CLANG_TIDY AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") FIND_PROGRAM( CLANG_TIDY_DIFF NAMES "clang-tidy-diff.py" "clang-tidy-diff-${CLANG_TIDY_VERSION}.py" NAMES "clang-tidy-diff" "clang-tidy-diff.py" "clang-tidy-diff-${CLANG_TIDY_MAJOR_VERSION}.py" HINTS /usr/share/clang/ ${CLANG_DIR}/../share/clang/ /usr/bin/) IF(RUN_CLANG_TIDY) # Set target branch and remote to perform the diff against Loading Loading
.ci/init_x86_64.sh +8 −8 Original line number Diff line number Diff line Loading @@ -8,12 +8,12 @@ if [ "$(uname)" = "Linux" ]; then if [ "$( cat /etc/*-release | grep "CentOS Linux 7" )" ]; then echo "Detected CentOS Linux 7" OS=centos7 elif [ "$( cat /etc/*-release | grep "CentOS Linux 8" )" ] || [ "$( cat /etc/*-release | grep "CentOS Stream release 8" )" ]; then echo "Detected CentOS Linux 8" OS=centos8 elif [ "$( cat /etc/*-release | grep "CentOS Stream release 9" )" ]; then echo "Detected CentOS Linux 9" OS=centos9 elif [ "$( cat /etc/*-release | grep "Red Hat Enterprise Linux 9" )" ]; then echo "Detected Red Hat Enterprise Linux 9" OS=el9 elif [ "$( cat /etc/*-release | grep "AlmaLinux 9" )" ]; then echo "Detected AlmaLinux 9" OS=el9 else echo "Cannot detect OS, falling back to CentOS7" OS=centos7 Loading Loading @@ -58,7 +58,7 @@ fi # Determine which LCG version to use DEFAULT_LCG="LCG_103" DEFAULT_LCG="LCG_104" if [ -z ${ALLPIX_LCG_VERSION} ]; then echo "No explicit LCG version set, using ${DEFAULT_LCG}." Loading @@ -83,7 +83,7 @@ if [ ${COMPILER_TYPE} = "llvm" ]; then if [ "$(uname)" = "Darwin" ]; then COMPILER_VERSION="clang120" else COMPILER_VERSION="clang12" COMPILER_VERSION="clang16" fi echo "Compiler type set to LLVM, version ${COMPILER_VERSION}." fi Loading
.clang-format +1 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ AccessModifierOffset: -4 AlignConsecutiveAssignments: false AlignConsecutiveDeclarations: false AllowShortIfStatementsOnASingleLine: false AllowShortFunctionsOnASingleLine: Inline AllowShortFunctionsOnASingleLine: All BinPackParameters: false BinPackArguments: false ColumnLimit: 125 Loading
.gitlab-ci.yml +39 −50 Original line number Diff line number Diff line Loading @@ -38,8 +38,8 @@ stages: - source .ci/init_x86_64.sh - mkdir -p build/ && cd build/ .centos9: image: gitlab-registry.cern.ch/sft/docker/centos9:latest .alma9: image: gitlab-registry.cern.ch/sft/docker/alma9:latest tags: - cvmfs variables: Loading @@ -56,7 +56,7 @@ stages: - mkdir -p build/ && cd build/ .lxplus: image: gitlab-registry.cern.ch/sft/docker/centos7:latest image: gitlab-registry.cern.ch/sft/docker/alma9:latest tags: - cvmfs variables: Loading Loading @@ -104,6 +104,7 @@ cmp:lxplus-gcc: - .lxplus - .compile script: - export CCACHE_DIR=`pwd`/ccache - cmake -GNinja -DCMAKE_CXX_FLAGS="-Werror" -DBUILD_ALL_MODULES=ON -DCMAKE_BUILD_TYPE=RELEASE .. - ninja -k0 - ninja install Loading @@ -122,16 +123,16 @@ cmp:cc7-gcc: - .centos7 - .compile cmp:cc7-llvm: cmp:el9-llvm: extends: - .centos7 - .alma9 - .compile variables: COMPILER_TYPE: "llvm" cmp:cc9-gcc: cmp:el9-gcc: extends: - .centos9 - .alma9 - .compile cmp:macos-clang: Loading @@ -153,17 +154,17 @@ cmp:macos-clang: stage: formatting needs: [] dependencies: [] extends: .centos7 extends: .alma9 variables: COMPILER_TYPE: "llvm" fmt:cc7-llvm-format: fmt:clang-format: extends: .format script: - cmake -GNinja -DCMAKE_CXX_FLAGS="-Werror" -DBUILD_ALL_MODULES=ON -DCMAKE_BUILD_TYPE=RELEASE .. - ninja check-format fmt:cc7-llvm-lint: fmt:clang-lint: extends: .format script: - cmake -GNinja -DCMAKE_CXX_FLAGS="-Werror" -DBUILD_ALL_MODULES=ON -DCMAKE_BUILD_TYPE=RELEASE .. Loading @@ -172,7 +173,7 @@ fmt:cc7-llvm-lint: - schedules - tags fmt:cc7-llvm-lint-diff: fmt:clang-lint-diff: extends: .format script: - git remote add upstream $REPOSITORY && git fetch upstream Loading Loading @@ -218,7 +219,6 @@ fmt:proselint: - find . -name "*md" -not -path "./build/*" -print0 | xargs -0 proselint --config .proselint.json fmt:coverity: image: gitlab-registry.cern.ch/sft/docker/centos9:latest extends: .format only: - schedules Loading Loading @@ -339,41 +339,41 @@ core:cc7-gcc: - job: cmp:cc7-gcc artifacts: true mod:cc7-llvm: # AlmaLinux 9 mod:el9-gcc: extends: - .centos7 - .alma9 - .testmod variables: COMPILER_TYPE: "llvm" needs: - job: cmp:cc7-llvm - job: cmp:el9-gcc artifacts: true core:cc7-llvm: core:el9-gcc: extends: - .centos7 - .alma9 - .testcore variables: COMPILER_TYPE: "llvm" needs: - job: cmp:cc7-llvm - job: cmp:el9-gcc artifacts: true # CentOS 8 mod:cc9-gcc: mod:el9-llvm: extends: - .centos9 - .alma9 - .testmod variables: COMPILER_TYPE: "llvm" needs: - job: cmp:cc9-gcc - job: cmp:el9-llvm artifacts: true core:cc9-gcc: core:el9-llvm: extends: - .centos9 - .alma9 - .testcore variables: COMPILER_TYPE: "llvm" needs: - job: cmp:cc9-gcc - job: cmp:el9-llvm artifacts: true # Mac OS Loading Loading @@ -418,17 +418,6 @@ perf:cc7-gcc: - job: cmp:cc7-gcc artifacts: true # Temporarily hide LLVM job, have to find out why this is so slow. .perf:cc7-llvm: extends: - .centos7 - .testperf variables: COMPILER_TYPE: "llvm" needs: - job: cmp:cc7-llvm artifacts: true # Mac OS # Temporarily disable Mac OS X performance until tests are adapted to actual performance .perf:macos-clang: Loading Loading @@ -470,7 +459,7 @@ docs:doxygen: # Create file tree for hugo docs:usermanual-hugo: extends: .doc image: gitlab-registry.cern.ch/sft/docker/centos7:latest image: gitlab-registry.cern.ch/sft/docker/alma9:latest tags: - cvmfs script: Loading Loading @@ -522,22 +511,22 @@ pkg:cc7-gcc: - job: cmp:cc7-gcc artifacts: true pkg:cc7-llvm: pkg:el9-llvm: extends: - .centos7 - .alma9 - .pack needs: - job: cmp:cc7-llvm - job: cmp:el9-llvm artifacts: true variables: COMPILER_TYPE: "llvm" pkg:cc9-gcc: pkg:el9-gcc: extends: - .centos9 - .alma9 - .pack needs: - job: cmp:cc9-gcc - job: cmp:el9-gcc artifacts: true pkg:macos-clang: Loading Loading @@ -588,8 +577,8 @@ deploy:cvmfs: stage: deployment dependencies: - pkg:cc7-gcc - pkg:cc7-llvm - pkg:cc9-gcc - pkg:el9-llvm - pkg:el9-gcc - pkg:macos-clang tags: - cvmfs-deploy Loading
CMakeLists.txt +38 −28 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ # CMake File for the Allpix Squared Framework # ############################################### CMAKE_MINIMUM_REQUIRED(VERSION 3.6.3 FATAL_ERROR) CMAKE_MINIMUM_REQUIRED(VERSION 3.7.0 FATAL_ERROR) IF(COMMAND CMAKE_POLICY) CMAKE_POLICY(SET CMP0003 NEW) # change linker path search behaviour CMAKE_POLICY(SET CMP0048 NEW) # set project version Loading Loading @@ -178,6 +178,34 @@ ENDIF() # We need PkgConfig for some dependencies: FIND_PACKAGE(PkgConfig REQUIRED) ################################# # Figure out ROOT's C++ version # ################################# FIND_PACKAGE(ROOT REQUIRED COMPONENTS Geom Core GenVector Hist RIO NO_MODULE) IF(NOT ROOT_FOUND) MESSAGE(FATAL_ERROR "Could not find ROOT, make sure to source the ROOT environment\n" "$ source YOUR_ROOT_DIR/bin/thisroot.sh") ENDIF() # Check which C++ version ROOT was built against IF(ROOT_CXX_FLAGS MATCHES ".*std=c\\+\\+2[0a].*") SET(ROOT_CXX_STD 20) ELSEIF(ROOT_CXX_FLAGS MATCHES ".*std=c\\+\\+1[7z].*") SET(ROOT_CXX_STD 17) ELSEIF(ROOT_CXX_FLAGS MATCHES ".*std=c\\+\\+.*") MESSAGE(FATAL_ERROR "ROOT was built with an unsupported C++ version, at least C++17 is required: ${ROOT_CXX_FLAGS}") ELSE() MESSAGE(FATAL_ERROR "Could not deduce ROOT's C++ version from build flags: ${ROOT_CXX_FLAGS}") ENDIF() # Check ROOT version IF(NOT ${ROOT_VERSION} VERSION_GREATER "6.0") MESSAGE(FATAL_ERROR "ROOT versions below 6.0 are not supported") ENDIF() ################################### # Define build flags for allpix # ################################### Loading Loading @@ -226,13 +254,18 @@ IF(CCACHE_FOUND) CACHE PATH "CCache program" FORCE) ENDIF() # Require C++17 # Require C++17 or C++20 CHECK_CXX_COMPILER_FLAG(-std=c++17 SUPPORT_STD_CXX17) IF(NOT SUPPORT_STD_CXX17) MESSAGE(FATAL_ERROR "Compiler does not support required standard C++17") CHECK_CXX_COMPILER_FLAG(-std=c++20 SUPPORT_STD_CXX20) IF(ROOT_CXX_STD EQUAL 20 AND NOT SUPPORT_STD_CXX20) MESSAGE(FATAL_ERROR "Compiler does not support standard required by ROOT: C++20") ELSEIF(ROOT_CXX_STD EQUAL 17 AND NOT SUPPORT_STD_CXX17) MESSAGE(FATAL_ERROR "Compiler does not support standard required by ROOT: C++17") ENDIF() SET(CMAKE_CXX_STANDARD 17) # Build with C++20 or C++17 SET(CMAKE_CXX_STANDARD "${ROOT_CXX_STD}") MESSAGE(STATUS "Building against C++ version ${CMAKE_CXX_STANDARD}") SET(CMAKE_CXX_STANDARD_REQUIRED ON) SET(CMAKE_CXX_EXTENSIONS OFF) Loading Loading @@ -292,29 +325,6 @@ SET(ALLPIX_BUILD_GEANT4_INTERFACE "OFF" CACHE BOOL "Build Geant4 interface library" FORCE) # ROOT is required for vector and persistency etc FIND_PACKAGE(ROOT REQUIRED COMPONENTS Geom Core GenVector Hist RIO NO_MODULE) IF(NOT ROOT_FOUND) MESSAGE(FATAL_ERROR "Could not find ROOT, make sure to source the ROOT environment\n" "$ source YOUR_ROOT_DIR/bin/thisroot.sh") ENDIF() # Downgrade to C++14 if ROOT is not build with C++17 support IF(ROOT_CXX_FLAGS MATCHES ".*std=c\\+\\+1[7z].*") IF(NOT SUPPORT_STD_CXX17) MESSAGE(FATAL_ERROR "ROOT was built with C++17 support but current compiler doesn't support it") ENDIF() ELSEIF(ROOT_CXX_FLAGS MATCHES ".*std=c\\+\\+.*") MESSAGE(FATAL_ERROR "ROOT was built with an unsupported C++ version, C++17 is required: ${ROOT_CXX_FLAGS}") ELSE() MESSAGE(FATAL_ERROR "Could not deduce ROOT's C++ version from build flags: ${ROOT_CXX_FLAGS}") ENDIF() # Check ROOT version IF(NOT ${ROOT_VERSION} VERSION_GREATER "6.0") MESSAGE(FATAL_ERROR "ROOT versions below 6.0 are not supported") ENDIF() # Prepare ROOT Targets if necessary: ALLPIX_SETUP_ROOT_TARGETS() Loading
cmake/clang-cpp-checks.cmake +12 −6 Original line number Diff line number Diff line Loading @@ -44,13 +44,13 @@ IF(CLANG_FORMAT) STRING(REGEX REPLACE ".* ([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" CLANG_MAJOR_VERSION ${CLANG_VERSION}) # Let's treat macOS differently because they don't have up-to-date versions IF(${CLANG_MAJOR_VERSION} EQUAL ${CLANG_FORMAT_VERSION} OR DEFINED APPLE) IF(${CLANG_MAJOR_VERSION} GREATER_EQUAL ${CLANG_FORMAT_VERSION} OR DEFINED APPLE) # On macOS we might have the right version - or not.. IF(NOT ${CLANG_MAJOR_VERSION} EQUAL ${CLANG_FORMAT_VERSION}) IF(NOT ${CLANG_MAJOR_VERSION} GREATER_EQUAL ${CLANG_FORMAT_VERSION}) MESSAGE( WARNING "Found ${CLANG_FORMAT} version ${CLANG_MAJOR_VERSION}, this might lead to incompatible formatting") ELSE() MESSAGE(STATUS "Found ${CLANG_FORMAT} version ${CLANG_FORMAT_VERSION}, adding formatting targets") MESSAGE(STATUS "Found ${CLANG_FORMAT} version ${CLANG_MAJOR_VERSION}, adding formatting targets") ENDIF() ADD_CUSTOM_TARGET( Loading Loading @@ -85,7 +85,13 @@ ENDIF() FIND_PROGRAM(CLANG_TIDY NAMES "clang-tidy-${CLANG_TIDY_VERSION}" "clang-tidy") # Enable clang tidy only if using a clang compiler IF(CLANG_TIDY AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") MESSAGE(STATUS "Found ${CLANG_TIDY}, adding linting targets") EXEC_PROGRAM( ${CLANG_TIDY} ${CMAKE_CURRENT_SOURCE_DIR} ARGS --version OUTPUT_VARIABLE CTIDY_VERSION) STRING(REGEX REPLACE ".* ([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" CLANG_TIDY_MAJOR_VERSION ${CTIDY_VERSION}) MESSAGE(STATUS "Found ${CLANG_TIDY} version ${CLANG_TIDY_MAJOR_VERSION}") # If debug build enabled do automatic clang tidy IF(CMAKE_BUILD_TYPE MATCHES Debug) Loading @@ -111,7 +117,7 @@ IF(CLANG_TIDY AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") GET_FILENAME_COMPONENT(CLANG_DIR ${CLANG_TIDY} DIRECTORY) FIND_PROGRAM( RUN_CLANG_TIDY NAMES "run-clang-tidy.py" "run-clang-tidy-${CLANG_TIDY_VERSION}.py" NAMES "run-clang-tidy" "run-clang-tidy.py" "run-clang-tidy-${CLANG_TIDY_MAJOR_VERSION}.py" HINTS /usr/share/clang/ ${CLANG_DIR}/../share/clang/ /usr/bin/) IF(RUN_CLANG_TIDY) MESSAGE(STATUS "Found ${RUN_CLANG_TIDY}, adding full-code linting targets") Loading @@ -136,7 +142,7 @@ IF(CLANG_TIDY AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") FIND_PROGRAM( CLANG_TIDY_DIFF NAMES "clang-tidy-diff.py" "clang-tidy-diff-${CLANG_TIDY_VERSION}.py" NAMES "clang-tidy-diff" "clang-tidy-diff.py" "clang-tidy-diff-${CLANG_TIDY_MAJOR_VERSION}.py" HINTS /usr/share/clang/ ${CLANG_DIR}/../share/clang/ /usr/bin/) IF(RUN_CLANG_TIDY) # Set target branch and remote to perform the diff against Loading