From f501976babcc283c7d2ae4bea25e5feefc4b98c2 Mon Sep 17 00:00:00 2001 From: Tristan Van Berkom Date: Wed, 22 Mar 2017 09:47:09 +0000 Subject: Moved all elements under the elements directory --- elements/gnu-toolchain/stage1-gcc.bst | 100 ++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 elements/gnu-toolchain/stage1-gcc.bst (limited to 'elements/gnu-toolchain/stage1-gcc.bst') diff --git a/elements/gnu-toolchain/stage1-gcc.bst b/elements/gnu-toolchain/stage1-gcc.bst new file mode 100644 index 00000000..f7244c00 --- /dev/null +++ b/elements/gnu-toolchain/stage1-gcc.bst @@ -0,0 +1,100 @@ +kind: autotools + +sources: +- kind: git + url: upstream:gcc-tarball + track: baserock/gnu-toolchain + ref: b3c9b176c1f10ebeff5700eb3760e9511f23fa06 + +depends: +- gnu-toolchain/gnome-platform.bst +- gnu-toolchain/gnome-sdk.bst +- gnu-toolchain/stage1-binutils.bst + +variables: + prefix: /tools + +environment: + PATH: /tools/bin:/usr/bin:/bin:/usr/sbin:/sbin + +config: + configure-commands: + # Workaround from LFS due GCC not detecting stack protection correctly + - | + sed -i -e '/k prot/a \ + gcc_cv_libc_provides_ssp=yes + ' gcc/configure + + - mkdir o + + # Configure flag notes: + # 1. See gcc.morph. + # 2. Although we will be setting a sysroot at runtime, giving a + # temporary one at configuration time seems necessary so that + # `--with-native-system-header-dir` produces effect and + # /tools/include is in the include path for the newly built GCC. We + # set it by default to a non-existent directory to avoid GCC looking + # at the host dirs, in case we forget to give it at runtime. + # 3. Disable searching /usr/local/include for headers + # 4. The pass 1 compiler needs to find the libraries we build in pass + # 2. Include path must be set explicility, because it defaults to + # $SYSROOT/usr/include rather than $SYSROOT/include. + # 5. Disable stuff that doesn't work when building a cross compiler + # without an existing libc, and generally try to keep this build as + # simple as possible. + - | + case "%{bst-arch}" in + armv7lhf) ARCH_FLAGS="--with-arch=armv7-a \ + --with-cpu=cortex-a9 \ + --with-tune=cortex-a9 \ + --with-fpu=vfpv3-d16 \ + --with-float=hard" ;; + armv7*) ARCH_FLAGS="--with-arch=armv7-a" ;; + esac + + cd o && ../configure \ + $ARCH_FLAGS \ + --build=$(sh ../config.guess) \ + --host=$(sh ../config.guess) \ + --target=%{target-stage1} \ + --prefix="%{prefix}" \ + `# [1]` --libdir="%{libdir}" \ + `# [2]` --with-sysroot=/nonexistentdir \ + --with-newlib \ + `# [3]` --with-local-prefix="%{prefix}" \ + `# [4]` --with-native-system-header-dir="%{prefix}/include" \ + --without-headers \ + --disable-nls \ + --disable-shared \ + --disable-multilib \ + `# [5]` --disable-decimal-float \ + `# [5]` --disable-threads \ + `# [5]` --disable-libatomic \ + `# [5]` --disable-libgomp \ + `# [5]` --disable-libitm \ + `# [5]` --disable-libquadmath \ + `# [5]` --disable-libsanitizer \ + `# [5]` --disable-libssp \ + `# [5]` --disable-libvtv \ + `# [5]` --disable-libcilkrts \ + `# [5]` --disable-libstdc++-v3 \ + --enable-languages=c,c++ + + build-commands: + - | + # GCC is not passing the correct host/target flags to GMP's configure + # script, which causes it to not use the machine-dependent code for + # the platform and use the generic one instead. However, the generic + # code results on an undefined reference to `__gmpn_invert_limb' in + # ARMv7. Fix the invocation of GMP's configure script so that GMP can + # use the machine-dependent code. + case "%{bst-arch}" in + armv5*) sed -i "s/--host=none/--host=armv5/" o/Makefile + sed -i "s/--target=none/--target=armv5/" o/Makefile ;; + armv7*) sed -i "s/--host=none/--host=armv7a/" o/Makefile + sed -i "s/--target=none/--target=armv7a/" o/Makefile ;; + esac + cd o && make + + install-commands: + - cd o && make DESTDIR="%{install-root}" install -- cgit v1.2.1