From ad69aaef6232957087fff0815c591c18b0adeb8f Mon Sep 17 00:00:00 2001 From: Zach Anderson Date: Tue, 27 Nov 2018 23:02:59 +0000 Subject: [PATCH] Reland: [infra] Roll buildtools to c72a1c5aadde06505b7bb4641720880f3db28ff9 Tries to work around update.py race by setting up symlinks for 'git cl format' instead of copying. Change-Id: I4ed9b99254803feea5ea0e8d30db23fc982e9562 Reviewed-on: https://dart-review.googlesource.com/c/85427 Reviewed-by: Ryan Macnak Commit-Queue: Zach Anderson --- DEPS | 2 +- build/config/android/config.gni | 28 +++++++++++++++------------- build/config/compiler/BUILD.gn | 19 +++++++++++++------ tools/buildtools/update.py | 14 +++++++------- 4 files changed, 36 insertions(+), 27 deletions(-) diff --git a/DEPS b/DEPS index b83815d78d2..717b628adfe 100644 --- a/DEPS +++ b/DEPS @@ -42,7 +42,7 @@ vars = { # Fuchsia. This revision should be kept up to date with the revision pulled # by the Flutter engine. If there are problems with the toolchain, contact # fuchsia-toolchain@. - "buildtools_revision": "446d5b1019dcbe7835236dc85261e91cf29a9239", + "buildtools_revision": "9e69ccfa6c1d3d9d3d0498c2b73338c169ed4377", # Scripts that make 'git cl format' work. "clang_format_scripts_rev": "c09c8deeac31f05bd801995c475e7c8070f9ecda", diff --git a/build/config/android/config.gni b/build/config/android/config.gni index a6dcf789aab..38e3f8e218f 100644 --- a/build/config/android/config.gni +++ b/build/config/android/config.gni @@ -63,18 +63,16 @@ if (is_android) { # Subdirectories inside android_ndk_root that contain the sysroot for the # associated platform. if (current_cpu == "x64" || current_cpu == "arm64") { - _android_api_level = 22 + android_api_level = 22 } else { - _android_api_level = 16 + android_api_level = 16 } - x86_android_sysroot_subdir = - "platforms/android-${_android_api_level}/arch-x86" - arm_android_sysroot_subdir = - "platforms/android-${_android_api_level}/arch-arm" + x86_android_sysroot_subdir = "platforms/android-${android_api_level}/arch-x86" + arm_android_sysroot_subdir = "platforms/android-${android_api_level}/arch-arm" x86_64_android_sysroot_subdir = - "platforms/android-${_android_api_level}/arch-x86_64" + "platforms/android-${android_api_level}/arch-x86_64" arm64_android_sysroot_subdir = - "platforms/android-${_android_api_level}/arch-arm64" + "platforms/android-${android_api_level}/arch-arm64" # Toolchain root directory for each build. The actual binaries are inside # a "bin" directory inside of these. @@ -90,25 +88,29 @@ if (is_android) { # like the toolchain roots. if (current_cpu == "x86") { android_prebuilt_arch = "android-x86" - _binary_prefix = "i686-linux-android" + android_target_triple = "i686-linux-android" android_toolchain_root = "$x86_android_toolchain_root" + android_sysroot_subdir = "$x86_android_sysroot_subdir" } else if (current_cpu == "arm") { android_prebuilt_arch = "android-arm" - _binary_prefix = "arm-linux-androideabi" + android_target_triple = "arm-linux-androideabi" android_toolchain_root = "$arm_android_toolchain_root" + android_sysroot_subdir = "$arm_android_sysroot_subdir" } else if (current_cpu == "x64") { android_prebuilt_arch = "android-x86_64" - _binary_prefix = "x86_64-linux-android" + android_target_triple = "x86_64-linux-android" android_toolchain_root = "$x86_64_android_toolchain_root" + android_sysroot_subdir = "$x86_64_android_sysroot_subdir" } else if (current_cpu == "arm64") { android_prebuilt_arch = "android-arm64" - _binary_prefix = "aarch64-linux-android" + android_target_triple = "aarch64-linux-android" android_toolchain_root = "$arm64_android_toolchain_root" + android_sysroot_subdir = "$arm64_android_sysroot_subdir" } else { assert(false, "Need android libgcc support for your target arch.") } - android_tool_prefix = "$android_toolchain_root/bin/$_binary_prefix-" + android_tool_prefix = "$android_toolchain_root/bin/$android_target_triple-" android_readelf = "${android_tool_prefix}readelf" android_objcopy = "${android_tool_prefix}objcopy" android_gdbserver = diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn index 4bdcda6f75d..b8f4c62f567 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn @@ -246,11 +246,14 @@ config("compiler") { ldflags += [ "-pthread" ] if (is_clang) { if (current_cpu == "arm") { - cflags += [ "--target=arm-linux-gnueabihf" ] - ldflags += [ "--target=arm-linux-gnueabihf" ] + cflags += [ "--target=armv7-linux-gnueabihf" ] + ldflags += [ "--target=armv7-linux-gnueabihf" ] } else if (current_cpu == "arm64") { cflags += [ "--target=aarch64-linux-gnu" ] ldflags += [ "--target=aarch64-linux-gnu" ] + } else if (current_cpu == "x86") { + cflags += [ "--target=i386-linux-gnu" ] + ldflags += [ "--target=i386-linux-gnu" ] } } } @@ -278,6 +281,7 @@ config("compiler") { "-ffunction-sections", "-funwind-tables", "-fno-short-enums", + "-nostdinc++", ] if (!is_clang) { # Clang doesn't support these flags. @@ -444,14 +448,17 @@ config("runtime_library") { # strange errors. The include ordering here is important; change with # caution. cflags += [ - "-isystem" + - rebase_path("$android_libcpp_root/libcxx/include", root_build_dir), + "-isystem" + rebase_path("$android_libcpp_root/include", root_build_dir), "-isystem" + rebase_path( - "$android_ndk_root/sources/cxx-stl/llvm-libc++abi/libcxxabi/include", + "$android_ndk_root/sources/cxx-stl/llvm-libc++abi/include", root_build_dir), "-isystem" + rebase_path("$android_ndk_root/sources/android/support/include", root_build_dir), + "-isystem" + rebase_path( + "$android_ndk_root/sysroot/usr/include/$android_target_triple", + root_build_dir), + "-D__ANDROID_API__=$android_api_level", ] lib_dirs += [ "$android_libcpp_root/libs/$android_app_abi" ] @@ -692,7 +699,7 @@ if (is_win) { "-Wl,--gc-sections", ] - if (is_clang) { + if (is_clang && !using_sanitizer) { # Identical code folding to reduce size. # Warning: This changes C/C++ semantics of function pointer comparison. common_optimize_on_ldflags += [ "-Wl,--icf=all" ] diff --git a/tools/buildtools/update.py b/tools/buildtools/update.py index 5cae6a82f53..c45b0e8570e 100755 --- a/tools/buildtools/update.py +++ b/tools/buildtools/update.py @@ -24,7 +24,7 @@ DEPOT_PATH = find_depot_tools.add_depot_tools_to_path() def Update(): path = os.path.join(BUILDTOOLS, 'update.sh') - command = ['/bin/bash', path, '--clang', '--gn'] + command = ['/bin/bash', path ] return subprocess.call(command, cwd=DART_ROOT) @@ -72,9 +72,9 @@ def UpdateClangFormatOnWindows(): return subprocess.call(download_cmd) -# On Mac and Linux we copy clang-format and gn to the place where git cl format -# expects them to be. -def CopyClangFormat(): +# On Mac and Linux we symlink clang-format and gn to the place where +# 'git cl format' expects them to be. +def LinksForGitCLFormat(): if sys.platform == 'darwin': platform = 'darwin' tools = 'mac' @@ -95,8 +95,8 @@ def CopyClangFormat(): os.makedirs(dest_dir) clang_format_dest = os.path.join(dest_dir, 'clang-format') gn_dest = os.path.join(dest_dir, 'gn') - shutil.copy2(clang_format, clang_format_dest) - shutil.copy2(gn, gn_dest) + os.symlink(clang_format, clang_format_dest) + os.symlink(gn, gn_dest) return 0 @@ -113,7 +113,7 @@ def main(argv): return UpdateClangFormatOnWindows() if Update() != 0: return 1 - return CopyClangFormat() + return LinksForGitCLFormat() if __name__ == '__main__':