1 # Refer to the README file to understand how Fedora on RISC-V is
4 # Absolute path to the current directory.
7 # Note these are chosen very specifically to ensure the different
8 # versions work together. Don't blindly update to the latest
10 # https://github.com/riscv/riscv-pk/issues/18#issuecomment-206115996
11 RISCV_QEMU_COMMIT = 94f5eb73091fb4fe272db3e943f173ecc0f78ffd
12 RISCV_QEMU_SHORTCOMMIT = 94f5eb73
13 RISCV_FESVR_COMMIT = 0f34d7ad311f78455a674224225f5b3056efba1d
14 RISCV_FESVR_SHORTCOMMIT = 0f34d7ad
15 RISCV_ISA_SIM_COMMIT = 3bfc00ef2a1b1f0b0472a39a866261b00f67027e
16 RISCV_ISA_SIM_SHORTCOMMIT = 3bfc00ef
17 RISCV_GNU_TOOLCHAIN_COMMIT = 728afcddcb0526a0f6560c4032da82805f054d58
18 RISCV_GNU_TOOLCHAIN_SHORTCOMMIT = 728afcdd
19 RISCV_PK_COMMIT = 85ae17aa149b9ea114bdd70cc30ea7e73813fb48
20 RISCV_PK_SHORTCOMMIT = 85ae17aa
22 # For the correct versions, see
23 # riscv-gnu-toolchain/Makefile.in *_version variables
24 BINUTILS_VERSION = 2.25.1
27 NEWLIB_VERSION = 2.2.0
29 # See linux-4.1.y-riscv branch of
30 # https://github.com/riscv/riscv-linux
31 KERNEL_VERSION = 4.1.26
33 # A local copy of Linux git repo so you don't have to keep downloading
34 # git commits (optional).
35 LOCAL_LINUX_GIT_COPY = $(HOME)/d/linux
37 # The root packages (plus their dependencies) that we want to in the
38 # stage 3 chroot. This must include all the cross-compiled packages
39 # below, and may also include any noarch package we like.
40 STAGE3_PACKAGES = iso-codes \
41 ncurses-devel readline-devel bash coreutils gmp-devel \
42 mpfr-devel mpc-devel binutils gcc gcc-c++ util-linux tar \
43 gzip zlib-devel file-devel popt-devel beecrypt-devel \
44 rpm rpm-build rpm-devel libdb-utils libdb-devel nano \
45 grep less strace bzip2-devel make diffutils findutils \
46 sed patch hostname gettext-devel lua-devel xz-devel gawk \
49 # Versions of cross-compiled packages.
50 NCURSES_VERSION = 6.0-20160730
51 READLINE_VERSION = 6.3
53 COREUTILS_VERSION = 8.25
57 BINUTILS_X_VERSION = 2.26
59 UTIL_LINUX_VERSION = 2.28
63 # Needs to match the version of 'file' installed (on host), otherwise:
64 # "Cannot use the installed version of file (xx) to cross-compile file yy"
65 # Also note that 5.25 is definitely broken (segfaults in libmagic:magic_close).
68 BEECRYPT_VERSION = 4.2.1
69 RPM_COMMIT = 95712183458748ea6cafebac1bdd5daa097d9bee
70 RPM_SHORT_COMMIT = 9571218
75 STRACE_COMMIT = f320e1897832fd07a62e18ed288e75d8e79f4c5b
76 STRACE_SHORT_COMMIT = f320e189
79 DIFFUTILS_VERSION = 3.4
80 FINDUTILS_VERSION = 4.6.0
83 HOSTNAME_VERSION = 3.15
84 GETTEXT_VERSION = 0.19
90 all: stage1 stage2 stage3 stage4
94 stage1: stage1-riscv-qemu/riscv-qemu-$(RISCV_QEMU_SHORTCOMMIT).tar.gz \
95 stage1-riscv-qemu/riscv-qemu.spec \
96 stamp-riscv-qemu-installed \
97 stage1-riscv-fesvr/riscv-fesvr-$(RISCV_FESVR_SHORTCOMMIT).tar.gz \
98 stage1-riscv-fesvr/riscv-fesvr.spec \
99 stamp-riscv-fesvr-installed \
100 stage1-riscv-isa-sim/riscv-isa-sim-$(RISCV_ISA_SIM_SHORTCOMMIT).tar.gz \
101 stage1-riscv-isa-sim/riscv-isa-sim.spec \
102 stamp-riscv-isa-sim-installed
104 stage1-riscv-qemu/riscv-qemu-$(RISCV_QEMU_SHORTCOMMIT).tar.gz:
106 wget -O $@-t 'https://github.com/riscv/riscv-qemu/archive/$(RISCV_QEMU_COMMIT)/riscv-qemu-$(RISCV_QEMU_SHORTCOMMIT).tar.gz'
109 stage1-riscv-qemu/riscv-qemu.spec: stage1-riscv-qemu/riscv-qemu.spec.in
110 sed -e 's/@COMMIT@/$(RISCV_QEMU_COMMIT)/g' \
111 -e 's/@SHORTCOMMIT@/$(RISCV_QEMU_SHORTCOMMIT)/g' \
115 stamp-riscv-qemu-installed:
117 @rpm -q riscv-qemu >/dev/null || { \
118 echo "ERROR: You must install riscv-qemu:"; \
120 echo " dnf copr enable rjones/riscv"; \
121 echo " dnf install riscv-qemu"; \
123 echo "OR: you can build it yourself from the stage1-riscv-qemu directory."; \
127 @qemu-system-riscv --version || { \
128 echo "ERROR: qemu-system-riscv is not working."; \
129 echo "Make sure you installed the riscv-qemu package."; \
134 stage1-riscv-fesvr/riscv-fesvr-$(RISCV_FESVR_SHORTCOMMIT).tar.gz:
136 wget -O $@-t 'https://github.com/riscv/riscv-fesvr/archive/$(RISCV_FESVR_COMMIT)/riscv-fesvr-$(RISCV_FESVR_SHORTCOMMIT).tar.gz'
139 stage1-riscv-fesvr/riscv-fesvr.spec: stage1-riscv-fesvr/riscv-fesvr.spec.in
140 sed -e 's/@COMMIT@/$(RISCV_FESVR_COMMIT)/g' \
141 -e 's/@SHORTCOMMIT@/$(RISCV_FESVR_SHORTCOMMIT)/g' \
145 stamp-riscv-fesvr-installed:
147 @rpm -q riscv-fesvr >/dev/null || { \
148 echo "ERROR: You must install riscv-fesvr:"; \
150 echo " dnf copr enable rjones/riscv"; \
151 echo " dnf install riscv-fesvr"; \
153 echo "OR: you can build it yourself from the stage1-riscv-fesvr directory."; \
159 stage1-riscv-isa-sim/riscv-isa-sim-$(RISCV_ISA_SIM_SHORTCOMMIT).tar.gz:
161 wget -O $@-t 'https://github.com/riscv/riscv-isa-sim/archive/$(RISCV_ISA_SIM_COMMIT)/riscv-isa-sim-$(RISCV_ISA_SIM_SHORTCOMMIT).tar.gz'
164 stage1-riscv-isa-sim/riscv-isa-sim.spec: stage1-riscv-isa-sim/riscv-isa-sim.spec.in
165 sed -e 's/@COMMIT@/$(RISCV_ISA_SIM_COMMIT)/g' \
166 -e 's/@SHORTCOMMIT@/$(RISCV_ISA_SIM_SHORTCOMMIT)/g' \
170 stamp-riscv-isa-sim-installed:
172 @rpm -q riscv-isa-sim >/dev/null || { \
173 echo "ERROR: You must install riscv-isa-sim:"; \
175 echo " dnf copr enable rjones/riscv"; \
176 echo " dnf install riscv-isa-sim"; \
178 echo "OR: you can build it yourself from the stage1-riscv-isa-sim directory."; \
186 stage2: stage2-riscv-gnu-toolchain/riscv-gnu-toolchain-$(RISCV_GNU_TOOLCHAIN_SHORTCOMMIT).tar.gz \
187 stage2-riscv-gnu-toolchain/binutils-$(BINUTILS_VERSION).tar.gz \
188 stage2-riscv-gnu-toolchain/gcc-$(GCC_VERSION).tar.gz \
189 stage2-riscv-gnu-toolchain/glibc-$(GLIBC_VERSION).tar.gz \
190 stage2-riscv-gnu-toolchain/newlib-$(NEWLIB_VERSION).tar.gz \
191 stage2-riscv-gnu-toolchain/riscv-gnu-toolchain.spec \
192 stamp-riscv-gnu-toolchain-installed \
193 stage2-riscv-pk/riscv-pk-$(RISCV_PK_SHORTCOMMIT).tar.gz \
194 stage2-riscv-pk/riscv-pk.spec \
195 stamp-riscv-pk-installed
197 stage2-riscv-gnu-toolchain/riscv-gnu-toolchain-$(RISCV_GNU_TOOLCHAIN_SHORTCOMMIT).tar.gz:
199 wget -O $@-t https://github.com/lowRISC/riscv-gnu-toolchain/archive/$(RISCV_GNU_TOOLCHAIN_COMMIT)/riscv-gnu-toolchain-$(RISCV_GNU_TOOLCHAIN_SHORTCOMMIT).tar.gz
202 stage2-riscv-gnu-toolchain/binutils-$(BINUTILS_VERSION).tar.gz:
204 wget -O $@-t http://mirrors.kernel.org/gnu/binutils/binutils-$(BINUTILS_VERSION).tar.gz
207 # GCC 5 no longer compiles with GCC 6 unless we patch it.
208 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69959
209 stage2-riscv-gnu-toolchain/gcc-$(GCC_VERSION).tar.gz:
211 wget -O $@-t http://mirrors.kernel.org/gnu/gcc/gcc-$(GCC_VERSION)/gcc-$(GCC_VERSION).tar.gz
213 cd gcc-$(GCC_VERSION) && patch -p0 < ../stage2-riscv-gnu-toolchain/gcc-5-fix-compilation-with-gcc-6.patch
214 tar zcf $@-t gcc-$(GCC_VERSION)
215 rm -r gcc-$(GCC_VERSION)
218 stage2-riscv-gnu-toolchain/glibc-$(GLIBC_VERSION).tar.gz:
220 wget -O $@-t http://mirrors.kernel.org/gnu/glibc/glibc-$(GLIBC_VERSION).tar.gz
223 stage2-riscv-gnu-toolchain/newlib-$(NEWLIB_VERSION).tar.gz:
225 wget -O $@-t ftp://sourceware.org/pub/newlib/newlib-$(NEWLIB_VERSION).tar.gz
228 stage2-riscv-gnu-toolchain/riscv-gnu-toolchain.spec: stage2-riscv-gnu-toolchain/riscv-gnu-toolchain.spec.in
229 sed -e 's/@COMMIT@/$(RISCV_GNU_TOOLCHAIN_COMMIT)/g' \
230 -e 's/@SHORTCOMMIT@/$(RISCV_GNU_TOOLCHAIN_SHORTCOMMIT)/g' \
231 -e 's/@BINUTILS_VERSION@/$(BINUTILS_VERSION)/g' \
232 -e 's/@GCC_VERSION@/$(GCC_VERSION)/g' \
233 -e 's/@GLIBC_VERSION@/$(GLIBC_VERSION)/g' \
234 -e 's/@NEWLIB_VERSION@/$(NEWLIB_VERSION)/g' \
238 stamp-riscv-gnu-toolchain-installed:
240 @rpm -q riscv-gnu-toolchain >/dev/null || { \
241 echo "ERROR: You must install riscv-gnu-toolchain:"; \
243 echo " dnf copr enable rjones/riscv"; \
244 echo " dnf install riscv-gnu-toolchain"; \
246 echo "OR: you can build it yourself from the stage2-riscv-gnu-toolchain directory."; \
250 @riscv64-unknown-elf-gcc --version || { \
251 echo "ERROR: riscv64-unknown-elf-gcc (cross compiler) is not working."; \
252 echo "Make sure you installed the riscv-gnu-toolchain package."; \
257 stage2-riscv-pk/riscv-pk-$(RISCV_PK_SHORTCOMMIT).tar.gz:
259 wget -O $@-t https://github.com/lowRISC/riscv-pk/archive/$(RISCV_PK_COMMIT)/riscv-pk-$(RISCV_PK_SHORTCOMMIT).tar.gz
262 stage2-riscv-pk/riscv-pk.spec: stage2-riscv-pk/riscv-pk.spec.in
263 sed -e 's/@COMMIT@/$(RISCV_PK_COMMIT)/g' \
264 -e 's/@SHORTCOMMIT@/$(RISCV_PK_SHORTCOMMIT)/g' \
268 stamp-riscv-pk-installed:
270 @rpm -q riscv-pk >/dev/null || { \
271 echo "ERROR: You must install riscv-pk:"; \
273 echo " dnf copr enable rjones/riscv"; \
274 echo " dnf install riscv-pk"; \
276 echo "OR: you can build it yourself from the stage2-riscv-pk directory."; \
284 stage3: stage3-kernel/linux-$(KERNEL_VERSION)/vmlinux \
285 stage3-chroot-original/etc/fedora-release \
286 stage3-chroot/etc/fedora-release \
287 stage3-chroot/lib64/libc.so.6 \
288 stage3-chroot/usr/bin/tic \
289 stage3-chroot/usr/lib64/libhistory.so.6 \
290 stage3-chroot/bin/bash \
291 stage3-chroot/bin/ls \
292 stage3-chroot/usr/lib64/libgmp.so.10 \
293 stage3-chroot/usr/lib64/libmpfr.so.4 \
294 stage3-chroot/usr/lib64/libmpc.so.3 \
295 stage3-chroot/usr/bin/as \
296 stage3-chroot/usr/bin/gcc \
297 stage3-chroot/usr/bin/mount \
298 stage3-chroot/usr/bin/tar \
299 stage3-chroot/usr/bin/gzip \
300 stage3-chroot/usr/lib64/libz.so \
301 stage3-chroot/usr/bin/file \
302 stage3-chroot/usr/lib64/libpopt.so \
303 stage3-chroot/usr/lib64/libbeecrypt.so \
304 stage3-chroot/usr/bin/nano \
305 stage3-chroot/usr/bin/grep \
306 stage3-chroot/usr/bin/less \
307 stage3-chroot/usr/bin/strace \
308 stage3-chroot/usr/bin/bzip2 \
309 stage3-chroot/usr/bin/make \
310 stage3-chroot/usr/bin/diff \
311 stage3-chroot/usr/bin/find \
312 stage3-chroot/usr/bin/sed \
313 stage3-chroot/usr/bin/patch \
314 stage3-chroot/usr/bin/hostname \
315 stage3-chroot/usr/bin/gettext \
316 stage3-chroot/usr/bin/lua \
317 stage3-chroot/usr/bin/rpm \
318 stage3-chroot/usr/bin/xz \
319 stage3-chroot/usr/bin/gawk \
320 stage3-chroot/usr/bin/vim \
324 stage3-kernel/linux-$(KERNEL_VERSION)/vmlinux:
325 rm -rf stage3-kernel/linux-$(KERNEL_VERSION)
326 cp -a $(LOCAL_LINUX_GIT_COPY) stage3-kernel/linux-$(KERNEL_VERSION) || { \
327 mkdir stage3-kernel/linux-$(KERNEL_VERSION) && \
328 cd stage3-kernel/linux-$(KERNEL_VERSION) && \
331 cd stage3-kernel/linux-$(KERNEL_VERSION) && \
332 git remote add riscv https://github.com/riscv/riscv-linux && \
334 git checkout -f linux-4.1.y-riscv && \
336 make ARCH=riscv defconfig
337 echo CONFIG_CMDLINE=\"root=/dev/htifblk0 init=/init\" >> stage3-kernel/linux-$(KERNEL_VERSION)/.config
338 echo CONFIG_CROSS_COMPILE=riscv64-unknown-elf- >> stage3-kernel/linux-$(KERNEL_VERSION)/.config
339 cd stage3-kernel/linux-$(KERNEL_VERSION) && \
340 make ARCH=riscv olddefconfig
341 cd stage3-kernel/linux-$(KERNEL_VERSION) && \
342 make ARCH=riscv vmlinux
345 # Build an original (x86-64) chroot using supermin. We then aim to
346 # rebuild (using cross-compiled versions) every ELF binary in this
348 stage3-chroot-original/etc/fedora-release:
349 rm -rf stage3-chroot-original tmp-supermin.d
350 supermin --prepare $(STAGE3_PACKAGES) -o tmp-supermin.d
351 supermin --build -f chroot tmp-supermin.d -o stage3-chroot-original
353 @echo -n "Total files in chroot: "
354 @find stage3-chroot-original -type f | wc -l
355 @echo -n "ELF files to be rebuilt: "
356 @find stage3-chroot-original -type f | xargs file -N | grep -E '\bELF.*LSB\b' | wc -l
358 # Copy the original chroot to the final chroot, remove all the ELF
360 stage3-chroot/etc/fedora-release: stage3-chroot-original/etc/fedora-release
362 cp -a stage3-chroot-original stage3-chroot
363 find stage3-chroot -type d -print0 | xargs -0 chmod u+w
364 find stage3-chroot -type f -print0 | xargs -0 chmod u+w
365 find stage3-chroot -type f -print0 | xargs -0 file -N | grep -E '\bELF.*LSB\b' | awk -F: '{print $$1}' | xargs rm -f
366 rm -f stage3-chroot/lib64/libc.so.6
368 # Copy in compiled glibc from the riscv-gnu-toolchain sysroot. Only
369 # copy files and symlinks, leave the target directory structure
371 stage3-chroot/lib64/libc.so.6:
372 mkdir -p stage3-chroot/usr/lib/audit
373 mkdir -p stage3-chroot/usr/lib/gconv
374 for f in `cd /usr/sysroot && find -type f -o -type l`; do \
375 cp -d /usr/sysroot/$$f stage3-chroot/$$f; \
377 cd stage3-chroot/lib64 && for f in ../lib/*; do ln -sf $$f; done
379 # Cross-compile ncurses.
380 stage3-chroot/usr/bin/tic: ncurses-$(NCURSES_VERSION).tgz
382 cd ncurses-$(NCURSES_VERSION) && \
383 PATH=$(ROOT)/fixed-gcc:$$PATH \
384 ./configure --host=riscv64-unknown-linux-gnu \
385 --prefix=/usr --libdir=/usr/lib64 \
387 --with-termlib=tinfo \
389 cd ncurses-$(NCURSES_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
390 cd ncurses-$(NCURSES_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make install DESTDIR=$(ROOT)/stage3-chroot
392 ncurses-$(NCURSES_VERSION).tgz:
394 wget -O $@-t ftp://invisible-island.net/ncurses/current/ncurses-$(NCURSES_VERSION).tgz
397 # Cross-compile readline.
398 stage3-chroot/usr/lib64/libhistory.so.6: readline-$(READLINE_VERSION).tar.gz
400 cd readline-$(READLINE_VERSION) && \
401 PATH=$(ROOT)/fixed-gcc:$$PATH \
402 bash_cv_wcwidth_broken=no \
403 ./configure --host=riscv64-unknown-linux-gnu \
404 --prefix=/usr --libdir=/usr/lib64
405 cd readline-$(READLINE_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
406 cd readline-$(READLINE_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
407 rm -f stage3-chroot/usr/lib64/*.la
409 readline-$(READLINE_VERSION).tar.gz:
411 wget -O $@-t ftp://ftp.gnu.org/gnu/readline/readline-$(READLINE_VERSION).tar.gz
414 # Cross-compile bash.
415 stage3-chroot/bin/bash: bash-$(BASH_VERSION).tar.gz
417 cd bash-$(BASH_VERSION) && \
418 PATH=$(ROOT)/fixed-gcc:$$PATH \
419 ./configure --host=riscv64-unknown-linux-gnu \
420 --prefix=/usr --libdir=/usr/lib64
421 cd bash-$(BASH_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
422 cd bash-$(BASH_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
424 bash-$(BASH_VERSION).tar.gz:
426 wget -O $@-t ftp://ftp.gnu.org/gnu/bash/bash-$(BASH_VERSION).tar.gz
429 # Cross-compile coreutils. Bleah, coreutils cross-compilation is
430 # known-broken and upstream don't care, hence the 'touch' command.
432 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
434 stage3-chroot/bin/ls: coreutils-$(COREUTILS_VERSION).tar.xz
435 rm -rf coreutils-$(COREUTILS_VERSION)
437 cd coreutils-$(COREUTILS_VERSION) && \
438 PATH=$(ROOT)/fixed-gcc:$$PATH \
439 ./configure --host=riscv64-unknown-linux-gnu \
440 --prefix=/usr --libdir=/usr/lib64
441 -cd coreutils-$(COREUTILS_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
442 cd coreutils-$(COREUTILS_VERSION)/man && \
443 for f in $(COREUTILS_PROGRAMS); do touch $$f.1; done
444 cd coreutils-$(COREUTILS_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
445 cd coreutils-$(COREUTILS_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
447 coreutils-$(COREUTILS_VERSION).tar.xz:
449 wget -O $@-t ftp://ftp.gnu.org/gnu/coreutils/coreutils-$(COREUTILS_VERSION).tar.xz
452 # Cross-compile binutils.
453 stage3-chroot/usr/bin/as: binutils-$(BINUTILS_X_VERSION).tar.gz
454 rm -rf riscv-binutils-gdb-riscv-binutils-$(BINUTILS_X_VERSION)
456 mkdir riscv-binutils-gdb-riscv-binutils-$(BINUTILS_X_VERSION)/build
457 cd riscv-binutils-gdb-riscv-binutils-$(BINUTILS_X_VERSION)/build && \
458 PATH=$(ROOT)/fixed-gcc:$$PATH \
460 --host=riscv64-unknown-linux-gnu \
461 --prefix=/usr --libdir=/usr/lib64
462 cd riscv-binutils-gdb-riscv-binutils-$(BINUTILS_X_VERSION)/build && PATH=$(ROOT)/fixed-gcc:$$PATH make
463 cd riscv-binutils-gdb-riscv-binutils-$(BINUTILS_X_VERSION)/build && make DESTDIR=$(ROOT)/stage3-chroot install
465 binutils-$(BINUTILS_X_VERSION).tar.gz:
467 wget -O $@-t https://github.com/riscv/riscv-binutils-gdb/archive/riscv-binutils-$(BINUTILS_X_VERSION).tar.gz
470 # Cross-compile GMP, MPFR and MPC (deps of GCC).
471 stage3-chroot/usr/lib64/libgmp.so.10: gmp-$(GMP_VERSION).tar.lz
472 rm -rf gmp-$(GMP_VERSION)
473 tar --lzip -xf gmp-$(GMP_VERSION).tar.lz
474 cd gmp-$(GMP_VERSION) && \
475 PATH=$(ROOT)/fixed-gcc:$$PATH \
476 ./configure --host=riscv64-unknown-linux-gnu \
477 --prefix=/usr --libdir=/usr/lib64
478 cd gmp-$(GMP_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
479 cd gmp-$(GMP_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
480 cd stage3-chroot/usr/lib && ln -s ../lib64/libgmp.so
482 gmp-$(GMP_VERSION).tar.lz:
484 wget -O $@-t https://gmplib.org/download/gmp/gmp-$(GMP_VERSION).tar.lz
487 stage3-chroot/usr/lib64/libmpfr.so.4: mpfr-$(MPFR_VERSION).tar.gz
488 rm -rf mpfr-$(MPFR_VERSION)
489 tar -zxf mpfr-$(MPFR_VERSION).tar.gz
490 cd mpfr-$(MPFR_VERSION) && \
491 PATH=$(ROOT)/fixed-gcc:$$PATH \
492 ./configure --host=riscv64-unknown-linux-gnu \
493 --prefix=/usr --libdir=/usr/lib64 \
494 --with-gmp=$(ROOT)/stage3-chroot/usr
495 cd mpfr-$(MPFR_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
496 cd mpfr-$(MPFR_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
497 cd stage3-chroot/usr/lib && ln -s ../lib64/libmpfr.so
498 rm -f stage3-chroot/usr/lib64/*.la
500 mpfr-$(MPFR_VERSION).tar.gz:
502 wget -O $@-t http://www.mpfr.org/mpfr-current/mpfr-$(MPFR_VERSION).tar.gz
505 stage3-chroot/usr/lib64/libmpc.so.3: mpc-$(MPC_VERSION).tar.gz
506 rm -rf mpc-$(MPC_VERSION)
507 tar -zxf mpc-$(MPC_VERSION).tar.gz
508 cd mpc-$(MPC_VERSION) && \
509 PATH=$(ROOT)/fixed-gcc:$$PATH \
510 ./configure --host=riscv64-unknown-linux-gnu \
511 --prefix=/usr --libdir=/usr/lib64 \
512 --with-gmp=$(ROOT)/stage3-chroot/usr \
513 --with-mpfr=$(ROOT)/stage3-chroot/usr
514 cd mpc-$(MPC_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
515 cd mpc-$(MPC_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
516 cd stage3-chroot/usr/lib && ln -s ../lib64/libmpc.so
517 rm -f stage3-chroot/usr/lib64/*.la
519 mpc-$(MPC_VERSION).tar.gz:
521 wget -O $@-t ftp://ftp.gnu.org/gnu/mpc/mpc-$(MPC_VERSION).tar.gz
525 stage3-chroot/usr/bin/gcc: gcc-$(GCC_X_VERSION).tar.gz
526 rm -rf riscv-gcc-riscv-gcc-$(GCC_X_VERSION)
528 cd riscv-gcc-riscv-gcc-$(GCC_X_VERSION) && \
529 patch -p1 < ../0001-HACKS-TO-GET-GCC-TO-COMPILE.patch
530 mkdir riscv-gcc-riscv-gcc-$(GCC_X_VERSION)/build
531 cd riscv-gcc-riscv-gcc-$(GCC_X_VERSION)/build && \
532 PATH=$(ROOT)/fixed-gcc:$$PATH \
534 --host=riscv64-unknown-linux-gnu \
535 --prefix=/usr --libdir=/usr/lib64 \
538 --enable-languages=c,c++ \
539 --disable-libmudflap \
541 --disable-libquadmath \
544 cd riscv-gcc-riscv-gcc-$(GCC_X_VERSION)/build && PATH=$(ROOT)/fixed-gcc:$$PATH make
545 cd riscv-gcc-riscv-gcc-$(GCC_X_VERSION)/build && make install DESTDIR=$(ROOT)/stage3-chroot
546 rm -f stage3-chroot/usr/lib64/*.la
548 gcc-$(GCC_X_VERSION).tar.gz:
550 wget -O $@-t https://github.com/riscv/riscv-gcc/archive/riscv-gcc-$(GCC_X_VERSION).tar.gz
553 # Cross-compile util-linux.
554 stage3-chroot/usr/bin/mount: util-linux-$(UTIL_LINUX_VERSION).tar.xz
555 rm -rf util-linux-$(UTIL_LINUX_VERSION)
557 cd util-linux-$(UTIL_LINUX_VERSION) && \
558 PATH=$(ROOT)/fixed-gcc:$$PATH \
559 LDFLAGS=-L$(ROOT)/stage3-chroot/usr/lib64 \
561 --host=riscv64-unknown-linux-gnu \
562 --prefix=/usr --libdir=/usr/lib64 \
565 --disable-makeinstall-chown \
566 --enable-static-programs=mount
567 cd util-linux-$(UTIL_LINUX_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
568 cd util-linux-$(UTIL_LINUX_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make install DESTDIR=$(ROOT)/stage3-chroot
569 rm -f stage3-chroot/usr/lib64/*.la
571 util-linux-$(UTIL_LINUX_VERSION).tar.xz:
573 wget -O $@-t ftp://ftp.kernel.org/pub/linux/utils/util-linux/v$(UTIL_LINUX_VERSION)/util-linux-$(UTIL_LINUX_VERSION).tar.xz
576 # Cross-compile GNU tar.
577 stage3-chroot/usr/bin/tar: tar-$(TAR_VERSION).tar.xz
578 rm -rf tar-$(TAR_VERSION)
580 cd tar-$(TAR_VERSION) && \
581 PATH=$(ROOT)/fixed-gcc:$$PATH \
583 --host=riscv64-unknown-linux-gnu \
584 --prefix=/usr --libdir=/usr/lib64
585 cd tar-$(TAR_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
586 cd tar-$(TAR_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
588 tar-$(TAR_VERSION).tar.xz:
590 wget -O $@-t https://ftp.gnu.org/gnu/tar/tar-$(TAR_VERSION).tar.xz
593 # Cross-compile GNU gzip.
594 stage3-chroot/usr/bin/gzip: gzip-$(GZIP_VERSION).tar.gz
595 rm -rf gzip-$(GZIP_VERSION)
597 cd gzip-$(GZIP_VERSION) && \
598 PATH=$(ROOT)/fixed-gcc:$$PATH \
600 --host=riscv64-unknown-linux-gnu \
601 --prefix=/usr --libdir=/usr/lib64
602 cd gzip-$(GZIP_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
603 cd gzip-$(GZIP_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
605 gzip-$(GZIP_VERSION).tar.gz:
607 wget -O $@-t https://ftp.gnu.org/gnu/gzip/gzip-$(GZIP_VERSION).tar.gz
610 # Cross-compile zlib.
611 stage3-chroot/usr/lib64/libz.so: zlib-$(ZLIB_VERSION).tar.gz
612 rm -rf zlib-$(ZLIB_VERSION)
614 cd zlib-$(ZLIB_VERSION) && \
615 PATH=$(ROOT)/fixed-gcc:$$PATH \
616 CC=riscv64-unknown-linux-gnu-gcc \
617 CFLAGS="-I$(ROOT)/stage3-chroot/usr/include -L$(ROOT)/stage3-chroot/usr/lib" \
619 --prefix=/usr --libdir=/usr/lib64
620 cd zlib-$(ZLIB_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make shared
621 cd zlib-$(ZLIB_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
623 zlib-$(ZLIB_VERSION).tar.gz:
625 wget -O $@-t http://zlib.net/zlib-$(ZLIB_VERSION).tar.gz
628 # Cross-compile file/libmagic.
629 stage3-chroot/usr/bin/file: file-$(FILE_VERSION).tar.gz
630 rm -rf file-$(FILE_VERSION)
632 cd file-$(FILE_VERSION) && \
633 PATH=$(ROOT)/fixed-gcc:$$PATH \
634 LDFLAGS=-L$(ROOT)/stage3-chroot/usr/lib64 \
636 --host=riscv64-unknown-linux-gnu \
637 --prefix=/usr --libdir=/usr/lib64 \
638 --disable-static --enable-shared
639 cd file-$(FILE_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make V=1
640 cd file-$(FILE_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
641 rm -f stage3-chroot/usr/lib64/*.la
643 file-$(FILE_VERSION).tar.gz:
645 wget -O $@-t ftp://ftp.astron.com/pub/file/file-$(FILE_VERSION).tar.gz
648 # Cross-compile popt.
649 stage3-chroot/usr/lib64/libpopt.so: popt-$(POPT_VERSION).tar.gz
650 rm -rf popt-$(POPT_VERSION)
652 cd popt-$(POPT_VERSION) && \
653 PATH=$(ROOT)/fixed-gcc:$$PATH \
654 LDFLAGS=-L$(ROOT)/stage3-chroot/usr/lib64 \
656 --host=riscv64-unknown-linux-gnu \
657 --prefix=/usr --libdir=/usr/lib64 \
658 --disable-static --enable-shared
659 cd popt-$(POPT_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make V=1
660 cd popt-$(POPT_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
661 rm -f stage3-chroot/usr/lib64/*.la
663 popt-$(POPT_VERSION).tar.gz:
665 wget -O $@-t http://rpm5.org/files/popt/popt-$(POPT_VERSION).tar.gz
668 # Cross-compile beecrypt.
669 stage3-chroot/usr/lib64/libbeecrypt.so: beecrypt-$(BEECRYPT_VERSION).tar.gz
670 rm -rf beecrypt-$(BEECRYPT_VERSION)
672 cd beecrypt-$(BEECRYPT_VERSION) && patch -p0 < ../beecrypt-disable-cplusplus.patch
673 cd beecrypt-$(BEECRYPT_VERSION) && autoreconf -i
674 cd beecrypt-$(BEECRYPT_VERSION) && \
675 PATH=$(ROOT)/fixed-gcc:$$PATH \
676 LDFLAGS=-L$(ROOT)/stage3-chroot/usr/lib64 \
678 --host=riscv64-unknown-linux-gnu \
679 --prefix=/usr --libdir=/usr/lib64 \
680 --without-cplusplus \
685 cd beecrypt-$(BEECRYPT_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make V=1
686 cd beecrypt-$(BEECRYPT_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make install DESTDIR=$(ROOT)/stage3-chroot V=1
687 chrpath -d stage3-chroot/usr/lib64/libbeecrypt.so.*
688 rm -f stage3-chroot/usr/lib64/*.la
690 beecrypt-$(BEECRYPT_VERSION).tar.gz:
692 wget -O $@-t http://downloads.sourceforge.net/sourceforge/beecrypt/beecrypt-$(BEECRYPT_VERSION).tar.gz
695 # Cross-compile GNU nano (editor).
696 stage3-chroot/usr/bin/nano: nano-$(NANO_VERSION).tar.gz
697 rm -rf nano-$(NANO_VERSION)
699 cd nano-$(NANO_VERSION) && \
700 PATH=$(ROOT)/fixed-gcc:$$PATH \
701 LDFLAGS=-L$(ROOT)/stage3-chroot/usr/lib64 \
703 --host=riscv64-unknown-linux-gnu \
704 --prefix=/usr --libdir=/usr/lib64
705 cd nano-$(NANO_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
706 cd nano-$(NANO_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
708 nano-$(NANO_VERSION).tar.gz:
710 wget -O $@-t https://www.nano-editor.org/dist/v2.6/nano-$(NANO_VERSION).tar.gz
713 # Cross-compile GNU grep.
714 stage3-chroot/usr/bin/grep: grep-$(GREP_VERSION).tar.xz
715 rm -rf grep-$(GREP_VERSION)
717 cd grep-$(GREP_VERSION) && \
718 PATH=$(ROOT)/fixed-gcc:$$PATH \
720 --host=riscv64-unknown-linux-gnu \
721 --prefix=/usr --libdir=/usr/lib64
722 cd grep-$(GREP_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
723 cd grep-$(GREP_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
725 grep-$(GREP_VERSION).tar.xz:
727 wget -O $@-t https://ftp.gnu.org/gnu/grep/grep-$(GREP_VERSION).tar.xz
730 # Cross-compile less.
731 stage3-chroot/usr/bin/less: less-$(LESS_VERSION).tar.gz
732 rm -rf less-$(LESS_VERSION)
734 cd less-$(LESS_VERSION) && \
735 PATH=$(ROOT)/fixed-gcc:$$PATH \
736 LDFLAGS=-L$(ROOT)/stage3-chroot/usr/lib64 \
738 --host=riscv64-unknown-linux-gnu \
739 --prefix=/usr --libdir=/usr/lib64
740 cd less-$(LESS_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
741 cd less-$(LESS_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
743 less-$(LESS_VERSION).tar.gz:
745 wget -O $@-t http://www.greenwoodsoftware.com/less/less-$(LESS_VERSION).tar.gz
748 # Cross-compile strace.
749 # XXX This does not work.
750 stage3-chroot/usr/bin/strace: strace-$(STRACE_SHORT_COMMIT).tar.gz
751 rm -rf strace-$(STRACE_SHORT_COMMIT)
753 cd riscv-strace-$(STRACE_COMMIT) && patch -p1 < ../0001-Update-riscv_regs-for-ptrace.h-from-Linux-4.1.x.patch
754 cd riscv-strace-$(STRACE_COMMIT) && \
755 PATH=$(ROOT)/fixed-gcc:$$PATH \
756 LDFLAGS=-L$(ROOT)/stage3-chroot/usr/lib64 \
758 --host=riscv64-unknown-linux-gnu \
759 --prefix=/usr --libdir=/usr/lib64
760 cd riscv-strace-$(STRACE_COMMIT) && PATH=$(ROOT)/fixed-gcc:$$PATH make
761 cd riscv-strace-$(STRACE_COMMIT) && make install DESTDIR=$(ROOT)/stage3-chroot
763 strace-$(STRACE_SHORT_COMMIT).tar.gz:
765 wget -O $@-t 'https://github.com/riscv/riscv-strace/archive/$(STRACE_COMMIT)/riscv-strace-$(STRACE_SHORTCOMMIT).tar.gz'
768 # Cross-compile bzip2.
769 stage3-chroot/usr/bin/bzip2: bzip2-$(BZIP2_VERSION).tar.gz
770 rm -rf bzip2-$(BZIP2_VERSION)
772 cd bzip2-$(BZIP2_VERSION) && \
773 PATH=$(ROOT)/fixed-gcc:$$PATH \
774 make libbz2.a bzip2 bzip2recover \
776 CC=riscv64-unknown-linux-gnu-gcc \
777 AR=riscv64-unknown-linux-gnu-ar \
778 RANLIB=riscv64-unknown-linux-gnu-ranlib \
779 CFLAGS="-Wall -Winline -O2 -g -D_FILE_OFFSET_BITS=64 -fPIC"
780 cd bzip2-$(BZIP2_VERSION) && \
781 make install PREFIX=$(ROOT)/stage3-chroot/usr
783 bzip2-$(BZIP2_VERSION).tar.gz:
785 wget -O $@-t http://www.bzip.org/1.0.6/bzip2-$(BZIP2_VERSION).tar.gz
788 # Cross-compile GNU make.
789 stage3-chroot/usr/bin/make: make-$(MAKE_VERSION).tar.gz
790 rm -rf make-$(MAKE_VERSION)
792 cd make-$(MAKE_VERSION) && \
793 PATH=$(ROOT)/fixed-gcc:$$PATH \
795 --host=riscv64-unknown-linux-gnu \
796 --prefix=/usr --libdir=/usr/lib64
797 cd make-$(MAKE_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
798 cd make-$(MAKE_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
800 make-$(MAKE_VERSION).tar.gz:
802 wget -O $@-t https://ftp.gnu.org/gnu/make/make-$(MAKE_VERSION).tar.gz
805 # Cross-compile GNU diffutils.
806 stage3-chroot/usr/bin/diff: diffutils-$(DIFFUTILS_VERSION).tar.xz
807 rm -rf diffutils-$(DIFFUTILS_VERSION)
809 cd diffutils-$(DIFFUTILS_VERSION) && \
810 PATH=$(ROOT)/fixed-gcc:$$PATH \
812 --host=riscv64-unknown-linux-gnu \
813 --prefix=/usr --libdir=/usr/lib64
814 cd diffutils-$(DIFFUTILS_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
815 cd diffutils-$(DIFFUTILS_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
817 diffutils-$(DIFFUTILS_VERSION).tar.xz:
819 wget -O $@-t https://ftp.gnu.org/gnu/diffutils/diffutils-$(DIFFUTILS_VERSION).tar.xz
822 # Cross-compile GNU findutils.
823 stage3-chroot/usr/bin/find: findutils-$(FINDUTILS_VERSION).tar.gz
824 rm -rf findutils-$(FINDUTILS_VERSION)
826 cd findutils-$(FINDUTILS_VERSION) && \
827 PATH=$(ROOT)/fixed-gcc:$$PATH \
829 --host=riscv64-unknown-linux-gnu \
830 --prefix=/usr --libdir=/usr/lib64
831 cd findutils-$(FINDUTILS_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
832 cd findutils-$(FINDUTILS_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
834 findutils-$(FINDUTILS_VERSION).tar.gz:
836 wget -O $@-t https://ftp.gnu.org/gnu/findutils/findutils-$(FINDUTILS_VERSION).tar.gz
839 # Cross-compile GNU sed.
840 stage3-chroot/usr/bin/sed: sed-$(SED_VERSION).tar.gz
841 rm -rf sed-$(SED_VERSION)
843 cd sed-$(SED_VERSION) && \
844 PATH=$(ROOT)/fixed-gcc:$$PATH \
846 --host=riscv64-unknown-linux-gnu \
847 --prefix=/usr --libdir=/usr/lib64
848 cd sed-$(SED_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
849 cd sed-$(SED_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
851 sed-$(SED_VERSION).tar.gz:
853 wget -O $@-t https://ftp.gnu.org/gnu/sed/sed-$(SED_VERSION).tar.gz
856 # Cross-compile patch.
857 stage3-chroot/usr/bin/patch: patch-$(PATCH_VERSION).tar.gz
858 rm -rf patch-$(PATCH_VERSION)
860 cd patch-$(PATCH_VERSION) && \
861 PATH=$(ROOT)/fixed-gcc:$$PATH \
863 --host=riscv64-unknown-linux-gnu \
864 --prefix=/usr --libdir=/usr/lib64
865 cd patch-$(PATCH_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
866 cd patch-$(PATCH_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
868 patch-$(PATCH_VERSION).tar.gz:
870 wget -O $@-t https://ftp.gnu.org/gnu/patch/patch-$(PATCH_VERSION).tar.gz
873 # Cross-compile hostname.
874 stage3-chroot/usr/bin/hostname: hostname-$(HOSTNAME_VERSION).tar.gz
875 rm -rf hostname-$(HOSTNAME_VERSION)
877 cd hostname && patch -p1 < ../hostname-rh.patch
879 PATH=$(ROOT)/fixed-gcc:$$PATH \
881 CC=riscv64-unknown-linux-gnu-gcc \
883 cd hostname && make install BASEDIR=$(ROOT)/stage3-chroot
885 hostname-$(HOSTNAME_VERSION).tar.gz:
887 wget -O $@-t http://ftp.de.debian.org/debian/pool/main/h/hostname/hostname_$(HOSTNAME_VERSION).tar.gz
890 # Cross-compile GNU gettext.
891 stage3-chroot/usr/bin/gettext: gettext-$(GETTEXT_VERSION).tar.gz
892 rm -rf gettext-$(GETTEXT_VERSION)
894 cd gettext-$(GETTEXT_VERSION) && \
895 PATH=$(ROOT)/fixed-gcc:$$PATH \
897 --host=riscv64-unknown-linux-gnu \
898 --prefix=/usr --libdir=/usr/lib64
899 cd gettext-$(GETTEXT_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
900 cd gettext-$(GETTEXT_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make install DESTDIR=$(ROOT)/stage3-chroot
901 rm -f stage3-chroot/usr/lib64/*.la
903 gettext-$(GETTEXT_VERSION).tar.gz:
905 wget -O $@-t https://ftp.gnu.org/gnu/gettext/gettext-$(GETTEXT_VERSION).tar.gz
909 stage3-chroot/usr/bin/lua: lua-$(LUA_VERSION).tar.gz
910 rm -rf lua-$(LUA_VERSION)
912 cd lua-$(LUA_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make PLAT=linux INSTALL_TOP=/usr CC=riscv64-unknown-linux-gnu-gcc AR="riscv64-unknown-linux-gnu-ar rcu" RANLIB="riscv64-unknown-linux-gnu-ranlib" MYLDFLAGS=-L$(ROOT)/stage3-chroot/usr/lib64 MYLIBS=-ltinfo MYCFLAGS="-fPIC -DLUA_COMPAT_5_1"
913 cd lua-$(LUA_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make install INSTALL_TOP=$(ROOT)/stage3-chroot/usr INSTALL_LIB=$(ROOT)/stage3-chroot/usr/lib64
915 lua-$(LUA_VERSION).tar.gz:
917 wget -O $@-t https://www.lua.org/ftp/lua-$(LUA_VERSION).tar.gz
921 stage3-chroot/usr/bin/xz: xz-$(XZ_VERSION).tar.gz
922 rm -rf xz-$(XZ_VERSION)
924 cd xz-$(XZ_VERSION) && \
925 PATH=$(ROOT)/fixed-gcc:$$PATH \
927 --host=riscv64-unknown-linux-gnu \
928 --prefix=/usr --libdir=/usr/lib64
929 cd xz-$(XZ_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
930 cd xz-$(XZ_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make install DESTDIR=$(ROOT)/stage3-chroot
931 rm -f stage3-chroot/usr/lib64/*.la
933 xz-$(XZ_VERSION).tar.gz:
935 wget -O $@-t http://tukaani.org/xz/xz-$(XZ_VERSION).tar.gz
938 # Cross-compile GNU awk.
939 stage3-chroot/usr/bin/gawk: gawk-$(GAWK_VERSION).tar.gz
940 rm -rf gawk-$(GAWK_VERSION)
942 cd gawk-$(GAWK_VERSION) && \
943 PATH=$(ROOT)/fixed-gcc:$$PATH \
945 --host=riscv64-unknown-linux-gnu \
946 --prefix=/usr --libdir=/usr/lib64
947 cd gawk-$(GAWK_VERSION) && PATH=$(ROOT)/fixed-gcc:$$PATH make
948 cd gawk-$(GAWK_VERSION) && make install DESTDIR=$(ROOT)/stage3-chroot
950 gawk-$(GAWK_VERSION).tar.gz:
952 wget -O $@-t https://ftp.gnu.org/gnu/gawk/gawk-$(GAWK_VERSION).tar.gz
956 stage3-chroot/usr/bin/vim: vim-$(VIM_VERSION).tar.gz
957 rm -rf vim-$(VIM_VERSION)
960 PATH=$(ROOT)/fixed-gcc:$$PATH \
961 vim_cv_memmove_handles_overlap=yes \
962 vim_cv_stat_ignores_slash=no \
963 vim_cv_getcwd_broken=no \
964 vim_cv_tty_group=world \
965 vim_cv_terminfo=yes \
966 vim_cv_toupper_broken=no \
967 LDFLAGS=-L/home/rjones/d/fedora-riscv/stage3-chroot/usr/lib64 \
969 --host=riscv64-unknown-linux-gnu \
970 --prefix=/usr --libdir=/usr/lib64 \
972 cd vim74/src && PATH=$(ROOT)/fixed-gcc:$$PATH make
973 cd vim74/src && make install DESTDIR=$(ROOT)/stage3-chroot STRIP=riscv64-unknown-linux-gnu-strip
975 vim-$(VIM_VERSION).tar.gz:
977 wget -O $@-t ftp://ftp.vim.org/pub/vim/unix/vim-$(VIM_VERSION).tar.bz2
980 # Cross-compile RPM / rpmbuild.
981 # We build this from a git commit, with a few hacks to the configure
983 stage3-chroot/usr/bin/rpm: rpm-$(RPM_SHORT_COMMIT).tar.gz db-$(BDB_VERSION).tar.gz
984 rm -rf rpm-$(RPM_SHORT_COMMIT)
985 tar -zxf rpm-$(RPM_SHORT_COMMIT).tar.gz
986 tar -zxf db-$(BDB_VERSION).tar.gz -C rpm-$(RPM_SHORT_COMMIT)
987 cd rpm-$(RPM_SHORT_COMMIT) && ln -s db-$(BDB_VERSION) db
988 cd rpm-$(RPM_SHORT_COMMIT) && \
989 patch -p1 < ../0001-RISCV-64-bit-riscv64-support.patch && \
990 patch -p1 < ../0002-rpmrc-Convert-uname.machine-riscv-to-riscv32-riscv64.patch && \
991 patch -p1 < ../0003-build-fgetc-returns-int-not-char.patch && \
992 patch -p1 < ../0004-HACKS-TO-GET-RPM-TO-CROSS-COMPILE.patch
993 cd rpm-$(RPM_SHORT_COMMIT) && autoreconf -i
994 cd rpm-$(RPM_SHORT_COMMIT) && \
995 PATH=$(ROOT)/fixed-gcc:$$PATH \
996 LDFLAGS=-L$(ROOT)/stage3-chroot/usr/lib64 \
998 --host=riscv64-unknown-linux-gnu \
999 --prefix=/usr --libdir=/usr/lib64 \
1001 --with-vendor=redhat \
1002 --without-libarchive \
1006 --without-external-db \
1009 cd rpm-$(RPM_SHORT_COMMIT) && PATH=$(ROOT)/fixed-gcc:$$PATH make V=1
1010 cd rpm-$(RPM_SHORT_COMMIT) && PATH=$(ROOT)/fixed-gcc:$$PATH make install DESTDIR=$(ROOT)/stage3-chroot
1011 rm -f stage3-chroot/usr/lib64/*.la
1013 rpm-$(RPM_SHORT_COMMIT).tar.gz:
1015 wget -O $@-t 'http://rpm.org/gitweb?p=rpm.git;a=snapshot;h=$(RPM_COMMIT);sf=tgz'
1018 db-$(BDB_VERSION).tar.gz:
1020 wget -O $@-t http://download.oracle.com/berkeley-db/db-$(BDB_VERSION).tar.gz
1023 # Create an /init script.
1024 stage3-chroot/init: init.sh
1025 install -m 0755 $^ $@
1027 # Create the stage3 disk image.
1028 # Note `-s +...' adds spare space to the disk image.
1029 stage3-disk.img: stage3-chroot
1030 cd stage3-chroot && virt-make-fs . ../$@ -t ext2 -F raw -s +4G
1032 # Upload the compressed disk image.
1033 upload-stage3: stage3-disk.img.xz
1034 scp $^ tick:public_html/riscv/
1035 stage3-disk.img.xz: stage3-disk.img
1039 # Helper which boots stage3 disk image in spike.
1040 boot-stage3-in-spike: stage3-disk.img stage3-kernel/linux-$(KERNEL_VERSION)/vmlinux
1041 spike +disk=stage3-disk.img \
1042 /usr/bin/bbl stage3-kernel/linux-$(KERNEL_VERSION)/vmlinux
1044 # Helper which boots stage3 disk image in qemu.
1045 boot-stage3-in-qemu: stage3-disk.img stage3-kernel/linux-$(KERNEL_VERSION)/vmlinux
1046 qemu-system-riscv -kernel /usr/bin/bbl \
1047 -append ./stage3-kernel/linux-$(KERNEL_VERSION)/vmlinux \
1048 -drive file=stage3-disk.img,format=raw -nographic