Supprt multilib

dev
Marko Semet 2019-08-03 22:16:26 +02:00
parent 7bbba6a737
commit 489386bcd6
5 changed files with 306 additions and 170 deletions

View File

@ -24,7 +24,7 @@ modules:
- false
skip-arches:
- "i386"
- tools/platform.yaml
- platform/platform.yaml
cleanup:
- "*.a"

View File

@ -37,7 +37,7 @@ modules:
- false
skip-arches:
- x86_64
- tools/platform.yaml
- platform/platform.yaml
cleanup:
- "*.a"

View File

@ -25,7 +25,8 @@ modules:
- false
skip-arches:
- "i386"
- tools/sdk.yaml
- platform/platform.yaml
- sdk/sdk.yaml
cleanup:
- /lib/debug

View File

@ -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

View File

@ -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