66
77set -e
88
9- while getopts :hd opt
9+ # Auto-detect CI environment and use "never" build policy
10+ if [[ -n " ${CI:- } " ]]; then
11+ build_policy=" never"
12+ else
13+ build_policy=" missing"
14+ fi
15+
16+ while getopts :hdn opt
1017do
1118 case $opt in
1219 h)
13- echo " Usage: $0 [-d] [install|build|create]"
20+ echo " Usage: $0 [-d] [-n] [ install|build|create]"
1421 echo " -d Run debug builds in addition to release builds"
22+ echo " -n Never build: require all dependencies to be pre-built (fail if build from source is needed)"
1523 echo " Commands:"
1624 echo " install Install dependencies only"
1725 echo " build Build the project with all compiler configurations"
2129 d)
2230 run_debug=true
2331 ;;
32+ n)
33+ build_policy=" never"
34+ ;;
2435 esac
2536done
2637
@@ -41,6 +52,9 @@ echo "🔧 Operation: $1"
4152if [[ $run_debug ]]; then
4253 echo " 🐛 Debug builds: enabled"
4354fi
55+ if [[ $build_policy == " never" ]]; then
56+ echo " ⚙️ Never build mode: requiring pre-built dependencies only"
57+ fi
4458echo " "
4559
4660if [[ $1 != " install" ]]; then
@@ -54,34 +68,42 @@ echo "🏗️ Starting compiler matrix testing..."
5468# GCC configurations
5569echo " 🚀 Starting release build configurations..."
5670echo " ⚙️ Testing GCC configurations..."
57- conan $1 . -pr gcc12 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=False' -o ' &:contracts=gsl-lite' -s compiler.cppstd=20 -b missing
58- conan $1 . -pr gcc13 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=True' -o ' &:contracts=none' -s compiler.cppstd=23 -b missing
59- conan $1 . -pr gcc14 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=False' -o ' &:contracts=ms-gsl' -s compiler.cppstd=23 -b missing
60- conan $1 . -pr gcc15 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=True' -o ' &:contracts=gsl-lite' -s compiler.cppstd=26 -b missing
71+ set -x
72+ conan $1 . -pr gcc12 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=False' -o ' &:contracts=gsl-lite' -s compiler.cppstd=20 -b " $build_policy "
73+ conan $1 . -pr gcc13 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=True' -o ' &:contracts=none' -s compiler.cppstd=23 -b " $build_policy "
74+ conan $1 . -pr gcc14 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=False' -o ' &:contracts=ms-gsl' -s compiler.cppstd=23 -b " $build_policy "
75+ conan $1 . -pr gcc15 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=True' -o ' &:contracts=gsl-lite' -s compiler.cppstd=26 -b " $build_policy "
76+ set +x
6177
6278echo " ⚙️ Testing Clang configurations..."
63- conan $1 . -pr clang16 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=False' -o ' &:contracts=gsl-lite' -s compiler.cppstd=20 -b missing
64- conan $1 . -pr clang17 -c user.mp-units.build:all=True -o ' &:cxx_modules=True' -o ' &:import_std=False' -o ' &:std_format=True' -o ' &:contracts=ms-gsl' -s compiler.cppstd=26 -b missing
65- conan $1 . -pr clang18 -c user.mp-units.build:all=True -o ' &:cxx_modules=True' -o ' &:import_std=True' -o ' &:std_format=True' -o ' &:contracts=none' -s compiler.cppstd=26 -b missing
79+ set -x
80+ conan $1 . -pr clang16 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=False' -o ' &:contracts=gsl-lite' -s compiler.cppstd=20 -b " $build_policy "
81+ conan $1 . -pr clang17 -c user.mp-units.build:all=True -o ' &:cxx_modules=True' -o ' &:import_std=False' -o ' &:std_format=True' -o ' &:contracts=ms-gsl' -s compiler.cppstd=26 -b " $build_policy "
82+ conan $1 . -pr clang18 -c user.mp-units.build:all=True -o ' &:cxx_modules=True' -o ' &:import_std=True' -o ' &:std_format=True' -o ' &:contracts=none' -s compiler.cppstd=26 -b " $build_policy "
6683# clang-19 will never compile mp-units due to https://github.com/llvm/llvm-project/pull/118288
67- conan $1 . -pr clang20 -c user.mp-units.build:all=True -o ' &:cxx_modules=True' -o ' &:import_std=True' -o ' &:std_format=True' -o ' &:contracts=none' -s compiler.cppstd=26 -b missing
68- conan $1 . -pr clang21 -c user.mp-units.build:all=True -o ' &:cxx_modules=True' -o ' &:import_std=True' -o ' &:std_format=True' -o ' &:contracts=none' -s compiler.cppstd=26 -b missing
84+ conan $1 . -pr clang20 -c user.mp-units.build:all=True -o ' &:cxx_modules=True' -o ' &:import_std=True' -o ' &:std_format=True' -o ' &:contracts=none' -s compiler.cppstd=26 -b " $build_policy "
85+ conan $1 . -pr clang21 -c user.mp-units.build:all=True -o ' &:cxx_modules=True' -o ' &:import_std=True' -o ' &:std_format=True' -o ' &:contracts=none' -s compiler.cppstd=26 -b " $build_policy "
86+ set +x
6987
7088if [[ $run_debug ]]; then
7189 echo " 🐛 Starting debug build configurations..."
7290 echo " ⚙️ Testing GCC debug configurations..."
73- conan $1 . -pr gcc12 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=False' -o ' &:contracts=gsl-lite' -s compiler.cppstd=20 -b missing -s build_type=Debug
74- conan $1 . -pr gcc13 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=True' -o ' &:contracts=none' -s compiler.cppstd=23 -b missing -s build_type=Debug
75- conan $1 . -pr gcc14 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=False' -o ' &:contracts=ms-gsl' -s compiler.cppstd=23 -b missing -s build_type=Debug
76- conan $1 . -pr gcc15 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=True' -o ' &:contracts=gsl-lite' -s compiler.cppstd=26 -b missing -s build_type=Debug
91+ set -x
92+ conan $1 . -pr gcc12 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=False' -o ' &:contracts=gsl-lite' -s compiler.cppstd=20 -b " $build_policy " -s build_type=Debug
93+ conan $1 . -pr gcc13 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=True' -o ' &:contracts=none' -s compiler.cppstd=23 -b " $build_policy " -s build_type=Debug
94+ conan $1 . -pr gcc14 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=False' -o ' &:contracts=ms-gsl' -s compiler.cppstd=23 -b " $build_policy " -s build_type=Debug
95+ conan $1 . -pr gcc15 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=True' -o ' &:contracts=gsl-lite' -s compiler.cppstd=26 -b " $build_policy " -s build_type=Debug
96+ set +x
7797
7898 echo " ⚙️ Testing Clang debug configurations..."
79- conan $1 . -pr clang16 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=False' -o ' &:contracts=gsl-lite' -s compiler.cppstd=20 -b missing -s build_type=Debug
80- conan $1 . -pr clang17 -c user.mp-units.build:all=True -o ' &:cxx_modules=True' -o ' &:import_std=False' -o ' &:std_format=True' -o ' &:contracts=ms-gsl' -s compiler.cppstd=26 -b missing -s build_type=Debug
81- conan $1 . -pr clang18 -c user.mp-units.build:all=True -o ' &:cxx_modules=True' -o ' &:import_std=True' -o ' &:std_format=True' -o ' &:contracts=none' -s compiler.cppstd=26 -b missing -s build_type=Debug
99+ set -x
100+ conan $1 . -pr clang16 -c user.mp-units.build:all=True -o ' &:cxx_modules=False' -o ' &:import_std=False' -o ' &:std_format=False' -o ' &:contracts=gsl-lite' -s compiler.cppstd=20 -b " $build_policy " -s build_type=Debug
101+ conan $1 . -pr clang17 -c user.mp-units.build:all=True -o ' &:cxx_modules=True' -o ' &:import_std=False' -o ' &:std_format=True' -o ' &:contracts=ms-gsl' -s compiler.cppstd=26 -b " $build_policy " -s build_type=Debug
102+ conan $1 . -pr clang18 -c user.mp-units.build:all=True -o ' &:cxx_modules=True' -o ' &:import_std=True' -o ' &:std_format=True' -o ' &:contracts=none' -s compiler.cppstd=26 -b " $build_policy " -s build_type=Debug
82103 # clang-19 will never compile mp-units due to https://github.com/llvm/llvm-project/pull/118288
83- conan $1 . -pr clang20 -c user.mp-units.build:all=True -o ' &:cxx_modules=True' -o ' &:import_std=True' -o ' &:std_format=True' -o ' &:contracts=none' -s compiler.cppstd=26 -b missing -s build_type=Debug
84- conan $1 . -pr clang21 -c user.mp-units.build:all=True -o ' &:cxx_modules=True' -o ' &:import_std=True' -o ' &:std_format=True' -o ' &:contracts=none' -s compiler.cppstd=26 -b missing -s build_type=Debug
104+ conan $1 . -pr clang20 -c user.mp-units.build:all=True -o ' &:cxx_modules=True' -o ' &:import_std=True' -o ' &:std_format=True' -o ' &:contracts=none' -s compiler.cppstd=26 -b " $build_policy " -s build_type=Debug
105+ conan $1 . -pr clang21 -c user.mp-units.build:all=True -o ' &:cxx_modules=True' -o ' &:import_std=True' -o ' &:std_format=True' -o ' &:contracts=none' -s compiler.cppstd=26 -b " $build_policy " -s build_type=Debug
106+ set +x
85107 echo " ✅ Debug builds completed!"
86108fi
87109
0 commit comments