@@ -1200,6 +1200,12 @@ if [ ! -d "${CLANG_SOURCE_DIR}" ] ; then
1200
1200
make_relative_symlink " ${WORKSPACE} /clang" " ${CLANG_SOURCE_DIR} "
1201
1201
fi
1202
1202
1203
+ # Don't symlink clang-tools-extra into the tree as the 'clang' symlink prevents
1204
+ # make_relative_symlink from working correctly.
1205
+ if [ -e " ${WORKSPACE} /clang-tools-extra" ] ; then
1206
+ CLANG_TOOLS_EXTRA_SOURCE_DIR=" ${WORKSPACE} /clang-tools-extra"
1207
+ fi
1208
+
1203
1209
# Symlink compiler-rt into the llvm tree, if it exists.
1204
1210
COMPILER_RT_SOURCE_DIR=" ${LLVM_SOURCE_DIR} /projects/compiler-rt"
1205
1211
if [ -e " ${WORKSPACE} /compiler-rt" ] ; then
@@ -1208,7 +1214,16 @@ if [ -e "${WORKSPACE}/compiler-rt" ] ; then
1208
1214
fi
1209
1215
fi
1210
1216
1217
+ # Build libcxx, unless it doesn't exist.
1218
+ LIBCXX_SOURCE_DIR=" ${WORKSPACE} /libcxx"
1219
+ if [[ ! -e " ${LIBCXX_SOURCE_DIR} " ]] ; then
1220
+ SKIP_BUILD_LIBCXX=1
1221
+ fi
1222
+
1211
1223
PRODUCTS=(cmark llvm)
1224
+ if [[ ! " ${SKIP_BUILD_LIBCXX} " ]] ; then
1225
+ PRODUCTS=(" ${PRODUCTS[@]} " libcxx)
1226
+ fi
1212
1227
if [[ ! " ${SKIP_BUILD_LIBICU} " ]] ; then
1213
1228
PRODUCTS=(" ${PRODUCTS[@]} " libicu)
1214
1229
fi
@@ -1545,6 +1560,10 @@ function build_directory_bin() {
1545
1560
llvm)
1546
1561
echo " ${root} /${LLVM_BUILD_TYPE} /bin"
1547
1562
;;
1563
+ libcxx)
1564
+ # Reuse LLVM's build type.
1565
+ echo " ${root} /${LLVM_BUILD_TYPE} /bin"
1566
+ ;;
1548
1567
swift)
1549
1568
echo " ${root} /${SWIFT_BUILD_TYPE} /bin"
1550
1569
;;
@@ -1687,6 +1706,10 @@ function cmake_config_opt() {
1687
1706
llvm)
1688
1707
echo " --config ${LLVM_BUILD_TYPE} "
1689
1708
;;
1709
+ libcxx)
1710
+ # Reuse LLVM's build type.
1711
+ echo " --config ${LLVM_BUILD_TYPE} "
1712
+ ;;
1690
1713
swift)
1691
1714
echo " --config ${SWIFT_BUILD_TYPE} "
1692
1715
;;
@@ -2097,6 +2120,12 @@ for host in "${ALL_HOSTS[@]}"; do
2097
2120
" ${llvm_cmake_options[@]} "
2098
2121
)
2099
2122
2123
+ if [[ ! -z " ${CLANG_TOOLS_EXTRA_SOURCE_DIR} " ]] ; then
2124
+ cmake_options+=(
2125
+ -DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR=" ${CLANG_TOOLS_EXTRA_SOURCE_DIR} "
2126
+ )
2127
+ fi
2128
+
2100
2129
if [[ " ${BUILD_TOOLCHAIN_ONLY} " ]]; then
2101
2130
cmake_options+=(
2102
2131
-DLLVM_BUILD_TOOLS=NO
@@ -2136,6 +2165,22 @@ for host in "${ALL_HOSTS[@]}"; do
2136
2165
2137
2166
;;
2138
2167
2168
+ libcxx)
2169
+ build_targets=(cxx-headers)
2170
+ cmake_options=(
2171
+ " ${cmake_options[@]} "
2172
+ -DCMAKE_C_FLAGS=" $( llvm_c_flags ${host} ) "
2173
+ -DCMAKE_CXX_FLAGS=" $( llvm_c_flags ${host} ) "
2174
+ -DCMAKE_C_FLAGS_RELWITHDEBINFO=" -O2 -DNDEBUG"
2175
+ -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=" -O2 -DNDEBUG"
2176
+ -DCMAKE_BUILD_TYPE:STRING=" ${LLVM_BUILD_TYPE} "
2177
+ -DLLVM_INCLUDE_DOCS:BOOL=TRUE
2178
+ -DLLVM_CONFIG_PATH=" $( build_directory " ${LOCAL_HOST} " llvm) /bin/llvm-config"
2179
+ " ${llvm_cmake_options[@]} "
2180
+ )
2181
+
2182
+ ;;
2183
+
2139
2184
swift)
2140
2185
2141
2186
if [[ ! " ${SKIP_BUILD_ANDROID} " ]]; then
@@ -2934,6 +2979,9 @@ for host in "${ALL_HOSTS[@]}"; do
2934
2979
llvm)
2935
2980
continue # We don't test LLVM
2936
2981
;;
2982
+ libcxx)
2983
+ continue # We don't test libc++
2984
+ ;;
2937
2985
swift)
2938
2986
executable_target=
2939
2987
results_targets=
@@ -3397,6 +3445,9 @@ for host in "${ALL_HOSTS[@]}"; do
3397
3445
fi
3398
3446
INSTALL_TARGETS=install-$( echo ${LLVM_INSTALL_COMPONENTS} | sed -E ' s/;/ install-/g' )
3399
3447
;;
3448
+ libcxx)
3449
+ INSTALL_TARGETS=install-cxx-headers
3450
+ ;;
3400
3451
swift)
3401
3452
if [[ -z " ${INSTALL_SWIFT} " ]] ; then
3402
3453
continue
0 commit comments