From f501976babcc283c7d2ae4bea25e5feefc4b98c2 Mon Sep 17 00:00:00 2001
From: Tristan Van Berkom <tristan.vanberkom@codethink.co.uk>
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

