summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile208
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)
+
+