summaryrefslogtreecommitdiffstats
path: root/examples/recipes/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'examples/recipes/gcc')
-rw-r--r--examples/recipes/gcc/build.libgcc-initial.yml51
-rw-r--r--examples/recipes/gcc/build.libgcc.yml30
-rw-r--r--examples/recipes/gcc/build.libs.yml29
3 files changed, 110 insertions, 0 deletions
diff --git a/examples/recipes/gcc/build.libgcc-initial.yml b/examples/recipes/gcc/build.libgcc-initial.yml
new file mode 100644
index 0000000..ca24907
--- /dev/null
+++ b/examples/recipes/gcc/build.libgcc-initial.yml
@@ -0,0 +1,51 @@
+meta:
+ version: '13.2.0'
+tasks:
+ configure:
+ args:
+ host: 'platform'
+ target: 'platform'
+ inherit:
+ recipe: 'gcc'
+ task: 'compile'
+ depends:
+ - recipe: 'gcc'
+ task: 'header-stubs'
+ run: |
+ cd {{basename}}-build
+ make configure-target-libgcc
+
+ # A hack borrowed from OpenEmbedded:
+ # We can build an initial libgcc without having to rebuild the whole gcc
+ # afterwards by manipulating the Makefile
+ sed -i -r \
+ -e 's@^(INHIBIT_LIBC_CFLAGS =).*@\1 -Dinhibit_libc@' \
+ gcc/libgcc.mvars
+ sed -i -r \
+ -e 's@^(thread_header =).*@\1 gthr-single.h@' \
+ -e 's@^(enable_shared =).*@\1 no@' \
+ {{target.gnu_triplet}}/libgcc/Makefile
+
+ compile:
+ args:
+ host: 'platform'
+ target: 'platform'
+ inherit:
+ task: 'configure'
+ run: |
+ cd {{basename}}-build
+ make all-target-libgcc
+
+ install:
+ args:
+ host: 'platform'
+ target: 'platform'
+ inherit:
+ task: 'compile'
+ output:
+ default: {}
+ run: |
+ cd {{basename}}-build
+ make DESTDIR={{destdir}} install-target-libgcc
+
+ ln -s libgcc.a {{destdir}}{{host.prefix}}/lib/gcc/{{target.gnu_triplet}}/"$(cat ../{{basename}}-{{version}}/gcc/BASE-VER)"/libgcc_eh.a
diff --git a/examples/recipes/gcc/build.libgcc.yml b/examples/recipes/gcc/build.libgcc.yml
new file mode 100644
index 0000000..0c8cfd6
--- /dev/null
+++ b/examples/recipes/gcc/build.libgcc.yml
@@ -0,0 +1,30 @@
+tasks:
+ compile:
+ args:
+ host: 'platform'
+ target: 'platform'
+ inherit:
+ recipe: 'gcc'
+ task: 'compile'
+ depends:
+ - recipe: 'glibc'
+ task: 'install'
+ args:
+ host: 'target'
+ run: |
+ cd {{basename}}-build
+ make all-target-libgcc
+
+ install:
+ args:
+ host: 'platform'
+ target: 'platform'
+ inherit:
+ task: 'compile'
+ output:
+ default: {}
+ run: |
+ cd {{basename}}-build
+ make DESTDIR={{destdir}} install-target-libgcc
+ rm {{destdir}}{{host_to_target.sysroot}}{{target.prefix}}/lib/libgcc_s.so*
+ rmdir -p --ignore-fail-on-non-empty {{destdir}}{{host_to_target.sysroot}}{{target.prefix}}/lib
diff --git a/examples/recipes/gcc/build.libs.yml b/examples/recipes/gcc/build.libs.yml
new file mode 100644
index 0000000..e69d318
--- /dev/null
+++ b/examples/recipes/gcc/build.libs.yml
@@ -0,0 +1,29 @@
+tasks:
+ compile:
+ args:
+ host: 'platform'
+ inherit:
+ recipe: 'gcc/libgcc'
+ task: 'compile'
+ args:
+ host: 'build'
+ target: 'host'
+ run: |
+ cd {{basename}}-build
+ make all-target-libatomic all-target-libgomp all-target-libquadmath all-target-libstdc++-v3
+
+ install:
+ args:
+ host: 'platform'
+ inherit:
+ task: 'compile'
+ output:
+ default:
+ path: 'sysroot'
+ run: |
+ cd {{basename}}-build
+ make DESTDIR={{destdir}}/install install-target-libgcc install-target-libatomic install-target-libgomp install-target-libquadmath install-target-libstdc++-v3
+ rm -r {{destdir}}/install{{build.prefix}}/lib/gcc
+ mv -T {{destdir}}/install/{{build_to_host.sysroot}} {{destdir}}/sysroot
+ cp -al {{destdir}}/install{{build.prefix}}/* {{destdir}}/sysroot{{host.prefix}}
+ rm {{destdir}}/sysroot{{host.prefix}}/lib/*.la