From 7f9a82752dc903ee551c7f31dc34626c3b81f972 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 16 Mar 2019 19:09:43 -0600 Subject: [PATCH] Significant changes to prefix in order to generate path agnostic toolchain. Addition of ci-toolchain target --- Makefile | 9 +++- mk/config.mk | 1 + mk/prefix.mk | 133 ++++++++++++++++++++++++++++++++++----------------- relibc | 2 +- 4 files changed, 99 insertions(+), 46 deletions(-) diff --git a/Makefile b/Makefile index fc80bc8..e033f08 100644 --- a/Makefile +++ b/Makefile @@ -69,7 +69,7 @@ ci-img: FORCE build/harddrive-efi.bin.gz \ build/livedisk-efi.iso.gz rm -rf build/img - mkdir build/img + mkdir -p build/img mv build/coreboot.elf.gz build/img/redox_$(IMG_TAG)_coreboot.elf.gz mv build/harddrive.bin.gz build/img/redox_$(IMG_TAG)_harddrive.bin.gz mv build/livedisk.iso.gz build/img/redox_$(IMG_TAG)_livedisk.iso.gz @@ -85,6 +85,13 @@ ci-pkg: prefix FORCE ./fetch.sh "$${PACKAGES}" && \ ./repo.sh "$${PACKAGES}" +# CI toolchain +ci-toolchain: prefix/$(TARGET)/gcc-install.tar.gz + rm -rf build/toolchain + mkdir -p "build/toolchain/$(TARGET)" + mv "$<" "build/toolchain/$(TARGET)" + cd "build/toolchain/$(TARGET)" && sha256sum -b * > SHA256SUM + env: prefix FORCE export PATH="$(PREFIX_PATH):$$PATH" && \ bash diff --git a/mk/config.mk b/mk/config.mk index 791c18f..1929e7f 100644 --- a/mk/config.mk +++ b/mk/config.mk @@ -1,6 +1,7 @@ # Configuration ARCH?=x86_64 INSTALLER_FLAGS?=--cookbook=cookbook +PREFIX_BINARY?=0 PREFIX_RUSTC?=0 # Filesystem Size in MB FILESYSTEM_SIZE?=256 diff --git a/mk/prefix.mk b/mk/prefix.mk index 199b704..4d2b673 100644 --- a/mk/prefix.mk +++ b/mk/prefix.mk @@ -1,20 +1,46 @@ -PREFIX=$(ROOT)/prefix/$(TARGET) +PREFIX=prefix/$(TARGET) PREFIX_FREESTANDING_INSTALL=$(PREFIX)/gcc-freestanding-install -PREFIX_INSTALL=$(PREFIX)/gcc-install +PREFIX_INSTALL=$(PREFIX)/relibc-install ifeq ($(PREFIX_RUSTC),1) PREFIX_FREESTANDING_INSTALL=$(PREFIX)/rust-freestanding-install export RUSTUP_TOOLCHAIN=$(PREFIX)/rust-freestanding-install endif -PREFIX_FREESTANDING_PATH=$(PREFIX_FREESTANDING_INSTALL)/bin -PREFIX_PATH=$(PREFIX_INSTALL)/bin +PREFIX_FREESTANDING_PATH=$(ROOT)/$(PREFIX_FREESTANDING_INSTALL)/bin +PREFIX_PATH=$(ROOT)/$(PREFIX_INSTALL)/bin prefix-freestanding: $(PREFIX_FREESTANDING_INSTALL) prefix: $(PREFIX_INSTALL) +$(PREFIX)/relibc-install: $(ROOT)/relibc | $(PREFIX)/gcc-install + rm -rf "$@.partial" "$@" + cp -r "$(PREFIX)/gcc-install" "$@.partial" + cd "$<" && \ + export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \ + export CARGO=xargo && \ + make -j `nproc` all && \ + make -j `nproc` install DESTDIR="$(ROOT)/$@.partial/$(TARGET)" + touch "$@.partial" + mv "$@.partial" "$@" + +ifeq ($(PREFIX_BINARY),1) + +$(PREFIX)/gcc-install.tar.gz: + mkdir -p "$(@D)" + wget -O $@.partial "https://static.redox-os.org/toolchain/$(TARGET)/gcc-install.tar.gz" + mv $@.partial $@ + +$(PREFIX)/gcc-install: $(PREFIX)/gcc-install.tar.gz + mkdir -p "$@.partial" + tar --extract --file "$<" --directory "$@.partial" --strip-components=1 + touch "$@.partial" + mv "$@.partial" "$@" + +else + $(PREFIX)/binutils.tar.bz2: mkdir -p "$(@D)" wget -O $@.partial "https://gitlab.redox-os.org/redox-os/binutils-gdb/-/archive/redox/binutils-gdb-redox.tar.bz2" @@ -23,22 +49,23 @@ $(PREFIX)/binutils.tar.bz2: $(PREFIX)/binutils: $(PREFIX)/binutils.tar.bz2 mkdir -p "$@.partial" tar --extract --file "$<" --directory "$@.partial" --strip-components=1 + touch "$@.partial" mv "$@.partial" "$@" - touch "$@" $(PREFIX)/binutils-install: $(PREFIX)/binutils - rm -rf "$<-build" "$@" - mkdir -p "$<-build" "$@" + rm -rf "$<-build" "$@.partial" "$@" + mkdir -p "$<-build" "$@.partial" cd "$<-build" && \ - "$