+# Cross-compile coreutils. Bleah, coreutils cross-compilation is
+# known-broken and upstream don't care, hence the 'touch' command.
+
+COREUTILS_PROGRAMS = arch base32 base64 basename cat chcon chgrp chmod chown chroot cksum comm cp csplit cut date dd df dir dircolors dirname du echo env expand expr factor false fmt fold ginstall groups head hostid hostname id install join kill link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup nproc numfmt od paste pathchk pinky pr printenv printf ptx pwd readlink realpath rm rmdir runcon seq sha1sum sha224sum sha256sum sha384sum sha512sum shred shuf sleep sort split stat stdbuf stty sum sync tac tail tee test timeout touch tr true truncate tsort tty uname unexpand uniq unlink uptime users vdir wc who whoami yes
+
+stage3-chroot/bin/ls: coreutils-$(COREUTILS_VERSION).tar.xz
+ rm -rf coreutils-$(COREUTILS_VERSION)
+ tar Jxf $^
+ cd coreutils-$(COREUTILS_VERSION) && \
+ PATH=$(ROOT)/fixed-gcc:$$PATH \
+ ./configure --host=riscv64-unknown-linux-gnu \
+ --prefix=/usr --libdir=/usr/lib64
+ -cd coreutils-$(COREUTILS_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
+ cd coreutils-$(COREUTILS_VERSION)/man && \
+ for f in $(COREUTILS_PROGRAMS); do touch $$f.1; done
+ cd coreutils-$(COREUTILS_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
+ cd coreutils-$(COREUTILS_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
+
+coreutils-$(COREUTILS_VERSION).tar.xz:
+ rm -f $@ $@-t
+ wget -O $@-t ftp://ftp.gnu.org/gnu/coreutils/coreutils-$(COREUTILS_VERSION).tar.xz
+ mv $@-t $@
+
+# Cross-compile binutils.
+stage3-chroot/usr/bin/as: binutils-$(BINUTILS_X_VERSION).tar.gz
+ rm -rf riscv-binutils-gdb-riscv-binutils-$(BINUTILS_X_VERSION)
+ zcat $^ | tar xf -
+ mkdir riscv-binutils-gdb-riscv-binutils-$(BINUTILS_X_VERSION)/build
+ cd riscv-binutils-gdb-riscv-binutils-$(BINUTILS_X_VERSION)/build && \
+ PATH=$(ROOT)/fixed-gcc:$$PATH \
+ ../configure \
+ --host=riscv64-unknown-linux-gnu \
+ --prefix=/usr --libdir=/usr/lib64
+ cd riscv-binutils-gdb-riscv-binutils-$(BINUTILS_X_VERSION)/build && PATH=$(ROOT)/fixed-gcc:$$PATH make
+ cd riscv-binutils-gdb-riscv-binutils-$(BINUTILS_X_VERSION)/build && make DESTDIR=$(ROOT)/stage3-chroot install
+
+binutils-$(BINUTILS_X_VERSION).tar.gz:
+ rm -f $@ $@-t
+ wget -O $@-t https://github.com/riscv/riscv-binutils-gdb/archive/riscv-binutils-$(BINUTILS_X_VERSION).tar.gz
+ mv $@-t $@
+
+# Cross-compile GMP, MPFR and MPC (deps of GCC).
+stage3-chroot/usr/lib64/libgmp.so.10: gmp-$(GMP_VERSION).tar.lz
+ rm -rf gmp-$(GMP_VERSION)
+ tar --lzip -xf gmp-$(GMP_VERSION).tar.lz
+ cd gmp-$(GMP_VERSION) && \
+ PATH=$(ROOT)/fixed-gcc:$$PATH \
+ ./configure --host=riscv64-unknown-linux-gnu \
+ --prefix=/usr --libdir=/usr/lib64
+ cd gmp-$(GMP_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
+ cd gmp-$(GMP_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
+ cd stage3-chroot/usr/lib && ln -s ../lib64/libgmp.so
+
+gmp-$(GMP_VERSION).tar.lz:
+ rm -f $@ $@-t
+ wget -O $@-t https://gmplib.org/download/gmp/gmp-$(GMP_VERSION).tar.lz
+ mv $@-t $@
+
+stage3-chroot/usr/lib64/libmpfr.so.4: mpfr-$(MPFR_VERSION).tar.gz
+ rm -rf mpfr-$(MPFR_VERSION)
+ tar -zxf mpfr-$(MPFR_VERSION).tar.gz
+ cd mpfr-$(MPFR_VERSION) && \
+ PATH=$(ROOT)/fixed-gcc:$$PATH \
+ ./configure --host=riscv64-unknown-linux-gnu \
+ --prefix=/usr --libdir=/usr/lib64 \
+ --with-gmp=$(ROOT)/stage3-chroot/usr
+ cd mpfr-$(MPFR_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
+ cd mpfr-$(MPFR_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
+ cd stage3-chroot/usr/lib && ln -s ../lib64/libmpfr.so
+ rm -f stage3-chroot/usr/lib64/*.la
+
+mpfr-$(MPFR_VERSION).tar.gz:
+ rm -f $@ $@-t
+ wget -O $@-t http://www.mpfr.org/mpfr-current/mpfr-$(MPFR_VERSION).tar.gz
+ mv $@-t $@
+
+stage3-chroot/usr/lib64/libmpc.so.3: mpc-$(MPC_VERSION).tar.gz
+ rm -rf mpc-$(MPC_VERSION)
+ tar -zxf mpc-$(MPC_VERSION).tar.gz
+ cd mpc-$(MPC_VERSION) && \
+ PATH=$(ROOT)/fixed-gcc:$$PATH \
+ ./configure --host=riscv64-unknown-linux-gnu \
+ --prefix=/usr --libdir=/usr/lib64 \
+ --with-gmp=$(ROOT)/stage3-chroot/usr \
+ --with-mpfr=$(ROOT)/stage3-chroot/usr
+ cd mpc-$(MPC_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
+ cd mpc-$(MPC_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
+ cd stage3-chroot/usr/lib && ln -s ../lib64/libmpc.so
+ rm -f stage3-chroot/usr/lib64/*.la
+
+mpc-$(MPC_VERSION).tar.gz:
+ rm -f $@ $@-t
+ wget -O $@-t ftp://ftp.gnu.org/gnu/mpc/mpc-$(MPC_VERSION).tar.gz
+ mv $@-t $@
+
+# Cross-compile GCC.
+stage3-chroot/usr/bin/gcc: gcc-$(GCC_X_VERSION).tar.gz
+ rm -rf riscv-gcc-riscv-gcc-$(GCC_X_VERSION)
+ zcat $^ | tar xf -
+ mkdir riscv-gcc-riscv-gcc-$(GCC_X_VERSION)/build
+ cd riscv-gcc-riscv-gcc-$(GCC_X_VERSION)/build && \
+ PATH=$(ROOT)/fixed-gcc:$$PATH \
+ ../configure \
+ --host=riscv64-unknown-linux-gnu \
+ --prefix=/usr --libdir=/usr/lib64 \
+ --enable-shared \
+ --enable-tls \
+ --enable-languages=c,c++ \
+ --disable-libmudflap \
+ --disable-libssp \
+ --disable-libquadmath \
+ --disable-nls \
+ --disable-multilib
+# XXX use make all & make install here. However building libgcc
+# fails, see 'broken-gcc.log'.
+ cd riscv-gcc-riscv-gcc-$(GCC_X_VERSION)/build && PATH=$(ROOT)/fixed-gcc:$$PATH make all-gcc
+ cd riscv-gcc-riscv-gcc-$(GCC_X_VERSION)/build && make install-gcc DESTDIR=$(ROOT)/stage3-chroot
+
+gcc-$(GCC_X_VERSION).tar.gz:
+ rm -f $@ $@-t
+ wget -O $@-t https://github.com/riscv/riscv-gcc/archive/riscv-gcc-$(GCC_X_VERSION).tar.gz
+ mv $@-t $@
+
+# Cross-compile util-linux.
+# XXX Be nice to fix ncurses/tinfo support which in theory should work.
+stage3-chroot/usr/bin/mount: util-linux-$(UTIL_LINUX_VERSION).tar.xz
+ rm -rf util-linux-$(UTIL_LINUX_VERSION)
+ tar -Jxf $^
+ cd util-linux-$(UTIL_LINUX_VERSION) && \
+ PATH=$(ROOT)/fixed-gcc:$$PATH \
+ ./configure \
+ --host=riscv64-unknown-linux-gnu \
+ --prefix=/usr --libdir=/usr/lib64 \
+ --without-python \
+ --without-tinfo \
+ --without-ncurses \
+ --without-systemd \
+ --disable-makeinstall-chown
+ cd util-linux-$(UTIL_LINUX_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
+ cd util-linux-$(UTIL_LINUX_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make install DESTDIR=$(ROOT)/stage3-chroot
+
+util-linux-$(UTIL_LINUX_VERSION).tar.xz:
+ rm -f $@ $@-t
+ wget -O $@-t ftp://ftp.kernel.org/pub/linux/utils/util-linux/v$(UTIL_LINUX_VERSION)/util-linux-$(UTIL_LINUX_VERSION).tar.xz
+ mv $@-t $@
+
+# Cross-compile GNU tar.
+stage3-chroot/usr/bin/tar: tar-$(TAR_VERSION).tar.xz
+ rm -rf tar-$(TAR_VERSION)
+ tar -Jxf $^
+ cd tar-$(TAR_VERSION) && \
+ PATH=$(ROOT)/fixed-gcc:$$PATH \
+ ./configure \
+ --host=riscv64-unknown-linux-gnu \
+ --prefix=/usr --libdir=/usr/lib64
+ cd tar-$(TAR_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
+ cd tar-$(TAR_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
+
+tar-$(TAR_VERSION).tar.xz:
+ rm -f $@ $@-t
+ wget -O $@-t https://ftp.gnu.org/gnu/tar/tar-$(TAR_VERSION).tar.xz
+ mv $@-t $@
+
+# Cross-compile GNU gzip.
+stage3-chroot/usr/bin/gzip: gzip-$(GZIP_VERSION).tar.gz
+ rm -rf gzip-$(GZIP_VERSION)
+ tar -zxf $^
+ cd gzip-$(GZIP_VERSION) && \
+ PATH=$(ROOT)/fixed-gcc:$$PATH \
+ ./configure \
+ --host=riscv64-unknown-linux-gnu \
+ --prefix=/usr --libdir=/usr/lib64
+ cd gzip-$(GZIP_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
+ cd gzip-$(GZIP_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
+
+gzip-$(GZIP_VERSION).tar.gz:
+ rm -f $@ $@-t
+ wget -O $@-t https://ftp.gnu.org/gnu/gzip/gzip-$(GZIP_VERSION).tar.gz
+ mv $@-t $@
+
+# Cross-compile zlib.
+stage3-chroot/usr/lib64/libz.so: zlib-$(ZLIB_VERSION).tar.gz
+ rm -rf zlib-$(ZLIB_VERSION)
+ tar -zxf $^
+ cd zlib-$(ZLIB_VERSION) && \
+ PATH=$(ROOT)/fixed-gcc:$$PATH \
+ CC=riscv64-unknown-linux-gnu-gcc \
+ CFLAGS="-I$(ROOT)/stage3-chroot/usr/include -L$(ROOT)/stage3-chroot/usr/lib" \
+ ./configure \
+ --prefix=/usr --libdir=/usr/lib64
+ cd zlib-$(ZLIB_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make shared
+ cd zlib-$(ZLIB_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
+
+zlib-$(ZLIB_VERSION).tar.gz:
+ rm -f $@ $@-t
+ wget -O $@-t http://zlib.net/zlib-$(ZLIB_VERSION).tar.gz
+ mv $@-t $@
+
+# Cross-compile file/libmagic.
+stage3-chroot/usr/bin/file: file-$(FILE_VERSION).tar.gz
+ rm -rf file-$(FILE_VERSION)
+ tar -zxf $^
+ cd file-$(FILE_VERSION) && \
+ PATH=$(ROOT)/fixed-gcc:$$PATH \
+ LDFLAGS=-L$(ROOT)/stage3-chroot/usr/lib64 \
+ ./configure \
+ --host=riscv64-unknown-linux-gnu \
+ --prefix=/usr --libdir=/usr/lib64 \
+ --disable-static --enable-shared
+ cd file-$(FILE_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make V=1
+ cd file-$(FILE_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
+ rm -f stage3-chroot/usr/lib64/*.la
+
+file-$(FILE_VERSION).tar.gz:
+ rm -f $@ $@-t
+ wget -O $@-t ftp://ftp.astron.com/pub/file/file-$(FILE_VERSION).tar.gz
+ mv $@-t $@
+
+# Cross-compile popt.
+stage3-chroot/usr/lib64/libpopt.so: popt-$(POPT_VERSION).tar.gz
+ rm -rf popt-$(POPT_VERSION)
+ tar -zxf $^
+ cd popt-$(POPT_VERSION) && \
+ PATH=$(ROOT)/fixed-gcc:$$PATH \
+ LDFLAGS=-L$(ROOT)/stage3-chroot/usr/lib64 \
+ ./configure \
+ --host=riscv64-unknown-linux-gnu \
+ --prefix=/usr --libdir=/usr/lib64 \
+ --disable-static --enable-shared
+ cd popt-$(POPT_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make V=1
+ cd popt-$(POPT_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
+ rm -f stage3-chroot/usr/lib64/*.la
+
+popt-$(POPT_VERSION).tar.gz:
+ rm -f $@ $@-t
+ wget -O $@-t http://rpm5.org/files/popt/popt-$(POPT_VERSION).tar.gz
+ mv $@-t $@
+
+# Cross-compile beecrypt.
+stage3-chroot/usr/lib64/libbeecrypt.so: beecrypt-$(BEECRYPT_VERSION).tar.gz
+ rm -rf beecrypt-$(BEECRYPT_VERSION)
+ tar -zxf $^
+ cd beecrypt-$(BEECRYPT_VERSION) && patch -p0 < ../beecrypt-disable-cplusplus.patch
+ cd beecrypt-$(BEECRYPT_VERSION) && autoreconf -i
+ cd beecrypt-$(BEECRYPT_VERSION) && \
+ PATH=$(ROOT)/fixed-gcc:$$PATH \
+ LDFLAGS=-L$(ROOT)/stage3-chroot/usr/lib64 \
+ ./configure \
+ --host=riscv64-unknown-linux-gnu \
+ --prefix=/usr --libdir=/usr/lib64 \
+ --without-cplusplus \
+ --without-java \
+ --disable-openmp \
+ --disable-static \
+ --enable-shared
+ cd beecrypt-$(BEECRYPT_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make V=1
+ cd beecrypt-$(BEECRYPT_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make install DESTDIR=$(ROOT)/stage3-chroot V=1
+ chrpath -d stage3-chroot/usr/lib64/libbeecrypt.so.*
+ rm -f stage3-chroot/usr/lib64/*.la
+
+beecrypt-$(BEECRYPT_VERSION).tar.gz:
+ rm -f $@ $@-t
+ wget -O $@-t http://downloads.sourceforge.net/sourceforge/beecrypt/beecrypt-$(BEECRYPT_VERSION).tar.gz
+ mv $@-t $@
+
+# Cross-compile RPM / rpmbuild.
+# We build this from a git commit, with a few hacks to the configure
+# script.
+stage3-chroot/usr/bin/rpm: rpm-$(RPM_SHORT_COMMIT).tar.gz db-$(BDB_VERSION).tar.gz
+ rm -rf rpm-$(RPM_SHORT_COMMIT)
+ tar -zxf rpm-$(RPM_SHORT_COMMIT).tar.gz
+ tar -zxf db-$(BDB_VERSION).tar.gz -C rpm-$(RPM_SHORT_COMMIT)
+ cd rpm-$(RPM_SHORT_COMMIT) && ln -s db-$(BDB_VERSION) db
+ cd rpm-$(RPM_SHORT_COMMIT) && patch -p1 < ../rpm-hacks.patch
+ cd rpm-$(RPM_SHORT_COMMIT) && autoreconf -i
+ cd rpm-$(RPM_SHORT_COMMIT) && \
+ PATH=$(ROOT)/fixed-gcc:$$PATH \
+ LDFLAGS=-L$(ROOT)/stage3-chroot/usr/lib64 \
+ ./configure \
+ --host=riscv64-unknown-linux-gnu \
+ --prefix=/usr --libdir=/usr/lib64 \
+ --disable-rpath \
+ --without-libarchive \
+ --without-lua \
+ --with-beecrypt \
+ --without-archive \
+ --without-external-db \
+ --enable-ndb \
+ --disable-plugins
+ cd rpm-$(RPM_SHORT_COMMIT) && \
+ sed -i 's|^sys_lib_dlsearch_path_spec="/lib64|sys_lib_dlsearch_path_spec="$(ROOT)/stage3-chroot/usr/lib64 /lib64|g' libtool
+ cd rpm-$(RPM_SHORT_COMMIT) && PATH=$(ROOT)/fixed-gcc:$$PATH make V=1
+ cd rpm-$(RPM_SHORT_COMMIT) && PATH=$(ROOT)/fixed-gcc:$$PATH make install DESTDIR=$(ROOT)/stage3-chroot
+ rm -f stage3-chroot/usr/lib64/*.la
+
+rpm-$(RPM_SHORT_COMMIT).tar.gz:
+ rm -f $@ $@-t
+ wget -O $@-t 'http://rpm.org/gitweb?p=rpm.git;a=snapshot;h=$(RPM_COMMIT);sf=tgz'
+ mv $@-t $@
+
+db-$(BDB_VERSION).tar.gz:
+ rm -f $@ $@-t
+ wget -O $@-t http://download.oracle.com/berkeley-db/db-$(BDB_VERSION).tar.gz
+ mv $@-t $@
+
+# Create an /init script.
+stage3-chroot/init: init.sh
+ install -m 0755 $^ $@
+