From 4f0410959ec014bdb8d9838a36ae37e31b98318d Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 21 Sep 2023 09:41:26 -0400 Subject: GCC: add rules for scanning C++ module dependencies --- Modules/Compiler/GNU-CXX.cmake | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Modules/Compiler/GNU-CXX.cmake b/Modules/Compiler/GNU-CXX.cmake index b35f254..c276f4e 100644 --- a/Modules/Compiler/GNU-CXX.cmake +++ b/Modules/Compiler/GNU-CXX.cmake @@ -72,3 +72,24 @@ elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.0) endif() __compiler_check_default_language_standard(CXX 3.4 98 6.0 14 11.1 17) + +if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 14.0) + string(CONCAT CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE + " -E -x c++ " + " -MT -MD -MF " + " -fmodules-ts -fdeps-file= -fdeps-target= -fdeps-format=p1689r5" + " -o ") + set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "gcc") + string(CONCAT CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG + # Turn on modules. + "-fmodules-ts" + # Read the module mapper file. + " -fmodule-mapper=" + # Make sure dependency tracking is enabled (missing from `try_*`). + " -MD" + # Suppress `CXX_MODULES +=` from generated depfile snippets. + " -fdeps-format=p1689r5" + # Force C++ as a language. + " -x c++") + set(CMAKE_EXPERIMENTAL_CXX_MODULE_BMI_ONLY_FLAG "-fmodule-only") +endif() -- cgit v0.12 From ee52a02d56371728499d7bfe2e96777e125caa61 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 21 Sep 2023 09:42:09 -0400 Subject: ci: update GCC build to use master after P1689R5 is merged --- .gitlab/ci/docker/gcc_cxx_modules/install_gcc.sh | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.gitlab/ci/docker/gcc_cxx_modules/install_gcc.sh b/.gitlab/ci/docker/gcc_cxx_modules/install_gcc.sh index 529626e..15cfe39 100755 --- a/.gitlab/ci/docker/gcc_cxx_modules/install_gcc.sh +++ b/.gitlab/ci/docker/gcc_cxx_modules/install_gcc.sh @@ -2,8 +2,8 @@ set -e -readonly revision="p1689r5-cmake-ci-20230814" # 9fd54ccc390ab4eb3c48186b7bf15e02632cc76c -readonly tarball="https://github.com/mathstuf/gcc/archive/$revision.tar.gz" +readonly revision="29862e21f6d656eca59284c927d0c4c0698eb99c" # master as of 21 Sep 2023 +readonly tarball="git://gcc.gnu.org/git/gcc.git" readonly workdir="$HOME/gcc" readonly srcdir="$workdir/gcc" @@ -12,9 +12,8 @@ readonly njobs="$( nproc )" mkdir -p "$workdir" cd "$workdir" -curl -L "$tarball" > "gcc-$revision.tar.gz" -tar xf "gcc-$revision.tar.gz" -mv "gcc-$revision" "$srcdir" +git clone "$tarball" "$srcdir" +git -C "$srcdir" checkout "$revision" mkdir -p "$builddir" cd "$builddir" "$srcdir/configure" \ -- cgit v0.12 From c2564f5916d8c27d2df4ab36b42b121ce94b78cd Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 21 Sep 2023 09:40:15 -0400 Subject: ci: drop extra scandep source settings for GCC --- .gitlab/ci/cxx_modules_rules_gcc.cmake | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/.gitlab/ci/cxx_modules_rules_gcc.cmake b/.gitlab/ci/cxx_modules_rules_gcc.cmake index 020cb1f..2b09b0e 100644 --- a/.gitlab/ci/cxx_modules_rules_gcc.cmake +++ b/.gitlab/ci/cxx_modules_rules_gcc.cmake @@ -1,20 +1 @@ set(CMake_TEST_CXXModules_UUID "a246741c-d067-4019-a8fb-3d16b0c9d1d3") - -string(CONCAT CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE - " -E -x c++ " - " -MT -MD -MF " - " -fmodules-ts -fdeps-file= -fdeps-target= -fdeps-format=p1689r5" - " -o ") -set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "gcc") -string(CONCAT CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG - # Turn on modules. - "-fmodules-ts" - # Read the module mapper file. - " -fmodule-mapper=" - # Make sure dependency tracking is enabled (missing from `try_*`). - " -MD" - # Suppress `CXX_MODULES +=` from generated depfile snippets. - " -fdeps-format=p1689r5" - # Force C++ as a language. - " -x c++") -set(CMAKE_EXPERIMENTAL_CXX_MODULE_BMI_ONLY_FLAG "-fmodule-only") -- cgit v0.12 From 40899545954d9c80fbffd61b206385f7b0666c6c Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 21 Sep 2023 09:45:24 -0400 Subject: gitlab-ci: update to GCC CI container with merged P1689R5 --- .gitlab/os-linux.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml index 8398108..bf9430b 100644 --- a/.gitlab/os-linux.yml +++ b/.gitlab/os-linux.yml @@ -376,7 +376,7 @@ ### C++ modules .gcc_cxx_modules_x86_64: - image: "kitware/cmake:ci-gcc_cxx_modules-x86_64-2023-08-15" + image: "kitware/cmake:ci-gcc_cxx_modules-x86_64-2023-09-21" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" -- cgit v0.12