# 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 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 && \ patch -p0 < $(PATCHESPATH)/001-glibc-find_cxx_header.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 \ libc_cv_forced_unwind=yes \ libc_cv_c_cleanup=yes \ libc_cv_gnu89_inline=yes \ --prefix=$(INSTALLPATH) \ --with-gnu-ld \ --with-gnu-as \ --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)