| OLD | NEW |
| 1 #!/usr/bin/env bash | 1 #!/usr/bin/env bash |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 # This script will check out llvm and clang into third_party/llvm and build it. | 6 # This script will check out llvm and clang into third_party/llvm and build it. |
| 7 | 7 |
| 8 # Do NOT CHANGE this if you don't know what you're doing -- see | 8 # Do NOT CHANGE this if you don't know what you're doing -- see |
| 9 # https://code.google.com/p/chromium/wiki/UpdatingClang | 9 # https://code.google.com/p/chromium/wiki/UpdatingClang |
| 10 # Reverting problematic clang rolls is safe, though. | 10 # Reverting problematic clang rolls is safe, though. |
| 11 CLANG_REVISION=223108 | 11 CLANG_REVISION=231191 |
| 12 |
| 13 # This is incremented when pushing a new build of Clang at the same revision. |
| 14 CLANG_SUB_REVISION=1 |
| 15 |
| 16 PACKAGE_VERSION="${CLANG_REVISION}-${CLANG_SUB_REVISION}" |
| 12 | 17 |
| 13 THIS_DIR="$(dirname "${0}")" | 18 THIS_DIR="$(dirname "${0}")" |
| 14 LLVM_DIR="${THIS_DIR}/../../../third_party/llvm" | 19 LLVM_DIR="${THIS_DIR}/../../../third_party/llvm" |
| 15 LLVM_BUILD_DIR="${LLVM_DIR}/../llvm-build/Release+Asserts" | 20 LLVM_BUILD_DIR="${LLVM_DIR}/../llvm-build/Release+Asserts" |
| 16 COMPILER_RT_BUILD_DIR="${LLVM_DIR}/../llvm-build/compiler-rt" | 21 COMPILER_RT_BUILD_DIR="${LLVM_DIR}/../llvm-build/compiler-rt" |
| 17 LLVM_BOOTSTRAP_DIR="${LLVM_DIR}/../llvm-bootstrap" | 22 LLVM_BOOTSTRAP_DIR="${LLVM_DIR}/../llvm-bootstrap" |
| 18 LLVM_BOOTSTRAP_INSTALL_DIR="${LLVM_DIR}/../llvm-bootstrap-install" | 23 LLVM_BOOTSTRAP_INSTALL_DIR="${LLVM_DIR}/../llvm-bootstrap-install" |
| 19 CLANG_DIR="${LLVM_DIR}/tools/clang" | 24 CLANG_DIR="${LLVM_DIR}/tools/clang" |
| 20 COMPILER_RT_DIR="${LLVM_DIR}/compiler-rt" | 25 COMPILER_RT_DIR="${LLVM_DIR}/compiler-rt" |
| 21 LIBCXX_DIR="${LLVM_DIR}/projects/libcxx" | 26 LIBCXX_DIR="${LLVM_DIR}/projects/libcxx" |
| 22 LIBCXXABI_DIR="${LLVM_DIR}/projects/libcxxabi" | 27 LIBCXXABI_DIR="${LLVM_DIR}/projects/libcxxabi" |
| 23 ANDROID_NDK_DIR="${THIS_DIR}/../../../third_party/android_tools/ndk" | 28 ANDROID_NDK_DIR="${THIS_DIR}/../../../third_party/android_tools/ndk" |
| 24 STAMP_FILE="${LLVM_DIR}/../llvm-build/cr_build_revision" | 29 STAMP_FILE="${LLVM_DIR}/../llvm-build/cr_build_revision" |
| 25 CHROMIUM_TOOLS_DIR="${THIS_DIR}/.." | 30 CHROMIUM_TOOLS_DIR="${THIS_DIR}/.." |
| 31 BINUTILS_DIR="${THIS_DIR}/../../../third_party/binutils" |
| 26 | 32 |
| 27 ABS_CHROMIUM_TOOLS_DIR="${PWD}/${CHROMIUM_TOOLS_DIR}" | 33 ABS_CHROMIUM_TOOLS_DIR="${PWD}/${CHROMIUM_TOOLS_DIR}" |
| 28 ABS_LIBCXX_DIR="${PWD}/${LIBCXX_DIR}" | 34 ABS_LIBCXX_DIR="${PWD}/${LIBCXX_DIR}" |
| 29 ABS_LIBCXXABI_DIR="${PWD}/${LIBCXXABI_DIR}" | 35 ABS_LIBCXXABI_DIR="${PWD}/${LIBCXXABI_DIR}" |
| 30 ABS_LLVM_DIR="${PWD}/${LLVM_DIR}" | 36 ABS_LLVM_DIR="${PWD}/${LLVM_DIR}" |
| 31 ABS_LLVM_BUILD_DIR="${PWD}/${LLVM_BUILD_DIR}" | 37 ABS_LLVM_BUILD_DIR="${PWD}/${LLVM_BUILD_DIR}" |
| 32 ABS_COMPILER_RT_DIR="${PWD}/${COMPILER_RT_DIR}" | 38 ABS_COMPILER_RT_DIR="${PWD}/${COMPILER_RT_DIR}" |
| 39 ABS_BINUTILS_DIR="${PWD}/${BINUTILS_DIR}" |
| 33 | 40 |
| 34 # ${A:-a} returns $A if it's set, a else. | 41 # ${A:-a} returns $A if it's set, a else. |
| 35 LLVM_REPO_URL=${LLVM_URL:-https://llvm.org/svn/llvm-project} | 42 LLVM_REPO_URL=${LLVM_URL:-https://llvm.org/svn/llvm-project} |
| 36 | 43 |
| 44 CDS_URL=https://commondatastorage.googleapis.com/chromium-browser-clang |
| 45 |
| 37 if [[ -z "$GYP_DEFINES" ]]; then | 46 if [[ -z "$GYP_DEFINES" ]]; then |
| 38 GYP_DEFINES= | 47 GYP_DEFINES= |
| 39 fi | 48 fi |
| 40 if [[ -z "$GYP_GENERATORS" ]]; then | 49 if [[ -z "$GYP_GENERATORS" ]]; then |
| 41 GYP_GENERATORS= | 50 GYP_GENERATORS= |
| 42 fi | 51 fi |
| 43 | 52 |
| 44 | 53 |
| 45 # Die if any command dies, error on undefined variable expansions. | 54 # Die if any command dies, error on undefined variable expansions. |
| 46 set -eu | 55 set -eu |
| 47 | 56 |
| 48 | 57 |
| 49 if [[ -n ${LLVM_FORCE_HEAD_REVISION:-''} ]]; then | 58 if [[ -n ${LLVM_FORCE_HEAD_REVISION:-''} ]]; then |
| 50 # Use a real version number rather than HEAD to make sure that | 59 # Use a real version number rather than HEAD to make sure that |
| 51 # --print-revision, stamp file logic, etc. all works naturally. | 60 # --print-revision, stamp file logic, etc. all works naturally. |
| 52 CLANG_REVISION=$(svn info "$LLVM_REPO_URL" \ | 61 CLANG_REVISION=$(svn info "$LLVM_REPO_URL" \ |
| 53 | grep 'Last Changed Rev' | awk '{ printf $4; }') | 62 | grep 'Last Changed Rev' | awk '{ printf $4; }') |
| 63 PACKAGE_VERSION="${CLANG_REVISION}-0" |
| 54 fi | 64 fi |
| 55 | 65 |
| 56 # Use both the clang revision and the plugin revisions to test for updates. | 66 # Use both the clang revision and the plugin revisions to test for updates. |
| 57 BLINKGCPLUGIN_REVISION=\ | 67 BLINKGCPLUGIN_REVISION=\ |
| 58 $(grep 'set(LIBRARYNAME' "$THIS_DIR"/../blink_gc_plugin/CMakeLists.txt \ | 68 $(grep 'set(LIBRARYNAME' "$THIS_DIR"/../blink_gc_plugin/CMakeLists.txt \ |
| 59 | cut -d ' ' -f 2 | tr -cd '[0-9]') | 69 | cut -d ' ' -f 2 | tr -cd '[0-9]') |
| 60 CLANG_AND_PLUGINS_REVISION="${CLANG_REVISION}-${BLINKGCPLUGIN_REVISION}" | 70 CLANG_AND_PLUGINS_REVISION="${CLANG_REVISION}-${BLINKGCPLUGIN_REVISION}" |
| 61 | 71 |
| 62 | 72 |
| 63 OS="$(uname -s)" | 73 OS="$(uname -s)" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 81 --bootstrap) | 91 --bootstrap) |
| 82 bootstrap=yes | 92 bootstrap=yes |
| 83 ;; | 93 ;; |
| 84 --if-needed) | 94 --if-needed) |
| 85 if_needed=yes | 95 if_needed=yes |
| 86 ;; | 96 ;; |
| 87 --force-local-build) | 97 --force-local-build) |
| 88 force_local_build=yes | 98 force_local_build=yes |
| 89 ;; | 99 ;; |
| 90 --print-revision) | 100 --print-revision) |
| 91 echo $CLANG_REVISION | 101 echo $PACKAGE_VERSION |
| 92 exit 0 | 102 exit 0 |
| 93 ;; | 103 ;; |
| 94 --run-tests) | 104 --run-tests) |
| 95 run_tests=yes | 105 run_tests=yes |
| 96 ;; | 106 ;; |
| 97 --without-android) | 107 --without-android) |
| 98 with_android= | 108 with_android= |
| 99 ;; | 109 ;; |
| 100 --without-patches) | 110 --without-patches) |
| 101 with_patches= | 111 with_patches= |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 force_local_build=yes | 164 force_local_build=yes |
| 155 | 165 |
| 156 # Skip local patches when using HEAD: they probably don't apply anymore. | 166 # Skip local patches when using HEAD: they probably don't apply anymore. |
| 157 with_patches= | 167 with_patches= |
| 158 | 168 |
| 159 if ! [[ "$GYP_DEFINES" =~ .*OS=android.* ]]; then | 169 if ! [[ "$GYP_DEFINES" =~ .*OS=android.* ]]; then |
| 160 # Only build the Android ASan rt when targetting Android. | 170 # Only build the Android ASan rt when targetting Android. |
| 161 with_android= | 171 with_android= |
| 162 fi | 172 fi |
| 163 | 173 |
| 174 LLVM_BUILD_TOOLS_DIR="${ABS_LLVM_DIR}/../llvm-build-tools" |
| 175 |
| 176 if [[ "${OS}" == "Linux" ]] && [[ -z "${gcc_toolchain}" ]]; then |
| 177 if [[ $(gcc -dumpversion) < "4.7.0" ]]; then |
| 178 # We need a newer GCC version. |
| 179 if [[ ! -e "${LLVM_BUILD_TOOLS_DIR}/gcc482" ]]; then |
| 180 echo "Downloading pre-built GCC 4.8.2..." |
| 181 mkdir -p "${LLVM_BUILD_TOOLS_DIR}" |
| 182 curl --fail -L "${CDS_URL}/tools/gcc482.tgz" | \ |
| 183 tar zxf - -C "${LLVM_BUILD_TOOLS_DIR}" |
| 184 echo Done |
| 185 fi |
| 186 gcc_toolchain="${LLVM_BUILD_TOOLS_DIR}/gcc482" |
| 187 else |
| 188 # Always set gcc_toolchain; llvm-symbolizer needs the bundled libstdc++. |
| 189 gcc_toolchain="$(dirname $(dirname $(which gcc)))" |
| 190 fi |
| 191 fi |
| 192 |
| 193 if [[ "${OS}" == "Linux" ]]; then |
| 194 # TODO(hans): Might need to make this work on Mac eventually. |
| 195 if [[ $(cmake --version | grep -Eo '[0-9.]+') < "3.0" ]]; then |
| 196 # We need a newer CMake version. |
| 197 if [[ ! -e "${LLVM_BUILD_TOOLS_DIR}/cmake310" ]]; then |
| 198 echo "Downloading pre-built CMake 3.10..." |
| 199 mkdir -p "${LLVM_BUILD_TOOLS_DIR}" |
| 200 curl --fail -L "${CDS_URL}/tools/cmake310.tgz" | \ |
| 201 tar zxf - -C "${LLVM_BUILD_TOOLS_DIR}" |
| 202 echo Done |
| 203 fi |
| 204 export PATH="${LLVM_BUILD_TOOLS_DIR}/cmake310/bin:${PATH}" |
| 205 fi |
| 206 fi |
| 207 |
| 164 echo "LLVM_FORCE_HEAD_REVISION was set; using r${CLANG_REVISION}" | 208 echo "LLVM_FORCE_HEAD_REVISION was set; using r${CLANG_REVISION}" |
| 165 fi | 209 fi |
| 166 | 210 |
| 167 if [[ -n "$if_needed" ]]; then | 211 if [[ -n "$if_needed" ]]; then |
| 168 if [[ "${OS}" == "Darwin" ]]; then | 212 if [[ "${OS}" == "Darwin" ]]; then |
| 169 # clang is used on Mac. | 213 # clang is used on Mac. |
| 170 true | 214 true |
| 171 elif [[ "$GYP_DEFINES" =~ .*(clang|tsan|asan|lsan|msan)=1.* ]]; then | 215 elif [[ "$GYP_DEFINES" =~ .*(clang|tsan|asan|lsan|msan)=1.* ]]; then |
| 172 # clang requested via $GYP_DEFINES. | 216 # clang requested via $GYP_DEFINES. |
| 173 true | 217 true |
| (...skipping 12 matching lines...) Expand all Loading... |
| 186 exit 0 | 230 exit 0 |
| 187 fi | 231 fi |
| 188 fi | 232 fi |
| 189 | 233 |
| 190 | 234 |
| 191 # Check if there's anything to be done, exit early if not. | 235 # Check if there's anything to be done, exit early if not. |
| 192 if [[ -f "${STAMP_FILE}" ]]; then | 236 if [[ -f "${STAMP_FILE}" ]]; then |
| 193 PREVIOUSLY_BUILT_REVISON=$(cat "${STAMP_FILE}") | 237 PREVIOUSLY_BUILT_REVISON=$(cat "${STAMP_FILE}") |
| 194 if [[ -z "$force_local_build" ]] && \ | 238 if [[ -z "$force_local_build" ]] && \ |
| 195 [[ "${PREVIOUSLY_BUILT_REVISON}" = \ | 239 [[ "${PREVIOUSLY_BUILT_REVISON}" = \ |
| 196 "${CLANG_AND_PLUGINS_REVISION}" ]]; then | 240 "${PACKAGE_VERSION}" ]]; then |
| 197 echo "Clang already at ${CLANG_AND_PLUGINS_REVISION}" | 241 echo "Clang already at ${PACKAGE_VERSION}" |
| 198 exit 0 | 242 exit 0 |
| 199 fi | 243 fi |
| 200 fi | 244 fi |
| 201 # To always force a new build if someone interrupts their build half way. | 245 # To always force a new build if someone interrupts their build half way. |
| 202 rm -f "${STAMP_FILE}" | 246 rm -f "${STAMP_FILE}" |
| 203 | 247 |
| 204 | 248 |
| 205 if [[ -z "$force_local_build" ]]; then | 249 if [[ -z "$force_local_build" ]]; then |
| 206 # Check if there's a prebuilt binary and if so just fetch that. That's faster, | 250 # Check if there's a prebuilt binary and if so just fetch that. That's faster, |
| 207 # and goma relies on having matching binary hashes on client and server too. | 251 # and goma relies on having matching binary hashes on client and server too. |
| 208 CDS_URL=https://commondatastorage.googleapis.com/chromium-browser-clang | 252 CDS_FILE="clang-${PACKAGE_VERSION}.tgz" |
| 209 CDS_FILE="clang-${CLANG_REVISION}.tgz" | |
| 210 CDS_OUT_DIR=$(mktemp -d -t clang_download.XXXXXX) | 253 CDS_OUT_DIR=$(mktemp -d -t clang_download.XXXXXX) |
| 211 CDS_OUTPUT="${CDS_OUT_DIR}/${CDS_FILE}" | 254 CDS_OUTPUT="${CDS_OUT_DIR}/${CDS_FILE}" |
| 212 if [ "${OS}" = "Linux" ]; then | 255 if [ "${OS}" = "Linux" ]; then |
| 213 CDS_FULL_URL="${CDS_URL}/Linux_x64/${CDS_FILE}" | 256 CDS_FULL_URL="${CDS_URL}/Linux_x64/${CDS_FILE}" |
| 214 elif [ "${OS}" = "Darwin" ]; then | 257 elif [ "${OS}" = "Darwin" ]; then |
| 215 CDS_FULL_URL="${CDS_URL}/Mac/${CDS_FILE}" | 258 CDS_FULL_URL="${CDS_URL}/Mac/${CDS_FILE}" |
| 216 fi | 259 fi |
| 217 echo Trying to download prebuilt clang | 260 echo Trying to download prebuilt clang |
| 218 if which curl > /dev/null; then | 261 if which curl > /dev/null; then |
| 219 curl -L --fail "${CDS_FULL_URL}" -o "${CDS_OUTPUT}" || \ | 262 curl -L --fail "${CDS_FULL_URL}" -o "${CDS_OUTPUT}" || \ |
| 220 rm -rf "${CDS_OUT_DIR}" | 263 rm -rf "${CDS_OUT_DIR}" |
| 221 elif which wget > /dev/null; then | 264 elif which wget > /dev/null; then |
| 222 wget "${CDS_FULL_URL}" -O "${CDS_OUTPUT}" || rm -rf "${CDS_OUT_DIR}" | 265 wget "${CDS_FULL_URL}" -O "${CDS_OUTPUT}" || rm -rf "${CDS_OUT_DIR}" |
| 223 else | 266 else |
| 224 echo "Neither curl nor wget found. Please install one of these." | 267 echo "Neither curl nor wget found. Please install one of these." |
| 225 exit 1 | 268 exit 1 |
| 226 fi | 269 fi |
| 227 if [ -f "${CDS_OUTPUT}" ]; then | 270 if [ -f "${CDS_OUTPUT}" ]; then |
| 228 rm -rf "${LLVM_BUILD_DIR}" | 271 rm -rf "${LLVM_BUILD_DIR}" |
| 229 mkdir -p "${LLVM_BUILD_DIR}" | 272 mkdir -p "${LLVM_BUILD_DIR}" |
| 230 tar -xzf "${CDS_OUTPUT}" -C "${LLVM_BUILD_DIR}" | 273 tar -xzf "${CDS_OUTPUT}" -C "${LLVM_BUILD_DIR}" |
| 231 echo clang "${CLANG_REVISION}" unpacked | 274 echo clang "${PACKAGE_VERSION}" unpacked |
| 232 echo "${CLANG_AND_PLUGINS_REVISION}" > "${STAMP_FILE}" | 275 echo "${PACKAGE_VERSION}" > "${STAMP_FILE}" |
| 233 rm -rf "${CDS_OUT_DIR}" | 276 rm -rf "${CDS_OUT_DIR}" |
| 234 exit 0 | 277 exit 0 |
| 235 else | 278 else |
| 236 echo Did not find prebuilt clang at r"${CLANG_REVISION}", building | 279 echo Did not find prebuilt clang "${PACKAGE_VERSION}", building |
| 237 fi | 280 fi |
| 238 fi | 281 fi |
| 239 | 282 |
| 240 if [[ -n "${with_android}" ]] && ! [[ -d "${ANDROID_NDK_DIR}" ]]; then | 283 if [[ -n "${with_android}" ]] && ! [[ -d "${ANDROID_NDK_DIR}" ]]; then |
| 241 echo "Android NDK not found at ${ANDROID_NDK_DIR}" | 284 echo "Android NDK not found at ${ANDROID_NDK_DIR}" |
| 242 echo "The Android NDK is needed to build a Clang whose -fsanitize=address" | 285 echo "The Android NDK is needed to build a Clang whose -fsanitize=address" |
| 243 echo "works on Android. See " | 286 echo "works on Android. See " |
| 244 echo "http://code.google.com/p/chromium/wiki/AndroidBuildInstructions for how" | 287 echo "http://code.google.com/p/chromium/wiki/AndroidBuildInstructions for how" |
| 245 echo "to install the NDK, or pass --without-android." | 288 echo "to install the NDK, or pass --without-android." |
| 246 exit 1 | 289 exit 1 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 270 "${CLANG_DIR}/lib/Frontend/InitPreprocessor.cpp" \ | 313 "${CLANG_DIR}/lib/Frontend/InitPreprocessor.cpp" \ |
| 271 "${CLANG_DIR}/test/Frontend/exceptions.c" \ | 314 "${CLANG_DIR}/test/Frontend/exceptions.c" \ |
| 272 "${CLANG_DIR}/test/Preprocessor/predefined-exceptions.m" \ | 315 "${CLANG_DIR}/test/Preprocessor/predefined-exceptions.m" \ |
| 273 "${LLVM_DIR}/test/Bindings/Go/go.test" \ | 316 "${LLVM_DIR}/test/Bindings/Go/go.test" \ |
| 274 "${CLANG_DIR}/lib/Parse/ParseExpr.cpp" \ | 317 "${CLANG_DIR}/lib/Parse/ParseExpr.cpp" \ |
| 275 "${CLANG_DIR}/lib/Parse/ParseTemplate.cpp" \ | 318 "${CLANG_DIR}/lib/Parse/ParseTemplate.cpp" \ |
| 276 "${CLANG_DIR}/lib/Sema/SemaDeclCXX.cpp" \ | 319 "${CLANG_DIR}/lib/Sema/SemaDeclCXX.cpp" \ |
| 277 "${CLANG_DIR}/lib/Sema/SemaExprCXX.cpp" \ | 320 "${CLANG_DIR}/lib/Sema/SemaExprCXX.cpp" \ |
| 278 "${CLANG_DIR}/test/SemaCXX/default2.cpp" \ | 321 "${CLANG_DIR}/test/SemaCXX/default2.cpp" \ |
| 279 "${CLANG_DIR}/test/SemaCXX/typo-correction-delayed.cpp" \ | 322 "${CLANG_DIR}/test/SemaCXX/typo-correction-delayed.cpp" \ |
| 323 "${COMPILER_RT_DIR}/lib/sanitizer_common/sanitizer_stoptheworld_linux_libc
dep.cc" \ |
| 324 "${COMPILER_RT_DIR}/test/tsan/signal_segv_handler.cc" \ |
| 280 ; do | 325 ; do |
| 281 if [[ -e "${i}" ]]; then | 326 if [[ -e "${i}" ]]; then |
| 282 rm -f "${i}" # For unversioned files. | 327 rm -f "${i}" # For unversioned files. |
| 283 svn revert "${i}" | 328 svn revert "${i}" |
| 284 fi; | 329 fi; |
| 285 done | 330 done |
| 286 | 331 |
| 287 echo Remove the Clang tools shim dir | 332 echo Remove the Clang tools shim dir |
| 288 CHROME_TOOLS_SHIM_DIR=${ABS_LLVM_DIR}/tools/chrometools | 333 CHROME_TOOLS_SHIM_DIR=${ABS_LLVM_DIR}/tools/chrometools |
| 289 rm -rfv ${CHROME_TOOLS_SHIM_DIR} | 334 rm -rfv ${CHROME_TOOLS_SHIM_DIR} |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 352 | 397 |
| 353 -TEST_F(LibclangReparseTest, ReparseWithModule) { | 398 -TEST_F(LibclangReparseTest, ReparseWithModule) { |
| 354 +TEST_F(LibclangReparseTest, DISABLED_ReparseWithModule) { | 399 +TEST_F(LibclangReparseTest, DISABLED_ReparseWithModule) { |
| 355 const char *HeaderTop = "#ifndef H\n#define H\nstruct Foo { int bar;"; | 400 const char *HeaderTop = "#ifndef H\n#define H\nstruct Foo { int bar;"; |
| 356 const char *HeaderBottom = "\n};\n#endif\n"; | 401 const char *HeaderBottom = "\n};\n#endif\n"; |
| 357 const char *MFile = "#include \"HeaderFile.h\"\nint main() {" | 402 const char *MFile = "#include \"HeaderFile.h\"\nint main() {" |
| 358 EOF | 403 EOF |
| 359 patch -p0 | 404 patch -p0 |
| 360 popd | 405 popd |
| 361 | 406 |
| 362 # Apply r223211: "Revert r222997." | |
| 363 pushd "${LLVM_DIR}" | |
| 364 cat << 'EOF' | | |
| 365 --- a/lib/Transforms/Instrumentation/MemorySanitizer.cpp | |
| 366 +++ b/lib/Transforms/Instrumentation/MemorySanitizer.cpp | |
| 367 @@ -921,8 +921,6 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySan
itizerVisitor> { | |
| 368 Value *OriginPtr = | |
| 369 getOriginPtrForArgument(&FArg, EntryIRB, ArgOffset); | |
| 370 setOrigin(A, EntryIRB.CreateLoad(OriginPtr)); | |
| 371 - } else { | |
| 372 - setOrigin(A, getCleanOrigin()); | |
| 373 } | |
| 374 } | |
| 375 ArgOffset += RoundUpToAlignment(Size, kShadowTLSAlignment); | |
| 376 @@ -942,13 +940,15 @@ struct MemorySanitizerVisitor : public InstVisitor<MemoryS
anitizerVisitor> { | |
| 377 /// \brief Get the origin for a value. | |
| 378 Value *getOrigin(Value *V) { | |
| 379 if (!MS.TrackOrigins) return nullptr; | |
| 380 - if (!PropagateShadow) return getCleanOrigin(); | |
| 381 - if (isa<Constant>(V)) return getCleanOrigin(); | |
| 382 - assert((isa<Instruction>(V) || isa<Argument>(V)) && | |
| 383 - "Unexpected value type in getOrigin()"); | |
| 384 - Value *Origin = OriginMap[V]; | |
| 385 - assert(Origin && "Missing origin"); | |
| 386 - return Origin; | |
| 387 + if (isa<Instruction>(V) || isa<Argument>(V)) { | |
| 388 + Value *Origin = OriginMap[V]; | |
| 389 + if (!Origin) { | |
| 390 + DEBUG(dbgs() << "NO ORIGIN: " << *V << "\n"); | |
| 391 + Origin = getCleanOrigin(); | |
| 392 + } | |
| 393 + return Origin; | |
| 394 + } | |
| 395 + return getCleanOrigin(); | |
| 396 } | |
| 397 | |
| 398 /// \brief Get the origin for i-th argument of the instruction I. | |
| 399 @@ -1088,7 +1088,6 @@ struct MemorySanitizerVisitor : public InstVisitor<MemoryS
anitizerVisitor> { | |
| 400 IRB.CreateStore(getCleanShadow(&I), ShadowPtr); | |
| 401 | |
| 402 setShadow(&I, getCleanShadow(&I)); | |
| 403 - setOrigin(&I, getCleanOrigin()); | |
| 404 } | |
| 405 | |
| 406 void visitAtomicRMWInst(AtomicRMWInst &I) { | |
| 407 EOF | |
| 408 patch -p1 | |
| 409 popd | |
| 410 | |
| 411 # Apply r223219: "Preserve LD_LIBRARY_PATH when using the 'env' command" | |
| 412 pushd "${CLANG_DIR}" | |
| 413 cat << 'EOF' | | |
| 414 --- a/test/Driver/env.c | |
| 415 +++ b/test/Driver/env.c | |
| 416 @@ -5,12 +5,14 @@ | |
| 417 // REQUIRES: shell | |
| 418 // | |
| 419 // The PATH variable is heavily used when trying to find a linker. | |
| 420 -// RUN: env -i LC_ALL=C %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ | |
| 421 +// RUN: env -i LC_ALL=C LD_LIBRARY_PATH="$LD_LIBRARY_PATH" \ | |
| 422 +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ | |
| 423 // RUN: --target=i386-unknown-linux \ | |
| 424 // RUN: --sysroot=%S/Inputs/basic_linux_tree \ | |
| 425 // RUN: | FileCheck --check-prefix=CHECK-LD-32 %s | |
| 426 // | |
| 427 -// RUN: env -i LC_ALL=C PATH="" %clang -no-canonical-prefixes %s -### -o %t.o 2
>&1 \ | |
| 428 +// RUN: env -i LC_ALL=C PATH="" LD_LIBRARY_PATH="$LD_LIBRARY_PATH" \ | |
| 429 +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ | |
| 430 // RUN: --target=i386-unknown-linux \ | |
| 431 // RUN: --sysroot=%S/Inputs/basic_linux_tree \ | |
| 432 // RUN: | FileCheck --check-prefix=CHECK-LD-32 %s | |
| 433 EOF | |
| 434 patch -p1 | |
| 435 popd | |
| 436 | |
| 437 # Revert r220714: "Frontend: Define __EXCEPTIONS if -fexceptions is passed" | |
| 438 pushd "${CLANG_DIR}" | |
| 439 cat << 'EOF' | | |
| 440 --- a/lib/Frontend/InitPreprocessor.cpp | |
| 441 +++ b/lib/Frontend/InitPreprocessor.cpp | |
| 442 @@ -566,7 +566,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI, | |
| 443 Builder.defineMacro("__BLOCKS__"); | |
| 444 } | |
| 445 | |
| 446 - if (!LangOpts.MSVCCompat && LangOpts.Exceptions) | |
| 447 + if (!LangOpts.MSVCCompat && LangOpts.CXXExceptions) | |
| 448 Builder.defineMacro("__EXCEPTIONS"); | |
| 449 if (!LangOpts.MSVCCompat && LangOpts.RTTI) | |
| 450 Builder.defineMacro("__GXX_RTTI"); | |
| 451 diff --git a/test/Frontend/exceptions.c b/test/Frontend/exceptions.c | |
| 452 index 981b5b9..4bbaaa3 100644 | |
| 453 --- a/test/Frontend/exceptions.c | |
| 454 +++ b/test/Frontend/exceptions.c | |
| 455 @@ -1,9 +1,6 @@ | |
| 456 -// RUN: %clang_cc1 -fms-compatibility -fexceptions -fcxx-exceptions -DMS_MODE -
verify %s | |
| 457 +// RUN: %clang_cc1 -fms-compatibility -fexceptions -fcxx-exceptions -verify %s | |
| 458 // expected-no-diagnostics | |
| 459 | |
| 460 -// RUN: %clang_cc1 -fms-compatibility -fexceptions -verify %s | |
| 461 -// expected-no-diagnostics | |
| 462 - | |
| 463 -#if defined(MS_MODE) && defined(__EXCEPTIONS) | |
| 464 +#if defined(__EXCEPTIONS) | |
| 465 #error __EXCEPTIONS should not be defined. | |
| 466 #endif | |
| 467 diff --git a/test/Preprocessor/predefined-exceptions.m b/test/Preprocessor/prede
fined-exceptions.m | |
| 468 index 0791075..c13f429 100644 | |
| 469 --- a/test/Preprocessor/predefined-exceptions.m | |
| 470 +++ b/test/Preprocessor/predefined-exceptions.m | |
| 471 @@ -1,6 +1,6 @@ | |
| 472 // RUN: %clang_cc1 -x objective-c -fobjc-exceptions -fexceptions -E -dM %s | Fi
leCheck -check-prefix=CHECK-OBJC-NOCXX %s | |
| 473 // CHECK-OBJC-NOCXX: #define OBJC_ZEROCOST_EXCEPTIONS 1 | |
| 474 -// CHECK-OBJC-NOCXX: #define __EXCEPTIONS 1 | |
| 475 +// CHECK-OBJC-NOCXX-NOT: #define __EXCEPTIONS 1 | |
| 476 | |
| 477 // RUN: %clang_cc1 -x objective-c++ -fobjc-exceptions -fexceptions -fcxx-except
ions -E -dM %s | FileCheck -check-prefix=CHECK-OBJC-CXX %s | |
| 478 // CHECK-OBJC-CXX: #define OBJC_ZEROCOST_EXCEPTIONS 1 | |
| 479 EOF | |
| 480 patch -p1 | |
| 481 popd | |
| 482 | |
| 483 # Apply r223177: "Ensure typos in the default values of template parameters ge
t diagnosed." | |
| 484 pushd "${CLANG_DIR}" | |
| 485 cat << 'EOF' | | |
| 486 --- a/lib/Parse/ParseTemplate.cpp | |
| 487 +++ b/lib/Parse/ParseTemplate.cpp | |
| 488 @@ -676,7 +676,7 @@ Parser::ParseNonTypeTemplateParameter(unsigned Depth, unsign
ed Position) { | |
| 489 GreaterThanIsOperatorScope G(GreaterThanIsOperator, false); | |
| 490 EnterExpressionEvaluationContext Unevaluated(Actions, Sema::Unevaluated); | |
| 491 | |
| 492 - DefaultArg = ParseAssignmentExpression(); | |
| 493 + DefaultArg = Actions.CorrectDelayedTyposInExpr(ParseAssignmentExpression())
; | |
| 494 if (DefaultArg.isInvalid()) | |
| 495 SkipUntil(tok::comma, tok::greater, StopAtSemi | StopBeforeMatch); | |
| 496 } | |
| 497 diff --git a/test/SemaCXX/default2.cpp b/test/SemaCXX/default2.cpp | |
| 498 index 1626044..c4d40b4 100644 | |
| 499 --- a/test/SemaCXX/default2.cpp | |
| 500 +++ b/test/SemaCXX/default2.cpp | |
| 501 @@ -122,3 +122,9 @@ class XX { | |
| 502 void A(int length = -1 ) { } | |
| 503 void B() { A(); } | |
| 504 }; | |
| 505 + | |
| 506 +template <int I = (1 * I)> struct S {}; // expected-error-re {{use of undeclar
ed identifier 'I'{{$}}}} | |
| 507 +S<1> s; | |
| 508 + | |
| 509 +template <int I1 = I2, int I2 = 1> struct T {}; // expected-error-re {{use of
undeclared identifier 'I2'{{$}}}} | |
| 510 +T<0, 1> t; | |
| 511 diff --git a/test/SemaCXX/typo-correction-delayed.cpp b/test/SemaCXX/typo-correc
tion-delayed.cpp | |
| 512 index bff1d76..7bf9258 100644 | |
| 513 --- a/test/SemaCXX/typo-correction-delayed.cpp | |
| 514 +++ b/test/SemaCXX/typo-correction-delayed.cpp | |
| 515 @@ -102,3 +102,7 @@ void f(int *i) { | |
| 516 __atomic_load(i, i, something_something); // expected-error-re {{use of unde
clared identifier 'something_something'{{$}}}} | |
| 517 } | |
| 518 } | |
| 519 + | |
| 520 +const int DefaultArg = 9; // expected-note {{'DefaultArg' declared here}} | |
| 521 +template <int I = defaultArg> struct S {}; // expected-error {{use of undeclar
ed identifier 'defaultArg'; did you mean 'DefaultArg'?}} | |
| 522 +S<1> s; | |
| 523 EOF | |
| 524 patch -p1 | |
| 525 popd | |
| 526 | |
| 527 # Apply r223209: "Handle delayed corrections in a couple more error paths in P
arsePostfixExpressionSuffix." | |
| 528 pushd "${CLANG_DIR}" | |
| 529 cat << 'EOF' | | |
| 530 --- a/lib/Parse/ParseExpr.cpp | |
| 531 +++ b/lib/Parse/ParseExpr.cpp | |
| 532 @@ -1390,6 +1390,7 @@ Parser::ParsePostfixExpressionSuffix(ExprResult LHS) { | |
| 533 SourceLocation OpenLoc = ConsumeToken(); | |
| 534 | |
| 535 if (ParseSimpleExpressionList(ExecConfigExprs, ExecConfigCommaLocs)) { | |
| 536 + (void)Actions.CorrectDelayedTyposInExpr(LHS); | |
| 537 LHS = ExprError(); | |
| 538 } | |
| 539 | |
| 540 @@ -1440,6 +1441,7 @@ Parser::ParsePostfixExpressionSuffix(ExprResult LHS) { | |
| 541 if (Tok.isNot(tok::r_paren)) { | |
| 542 if (ParseExpressionList(ArgExprs, CommaLocs, &Sema::CodeCompleteCall, | |
| 543 LHS.get())) { | |
| 544 + (void)Actions.CorrectDelayedTyposInExpr(LHS); | |
| 545 LHS = ExprError(); | |
| 546 } | |
| 547 } | |
| 548 diff --git a/test/SemaCXX/typo-correction-delayed.cpp b/test/SemaCXX/typo-correc
tion-delayed.cpp | |
| 549 index 7bf9258..f7ef015 100644 | |
| 550 --- a/test/SemaCXX/typo-correction-delayed.cpp | |
| 551 +++ b/test/SemaCXX/typo-correction-delayed.cpp | |
| 552 @@ -106,3 +106,9 @@ void f(int *i) { | |
| 553 const int DefaultArg = 9; // expected-note {{'DefaultArg' declared here}} | |
| 554 template <int I = defaultArg> struct S {}; // expected-error {{use of undeclar
ed identifier 'defaultArg'; did you mean 'DefaultArg'?}} | |
| 555 S<1> s; | |
| 556 + | |
| 557 +namespace foo {} | |
| 558 +void test_paren_suffix() { | |
| 559 + foo::bar({5, 6}); // expected-error-re {{no member named 'bar' in namespace
'foo'{{$}}}} \ | |
| 560 + // expected-error {{expected expression}} | |
| 561 +} | |
| 562 EOF | |
| 563 patch -p1 | |
| 564 popd | |
| 565 | |
| 566 # Apply r223705: "Handle possible TypoExprs in member initializers." | |
| 567 pushd "${CLANG_DIR}" | |
| 568 cat << 'EOF' | | |
| 569 --- a/lib/Sema/SemaDeclCXX.cpp | |
| 570 +++ b/lib/Sema/SemaDeclCXX.cpp | |
| 571 @@ -2813,6 +2813,11 @@ Sema::BuildMemInitializer(Decl *ConstructorD, | |
| 572 SourceLocation IdLoc, | |
| 573 Expr *Init, | |
| 574 SourceLocation EllipsisLoc) { | |
| 575 + ExprResult Res = CorrectDelayedTyposInExpr(Init); | |
| 576 + if (!Res.isUsable()) | |
| 577 + return true; | |
| 578 + Init = Res.get(); | |
| 579 + | |
| 580 if (!ConstructorD) | |
| 581 return true; | |
| 582 | |
| 583 diff --git a/test/SemaCXX/typo-correction-delayed.cpp b/test/SemaCXX/typo-correc
tion-delayed.cpp | |
| 584 index f7ef015..d303b58 100644 | |
| 585 --- a/test/SemaCXX/typo-correction-delayed.cpp | |
| 586 +++ b/test/SemaCXX/typo-correction-delayed.cpp | |
| 587 @@ -112,3 +112,10 @@ void test_paren_suffix() { | |
| 588 foo::bar({5, 6}); // expected-error-re {{no member named 'bar' in namespace
'foo'{{$}}}} \ | |
| 589 // expected-error {{expected expression}} | |
| 590 } | |
| 591 + | |
| 592 +const int kNum = 10; // expected-note {{'kNum' declared here}} | |
| 593 +class SomeClass { | |
| 594 + int Kind; | |
| 595 +public: | |
| 596 + explicit SomeClass() : Kind(kSum) {} // expected-error {{use of undeclared i
dentifier 'kSum'; did you mean 'kNum'?}} | |
| 597 +}; | |
| 598 EOF | |
| 599 patch -p1 | |
| 600 popd | |
| 601 | |
| 602 # Apply r224172: "Typo correction: Ignore temporary binding exprs after overlo
ad resolution" | |
| 603 pushd "${CLANG_DIR}" | |
| 604 cat << 'EOF' | | |
| 605 --- a/lib/Sema/SemaExprCXX.cpp | |
| 606 +++ b/lib/Sema/SemaExprCXX.cpp | |
| 607 @@ -6105,8 +6105,13 @@ public: | |
| 608 auto Result = BaseTransform::RebuildCallExpr(Callee, LParenLoc, Args, | |
| 609 RParenLoc, ExecConfig); | |
| 610 if (auto *OE = dyn_cast<OverloadExpr>(Callee)) { | |
| 611 - if (!Result.isInvalid() && Result.get()) | |
| 612 - OverloadResolution[OE] = cast<CallExpr>(Result.get())->getCallee(); | |
| 613 + if (!Result.isInvalid() && Result.get()) { | |
| 614 + Expr *ResultCall = Result.get(); | |
| 615 + if (auto *BE = dyn_cast<CXXBindTemporaryExpr>(ResultCall)) | |
| 616 + ResultCall = BE->getSubExpr(); | |
| 617 + if (auto *CE = dyn_cast<CallExpr>(ResultCall)) | |
| 618 + OverloadResolution[OE] = CE->getCallee(); | |
| 619 + } | |
| 620 } | |
| 621 return Result; | |
| 622 } | |
| 623 diff --git a/test/SemaCXX/typo-correction-delayed.cpp b/test/SemaCXX/typo-correc
tion-delayed.cpp | |
| 624 index d303b58..d42888f 100644 | |
| 625 --- a/test/SemaCXX/typo-correction-delayed.cpp | |
| 626 +++ b/test/SemaCXX/typo-correction-delayed.cpp | |
| 627 @@ -119,3 +119,23 @@ class SomeClass { | |
| 628 public: | |
| 629 explicit SomeClass() : Kind(kSum) {} // expected-error {{use of undeclared i
dentifier 'kSum'; did you mean 'kNum'?}} | |
| 630 }; | |
| 631 + | |
| 632 +extern "C" int printf(const char *, ...); | |
| 633 + | |
| 634 +// There used to be an issue with typo resolution inside overloads. | |
| 635 +struct AssertionResult { | |
| 636 + ~AssertionResult(); | |
| 637 + operator bool(); | |
| 638 + int val; | |
| 639 +}; | |
| 640 +AssertionResult Compare(const char *a, const char *b); | |
| 641 +AssertionResult Compare(int a, int b); | |
| 642 +int main() { | |
| 643 + // expected-note@+1 {{'result' declared here}} | |
| 644 + const char *result; | |
| 645 + // expected-error@+1 {{use of undeclared identifier 'resulta'; did you mean '
result'?}} | |
| 646 + if (AssertionResult ar = (Compare("value1", resulta))) | |
| 647 + ; | |
| 648 + else | |
| 649 + printf("ar: %d\n", ar.val); | |
| 650 +} | |
| 651 EOF | |
| 652 patch -p1 | |
| 653 popd | |
| 654 | |
| 655 # Apply r224173: "Implement feedback on r224172 in PR21899" | |
| 656 pushd "${CLANG_DIR}" | |
| 657 cat << 'EOF' | | |
| 658 --- a/lib/Sema/SemaExprCXX.cpp | |
| 659 +++ b/lib/Sema/SemaExprCXX.cpp | |
| 660 @@ -6105,7 +6105,7 @@ public: | |
| 661 auto Result = BaseTransform::RebuildCallExpr(Callee, LParenLoc, Args, | |
| 662 RParenLoc, ExecConfig); | |
| 663 if (auto *OE = dyn_cast<OverloadExpr>(Callee)) { | |
| 664 - if (!Result.isInvalid() && Result.get()) { | |
| 665 + if (Result.isUsable()) { | |
| 666 Expr *ResultCall = Result.get(); | |
| 667 if (auto *BE = dyn_cast<CXXBindTemporaryExpr>(ResultCall)) | |
| 668 ResultCall = BE->getSubExpr(); | |
| 669 diff --git a/test/SemaCXX/typo-correction-delayed.cpp b/test/SemaCXX/typo-correc
tion-delayed.cpp | |
| 670 index d42888f..7879d29 100644 | |
| 671 --- a/test/SemaCXX/typo-correction-delayed.cpp | |
| 672 +++ b/test/SemaCXX/typo-correction-delayed.cpp | |
| 673 @@ -120,22 +120,13 @@ public: | |
| 674 explicit SomeClass() : Kind(kSum) {} // expected-error {{use of undeclared i
dentifier 'kSum'; did you mean 'kNum'?}} | |
| 675 }; | |
| 676 | |
| 677 -extern "C" int printf(const char *, ...); | |
| 678 - | |
| 679 // There used to be an issue with typo resolution inside overloads. | |
| 680 -struct AssertionResult { | |
| 681 - ~AssertionResult(); | |
| 682 - operator bool(); | |
| 683 - int val; | |
| 684 -}; | |
| 685 -AssertionResult Compare(const char *a, const char *b); | |
| 686 -AssertionResult Compare(int a, int b); | |
| 687 -int main() { | |
| 688 +struct AssertionResult { ~AssertionResult(); }; | |
| 689 +AssertionResult Overload(const char *a); | |
| 690 +AssertionResult Overload(int a); | |
| 691 +void UseOverload() { | |
| 692 // expected-note@+1 {{'result' declared here}} | |
| 693 const char *result; | |
| 694 // expected-error@+1 {{use of undeclared identifier 'resulta'; did you mean '
result'?}} | |
| 695 - if (AssertionResult ar = (Compare("value1", resulta))) | |
| 696 - ; | |
| 697 - else | |
| 698 - printf("ar: %d\n", ar.val); | |
| 699 + Overload(resulta); | |
| 700 } | |
| 701 EOF | |
| 702 patch -p1 | |
| 703 popd | |
| 704 | |
| 705 # This Go bindings test doesn't work after the bootstrap build on Linux. (PR21
552) | 407 # This Go bindings test doesn't work after the bootstrap build on Linux. (PR21
552) |
| 706 pushd "${LLVM_DIR}" | 408 pushd "${LLVM_DIR}" |
| 707 cat << 'EOF' | | 409 cat << 'EOF' | |
| 708 Index: test/Bindings/Go/go.test | 410 Index: test/Bindings/Go/go.test |
| 709 =================================================================== | 411 =================================================================== |
| 710 --- test/Bindings/Go/go.test (revision 223109) | 412 --- test/Bindings/Go/go.test (revision 223109) |
| 711 +++ test/Bindings/Go/go.test (working copy) | 413 +++ test/Bindings/Go/go.test (working copy) |
| 712 @@ -1,3 +1,3 @@ | 414 @@ -1,3 +1,3 @@ |
| 713 -; RUN: llvm-go test llvm.org/llvm/bindings/go/llvm | 415 -; RUN: llvm-go test llvm.org/llvm/bindings/go/llvm |
| 714 +; RUN: true | 416 +; RUN: true |
| 715 | 417 |
| 716 ; REQUIRES: shell | 418 ; REQUIRES: shell |
| 717 EOF | 419 EOF |
| 718 patch -p0 | 420 patch -p0 |
| 719 popd | 421 popd |
| 720 | 422 |
| 423 |
| 721 fi | 424 fi |
| 722 | 425 |
| 723 # Echo all commands. | 426 # Echo all commands. |
| 724 set -x | 427 set -x |
| 725 | 428 |
| 726 # Set default values for CC and CXX if they're not set in the environment. | 429 # Set default values for CC and CXX if they're not set in the environment. |
| 727 CC=${CC:-cc} | 430 CC=${CC:-cc} |
| 728 CXX=${CXX:-c++} | 431 CXX=${CXX:-c++} |
| 729 | 432 |
| 730 if [[ -n "${gcc_toolchain}" ]]; then | 433 if [[ -n "${gcc_toolchain}" ]]; then |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 835 -nodefaultlibs -current_version 1 -compatibility_version 1 \ | 538 -nodefaultlibs -current_version 1 -compatibility_version 1 \ |
| 836 -lSystem -install_name @executable_path/libc++.dylib \ | 539 -lSystem -install_name @executable_path/libc++.dylib \ |
| 837 -Wl,-unexported_symbols_list,${ABS_LIBCXX_DIR}/lib/libc++unexp.exp \ | 540 -Wl,-unexported_symbols_list,${ABS_LIBCXX_DIR}/lib/libc++unexp.exp \ |
| 838 -Wl,-force_symbols_not_weak_list,${ABS_LIBCXX_DIR}/lib/notweak.exp \ | 541 -Wl,-force_symbols_not_weak_list,${ABS_LIBCXX_DIR}/lib/notweak.exp \ |
| 839 -Wl,-force_symbols_weak_list,${ABS_LIBCXX_DIR}/lib/weak.exp | 542 -Wl,-force_symbols_weak_list,${ABS_LIBCXX_DIR}/lib/weak.exp |
| 840 ln -sf libc++.1.dylib libc++.dylib | 543 ln -sf libc++.1.dylib libc++.dylib |
| 841 popd | 544 popd |
| 842 LDFLAGS+="-stdlib=libc++ -L${PWD}/libcxxbuild" | 545 LDFLAGS+="-stdlib=libc++ -L${PWD}/libcxxbuild" |
| 843 fi | 546 fi |
| 844 | 547 |
| 548 # Find the binutils include dir for the gold plugin. |
| 549 BINUTILS_INCDIR="" |
| 550 if [ "${OS}" = "Linux" ]; then |
| 551 BINUTILS_INCDIR="${ABS_BINUTILS_DIR}/Linux_x64/Release/include" |
| 552 fi |
| 553 |
| 845 # Hook the Chromium tools into the LLVM build. Several Chromium tools have | 554 # Hook the Chromium tools into the LLVM build. Several Chromium tools have |
| 846 # dependencies on LLVM/Clang libraries. The LLVM build detects implicit tools | 555 # dependencies on LLVM/Clang libraries. The LLVM build detects implicit tools |
| 847 # in the tools subdirectory, so install a shim CMakeLists.txt that forwards to | 556 # in the tools subdirectory, so install a shim CMakeLists.txt that forwards to |
| 848 # the real directory for the Chromium tools. | 557 # the real directory for the Chromium tools. |
| 849 # Note that the shim directory name intentionally has no _ or _. The implicit | 558 # Note that the shim directory name intentionally has no _ or _. The implicit |
| 850 # tool detection logic munges them in a weird way. | 559 # tool detection logic munges them in a weird way. |
| 851 mkdir -v ${CHROME_TOOLS_SHIM_DIR} | 560 mkdir -v ${CHROME_TOOLS_SHIM_DIR} |
| 852 cat > ${CHROME_TOOLS_SHIM_DIR}/CMakeLists.txt << EOF | 561 cat > ${CHROME_TOOLS_SHIM_DIR}/CMakeLists.txt << EOF |
| 853 # Since tools/clang isn't actually a subdirectory, use the two argument version | 562 # Since tools/clang isn't actually a subdirectory, use the two argument version |
| 854 # to specify where build artifacts go. CMake doesn't allow reusing the same | 563 # to specify where build artifacts go. CMake doesn't allow reusing the same |
| 855 # binary dir for multiple source dirs, so the build artifacts have to go into a | 564 # binary dir for multiple source dirs, so the build artifacts have to go into a |
| 856 # subdirectory... | 565 # subdirectory... |
| 857 add_subdirectory(\${CHROMIUM_TOOLS_SRC} \${CMAKE_CURRENT_BINARY_DIR}/a) | 566 add_subdirectory(\${CHROMIUM_TOOLS_SRC} \${CMAKE_CURRENT_BINARY_DIR}/a) |
| 858 EOF | 567 EOF |
| 859 rm -fv CMakeCache.txt | 568 rm -fv CMakeCache.txt |
| 860 MACOSX_DEPLOYMENT_TARGET=${deployment_target} cmake -GNinja \ | 569 MACOSX_DEPLOYMENT_TARGET=${deployment_target} cmake -GNinja \ |
| 861 -DCMAKE_BUILD_TYPE=Release \ | 570 -DCMAKE_BUILD_TYPE=Release \ |
| 862 -DLLVM_ENABLE_ASSERTIONS=ON \ | 571 -DLLVM_ENABLE_ASSERTIONS=ON \ |
| 863 -DLLVM_ENABLE_THREADS=OFF \ | 572 -DLLVM_ENABLE_THREADS=OFF \ |
| 573 -DLLVM_BINUTILS_INCDIR="${BINUTILS_INCDIR}" \ |
| 864 -DCMAKE_C_COMPILER="${CC}" \ | 574 -DCMAKE_C_COMPILER="${CC}" \ |
| 865 -DCMAKE_CXX_COMPILER="${CXX}" \ | 575 -DCMAKE_CXX_COMPILER="${CXX}" \ |
| 866 -DCMAKE_C_FLAGS="${CFLAGS}" \ | 576 -DCMAKE_C_FLAGS="${CFLAGS}" \ |
| 867 -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ | 577 -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ |
| 868 -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \ | 578 -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \ |
| 869 -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" \ | 579 -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" \ |
| 870 -DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}" \ | 580 -DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}" \ |
| 871 -DCMAKE_INSTALL_PREFIX="${ABS_LLVM_BUILD_DIR}" \ | 581 -DCMAKE_INSTALL_PREFIX="${ABS_LLVM_BUILD_DIR}" \ |
| 872 -DCHROMIUM_TOOLS_SRC="${ABS_CHROMIUM_TOOLS_DIR}" \ | 582 -DCHROMIUM_TOOLS_SRC="${ABS_CHROMIUM_TOOLS_DIR}" \ |
| 873 -DCHROMIUM_TOOLS="${chrome_tools}" \ | 583 -DCHROMIUM_TOOLS="${chrome_tools}" \ |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 963 fi | 673 fi |
| 964 | 674 |
| 965 if [[ -n "$run_tests" ]]; then | 675 if [[ -n "$run_tests" ]]; then |
| 966 # Run Chrome tool tests. | 676 # Run Chrome tool tests. |
| 967 ninja -C "${LLVM_BUILD_DIR}" cr-check-all | 677 ninja -C "${LLVM_BUILD_DIR}" cr-check-all |
| 968 # Run the LLVM and Clang tests. | 678 # Run the LLVM and Clang tests. |
| 969 ninja -C "${LLVM_BUILD_DIR}" check-all | 679 ninja -C "${LLVM_BUILD_DIR}" check-all |
| 970 fi | 680 fi |
| 971 | 681 |
| 972 # After everything is done, log success for this revision. | 682 # After everything is done, log success for this revision. |
| 973 echo "${CLANG_AND_PLUGINS_REVISION}" > "${STAMP_FILE}" | 683 echo "${PACKAGE_VERSION}" > "${STAMP_FILE}" |
| OLD | NEW |