diff --git a/build/autoconf/clang-plugin.m4 b/build/autoconf/clang-plugin.m4 index dbc35e82b429..e64602c10c15 100644 --- a/build/autoconf/clang-plugin.m4 +++ b/build/autoconf/clang-plugin.m4 @@ -36,11 +36,7 @@ if test -n "$ENABLE_CLANG_PLUGIN"; then dnl For some reason the llvm-config downloaded from clang.llvm.org for clang3_8 dnl produces a -isysroot flag for a sysroot which might not ship when passed dnl --cxxflags. We use sed to remove this argument so that builds work on OSX - dnl - dnl For a similar reason, we remove any -gcc-toolchain arguments, since the - dnl directories specified by such arguments might not exist on the current - dnl machine. - LLVM_CXXFLAGS=`$LLVMCONFIG --cxxflags | sed -e 's/-isysroot [[^ ]]*//' -e 's/-gcc-toolchain [[^ ]]*//'` + LLVM_CXXFLAGS=`$LLVMCONFIG --cxxflags | sed -e 's/-isysroot [[^ ]]*//'` LLVM_LDFLAGS=`$LLVMCONFIG --ldflags | tr '\n' ' '` diff --git a/build/build-clang/build-clang.py b/build/build-clang/build-clang.py index 01bd75aa6fb2..99a5ed129425 100755 --- a/build/build-clang/build-clang.py +++ b/build/build-clang/build-clang.py @@ -120,23 +120,8 @@ def delete(path): pass -def install_libgcc(gcc_dir, clang_dir, is_final_stage): - gcc_bin_dir = os.path.join(gcc_dir, 'bin') - - # Copy over gcc toolchain bits that clang looks for, to ensure that - # clang is using a consistent version of ld, since the system ld may - # be incompatible with the output clang produces. But copy it to a - # target-specific directory so a cross-compiler to Mac doesn't pick - # up the (Linux-specific) ld with disastrous results. - # - # Only install this for the bootstrap process; we expect any consumers of - # the newly-built toolchain to provide an appropriate ld themselves. - if not is_final_stage: - x64_bin_dir = os.path.join(clang_dir, 'x86_64-unknown-linux-gnu', 'bin') - mkdir_p(x64_bin_dir) - shutil.copy2(os.path.join(gcc_bin_dir, 'ld'), x64_bin_dir) - - out = subprocess.check_output([os.path.join(gcc_bin_dir, "gcc"), +def install_libgcc(gcc_dir, clang_dir): + out = subprocess.check_output([os.path.join(gcc_dir, "bin", "gcc"), '-print-libgcc-file-name']) libgcc_dir = os.path.dirname(out.rstrip()) @@ -324,7 +309,7 @@ def build_one_stage(cc, cxx, asm, ld, ar, ranlib, libtool, build_package(build_dir, cmake_args) if is_linux(): - install_libgcc(gcc_dir, inst_dir, is_final_stage) + install_libgcc(gcc_dir, inst_dir) # For some reasons the import library clang.lib of clang.exe is not # installed, so we copy it by ourselves. if is_windows(): @@ -691,13 +676,9 @@ if __name__ == "__main__": elif is_linux(): extra_cflags = [] extra_cxxflags = [] - # When building stage2 and stage3, we want the newly-built clang to pick - # up whatever headers were installed from the gcc we used to build stage1, - # always, rather than the system headers. Providing -gcc-toolchain - # encourages clang to do that. - extra_cflags2 = ["-fPIC", '-gcc-toolchain', stage1_inst_dir] + extra_cflags2 = ["-fPIC"] # Silence clang's warnings about arguments not being used in compilation. - extra_cxxflags2 = ["-fPIC", '-Qunused-arguments', '-gcc-toolchain', stage1_inst_dir] + extra_cxxflags2 = ["-fPIC", '-Qunused-arguments'] extra_asmflags = [] # Avoid libLLVM internal function calls going through the PLT. extra_ldflags = ['-Wl,-Bsymbolic-functions'] diff --git a/build/unix/build-gcc/build-gcc.sh b/build/unix/build-gcc/build-gcc.sh index d8497c4f5bbe..1190e7fe09d1 100755 --- a/build/unix/build-gcc/build-gcc.sh +++ b/build/unix/build-gcc/build-gcc.sh @@ -39,10 +39,7 @@ build_binutils() { # # --enable-targets builds extra target support in ld. # Enabling aarch64 support brings in arm support, so we don't need to specify that too. - # - # It is important to have the binutils --target and the gcc --target match, - # so binutils will install binaries in a place that gcc will look for them. - binutils_configure_flags="--enable-targets=aarch64-unknown-linux-gnu --build=x86_64-unknown-linux-gnu --target=x86_64-unknown-linux-gnu --disable-gold --enable-plugins --disable-nls --with-sysroot=/" + binutils_configure_flags="--enable-targets=aarch64-unknown-linux-gnu --disable-gold --enable-plugins --disable-nls --with-sysroot=/" fi mkdir $root_dir/binutils-objdir @@ -55,13 +52,9 @@ build_binutils() { } build_gcc() { - # Be explicit about --build and --target so header and library install - # directories are consistent. - local target="${1:-x86_64-unknown-linux-gnu}" - mkdir $root_dir/gcc-objdir pushd $root_dir/gcc-objdir - ../gcc-$gcc_version/configure --prefix=${prefix-/tools/gcc} --build=x86_64-unknown-linux-gnu --target="${target}" --enable-languages=c,c++ --disable-nls --disable-gnu-unique-object --enable-__cxa_atexit --with-arch-32=pentiumpro --with-sysroot=/ + ../gcc-$gcc_version/configure --prefix=${prefix-/tools/gcc} --enable-languages=c,c++ --disable-nls --disable-gnu-unique-object --enable-__cxa_atexit --with-arch-32=pentiumpro --with-sysroot=/ make $make_flags make $make_flags install DESTDIR=$root_dir diff --git a/taskcluster/ci/fetch/toolchains.yml b/taskcluster/ci/fetch/toolchains.yml index 4f65662f1360..70969bc2b659 100644 --- a/taskcluster/ci/fetch/toolchains.yml +++ b/taskcluster/ci/fetch/toolchains.yml @@ -20,6 +20,17 @@ binutils-2.27: sig-url: "{url}.sig" key-path: build/unix/build-gcc/EAF1C276A747E9ED86210CBAC3126D3B4AE55E93.key +binutils-2.28.1: + description: binutils 2.28.1 source code + fetch: + type: static-url + url: ftp://ftp.gnu.org/gnu/binutils/binutils-2.28.1.tar.xz + sha256: 16328a906e55a3c633854beec8e9e255a639b366436470b4f6245eb0d2fde942 + size: 19440112 + gpg-signature: + sig-url: "{url}.sig" + key-path: build/unix/build-gcc/EAF1C276A747E9ED86210CBAC3126D3B4AE55E93.key + binutils-2.31.1: description: binutils 2.31.1 source code fetch: @@ -39,6 +50,17 @@ cloog-0.18.1: sha256: 02500a4edd14875f94fe84cbeda4290425cb0c1c2474c6f75d75a303d64b4196 size: 3857324 +gcc-4.9.4: + description: GCC 4.9.4 source code + fetch: + type: static-url + url: ftp://ftp.gnu.org/gnu/gcc/gcc-4.9.4/gcc-4.9.4.tar.bz2 + sha256: 6c11d292cd01b294f9f84c9a59c230d80e9e4a47e5c6355f046bb36d4f358092 + size: 90097606 + gpg-signature: + sig-url: "{url}.sig" + key-path: build/unix/build-gcc/13975A70E63C361C73AE69EF6EEB81F8981C74C7.key + gcc-6.4.0: description: GCC 6.4.0 source code fetch: diff --git a/taskcluster/ci/toolchain/clang-tidy.yml b/taskcluster/ci/toolchain/clang-tidy.yml index 4ba0dc08a655..f4b96191f209 100644 --- a/taskcluster/ci/toolchain/clang-tidy.yml +++ b/taskcluster/ci/toolchain/clang-tidy.yml @@ -34,7 +34,7 @@ linux64-clang-tidy: - 'build/build-clang/clang-tidy-linux64.json' - 'taskcluster/scripts/misc/tooltool-download.sh' toolchains: - - linux64-gcc-6 + - linux64-gcc-4.9 macosx64-clang-tidy: index: @@ -55,7 +55,7 @@ macosx64-clang-tidy: toolchains: - linux64-cctools-port - linux64-clang-7 - - linux64-gcc-6 + - linux64-gcc-4.9 - linux64-node win32-clang-tidy: diff --git a/taskcluster/ci/toolchain/clang.yml b/taskcluster/ci/toolchain/clang.yml index f917991d0d40..a68385e362de 100644 --- a/taskcluster/ci/toolchain/clang.yml +++ b/taskcluster/ci/toolchain/clang.yml @@ -22,7 +22,7 @@ linux64-clang-4.0: - 'taskcluster/scripts/misc/tooltool-download.sh' toolchain-artifact: public/build/clang.tar.xz toolchains: - - linux64-gcc-6 + - linux64-gcc-4.9 linux64-clang-7: description: "Clang 7 toolchain build" @@ -38,7 +38,7 @@ linux64-clang-7: toolchain-alias: linux64-clang toolchain-artifact: public/build/clang.tar.xz toolchains: - - linux64-gcc-6 + - linux64-gcc-4.9 linux64-clang-trunk-mingw-x86: description: "MinGW-Clang Trunk x86 toolchain build" @@ -54,7 +54,7 @@ linux64-clang-trunk-mingw-x86: - 'taskcluster/scripts/misc/tooltool-download.sh' toolchain-artifact: public/build/clangmingw.tar.xz toolchains: - - linux64-gcc-6 + - linux64-gcc-4.9 linux64-clang-trunk-mingw-x64: description: "MinGW-Clang Trunk x64 toolchain build" @@ -71,7 +71,7 @@ linux64-clang-trunk-mingw-x64: - 'taskcluster/scripts/misc/tooltool-download.sh' toolchain-artifact: public/build/clangmingw.tar.xz toolchains: - - linux64-gcc-6 + - linux64-gcc-4.9 linux64-clang-7-android-cross: description: "Clang 7 toolchain build" @@ -86,7 +86,7 @@ linux64-clang-7-android-cross: toolchain-alias: linux64-clang-android-cross toolchain-artifact: public/build/clang.tar.xz toolchains: - - linux64-gcc-6 + - linux64-gcc-4.9 - linux64-android-ndk-linux-repack linux64-clang-7-macosx-cross: @@ -109,7 +109,7 @@ linux64-clang-7-macosx-cross: toolchains: - linux64-cctools-port - linux64-clang-7 - - linux64-gcc-6 + - linux64-gcc-4.9 macosx64-clang: description: "Clang toolchain build" @@ -133,7 +133,7 @@ macosx64-clang: toolchains: - linux64-cctools-port - linux64-clang-7 - - linux64-gcc-6 + - linux64-gcc-4.9 - linux64-node win64-clang-cl: diff --git a/taskcluster/ci/toolchain/gcc.yml b/taskcluster/ci/toolchain/gcc.yml index 5f255d153885..0b14126b147a 100644 --- a/taskcluster/ci/toolchain/gcc.yml +++ b/taskcluster/ci/toolchain/gcc.yml @@ -11,6 +11,22 @@ job-defaults: - 'build/unix/build-gcc/build-gcc.sh' toolchain-artifact: public/build/gcc.tar.xz +linux64-gcc-4.9: + description: "GCC 4.9 toolchain build" + treeherder: + symbol: TL(gcc4.9) + run: + script: build-gcc-4.9-linux.sh + fetches: + fetch: + - binutils-2.25.1 + - cloog-0.18.1 + - gcc-4.9.4 + - gmp-5.1.3 + - isl-0.12.2 + - mpc-0.8.2 + - mpfr-3.1.5 + linux64-gcc-6: description: "GCC 6 toolchain build" treeherder: @@ -20,7 +36,7 @@ linux64-gcc-6: toolchain-alias: linux64-gcc fetches: fetch: - - binutils-2.31.1 + - binutils-2.28.1 - gcc-6.4.0 - gmp-5.1.3 - isl-0.15 @@ -35,7 +51,7 @@ linux64-gcc-7: script: build-gcc-7-linux.sh fetches: fetch: - - binutils-2.31.1 + - binutils-2.28.1 - gcc-7.3.0 - gmp-6.1.0 - isl-0.16.1 @@ -55,7 +71,7 @@ linux64-gcc-sixgill: - linux64-gcc-6 fetches: fetch: - - binutils-2.31.1 + - binutils-2.28.1 - isl-0.15 - gcc-6.4.0 - gmp-5.1.3 diff --git a/taskcluster/ci/toolchain/misc.yml b/taskcluster/ci/toolchain/misc.yml index a1208540c83e..efeceecbd3f4 100644 --- a/taskcluster/ci/toolchain/misc.yml +++ b/taskcluster/ci/toolchain/misc.yml @@ -32,7 +32,7 @@ linux64-llvm-dsymutil: script: build-llvm-dsymutil.sh toolchain-artifact: public/build/llvm-dsymutil.tar.xz toolchains: - - linux64-gcc-6 + - linux64-gcc-4.9 linux64-binutils: description: "Binutils toolchain build" @@ -85,7 +85,7 @@ linux64-tup: - trunk - try toolchains: - - linux64-gcc-6 + - linux64-gcc-4.9 linux64-custom-v8: description: "Custom v8 build" diff --git a/taskcluster/scripts/misc/build-clang-trunk-mingw.sh b/taskcluster/scripts/misc/build-clang-trunk-mingw.sh index 5a8331a2ab4c..79271f056c32 100755 --- a/taskcluster/scripts/misc/build-clang-trunk-mingw.sh +++ b/taskcluster/scripts/misc/build-clang-trunk-mingw.sh @@ -321,6 +321,7 @@ popd mkdir -p $UPLOAD_DIR pushd $(dirname $INSTALL_DIR) +rm -f clang/lib/libstdc++* tar caf clangmingw.tar.xz clang mv clangmingw.tar.xz $UPLOAD_DIR popd diff --git a/taskcluster/scripts/misc/build-gcc-6-linux.sh b/taskcluster/scripts/misc/build-gcc-6-linux.sh index 6a9908266636..1f198074384e 100755 --- a/taskcluster/scripts/misc/build-gcc-6-linux.sh +++ b/taskcluster/scripts/misc/build-gcc-6-linux.sh @@ -14,7 +14,7 @@ data_dir=$HOME_DIR/src/build/unix/build-gcc gcc_version=6.4.0 gcc_ext=xz -binutils_version=2.31.1 +binutils_version=2.28.1 binutils_ext=xz pushd $root_dir/gcc-$gcc_version diff --git a/taskcluster/scripts/misc/build-gcc-7-linux.sh b/taskcluster/scripts/misc/build-gcc-7-linux.sh index 8b9674215fd5..5862c1033d14 100755 --- a/taskcluster/scripts/misc/build-gcc-7-linux.sh +++ b/taskcluster/scripts/misc/build-gcc-7-linux.sh @@ -14,7 +14,7 @@ data_dir=$HOME_DIR/src/build/unix/build-gcc gcc_version=7.3.0 gcc_ext=xz -binutils_version=2.31.1 +binutils_version=2.28.1 binutils_ext=xz pushd $root_dir/gcc-$gcc_version diff --git a/taskcluster/scripts/misc/build-gcc-sixgill-plugin-linux.sh b/taskcluster/scripts/misc/build-gcc-sixgill-plugin-linux.sh index 7aba4219b822..3e42065415be 100755 --- a/taskcluster/scripts/misc/build-gcc-sixgill-plugin-linux.sh +++ b/taskcluster/scripts/misc/build-gcc-sixgill-plugin-linux.sh @@ -28,7 +28,7 @@ sixgill_repo=https://hg.mozilla.org/users/sfink_mozilla.com/sixgill . $data_dir/build-gcc.sh pushd $root_dir/gcc-$gcc_version -ln -sf ../binutils-2.31.1 binutils +ln -sf ../binutils-2.28.1 binutils ln -sf ../gmp-5.1.3 gmp ln -sf ../isl-0.15 isl ln -sf ../mpc-0.8.2 mpc