From 489386bcd6671b1ed74fdfc015e04ed9179fcad6 Mon Sep 17 00:00:00 2001 From: Marko Semet Date: Sat, 3 Aug 2019 22:16:26 +0200 Subject: [PATCH] Supprt multilib --- BasePlatform/v1/BasePlatform-i386.yaml | 2 +- BasePlatform/v1/BasePlatform-x86_64.yaml | 2 +- BasePlatform/v1/BaseSdk-i386.yaml | 3 +- BasePlatform/v1/build.sh | 9 +- BasePlatform/v1/sdk/cross.yaml | 460 +++++++++++++++-------- 5 files changed, 306 insertions(+), 170 deletions(-) diff --git a/BasePlatform/v1/BasePlatform-i386.yaml b/BasePlatform/v1/BasePlatform-i386.yaml index cb31d79..9665e9f 100644 --- a/BasePlatform/v1/BasePlatform-i386.yaml +++ b/BasePlatform/v1/BasePlatform-i386.yaml @@ -24,7 +24,7 @@ modules: - false skip-arches: - "i386" - - tools/platform.yaml + - platform/platform.yaml cleanup: - "*.a" diff --git a/BasePlatform/v1/BasePlatform-x86_64.yaml b/BasePlatform/v1/BasePlatform-x86_64.yaml index 3dc8ddd..7e3dc64 100644 --- a/BasePlatform/v1/BasePlatform-x86_64.yaml +++ b/BasePlatform/v1/BasePlatform-x86_64.yaml @@ -37,7 +37,7 @@ modules: - false skip-arches: - x86_64 - - tools/platform.yaml + - platform/platform.yaml cleanup: - "*.a" diff --git a/BasePlatform/v1/BaseSdk-i386.yaml b/BasePlatform/v1/BaseSdk-i386.yaml index 3d8ca26..40bac5b 100644 --- a/BasePlatform/v1/BaseSdk-i386.yaml +++ b/BasePlatform/v1/BaseSdk-i386.yaml @@ -25,7 +25,8 @@ modules: - false skip-arches: - "i386" - - tools/sdk.yaml + - platform/platform.yaml + - sdk/sdk.yaml cleanup: - /lib/debug diff --git a/BasePlatform/v1/build.sh b/BasePlatform/v1/build.sh index dc1e5d2..348919b 100755 --- a/BasePlatform/v1/build.sh +++ b/BasePlatform/v1/build.sh @@ -1,10 +1,17 @@ #! /usr/bin/env bash CONF_PATH=`dirname $0` + if [ -z "$NO_32BIT" ]; then flatpak-builder $2 --arch=i386 build32 "$CONF_PATH/Base$1-i386.yaml" || exit 1 + if [ ! -z $3 ]; then + flatpak-builder $4 --arch=i386 --export-only "--repo=$3" build32 "$CONF_PATH/Base$1-i386.yaml" || exit 3 + fi fi if [ -z "$NO_64BIT" ]; then - ostree export --repo ~/.local/share/flatpak/repo runtime/org.freedesktop.Platform.Compat.i386/x86_64/18.08 > "$CONF_PATH/i386.tar" + ostree export --repo ~/.local/share/flatpak/repo runtime/org.freedesktop.Platform.Compat.i386/x86_64/18.08 > "$CONF_PATH/i386.tar" && flatpak-builder $2 --arch=x86_64 build64 "$CONF_PATH/Base$1-x86_64.yaml" || exit 2 + if [ ! -z $3 ]; then + flatpak-builder $4 --arch=x86_64 --export-only "--repo=$3" build64 "$CONF_PATH/Base$1-x86_64.yaml" || exit 3 + fi fi diff --git a/BasePlatform/v1/sdk/cross.yaml b/BasePlatform/v1/sdk/cross.yaml index e548acf..e159c78 100644 --- a/BasePlatform/v1/sdk/cross.yaml +++ b/BasePlatform/v1/sdk/cross.yaml @@ -1,12 +1,294 @@ name: cross only-arches: - x86_64 +buildsystem: simple +build-commands: + - rm -v /usr/tools_gcc/usr/include /usr/tools_gcc2/usr/include modules: - - name: cross-binutils + - name: cross-tools-binutils sources: - type: archive - url: https://ftp.gnu.org/gnu/binutils/binutils-2.31.tar.xz - sha256: 231036df7ef02049cdbff0681f4575e571f26ea8086cf70c2dcd3b6c0f4216bf + url: https://ftp.gnu.org/gnu/binutils/binutils-2.32.tar.xz + sha256: 0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04 + config-opts: + - --host=x86_64-unknown-linux + - --build=x86_64-unknown-linux + - --target=x86_64-unknown-linux + - --disable-nls + - --disable-werror + - --enable-multilib + - --enable-multiarch + - --enable-plugins + - --enable-gold + - --enable-lto + - --enable-static-pie + - --enable-64-bit-bfd + - --enable-targets=x86_64-pep + - --enable-shared + - --enable-ld=default + - --with-system-zlib + - --with-lib-path=/usr/tools/lib:/usr/target/lib32:/usr/lib:/usr/lib32:/usr/lib/x86_64-linux-gnu:/usr/lib64:/app/lib:/app/lib32:/app/lib64 + build-options: + make-install-args: + - prefix=/usr/tools_ld + - install + builddir: true + cleanup: + - "*" + - name: cross-tools-gcc-pass1 + sources: + - type: archive + url: https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz + sha256: 64baadfe6cc0f4947a84cb12d7f0dfaf45bb58b7e92461639596c21e02d97d2c + - type: archive + url: https://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.xz + sha256: 87b565e89a9a684fe4ebeeddb8399dce2599f9c9049854ca8c0dfbdea0e21912 + dest: gmp + - type: archive + url: https://ftp.gnu.org/gnu/mpfr/mpfr-4.0.2.tar.xz + sha256: 1d3be708604eae0e42d578ba93b390c2a145f17743a744d8f3f8c2ad5855a38a + dest: mpfr + - type: archive + url: https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz + sha256: 6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e + dest: mpc + - type: shell + commands: + - ln -s /usr/bin/cpp /lib/cpp + - sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64 + config-opts: + - --host=x86_64-unknown-linux + - --build=x86_64-unknown-linux + - --target=x86_64-unknown-linux + - --with-glibc-version=2.18 + - --with-newlib + - --without-headers + - --disable-nls + - --disable-shared + - --disable-decimal-float + - --disable-threads + - --disable-libatomic + - --disable-libgomp + - --disable-libmpx + - --disable-libquadmath + - --disable-libssp + - --disable-libvtv + - --disable-libstdcxx + - --disable-bootstrap + - --enable-multilib + - --enable-languages=c,c++ + builddir: true + cleanup: + - "*" + build-options: + make-install-args: + - DESTDIR=/usr/tools_gcc + - install + env: + PATH: "/usr/tools_gcc/bin:/usr/tools_ld/bin:/usr/bin" + post-install: + - rm /lib/cpp + - name: cross-glibc + sources: + - type: archive + url: https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.xz + sha256: b1900051afad76f7a4f73e71413df4826dce085ef8ddb785a945b66d7d513082 + - type: shell + commands: + - echo slibdir=/usr/lib >> configparms + - echo rtlddir=/usr/lib >> configparms + config-opts: + - --host=x86_64-unknown-linux + - --build=x86_64-unknown-linux + - --target=x86_64-unknown-linux + - --disable-nls + - --disable-werror + - --disable-profile + - --enable-multi-arch + - --enable-cet + - --with-headers=/usr/include + - --libdir=/usr/lib + - --libexecdir=/usr/lib + - CC=/usr/bin/ccache /usr/tools_gcc/usr/bin/gcc + - CPP=/usr/bin/ccache /usr/tools_gcc/usr/bin/g++ + - CFLAGS=-D_FORTIFY_SOURCE=0 -O2 + - CPPFLAGS=-D_FORTIFY_SOURCE=0 -O2 + build-options: + make-install-args: + - install_root=/usr/tmp_glibc + - install + env: + PATH: "/usr/tools_gcc/bin:/usr/tools_ld/bin:/usr/bin" + post-install: + - rm -rf /usr/tmp_glibc/etc /usr/tmp_glibc/usr/sbin /usr/tmp_glibc/usr/share /usr/tmp_glibc/var /usr/tmp_glibc/sbin + - cp -rfv /usr/tmp_glibc/* / + - rm -rf /usr/tmp_glibc + builddir: true + cleanup: + - /usr/lib/debug + - name: cross-glibc-32bit + sources: + - type: archive + url: https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.xz + sha256: b1900051afad76f7a4f73e71413df4826dce085ef8ddb785a945b66d7d513082 + - type: shell + commands: + - echo slibdir=/usr/lib32 >> configparms + - echo rtlddir=/usr/lib32 >> configparms + config-opts: + - --host=i686-unknown-linux + - --build=i686-unknown-linux + - --target=i686-unknown-linux + - --enable-cet + - --enable-multi-arch + - --disable-werror + - --disable-nls + - --with-headers=/usr/include + - --libdir=/usr/lib32 + - --libexecdir=/usr/lib32 + - CC=/usr/bin/ccache /usr/tools_gcc/usr/bin/gcc -m32 + - CXX=/usr/bin/ccache /usr/tools_gcc/usr/bin/g++ -m32 + - CFLAGS=-D_FORTIFY_SOURCE=0 -O2 + - CPPFLAGS=-D_FORTIFY_SOURCE=0 -O2 + build-options: + make-install-args: + - install_root=/usr/tmp_glibc32 + - install + env: + PATH: "/usr/tools_gcc/usr/bin:/usr/tools_ld/bin:/usr/bin" + post-install: + - rm -rfv /usr/tmp_glibc32/etc /usr/tmp_glibc32/usr/bin /usr/tmp_glibc32/usr/sbin /usr/tmp_glibc32/usr/share /usr/tmp_glibc32/var /usr/tmp_glibc32/sbin + - find "/usr/tmp_glibc32/usr/include" -type f -not -name '*-32.h' -delete + - cp -rfv /usr/tmp_glibc32/* / + - rm -rf /usr/tmp_glibc32 + - rm -v /lib/ld-linux.so.2; ln -s /usr/lib32/ld-linux.so.2 /lib/ + builddir: true + cleanup: + - /usr/lib/debug + - name: cross-stdcpp + sources: + - type: archive + url: https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz + sha256: 64baadfe6cc0f4947a84cb12d7f0dfaf45bb58b7e92461639596c21e02d97d2c + buildsystem: simple + build-commands: + - mkdir build + - cd build; ../libstdc++-v3/configure + --enable-multilib + --with-headers=/usr/include + --disable-nls + --prefix=/usr + --disable-werror + "CC=/usr/bin/ccache /usr/tools_gcc/usr/bin/gcc" + "CXX=/usr/bin/ccache /usr/tools_gcc/usr/bin/g++" + - cd build; make -j$FLATPAK_BUILDER_N_JOBS + - cd build; make DESTDIR=/usr/tmp_stdcpp install + - cp -rav /usr/tmp_stdcpp/usr/lib64/* /usr/lib; cp -rav /usr/tmp_stdcpp/usr/lib64/* /usr/tmp_sysroot/usr/lib; rm -rfv /usr/tmp_stdcpp/usr/lib64 + - rm -rfv /usr/tmp_stdcpp/usr/share + - cp -rav /usr/tmp_stdcpp/* / + - rm -rfv /usr/tmp_stdcpp + build-options: + env: + PATH: "/usr/tools_gcc/usr/bin:/usr/tools_ld/bin:/usr/bin" + - name: cross-gcc-pass2 + sources: + - type: archive + url: https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz + sha256: 64baadfe6cc0f4947a84cb12d7f0dfaf45bb58b7e92461639596c21e02d97d2c + - type: archive + url: https://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.xz + sha256: 87b565e89a9a684fe4ebeeddb8399dce2599f9c9049854ca8c0dfbdea0e21912 + dest: gmpusr/tools_gcc/bin + - type: archive + url: https://ftp.gnu.org/gnu/mpfr/mpfr-4.0.2.tar.xz + sha256: 1d3be708604eae0e42d578ba93b390c2a145f17743a744d8f3f8c2ad5855a38a + dest: mpfr + - type: archive + url: https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz + sha256: 6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e + dest: mpc + - type: shell + commands: + - rm -rv /usr/tools_gcc/usr/include; ln -sv /usr/include /usr/tools_gcc/usr/include + - sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64 + config-opts: + - --with-glibc-version=2.18 + - --disable-nls + - --disable-shared + - --disable-bootstrap + - --enable-multilib + - --enable-languages=c,c++ + - --host=x86_64-unknown-linux + - --build=x86_64-unknown-linux + - --target=x86_64-unknown-linux + - CC=/usr/bin/ccache /usr/tools_gcc/usr/bin/gcc + - CPP=/usr/bin/ccache /usr/tools_gcc/usr/bin/g++ + build-options: + make-install-args: + - DESTDIR=/usr/tools_gcc2 + - install + env: + PATH: "/usr/tools_gcc/usr/bin:/usr/tools_ld/bin:/usr/bin" + builddir: true + cleanup: + - "*" + - name: cross-gcc + sources: + - type: archive + url: https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz + sha256: 64baadfe6cc0f4947a84cb12d7f0dfaf45bb58b7e92461639596c21e02d97d2c + - type: archive + url: https://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.xz + sha256: 87b565e89a9a684fe4ebeeddb8399dce2599f9c9049854ca8c0dfbdea0e21912 + dest: gmp + - type: archive + url: https://ftp.gnu.org/gnu/mpfr/mpfr-4.0.2.tar.xz + sha256: 1d3be708604eae0e42d578ba93b390c2a145f17743a744d8f3f8c2ad5855a38a + dest: mpfr + - type: archive + url: https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz + sha256: 6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e + dest: mpc + - type: shell + commands: + - rm -rv /usr/tools_gcc2/usr/include; ln -sv /usr/include /usr/tools_gcc2/usr/include + - sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64 + config-opts: + - --with-glibc-version=2.18 + - --disable-nls + - --disable-shared + - --disable-bootstrap + - --enable-multilib + - --enable-languages=c,c++,lto + - --host=x86_64-unknown-linux + - --build=x86_64-unknown-linux + - --target=x86_64-unknown-linux + - --enable-gnu-unique-object + - --enable-linker-build-id + - --enable-lto + - --enable-plugin + - --enable-gnu-indirect-function + - --enable-default-pie + - --enable-default-ssp + - --enable-cet=auto + - CC=/usr/bin/ccache /usr/tools_gcc2/usr/bin/gcc + - CPP=/usr/bin/ccache /usr/tools_gcc2/usr/bin/g++ + build-options: + make-install-args: + - DESTDIR=/usr/tmp_gcc + - install + env: + PATH: "/usr/tools_gcc/usr/bin:/usr/tools_ld/bin:/usr/bin" + post-install: + - rm -rfv /usr/tmp_gcc/usr/share + - cp -rfv /usr/tmp_gcc/* / + - rm -rv /usr/tmp_gcc + builddir: true + - name: cross-binutils2 + sources: + - type: archive + url: https://ftp.gnu.org/gnu/binutils/binutils-2.32.tar.xz + sha256: 0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04 config-opts: - --disable-nls - --disable-werror @@ -24,176 +306,22 @@ modules: - --with-lib-path=/usr/lib:/usr/lib32:/usr/lib/x86_64-linux-gnu:/usr/lib64:/app/lib:/app/lib32:/app/lib64 build-options: make-install-args: - - prefix=/usr/tmp_binutils/usr - - tooldir=/usr/tmp_binutils/usr + - DESTDIR=/usr/tmp_binutils - install + env: + PATH: "/usr/tools_ld/bin:/usr/bin" post-install: - - rm -rfv /usr/tmp_binutils/usr/share - - cp -rfv /usr/tmp_binutils/* / + - rm -rf /usr/tmp_binutils/usr/share + - cp -rf /usr/tmp_binutils/usr / - rm -rfv /usr/tmp_binutils builddir: true - - name: cross-gmp - sources: - - type: archive - url: https://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.xz - sha256: 87b565e89a9a684fe4ebeeddb8399dce2599f9c9049854ca8c0dfbdea0e21912 - build-options: - make-install-args: - - DESTDIR=/usr/tmp_gmp - - install - post-install: - - rm -rfv /usr/tmp_gmp/usr/share - - cp -rav /usr/tmp_gmp/* / - - rm -rfv /usr/tmp_gmp - - name: cross-mpfr - sources: - - type: archive - url: https://ftp.gnu.org/gnu/mpfr/mpfr-4.0.1.tar.xz - sha256: 67874a60826303ee2fb6affc6dc0ddd3e749e9bfcb4c8655e3953d0458a6e16e - build-options: - make-install-args: - - DESTDIR=/usr/tmp_mpfr - - install - post-install: - - rm -rfv /usr/tmp_mpfr/usr/share - - cp -rav /usr/tmp_mpfr/* / - - rm -rfv /usr/tmp_mpfr - - name: cross-mpc - sources: - - type: archive - url: https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz - sha256: 6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e - build-options: - make-install-args: - - DESTDIR=/usr/tmp_mpc - - install - post-install: - - rm -rfv /usr/tmp_mpc/usr/share - - cp -rav /usr/tmp_mpc/* / - - rm -rfv /usr/tmp_mpc - - name: cross-gcc-pass - sources: - - type: archive - url: https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz - sha256: 64baadfe6cc0f4947a84cb12d7f0dfaf45bb58b7e92461639596c21e02d97d2c - - type: shell - commands: - - ln -s /usr/bin/cpp /lib/cpp - config-opts: - - --with-glibc-version=2.19 - - --with-newlib - - --without-headers - - --disable-nls - - --disable-shared - - --disable-decimal-float - - --disable-threads - - --disable-libatomic - - --disable-libgomp - - --disable-libmpx - - --disable-libquadmath - - --disable-libssp - - --disable-libvtv - - --disable-libstdcxx - - --disable-bootstrap - - --enable-multilib - - --enable-languages=c,c++,lto - - CPP=/usr/bin/cpp - build-options: - make-install-args: - - DESTDIR=/usr/tmp_gcc - - install - # prefix: /usr - post-install: - - cp -rav /usr/lib64/* /usr/lib - - python3 -c "import os; import shutil; shutil.rmtree('/usr/lib64'); os.symlink('lib', '/usr/lib64')" - - rm -rfv /usr/tmp_gcc/usr/share - - cp -rafv /usr/tmp_gcc/* / - - rm -rf /usr/tmp_gcc - builddir: true - - name: cross-test1 - buildsystem: simple - build.commands: - - echo "int main() { return 0; }" > test.cpp - - gcc test.cpp - - gcc -m64 test.cpp - - name: cross-glibc-32bit - sources: - - type: archive - url: https://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.xz - sha256: f3eeb8d57e25ca9fc13c2af3dae97754f9f643bc69229546828e3a240e2af04b - - type: shell - commands: - - echo slibdir=/usr/lib32 >> configparms - - echo rtlddir=/usr/lib32 >> configparms - config-opts: - - --host=i686-unknown-linux - - --build=i686-unknown-linux - - --enable-kernel=3.2 - - --enable-cet - - --enable-multi-arch - - --enable-stack-protector=strong - - --with-headers=/usr/include - - --libdir=/usr/lib32 - - --libexecdir=/usr/lib32 - - CC=/usr/bin/ccache /usr/bin/gcc -m32 - - CXX=/usr/bin/ccache /usr/bin/g++ -m32 - build-options: - make-install-args: - - install_root=/usr/tmp_glibc32 - - install - post-install: - - rm -rfv /usr/tmp_glibc32/etc /usr/tmp_glibc32/usr/bin /usr/tmp_glibc32/usr/sbin /usr/tmp_glibc32/usr/share /usr/tmp_glibc32/var /usr/tmp_glibc32/sbin - - find "/usr/tmp_glibc32/usr/include" -type f -not -name '*-32.h' -delete - - cp -rfv /usr/tmp_glibc32/* / - - rm -rfv /usr/tmp_glibc32 - - rm -v /lib/ld-linux.so.2; ln -s /usr/lib32/ld-linux.so.2 /lib/ - builddir: true - - name: cross-test2 - buildsystem: simple - build.commands: - - echo "int main() { return 0; }" > test.cpp - - gcc test.cpp - - gcc -m64 test.cpp - - gcc -m32 test.cpp - - name: cross-stdcpp - sources: - - type: archive - url: https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz - sha256: 64baadfe6cc0f4947a84cb12d7f0dfaf45bb58b7e92461639596c21e02d97d2c - buildsystem: simple - build-commands: - - mkdir build - - cd build; ../libstdc++-v3/configure --enable-multilib --disable-nls --enable-__cxa_atexit --enable-languages=c++ --enable-shared --enable-threads=posix --prefix=/usr - - cd build; make -j$FLATPAK_BUILDER_N_JOBS - - cd build; make DESTDIR=/usr/tmp_stdcpp install - - cp -rav /usr/tmp_stdcpp/usr/lib64/* /usr/lib64; rm -rfv /usr/tmp_stdcpp/usr/lib64 - - rm -rfv /usr/tmp_stdcpp/usr/share - - cp -rav /usr/tmp_stdcpp/* / - - rm -rfv /usr/tmp_stdcpp - - name: cross-gcc - sources: - - type: archive - url: https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz - sha256: 64baadfe6cc0f4947a84cb12d7f0dfaf45bb58b7e92461639596c21e02d97d2c - config-opts: - - --with-glibc-version=2.19 - - --disable-nls - - --disable-bootstrap - - --enable-multilib - - --enable-languages=c,c++,lto - build-options: - make-install-args: - - DESTDIR=/usr/tmp_gcc - - install - post-install: - - rm -rfv /usr/tmp_gcc/usr/share - - cp -rfv /usr/tmp_gcc/* / - - rm -rv /usr/tmp_gcc - builddir: true - - name: cross-test3 + - name: cross-test buildsystem: simple build.commands: - echo "int main() { return 0; }" > test.cpp - gcc test.cpp + - ./a.out - gcc -m64 test.cpp + - ./a.out - gcc -m32 test.cpp + - ./a.out