@@ -14,144 +14,157 @@ MONOREPO_ROOT="$(git rev-parse --show-toplevel)"
14
14
BUILD_DIR=" ${MONOREPO_ROOT} /build/${BUILDER} "
15
15
INSTALL_DIR=" ${MONOREPO_ROOT} /build/${BUILDER} /install"
16
16
17
- args=()
18
- args+=(" -DLLVM_ENABLE_PROJECTS=libcxx;libunwind;libcxxabi" )
19
- args+=(" -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} " )
20
- args+=(" -DLIBCXX_CXX_ABI=libcxxabi" )
17
+ function generate-cmake() {
18
+ echo " --- Generating CMake"
19
+ rm -rf " ${BUILD_DIR} "
20
+ cmake -S " ${MONOREPO_ROOT} /llvm" \
21
+ -B " ${BUILD_DIR} " \
22
+ -GNinja \
23
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
24
+ -DCMAKE_INSTALL_PREFIX=" ${INSTALL_DIR} " \
25
+ -DLLVM_ENABLE_PROJECTS=" libcxx;libunwind;libcxxabi" \
26
+ -DLLVM_LIT_ARGS=" -sv --show-unsupported --xunit-xml-output test-results.xml" \
27
+ -DLIBCXX_CXX_ABI=libcxxabi \
28
+ ${@ }
29
+ }
30
+
31
+ function check-cxx-cxxabi() {
32
+ echo " +++ Running the libc++ tests"
33
+ ninja -C " ${BUILD_DIR} " check-cxx
34
+
35
+ echo " +++ Running the libc++abi tests"
36
+ ninja -C " ${BUILD_DIR} " check-cxxabi
37
+
38
+ echo " --- Installing libc++ and libc++abi to a fake location"
39
+ ninja -C " ${BUILD_DIR} " install-cxx install-cxxabi
40
+ }
41
+
42
+ function check-cxx-benchmarks() {
43
+ echo " --- Running the benchmarks"
44
+ ninja -C " ${BUILD_DIR} " check-cxx-benchmarks
45
+ }
21
46
22
47
case " ${BUILDER} " in
23
48
generic-cxx03)
24
49
export CC=clang
25
50
export CXX=clang++
26
- args+=( " -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml " )
27
- args+=( " -C ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-cxx03.cmake " )
51
+ generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-cxx03.cmake "
52
+ check-cxx-cxxabi
28
53
;;
29
54
generic-cxx11)
30
55
export CC=clang
31
56
export CXX=clang++
32
- args+=( " -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml " )
33
- args+=( " -C ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-cxx11.cmake " )
57
+ generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-cxx11.cmake "
58
+ check-cxx-cxxabi
34
59
;;
35
60
generic-cxx14)
36
61
export CC=clang
37
62
export CXX=clang++
38
- args+=( " -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml " )
39
- args+=( " -C ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-cxx14.cmake " )
63
+ generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-cxx14.cmake "
64
+ check-cxx-cxxabi
40
65
;;
41
66
generic-cxx17)
42
67
export CC=clang
43
68
export CXX=clang++
44
- args+=( " -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml " )
45
- args+=( " -C ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-cxx17.cmake " )
69
+ generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-cxx17.cmake "
70
+ check-cxx-cxxabi
46
71
;;
47
72
generic-cxx2a)
48
73
export CC=clang
49
74
export CXX=clang++
50
- args+=( " -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml " )
51
- args+=( " -C ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-cxx2a.cmake " )
75
+ generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-cxx2a.cmake "
76
+ check-cxx-cxxabi
52
77
;;
53
78
generic-noexceptions)
54
79
export CC=clang
55
80
export CXX=clang++
56
- args+=( " -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml " )
57
- args+=( " -C ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-noexceptions.cmake " )
81
+ generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-noexceptions.cmake "
82
+ check-cxx-cxxabi
58
83
;;
59
84
generic-32bit)
60
85
export CC=clang
61
86
export CXX=clang++
62
- args+=( " -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml " )
63
- args+=( " -C ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-32bits.cmake " )
87
+ generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-32bits.cmake "
88
+ check-cxx-cxxabi
64
89
;;
65
90
generic-gcc)
66
91
export CC=gcc
67
92
export CXX=g++
68
93
# FIXME: Re-enable experimental testing on GCC. GCC cares about the order
69
94
# in which we link -lc++experimental, which causes issues.
70
- args+=(" -DLLVM_LIT_ARGS=-sv --show-unsupported --param enable_experimental=False --xunit-xml-output test-results.xml" )
95
+ generate-cmake -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF
96
+ check-cxx-cxxabi
71
97
;;
72
98
generic-asan)
73
99
export CC=clang
74
100
export CXX=clang++
75
- args+=( " -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml " )
76
- args+=( " -C ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-asan.cmake " )
101
+ generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-asan.cmake "
102
+ check-cxx-cxxabi
77
103
;;
78
104
generic-msan)
79
105
export CC=clang
80
106
export CXX=clang++
81
- args+=( " -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml " )
82
- args+=( " -C ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-msan.cmake " )
107
+ generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-msan.cmake "
108
+ check-cxx-cxxabi
83
109
;;
84
110
generic-tsan)
85
111
export CC=clang
86
112
export CXX=clang++
87
- args+=( " -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml " )
88
- args+=( " -C ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-tsan.cmake " )
113
+ generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-tsan.cmake "
114
+ check-cxx-cxxabi
89
115
;;
90
116
generic-ubsan)
91
117
export CC=clang
92
118
export CXX=clang++
93
- args+=( " -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml " )
94
- args+=( " -C ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-ubsan.cmake " )
119
+ generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-ubsan.cmake "
120
+ check-cxx-cxxabi
95
121
;;
96
122
generic-with_llvm_unwinder)
97
123
export CC=clang
98
124
export CXX=clang++
99
- args+=( " -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml " )
100
- args+=( " -DLIBCXXABI_USE_LLVM_UNWINDER=ON " )
125
+ generate-cmake -DLIBCXXABI_USE_LLVM_UNWINDER=ON
126
+ check-cxx-cxxabi
101
127
;;
102
128
generic-singlethreaded)
103
129
export CC=clang
104
130
export CXX=clang++
105
- args+=( " -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml " )
106
- args+=( " -C ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-singlethreaded.cmake " )
131
+ generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-singlethreaded.cmake "
132
+ check-cxx-cxxabi
107
133
;;
108
134
generic-nodebug)
109
135
export CC=clang
110
136
export CXX=clang++
111
- args+=( " -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml " )
112
- args+=( " -C ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-nodebug.cmake " )
137
+ generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-nodebug.cmake "
138
+ check-cxx-cxxabi
113
139
;;
114
140
generic-no-random_device)
115
141
export CC=clang
116
142
export CXX=clang++
117
- args+=( " -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml " )
118
- args+=( " -C ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-no-random_device.cmake " )
143
+ generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Generic-no-random_device.cmake "
144
+ check-cxx-cxxabi
119
145
;;
120
146
x86_64-apple-system)
121
147
export CC=clang
122
148
export CXX=clang++
123
- args+=( " -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml " )
124
- args+=( " -C ${MONOREPO_ROOT} /libcxx/cmake/caches/Apple.cmake " )
149
+ generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Apple.cmake "
150
+ check-cxx-cxxabi
125
151
;;
126
152
x86_64-apple-system-noexceptions)
127
153
export CC=clang
128
154
export CXX=clang++
129
- args+=(" -DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml" )
130
- args+=(" -C${MONOREPO_ROOT} /libcxx/cmake/caches/Apple.cmake" )
131
- args+=(" -DLIBCXX_ENABLE_EXCEPTIONS=OFF" )
132
- args+=(" -DLIBCXXABI_ENABLE_EXCEPTIONS=OFF" )
155
+ generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Apple.cmake" \
156
+ -DLIBCXX_ENABLE_EXCEPTIONS=OFF \
157
+ -DLIBCXXABI_ENABLE_EXCEPTIONS=OFF
158
+ check-cxx-cxxabi
159
+ ;;
160
+ benchmarks)
161
+ export CC=clang
162
+ export CXX=clang++
163
+ generate-cmake
164
+ check-cxx-benchmarks
133
165
;;
134
166
* )
135
167
echo " ${BUILDER} is not a known configuration"
136
168
exit 1
137
169
;;
138
170
esac
139
-
140
- echo " --- Generating CMake"
141
- rm -rf " ${BUILD_DIR} "
142
- cmake -S " ${MONOREPO_ROOT} /llvm" -B " ${BUILD_DIR} " -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo " ${args[@]} "
143
-
144
- echo " --- Building libc++ and libc++abi"
145
- ninja -C " ${BUILD_DIR} " check-cxx-deps cxxabi
146
-
147
- echo " +++ Running the libc++ tests"
148
- ninja -C " ${BUILD_DIR} " check-cxx
149
-
150
- echo " +++ Running the libc++abi tests"
151
- ninja -C " ${BUILD_DIR} " check-cxxabi
152
-
153
- echo " +++ Installing libc++ and libc++abi to a fake location"
154
- ninja -C " ${BUILD_DIR} " install-cxx install-cxxabi
155
-
156
- # echo "+++ Running the libc++ benchmarks"
157
- # ninja -C "${BUILD_DIR}" check-cxx-benchmarks
0 commit comments