Significant changes to prefix in order to generate path agnostic toolchain. Addition of ci-toolchain target
This commit is contained in:
parent
58217e3466
commit
7f9a82752d
9
Makefile
9
Makefile
|
@ -69,7 +69,7 @@ ci-img: FORCE
|
||||||
build/harddrive-efi.bin.gz \
|
build/harddrive-efi.bin.gz \
|
||||||
build/livedisk-efi.iso.gz
|
build/livedisk-efi.iso.gz
|
||||||
rm -rf build/img
|
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/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/harddrive.bin.gz build/img/redox_$(IMG_TAG)_harddrive.bin.gz
|
||||||
mv build/livedisk.iso.gz build/img/redox_$(IMG_TAG)_livedisk.iso.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}" && \
|
./fetch.sh "$${PACKAGES}" && \
|
||||||
./repo.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
|
env: prefix FORCE
|
||||||
export PATH="$(PREFIX_PATH):$$PATH" && \
|
export PATH="$(PREFIX_PATH):$$PATH" && \
|
||||||
bash
|
bash
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# Configuration
|
# Configuration
|
||||||
ARCH?=x86_64
|
ARCH?=x86_64
|
||||||
INSTALLER_FLAGS?=--cookbook=cookbook
|
INSTALLER_FLAGS?=--cookbook=cookbook
|
||||||
|
PREFIX_BINARY?=0
|
||||||
PREFIX_RUSTC?=0
|
PREFIX_RUSTC?=0
|
||||||
# Filesystem Size in MB
|
# Filesystem Size in MB
|
||||||
FILESYSTEM_SIZE?=256
|
FILESYSTEM_SIZE?=256
|
||||||
|
|
133
mk/prefix.mk
133
mk/prefix.mk
|
@ -1,20 +1,46 @@
|
||||||
PREFIX=$(ROOT)/prefix/$(TARGET)
|
PREFIX=prefix/$(TARGET)
|
||||||
|
|
||||||
PREFIX_FREESTANDING_INSTALL=$(PREFIX)/gcc-freestanding-install
|
PREFIX_FREESTANDING_INSTALL=$(PREFIX)/gcc-freestanding-install
|
||||||
PREFIX_INSTALL=$(PREFIX)/gcc-install
|
PREFIX_INSTALL=$(PREFIX)/relibc-install
|
||||||
|
|
||||||
ifeq ($(PREFIX_RUSTC),1)
|
ifeq ($(PREFIX_RUSTC),1)
|
||||||
PREFIX_FREESTANDING_INSTALL=$(PREFIX)/rust-freestanding-install
|
PREFIX_FREESTANDING_INSTALL=$(PREFIX)/rust-freestanding-install
|
||||||
export RUSTUP_TOOLCHAIN=$(PREFIX)/rust-freestanding-install
|
export RUSTUP_TOOLCHAIN=$(PREFIX)/rust-freestanding-install
|
||||||
endif
|
endif
|
||||||
|
|
||||||
PREFIX_FREESTANDING_PATH=$(PREFIX_FREESTANDING_INSTALL)/bin
|
PREFIX_FREESTANDING_PATH=$(ROOT)/$(PREFIX_FREESTANDING_INSTALL)/bin
|
||||||
PREFIX_PATH=$(PREFIX_INSTALL)/bin
|
PREFIX_PATH=$(ROOT)/$(PREFIX_INSTALL)/bin
|
||||||
|
|
||||||
prefix-freestanding: $(PREFIX_FREESTANDING_INSTALL)
|
prefix-freestanding: $(PREFIX_FREESTANDING_INSTALL)
|
||||||
|
|
||||||
prefix: $(PREFIX_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:
|
$(PREFIX)/binutils.tar.bz2:
|
||||||
mkdir -p "$(@D)"
|
mkdir -p "$(@D)"
|
||||||
wget -O $@.partial "https://gitlab.redox-os.org/redox-os/binutils-gdb/-/archive/redox/binutils-gdb-redox.tar.bz2"
|
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
|
$(PREFIX)/binutils: $(PREFIX)/binutils.tar.bz2
|
||||||
mkdir -p "$@.partial"
|
mkdir -p "$@.partial"
|
||||||
tar --extract --file "$<" --directory "$@.partial" --strip-components=1
|
tar --extract --file "$<" --directory "$@.partial" --strip-components=1
|
||||||
|
touch "$@.partial"
|
||||||
mv "$@.partial" "$@"
|
mv "$@.partial" "$@"
|
||||||
touch "$@"
|
|
||||||
|
|
||||||
$(PREFIX)/binutils-install: $(PREFIX)/binutils
|
$(PREFIX)/binutils-install: $(PREFIX)/binutils
|
||||||
rm -rf "$<-build" "$@"
|
rm -rf "$<-build" "$@.partial" "$@"
|
||||||
mkdir -p "$<-build" "$@"
|
mkdir -p "$<-build" "$@.partial"
|
||||||
cd "$<-build" && \
|
cd "$<-build" && \
|
||||||
"$</configure" \
|
"$(ROOT)/$</configure" \
|
||||||
--target="$(TARGET)" \
|
--target="$(TARGET)" \
|
||||||
--program-prefix="$(TARGET)-" \
|
--program-prefix="$(TARGET)-" \
|
||||||
--prefix="$@" \
|
--prefix="" \
|
||||||
--disable-werror \
|
--disable-werror \
|
||||||
&& \
|
&& \
|
||||||
make all -j `nproc` && \
|
make -j `nproc` all && \
|
||||||
make install -j `nproc`
|
make -j `nproc` install DESTDIR="$(ROOT)/$@.partial"
|
||||||
touch "$@"
|
touch "$@.partial"
|
||||||
|
mv "$@.partial" "$@"
|
||||||
|
|
||||||
$(PREFIX)/gcc.tar.bz2:
|
$(PREFIX)/gcc.tar.bz2:
|
||||||
mkdir -p "$(@D)"
|
mkdir -p "$(@D)"
|
||||||
|
@ -49,67 +76,83 @@ $(PREFIX)/gcc: $(PREFIX)/gcc.tar.bz2
|
||||||
mkdir -p "$@.partial"
|
mkdir -p "$@.partial"
|
||||||
tar --extract --file "$<" --directory "$@.partial" --strip-components=1
|
tar --extract --file "$<" --directory "$@.partial" --strip-components=1
|
||||||
cd "$@.partial" && ./contrib/download_prerequisites
|
cd "$@.partial" && ./contrib/download_prerequisites
|
||||||
|
touch "$@.partial"
|
||||||
mv "$@.partial" "$@"
|
mv "$@.partial" "$@"
|
||||||
touch "$@"
|
|
||||||
|
|
||||||
$(PREFIX)/gcc-freestanding-install: $(PREFIX)/gcc | $(PREFIX)/binutils-install
|
$(PREFIX)/gcc-freestanding-install: $(PREFIX)/gcc | $(PREFIX)/binutils-install
|
||||||
rm -rf "$<-freestanding-build" "$@"
|
rm -rf "$<-freestanding-build" "$@.partial" "$@"
|
||||||
mkdir -p "$<-freestanding-build"
|
mkdir -p "$<-freestanding-build"
|
||||||
cp -r "$(PREFIX)/binutils-install" "$@"
|
cp -r "$(PREFIX)/binutils-install" "$@.partial"
|
||||||
cd "$<-freestanding-build" && \
|
cd "$<-freestanding-build" && \
|
||||||
export PATH="$@/bin:$$PATH" && \
|
export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \
|
||||||
"$</configure" \
|
"$(ROOT)/$</configure" \
|
||||||
--target="$(TARGET)" \
|
--target="$(TARGET)" \
|
||||||
--program-prefix="$(TARGET)-" \
|
--program-prefix="$(TARGET)-" \
|
||||||
--prefix="$@" \
|
--prefix="" \
|
||||||
--disable-nls \
|
--disable-nls \
|
||||||
--enable-languages=c,c++ \
|
--enable-languages=c,c++ \
|
||||||
--without-headers \
|
--without-headers \
|
||||||
&& \
|
&& \
|
||||||
make all-gcc all-target-libgcc -j `nproc` && \
|
make -j `nproc` all-gcc all-target-libgcc && \
|
||||||
make install-gcc install-target-libgcc -j `nproc`
|
make -j `nproc` install-gcc install-target-libgcc DESTDIR="$(ROOT)/$@.partial"
|
||||||
touch "$@"
|
touch "$@.partial"
|
||||||
|
mv "$@.partial" "$@"
|
||||||
|
|
||||||
$(PREFIX)/rust-freestanding-install: $(ROOT)/rust | $(PREFIX)/gcc-freestanding-install
|
$(PREFIX)/rust-freestanding-install: $(ROOT)/rust | $(PREFIX)/gcc-freestanding-install
|
||||||
rm -rf "$(PREFIX)/rust-freestanding-build" "$@"
|
rm -rf "$(PREFIX)/rust-freestanding-build" "$@.partial" "$@"
|
||||||
mkdir -p "$(PREFIX)/rust-freestanding-build"
|
mkdir -p "$(PREFIX)/rust-freestanding-build"
|
||||||
cp -r "$(PREFIX)/gcc-freestanding-install" "$@"
|
cp -r "$(PREFIX)/gcc-freestanding-install" "$@.partial"
|
||||||
cd "$(PREFIX)/rust-freestanding-build" && \
|
cd "$(PREFIX)/rust-freestanding-build" && \
|
||||||
export PATH="$@/bin:$$PATH" && \
|
export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \
|
||||||
"$</configure" --prefix="$@" --disable-docs && \
|
"$</configure" --prefix="" --disable-docs && \
|
||||||
make -j `nproc` && \
|
make -j `nproc` && \
|
||||||
make install -j `nproc`
|
make -j `nproc` install DESTDIR="$(ROOT)/$@.partial"
|
||||||
mkdir -p "$@/lib/rustlib/x86_64-unknown-linux-gnu/bin"
|
mkdir -p "$@.partial/lib/rustlib/x86_64-unknown-linux-gnu/bin"
|
||||||
touch "$@"
|
touch "$@.partial"
|
||||||
|
mv "$@.partial" "$@"
|
||||||
|
|
||||||
$(PREFIX)/relibc-install: $(ROOT)/relibc | $(PREFIX_FREESTANDING_INSTALL)
|
# TODO: Only make headers for freestanding install
|
||||||
rm -rf "$@"
|
$(PREFIX)/relibc-freestanding-install: $(ROOT)/relibc | $(PREFIX_FREESTANDING_INSTALL)
|
||||||
mkdir -p "$@"
|
rm -rf "$@.partial" "$@"
|
||||||
|
mkdir -p "$@.partial"
|
||||||
cd "$<" && \
|
cd "$<" && \
|
||||||
export PATH="$(PREFIX_FREESTANDING_PATH):$$PATH" && \
|
export PATH="$(PREFIX_FREESTANDING_PATH):$$PATH" && \
|
||||||
make CARGO=xargo all && \
|
export CARGO=xargo && \
|
||||||
make CARGO=xargo DESTDIR="$@/usr" install
|
make -j `nproc` all && \
|
||||||
touch "$@"
|
make -j `nproc` install DESTDIR="$(ROOT)/$@.partial/$(TARGET)"
|
||||||
|
touch "$@.partial"
|
||||||
|
mv "$@.partial" "$@"
|
||||||
|
|
||||||
$(PREFIX)/gcc-install: $(PREFIX)/gcc | $(PREFIX)/relibc-install
|
$(PREFIX)/gcc-install: $(PREFIX)/gcc | $(PREFIX)/relibc-freestanding-install
|
||||||
rm -rf "$<-build" "$@"
|
rm -rf "$<-build" "$@.partial" "$@"
|
||||||
mkdir -p "$<-build"
|
mkdir -p "$<-build"
|
||||||
cp -r "$(PREFIX)/binutils-install" "$@"
|
cp -r "$(PREFIX)/binutils-install" "$@.partial"
|
||||||
cd "$<-build" && \
|
cd "$<-build" && \
|
||||||
export PATH="$@/bin:$$PATH" && \
|
export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \
|
||||||
"$</configure" \
|
"$(ROOT)/$</configure" \
|
||||||
--target="$(TARGET)" \
|
--target="$(TARGET)" \
|
||||||
--program-prefix="$(TARGET)-" \
|
--program-prefix="$(TARGET)-" \
|
||||||
--prefix="$@" \
|
--prefix="" \
|
||||||
--with-sysroot="$(PREFIX)/relibc-install" \
|
--with-sysroot \
|
||||||
|
--with-build-sysroot="$(ROOT)/$(PREFIX)/relibc-freestanding-install/$(TARGET)" \
|
||||||
|
--with-native-system-header-dir="/include" \
|
||||||
--disable-nls \
|
--disable-nls \
|
||||||
--disable-werror \
|
--disable-werror \
|
||||||
--enable-languages=c,c++ \
|
--enable-languages=c,c++ \
|
||||||
--enable-threads=posix \
|
--enable-threads=posix \
|
||||||
&& \
|
&& \
|
||||||
make all-gcc all-target-libgcc all-target-libstdc++-v3 -j `nproc` && \
|
make -j `nproc` all-gcc all-target-libgcc all-target-libstdc++-v3 && \
|
||||||
make install-gcc install-target-libgcc install-target-libstdc++-v3 -j `nproc`
|
make -j `nproc` install-gcc install-target-libgcc install-target-libstdc++-v3 DESTDIR="$(ROOT)/$@.partial"
|
||||||
touch "$@"
|
touch "$@.partial"
|
||||||
|
mv "$@.partial" "$@"
|
||||||
|
|
||||||
|
$(PREFIX)/gcc-install.tar.gz: $(PREFIX)/gcc-install
|
||||||
|
tar \
|
||||||
|
--create \
|
||||||
|
--gzip \
|
||||||
|
--file "$@" \
|
||||||
|
--directory="$<" \
|
||||||
|
.
|
||||||
|
|
||||||
# Building full rustc may not be required
|
# Building full rustc may not be required
|
||||||
# $(PREFIX)/rust-install: $(ROOT)/rust | $(PREFIX)/gcc-install
|
# $(PREFIX)/rust-install: $(ROOT)/rust | $(PREFIX)/gcc-install
|
||||||
|
@ -121,3 +164,5 @@ $(PREFIX)/gcc-install: $(PREFIX)/gcc | $(PREFIX)/relibc-install
|
||||||
# make -j `nproc` && \
|
# make -j `nproc` && \
|
||||||
# make install -j `nproc`
|
# make install -j `nproc`
|
||||||
# touch "$@"
|
# touch "$@"
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
2
relibc
2
relibc
|
@ -1 +1 @@
|
||||||
Subproject commit cdbeda1ca00c110725cb7e578057cedcdb0174ce
|
Subproject commit cee4449f7cc9f10e77daab4109c212212f2788c8
|
Loading…
Reference in a new issue