diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e2ddbcd --- /dev/null +++ b/Makefile @@ -0,0 +1,208 @@ +# https://github.com/apritzel/cross + +TOP = $(shell readlink -f .) +MKINCS = $(TOP)/mkincs + +include $(MKINCS)/versions.mk + +TARGET_TRIPLET = aarch64-linux-gnu + +NUMJOBS = $(shell getconf _NPROCESSORS_ONLN 2> /dev/null) + +SOURCEPATH = $(TOP)/Sources +BUILDPATH = $(TOP)/0_BUILD +INSTALLPATH = $(TOP)/1_INST/crossarm-$(SUITE) +SYSROOT = $(INSTALLPATH)/sysroot +PATCHESPATH = $(TOP)/Patches + +all: dirstruct download + +build: \ + binutils \ + gcc-stage1 \ + cross-glibc \ + gcc-stage2 \ + pack + +dirstruct: + mkdir -p $(BUILDPATH) + mkdir -p $(INSTALLPATH) + mkdir -p $(SOURCEPATH) + sudo apt-get install texinfo + +download: \ + $(SOURCEPATH)/glibc-$(VERSION_GLIBC).tar.bz2 \ + $(SOURCEPATH)/gcc-$(VERSION_GCC).tar.bz2 \ + $(SYSROOT) \ + $(SOURCEPATH)/gdb-$(VERSION_GDB).tar.gz \ + $(SOURCEPATH)/binutils-$(VERSION_BINUTILS).tar.bz2 \ + $(SOURCEPATH)/zlib-$(VERSION_ZLIB).tar.gz \ + $(SOURCEPATH)/isl-$(VERSION_ISL).tar.bz2 + +$(SOURCEPATH)/glibc-$(VERSION_GLIBC).tar.bz2: + curl https://ftp.gnu.org/gnu/glibc/glibc-$(VERSION_GLIBC).tar.bz2\ + --output $(SOURCEPATH)/glibc-$(VERSION_GLIBC).tar.bz2 +$(SOURCEPATH)/gcc-$(VERSION_GCC).tar.bz2: + rm -Rf $(BUILDPATH)/gcc-$(VERSION_GCC) + git clone -b releases/gcc-$(VERSION_GCC) --depth 1 \ + https://gcc.gnu.org/git/gcc.git $(BUILDPATH)/gcc-$(VERSION_GCC) + cd $(BUILDPATH) && \ + tar -jcf $(SOURCEPATH)/gcc-$(VERSION_GCC).tar.bz2 \ + ./gcc-$(VERSION_GCC) +$(SYSROOT): + tar -zxf $(SOURCEPATH)/sysroot-aarch64.tgz -C $(INSTALLPATH) +$(SOURCEPATH)/binutils-$(VERSION_BINUTILS).tar.bz2: + curl https://ftp.gnu.org/gnu/binutils/binutils-$(VERSION_BINUTILS).tar.bz2 \ + --output $(SOURCEPATH)/binutils-$(VERSION_BINUTILS).tar.bz2 +$(SOURCEPATH)/gdb-$(VERSION_GDB).tar.gz: + curl https://ftp.gnu.org/gnu/gdb/gdb-$(VERSION_GDB).tar.gz \ + --output $(SOURCEPATH)/gdb-$(VERSION_GDB).tar.gz +$(SOURCEPATH)/gmp-$(VERSION_GMP).tar.bz2: + curl https://ftp.gnu.org/gnu/gmp/gmp-$(VERSION_GMP).tar.bz2 \ + --output $(SOURCEPATH)/gmp-$(VERSION_GMP).tar.bz2 +$(SOURCEPATH)/mpc-$(VERSION_MPC).tar.gz: + curl https://ftp.gnu.org/gnu/mpc/mpc-$(VERSION_MPC).tar.gz \ + --output $(SOURCEPATH)/mpc-$(VERSION_MPC).tar.gz +$(SOURCEPATH)/mpfr-$(VERSION_MPFR).tar.bz2: + curl https://ftp.gnu.org/gnu/mpfr/mpfr-$(VERSION_MPFR).tar.bz2 \ + --output $(SOURCEPATH)/mpfr-$(VERSION_MPFR).tar.bz2 +$(SOURCEPATH)/zlib-$(VERSION_ZLIB).tar.gz: + curl https://www.zlib.net/zlib-$(VERSION_ZLIB).tar.gz \ + --output $(SOURCEPATH)/zlib-$(VERSION_ZLIB).tar.gz +$(SOURCEPATH)/isl-$(VERSION_ISL).tar.bz2: + curl ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-$(VERSION_ISL).tar.bz2 \ + --output $(SOURCEPATH)/isl-$(VERSION_ISL).tar.bz2 + +prepare: + cd $(BUILDPATH)/gcc.src && \ + patch -p1 < $(PATCHESPATH)/0002-Relocate-libintl.patch && \ + patch -p1 < $(PATCHESPATH)/0010-Fix-using-large-PCH.patch && \ + patch -p1 < $(PATCHESPATH)/0025-gcc11_1_0_quick_exit.patch + tar -jxf $(SOURCEPATH)/gdb-$(VERSION_GDB).tar.bz2 -C $(BUILDPATH)/ + tar -jxf $(SOURCEPATH)/binutils-$(VERSION_BINUTILS).tar.bz2 -C $(BUILDPATH)/ + +binutils: + tar -jxf $(SOURCEPATH)/binutils-$(VERSION_BINUTILS).tar.bz2 -C $(BUILDPATH)/ + mkdir -p $(BUILDPATH)/_binutils + cd $(BUILDPATH)/_binutils && \ + ../binutils-$(VERSION_BINUTILS)/configure \ + --with-pkgversion=$(PKGVERSION) \ + --prefix=$(INSTALLPATH) \ + --with-gnu-ld --with-gnu-as \ + --target=$(TARGET_TRIPLET) \ + --build=x86_64-linux-gnu \ + --host=x86_64-linux-gnu \ + --with-sysroot=$(SYSROOT) \ + --disable-bootstrap \ + --disable-shared \ + --disable-nls \ + --enable-multilib \ + --enable-threads \ + --enable-plugins \ + --enable-gold=yes \ + --enable-ld=default + cd $(BUILDPATH)/_binutils && \ + make -j $(NUMJOBS) && make install + +gcc-stage1: + cd $(BUILDPATH) && rm -Rf gcc-$(VERSION_GCC) && \ + tar -jxf $(SOURCEPATH)/gcc-$(VERSION_GCC).tar.bz2 + cd $(BUILDPATH)/gcc-$(VERSION_GCC) && bash ./contrib/download_prerequisites + rm -Rf $(BUILDPATH)/gcc.build && mkdir -p $(BUILDPATH)/gcc.build + cd $(BUILDPATH)/gcc.build && \ + $(BUILDPATH)/gcc-$(VERSION_GCC)/configure \ + --with-pkgversion=$(PKGVERSION) \ + --prefix=$(INSTALLPATH) \ + --with-gnu-ld --with-gnu-as \ + --target=$(TARGET_TRIPLET) \ + --with-sysroot=$(SYSROOT) \ + --build=x86_64-linux-gnu \ + --host=x86_64-linux-gnu \ + --disable-bootstrap \ + --disable-shared \ + --disable-nls \ + --enable-multilib \ + --disable-threads \ + --with-newlib \ + --without-headers \ + --enable-languages=c \ + --with-system-zlib \ + --disable-libgomp \ + --disable-libitm \ + --disable-libquadmath \ + --disable-libsanitizer \ + --disable-libssp \ + --disable-libvtv \ + --disable-libcilkrts \ + --disable-libatomic + cd $(BUILDPATH)/gcc.build && \ + make -j $(NUMJOBS) all-gcc all-target-libgcc && \ + make install-gcc install-target-libgcc + +cross-glibc: + cd $(BUILDPATH) && rm -Rf libc-$(VERSION_GLIBC) && \ + tar -jxf $(SOURCEPATH)/glibc-$(VERSION_GLIBC).tar.bz2 + cd $(BUILDPATH)/glibc-$(VERSION_GLIBC) && \ + patch -p1 < $(PATCHESPATH)/001-glibc_multiple_defs_of__nss__database.patch + rm -Rf $(BUILDPATH)/glibc && mkdir -p $(BUILDPATH)/glibc + export PATH=$(INSTALLPATH)/bin:$(PATH) && \ + cd $(BUILDPATH)/glibc && \ + CFLAGS="-O2 -DBOOTSTRAP_GCC" \ + $(BUILDPATH)/glibc-$(VERSION_GLIBC)/configure \ + --prefix=$(INSTALLPATH) \ + --with-gnu-ld --with-gnu-as \ + libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes \ + libc_cv_gnu89_inline=yes \ + --build=x86_64-linux-gnu \ + --host=$(TARGET_TRIPLET) \ + --target=$(TARGET_TRIPLET) \ + --without-cvs \ + --disable-nls \ + --disable-sanity-checks \ + --enable-obsolete-rpc \ + --disable-profile \ + --disable-debug \ + --disable-werror \ + --without-selinux \ + --with-tls \ + --enable-kernel=3.7.0 \ + --with-headers=$(SYSROOT)/usr/include \ + --enable-hacker-mode && \ + make -j $(NUMJOBS) && make install + + +gcc-stage2: + cd $(BUILDPATH) && rm -Rf gcc-$(VERSION_GCC) && \ + tar -jxf $(SOURCEPATH)/gcc-$(VERSION_GCC).tar.bz2 + cd $(BUILDPATH)/gcc-$(VERSION_GCC) && bash ./contrib/download_prerequisites + rm -Rf $(BUILDPATH)/gcc.build && mkdir -p $(BUILDPATH)/gcc.build + cd $(BUILDPATH)/gcc.build && \ + $(BUILDPATH)/gcc-$(VERSION_GCC)/configure \ + --with-pkgversion=$(PKGVERSION) \ + --prefix=$(INSTALLPATH) \ + --with-gnu-ld --with-gnu-as \ + --target=$(TARGET_TRIPLET) \ + --with-sysroot=$(SYSROOT) \ + --build=x86_64-linux-gnu \ + --host=x86_64-linux-gnu \ + --disable-bootstrap \ + --enable-static \ + --enable-shared \ + --disable-nls \ + --disable-libquadmath \ + --disable-libmudflap --enable-threads \ + --enable-tls \ + --disable-multilib \ + --enable-languages=c,c++ \ + --disable-libssp \ + --disable-libmudflap --enable-threads \ + --without-cloog --disable-decimal-float --with-abi=lp64 --with-cpu=cortex-a53 \ + --disable-libgomp \ + --with-system-zlib + cd $(BUILDPATH)/gcc.build && \ + make -j $(NUMJOBS) && make install + +pack: + cd $(TOP)/1_INST && tar -jcf $(TOP)/crossarm-$(SUITE).tar.bz2 ./crossarm-$(SUITE) + + |