summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--.gitlab-ci.yml75
-rw-r--r--.gitlab/ci/configure_debian12_ninja_multi_symlinked.cmake3
-rw-r--r--.gitlab/ci/configure_fedora38_makefiles_symlinked.cmake2
-rw-r--r--.gitlab/ci/configure_macos_arm64_ninja_symlinked.cmake2
-rw-r--r--.gitlab/ci/configure_macos_arm64_xcode_symlinked.cmake2
-rw-r--r--.gitlab/ci/configure_symlinked_common.cmake7
-rw-r--r--.gitlab/ci/env.sh10
-rw-r--r--.gitlab/ci/env_debian12_ninja_multi_symlinked.sh5
-rw-r--r--.gitlab/ci/env_fedora38_makefiles_symlinked.cmake1
-rw-r--r--.gitlab/ci/env_fedora38_makefiles_symlinked.sh1
-rw-r--r--.gitlab/ci/env_macos_arm64_ninja_symlinked.sh1
-rw-r--r--.gitlab/ci/gitlab_ci.cmake5
-rw-r--r--.gitlab/os-linux.yml20
-rw-r--r--.gitlab/os-macos.yml19
15 files changed, 157 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 3b9e52a..816dced 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,10 @@
# Common build directories
/build*/
+# CI jobs that run in symlinked trees produce these artifacts.
+/real_work/
+/work
+
# MacOS Finder files.
.DS_Store
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index eb1be76..5982c27 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -199,6 +199,18 @@ t:debian12-makefiles-clang:
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
+t:debian12-ninja-multi-symlinked:
+ extends:
+ - .debian12_ninja_multi_symlinked
+ - .cmake_test_linux_release
+ - .linux_x86_64_tags
+ - .cmake_junit_artifacts
+ - .run_dependent
+ - .needs_centos7_x86_64
+ variables:
+ CMAKE_CI_JOB_NIGHTLY: "true"
+ CMAKE_CI_JOB_NIGHTLY_NINJA: "true"
+
t:debian12-hip-radeon:
extends:
- .debian12_hip_radeon
@@ -399,6 +411,16 @@ b:fedora38-ninja:
variables:
CMAKE_CI_JOB_CONTINUOUS: "true"
+b:fedora38-makefiles-symlinked:
+ extends:
+ - .fedora38_makefiles_symlinked
+ - .cmake_build_linux
+ - .cmake_build_artifacts
+ - .linux_x86_64_tags
+ - .run_manually
+ variables:
+ CMAKE_CI_JOB_NIGHTLY: "true"
+
b:debian12-makefiles-inplace:
extends:
- .debian12_makefiles_inplace
@@ -449,6 +471,20 @@ t:fedora38-ninja:
variables:
CMAKE_CI_JOB_CONTINUOUS: "true"
+t:fedora38-makefiles-symlinked:
+ extends:
+ - .fedora38_makefiles_symlinked
+ - .cmake_test_linux
+ - .linux_x86_64_tags_x11
+ - .cmake_test_artifacts
+ - .run_dependent
+ dependencies:
+ - b:fedora38-makefiles-symlinked
+ needs:
+ - b:fedora38-makefiles-symlinked
+ variables:
+ CMAKE_CI_JOB_NIGHTLY: "true"
+
t:fedora38-ninja-multi:
extends:
- .fedora38_ninja_multi
@@ -871,6 +907,16 @@ b:macos-arm64-ninja:
variables:
CMAKE_CI_JOB_CONTINUOUS: "true"
+b:macos-arm64-ninja-symlinked:
+ extends:
+ - .macos_arm64_ninja_symlinked
+ - .cmake_build_macos
+ - .cmake_build_artifacts
+ - .macos_arm64_tags
+ - .run_manually
+ variables:
+ CMAKE_CI_JOB_NIGHTLY: "true"
+
b:macos-arm64-pch:
extends:
- .macos_arm64_pch
@@ -909,6 +955,21 @@ t:macos-arm64-ninja:
CMAKE_CI_JOB_CONTINUOUS: "true"
CMAKE_CI_JOB_NIGHTLY_NINJA: "true"
+t:macos-arm64-ninja-symlinked:
+ extends:
+ - .macos_arm64_ninja_symlinked
+ - .cmake_test_macos
+ - .cmake_test_artifacts
+ - .macos_arm64_tags
+ - .run_dependent
+ dependencies:
+ - b:macos-arm64-ninja-symlinked
+ needs:
+ - b:macos-arm64-ninja-symlinked
+ variables:
+ CMAKE_CI_JOB_NIGHTLY: "true"
+ CMAKE_CI_JOB_NIGHTLY_NINJA: "true"
+
b:macos-x86_64-makefiles:
extends:
- .macos_x86_64_makefiles
@@ -968,6 +1029,20 @@ t:macos-arm64-xcode:
needs:
- t:macos-arm64-ninja
+t:macos-arm64-xcode-symlinked:
+ extends:
+ - .macos_arm64_xcode_symlinked
+ - .cmake_test_macos_external
+ - .macos_arm64_tags_ext
+ - .cmake_junit_artifacts
+ - .run_dependent
+ dependencies:
+ - t:macos-arm64-ninja
+ needs:
+ - t:macos-arm64-ninja
+ variables:
+ CMAKE_CI_JOB_NIGHTLY: "true"
+
t:macos-x86_64-ninja-ub:
extends:
- .macos_x86_64_ninja_ub
diff --git a/.gitlab/ci/configure_debian12_ninja_multi_symlinked.cmake b/.gitlab/ci/configure_debian12_ninja_multi_symlinked.cmake
new file mode 100644
index 0000000..cf9202d
--- /dev/null
+++ b/.gitlab/ci/configure_debian12_ninja_multi_symlinked.cmake
@@ -0,0 +1,3 @@
+include("${CMAKE_CURRENT_LIST_DIR}/configure_symlinked_common.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/configure_debian12_ninja_common.cmake")
+set(CMake_TEST_UseSWIG "OFF" CACHE BOOL "")
diff --git a/.gitlab/ci/configure_fedora38_makefiles_symlinked.cmake b/.gitlab/ci/configure_fedora38_makefiles_symlinked.cmake
new file mode 100644
index 0000000..177bbcf
--- /dev/null
+++ b/.gitlab/ci/configure_fedora38_makefiles_symlinked.cmake
@@ -0,0 +1,2 @@
+include("${CMAKE_CURRENT_LIST_DIR}/configure_symlinked_common.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora38_common.cmake")
diff --git a/.gitlab/ci/configure_macos_arm64_ninja_symlinked.cmake b/.gitlab/ci/configure_macos_arm64_ninja_symlinked.cmake
new file mode 100644
index 0000000..63d0dc7
--- /dev/null
+++ b/.gitlab/ci/configure_macos_arm64_ninja_symlinked.cmake
@@ -0,0 +1,2 @@
+include("${CMAKE_CURRENT_LIST_DIR}/configure_symlinked_common.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/configure_macos_arm64_ninja.cmake")
diff --git a/.gitlab/ci/configure_macos_arm64_xcode_symlinked.cmake b/.gitlab/ci/configure_macos_arm64_xcode_symlinked.cmake
new file mode 100644
index 0000000..66b18e1
--- /dev/null
+++ b/.gitlab/ci/configure_macos_arm64_xcode_symlinked.cmake
@@ -0,0 +1,2 @@
+include("${CMAKE_CURRENT_LIST_DIR}/configure_symlinked_common.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/configure_macos_arm64_xcode.cmake")
diff --git a/.gitlab/ci/configure_symlinked_common.cmake b/.gitlab/ci/configure_symlinked_common.cmake
new file mode 100644
index 0000000..a5e427e
--- /dev/null
+++ b/.gitlab/ci/configure_symlinked_common.cmake
@@ -0,0 +1,7 @@
+# Ensure that the symlink tree is set up correctly.
+if(NOT CMAKE_SOURCE_DIR STREQUAL "$ENV{CI_PROJECT_DIR}/work/cmake")
+ message(FATAL_ERROR "Expected value of CMAKE_SOURCE_DIR:\n $ENV{CI_PROJECT_DIR}/work/cmake\nActual value:\n ${CMAKE_SOURCE_DIR}")
+endif()
+if(NOT CMAKE_BINARY_DIR STREQUAL "$ENV{CI_PROJECT_DIR}/work/build")
+ message(FATAL_ERROR "Expected value of CMAKE_BINARY_DIR:\n $ENV{CI_PROJECT_DIR}/work/build\nActual value:\n ${CMAKE_BINARY_DIR}")
+endif()
diff --git a/.gitlab/ci/env.sh b/.gitlab/ci/env.sh
index 7634f5d..aa709a8 100644
--- a/.gitlab/ci/env.sh
+++ b/.gitlab/ci/env.sh
@@ -9,6 +9,16 @@ quietly() {
rm -f "$log"
}
+if test -n "$CMAKE_CI_IN_SYMLINK_TREE"; then
+ mkdir -p "$CI_PROJECT_DIR/real_work/work/build"
+ ln -s real_work/work "$CI_PROJECT_DIR/work"
+ git worktree prune
+ git worktree add "$CI_PROJECT_DIR/work/cmake" HEAD
+
+ # Assert that the hash matches.
+ test "$(git -C "$CI_PROJECT_DIR/work/cmake" rev-parse HEAD)" = "$(git -C "$CI_PROJECT_DIR" rev-parse HEAD)"
+fi
+
if test -r ".gitlab/ci/env_${CMAKE_CONFIGURATION}.sh"; then
source ".gitlab/ci/env_${CMAKE_CONFIGURATION}.sh"
fi
diff --git a/.gitlab/ci/env_debian12_ninja_multi_symlinked.sh b/.gitlab/ci/env_debian12_ninja_multi_symlinked.sh
new file mode 100644
index 0000000..2b8ff2a
--- /dev/null
+++ b/.gitlab/ci/env_debian12_ninja_multi_symlinked.sh
@@ -0,0 +1,5 @@
+export MY_RUBY_HOME="/usr/local/rvm/rubies/ruby-3.2.2"
+
+if test -z "$CI_MERGE_REQUEST_ID"; then
+ source .gitlab/ci/swift-env.sh
+fi
diff --git a/.gitlab/ci/env_fedora38_makefiles_symlinked.cmake b/.gitlab/ci/env_fedora38_makefiles_symlinked.cmake
new file mode 100644
index 0000000..2accabf
--- /dev/null
+++ b/.gitlab/ci/env_fedora38_makefiles_symlinked.cmake
@@ -0,0 +1 @@
+include("${CMAKE_CURRENT_LIST_DIR}/env_fedora38_makefiles.cmake")
diff --git a/.gitlab/ci/env_fedora38_makefiles_symlinked.sh b/.gitlab/ci/env_fedora38_makefiles_symlinked.sh
new file mode 100644
index 0000000..452d3785
--- /dev/null
+++ b/.gitlab/ci/env_fedora38_makefiles_symlinked.sh
@@ -0,0 +1 @@
+. .gitlab/ci/env_fedora38_makefiles.sh
diff --git a/.gitlab/ci/env_macos_arm64_ninja_symlinked.sh b/.gitlab/ci/env_macos_arm64_ninja_symlinked.sh
new file mode 100644
index 0000000..b78cefc
--- /dev/null
+++ b/.gitlab/ci/env_macos_arm64_ninja_symlinked.sh
@@ -0,0 +1 @@
+. .gitlab/ci/env_macos_arm64_ninja.sh
diff --git a/.gitlab/ci/gitlab_ci.cmake b/.gitlab/ci/gitlab_ci.cmake
index 080c93b..d0d4a59 100644
--- a/.gitlab/ci/gitlab_ci.cmake
+++ b/.gitlab/ci/gitlab_ci.cmake
@@ -5,8 +5,13 @@ endif ()
# Set up the source and build paths.
set(CTEST_SOURCE_DIRECTORY "$ENV{CI_PROJECT_DIR}")
+if("$ENV{CMAKE_CI_IN_SYMLINK_TREE}")
+ set(CTEST_SOURCE_DIRECTORY "$ENV{CI_PROJECT_DIR}/work/cmake")
+endif()
if("$ENV{CMAKE_CI_INPLACE}")
set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}")
+elseif("$ENV{CMAKE_CI_IN_SYMLINK_TREE}")
+ set(CTEST_BINARY_DIRECTORY "$ENV{CI_PROJECT_DIR}/work/build")
else()
set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}/build")
endif()
diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml
index d42340c..0e1f933 100644
--- a/.gitlab/os-linux.yml
+++ b/.gitlab/os-linux.yml
@@ -137,6 +137,16 @@
CMAKE_CI_NO_INSTALL: 1
CTEST_NO_WARNINGS_ALLOWED: 1
+.debian12_ninja_multi_symlinked:
+ extends: .debian12
+
+ variables:
+ CMAKE_CONFIGURATION: debian12_ninja_multi_symlinked
+ CMAKE_GENERATOR: "Ninja Multi-Config"
+ CTEST_NO_WARNINGS_ALLOWED: 1
+ CMAKE_CI_IN_SYMLINK_TREE: 1
+ CMAKE_CI_BUILD_DIR: "real_work/work/build"
+
.debian12_extdeps:
extends: .debian12
@@ -185,6 +195,16 @@
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_GENERATOR: "Unix Makefiles"
+.fedora38_makefiles_symlinked:
+ extends: .fedora38
+
+ variables:
+ CMAKE_CONFIGURATION: fedora38_makefiles_symlinked
+ CTEST_NO_WARNINGS_ALLOWED: 1
+ CMAKE_GENERATOR: "Unix Makefiles"
+ CMAKE_CI_IN_SYMLINK_TREE: 1
+ CMAKE_CI_BUILD_DIR: "real_work/work/build"
+
### Clang Compiler
.debian12_makefiles_clang:
diff --git a/.gitlab/os-macos.yml b/.gitlab/os-macos.yml
index fbba288..9212ecc 100644
--- a/.gitlab/os-macos.yml
+++ b/.gitlab/os-macos.yml
@@ -38,6 +38,15 @@
CMAKE_CONFIGURATION: macos_arm64_ninja
CTEST_NO_WARNINGS_ALLOWED: 1
+.macos_arm64_ninja_symlinked:
+ extends: .macos_build
+
+ variables:
+ CMAKE_CONFIGURATION: macos_arm64_ninja_symlinked
+ CTEST_NO_WARNINGS_ALLOWED: 1
+ CMAKE_CI_IN_SYMLINK_TREE: 1
+ CMAKE_CI_BUILD_DIR: "real_work/work/build"
+
.macos_arm64_pch:
extends: .macos_arm64_ninja
@@ -86,6 +95,16 @@
CMAKE_GENERATOR: Xcode
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
+.macos_arm64_xcode_symlinked:
+ extends: .macos
+
+ variables:
+ CMAKE_CONFIGURATION: macos_arm64_xcode_symlinked
+ CMAKE_GENERATOR: Xcode
+ CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
+ CMAKE_CI_IN_SYMLINK_TREE: 1
+ CMAKE_CI_BUILD_DIR: "real_work/work/build"
+
.macos_arm64_xcode_ub:
extends: .macos