2019-03-17 02:09:43 +01:00
|
|
|
PREFIX=prefix/$(TARGET)
|
2018-08-17 04:30:54 +02:00
|
|
|
|
2019-03-17 02:09:43 +01:00
|
|
|
PREFIX_INSTALL=$(PREFIX)/relibc-install
|
|
|
|
PREFIX_PATH=$(ROOT)/$(PREFIX_INSTALL)/bin
|
2018-11-26 21:28:51 +01:00
|
|
|
|
2019-04-20 05:24:21 +02:00
|
|
|
export PREFIX_RUSTFLAGS=-L $(ROOT)/$(PREFIX_INSTALL)/$(TARGET)/lib
|
2020-05-28 22:55:57 +02:00
|
|
|
export RUSTUP_TOOLCHAIN=$(ROOT)/$(PREFIX_INSTALL)
|
2021-07-19 04:48:01 +02:00
|
|
|
export REDOXER_TOOLCHAIN=$(RUSTUP_TOOLCHAIN)
|
2018-11-26 21:28:51 +01:00
|
|
|
|
2018-11-28 03:45:52 +01:00
|
|
|
prefix: $(PREFIX_INSTALL)
|
2018-08-17 04:30:54 +02:00
|
|
|
|
2019-03-17 04:47:10 +01:00
|
|
|
PREFIX_STRIP=\
|
|
|
|
mkdir -p bin libexec "$(TARGET)/bin" && \
|
2019-04-16 05:19:54 +02:00
|
|
|
find bin libexec "$(TARGET)/bin" "$(TARGET)/lib" \
|
|
|
|
-type f \
|
|
|
|
-exec strip --strip-unneeded {} ';' \
|
|
|
|
2> /dev/null
|
2019-03-17 04:37:06 +01:00
|
|
|
|
2022-11-12 00:23:08 +01:00
|
|
|
$(PREFIX)/relibc-install: $(ROOT)/relibc | $(PREFIX)/rust-install $(CONTAINER_TAG)
|
|
|
|
ifeq ($(PODMAN_BUILD),1)
|
|
|
|
$(PODMAN_RUN) $(MAKE) $@
|
|
|
|
else
|
2019-03-17 02:09:43 +01:00
|
|
|
rm -rf "$@.partial" "$@"
|
2020-05-28 22:55:57 +02:00
|
|
|
cp -r "$(PREFIX)/rust-install" "$@.partial"
|
2020-05-22 23:45:13 +02:00
|
|
|
rm -rf "$@.partial/$(TARGET)/include/"*
|
2020-06-01 22:33:30 +02:00
|
|
|
cp -r "$(PREFIX)/rust-install/$(TARGET)/include/c++" "$@.partial/$(TARGET)/include/c++"
|
2021-06-18 21:44:00 +02:00
|
|
|
cp -r "$(PREFIX)/rust-install/lib/rustlib/$(HOST_TARGET)/lib/" "$@.partial/lib/rustlib/$(HOST_TARGET)/"
|
2021-06-18 21:54:40 +02:00
|
|
|
rm -rf $@.partial/lib/rustlib/src
|
2021-03-20 13:19:48 +01:00
|
|
|
mkdir $@.partial/lib/rustlib/src
|
|
|
|
ln -s $(ROOT)/rust $@.partial/lib/rustlib/src
|
2019-03-17 02:09:43 +01:00
|
|
|
cd "$<" && \
|
|
|
|
export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \
|
2021-03-20 13:19:48 +01:00
|
|
|
export CARGO="env -u CARGO cargo" && \
|
2020-05-03 02:13:21 +02:00
|
|
|
$(MAKE) -j `$(NPROC)` all && \
|
|
|
|
$(MAKE) -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial/$(TARGET)"
|
2020-01-22 03:39:28 +01:00
|
|
|
cd "$@.partial" && $(PREFIX_STRIP)
|
|
|
|
touch "$@.partial"
|
|
|
|
mv "$@.partial" "$@"
|
2022-11-12 00:23:08 +01:00
|
|
|
endif
|
2019-03-17 02:09:43 +01:00
|
|
|
|
2019-03-17 03:01:34 +01:00
|
|
|
$(PREFIX)/relibc-install.tar.gz: $(PREFIX)/relibc-install
|
|
|
|
tar \
|
|
|
|
--create \
|
|
|
|
--gzip \
|
|
|
|
--file "$@" \
|
|
|
|
--directory="$<" \
|
|
|
|
.
|
|
|
|
|
2019-03-17 02:09:43 +01:00
|
|
|
ifeq ($(PREFIX_BINARY),1)
|
|
|
|
|
2020-05-22 23:45:13 +02:00
|
|
|
$(PREFIX)/rust-install.tar.gz:
|
|
|
|
mkdir -p "$(@D)"
|
2021-06-18 21:54:40 +02:00
|
|
|
#TODO: figure out why rust-install.tar.gz is missing /lib/rustlib/$(HOST_TARGET)/lib
|
|
|
|
wget -O $@.partial "https://static.redox-os.org/toolchain/$(TARGET)/relibc-install.tar.gz"
|
2020-05-22 23:45:13 +02:00
|
|
|
mv $@.partial $@
|
|
|
|
|
|
|
|
$(PREFIX)/rust-install: $(PREFIX)/rust-install.tar.gz
|
|
|
|
rm -rf "$@.partial" "$@"
|
|
|
|
mkdir -p "$@.partial"
|
|
|
|
tar --extract --file "$<" --directory "$@.partial" --strip-components=1
|
|
|
|
touch "$@.partial"
|
|
|
|
mv "$@.partial" "$@"
|
|
|
|
|
2019-03-17 02:09:43 +01:00
|
|
|
else
|
|
|
|
|
2020-05-28 22:55:57 +02:00
|
|
|
PREFIX_BASE_INSTALL=$(PREFIX)/rust-freestanding-install
|
|
|
|
PREFIX_FREESTANDING_INSTALL=$(PREFIX)/gcc-freestanding-install
|
|
|
|
|
|
|
|
PREFIX_BASE_PATH=$(ROOT)/$(PREFIX_BASE_INSTALL)/bin
|
|
|
|
PREFIX_FREESTANDING_PATH=$(ROOT)/$(PREFIX_FREESTANDING_INSTALL)/bin
|
|
|
|
|
2018-08-17 04:30:54 +02:00
|
|
|
$(PREFIX)/binutils.tar.bz2:
|
|
|
|
mkdir -p "$(@D)"
|
2018-11-28 03:45:52 +01:00
|
|
|
wget -O $@.partial "https://gitlab.redox-os.org/redox-os/binutils-gdb/-/archive/redox/binutils-gdb-redox.tar.bz2"
|
2018-08-17 04:30:54 +02:00
|
|
|
mv $@.partial $@
|
|
|
|
|
|
|
|
$(PREFIX)/binutils: $(PREFIX)/binutils.tar.bz2
|
2019-03-17 02:54:24 +01:00
|
|
|
rm -rf "$@.partial" "$@"
|
2018-08-17 04:30:54 +02:00
|
|
|
mkdir -p "$@.partial"
|
|
|
|
tar --extract --file "$<" --directory "$@.partial" --strip-components=1
|
2019-03-17 02:09:43 +01:00
|
|
|
touch "$@.partial"
|
2018-08-17 04:30:54 +02:00
|
|
|
mv "$@.partial" "$@"
|
|
|
|
|
2022-11-12 00:23:08 +01:00
|
|
|
$(PREFIX)/binutils-install: $(PREFIX)/binutils $(CONTAINER_TAG)
|
|
|
|
ifeq ($(PODMAN_BUILD),1)
|
|
|
|
$(PODMAN_RUN) $(MAKE) $@
|
|
|
|
else
|
2019-03-17 02:09:43 +01:00
|
|
|
rm -rf "$<-build" "$@.partial" "$@"
|
|
|
|
mkdir -p "$<-build" "$@.partial"
|
2018-08-17 04:30:54 +02:00
|
|
|
cd "$<-build" && \
|
2019-03-17 02:09:43 +01:00
|
|
|
"$(ROOT)/$</configure" \
|
2018-12-15 00:01:31 +01:00
|
|
|
--target="$(TARGET)" \
|
|
|
|
--program-prefix="$(TARGET)-" \
|
2019-03-17 02:09:43 +01:00
|
|
|
--prefix="" \
|
2018-12-15 00:01:31 +01:00
|
|
|
--disable-werror \
|
|
|
|
&& \
|
2020-05-03 02:13:21 +02:00
|
|
|
$(MAKE) -j `$(NPROC)` all && \
|
|
|
|
$(MAKE) -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial"
|
2019-03-17 04:20:02 +01:00
|
|
|
rm -rf "$<-build"
|
2019-03-17 04:37:06 +01:00
|
|
|
cd "$@.partial" && $(PREFIX_STRIP)
|
2019-03-17 02:09:43 +01:00
|
|
|
touch "$@.partial"
|
|
|
|
mv "$@.partial" "$@"
|
2022-11-12 00:23:08 +01:00
|
|
|
endif
|
2018-08-17 04:30:54 +02:00
|
|
|
|
|
|
|
$(PREFIX)/gcc.tar.bz2:
|
|
|
|
mkdir -p "$(@D)"
|
|
|
|
wget -O $@.partial "https://gitlab.redox-os.org/redox-os/gcc/-/archive/redox/gcc-redox.tar.bz2"
|
2018-08-18 02:47:48 +02:00
|
|
|
mv "$@.partial" "$@"
|
2018-08-17 04:30:54 +02:00
|
|
|
|
|
|
|
$(PREFIX)/gcc: $(PREFIX)/gcc.tar.bz2
|
|
|
|
mkdir -p "$@.partial"
|
|
|
|
tar --extract --file "$<" --directory "$@.partial" --strip-components=1
|
|
|
|
cd "$@.partial" && ./contrib/download_prerequisites
|
2019-03-17 02:09:43 +01:00
|
|
|
touch "$@.partial"
|
2018-08-17 04:30:54 +02:00
|
|
|
mv "$@.partial" "$@"
|
|
|
|
|
2022-11-12 00:23:08 +01:00
|
|
|
$(PREFIX)/gcc-freestanding-install: $(PREFIX)/gcc | $(PREFIX)/binutils-install $(CONTAINER_TAG)
|
|
|
|
ifeq ($(PODMAN_BUILD),1)
|
|
|
|
$(PODMAN_RUN) $(MAKE) $@
|
|
|
|
else
|
2019-03-17 02:09:43 +01:00
|
|
|
rm -rf "$<-freestanding-build" "$@.partial" "$@"
|
2018-11-28 03:45:52 +01:00
|
|
|
mkdir -p "$<-freestanding-build"
|
2019-03-17 02:09:43 +01:00
|
|
|
cp -r "$(PREFIX)/binutils-install" "$@.partial"
|
2018-08-17 04:30:54 +02:00
|
|
|
cd "$<-freestanding-build" && \
|
2019-03-17 02:09:43 +01:00
|
|
|
export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \
|
|
|
|
"$(ROOT)/$</configure" \
|
2018-12-15 00:01:31 +01:00
|
|
|
--target="$(TARGET)" \
|
|
|
|
--program-prefix="$(TARGET)-" \
|
2019-03-17 02:09:43 +01:00
|
|
|
--prefix="" \
|
2018-12-15 00:01:31 +01:00
|
|
|
--disable-nls \
|
|
|
|
--enable-languages=c,c++ \
|
|
|
|
--without-headers \
|
|
|
|
&& \
|
2020-05-03 02:13:21 +02:00
|
|
|
$(MAKE) -j `$(NPROC)` all-gcc && \
|
|
|
|
$(MAKE) -j `$(NPROC)` install-gcc DESTDIR="$(ROOT)/$@.partial"
|
2019-03-17 04:20:02 +01:00
|
|
|
rm -rf "$<-freestanding-build"
|
2019-03-17 04:37:06 +01:00
|
|
|
cd "$@.partial" && $(PREFIX_STRIP)
|
2019-03-17 02:09:43 +01:00
|
|
|
touch "$@.partial"
|
|
|
|
mv "$@.partial" "$@"
|
2022-11-12 00:23:08 +01:00
|
|
|
endif
|
2018-08-17 04:30:54 +02:00
|
|
|
|
2022-11-12 00:23:08 +01:00
|
|
|
$(PREFIX)/rust-freestanding-install: $(ROOT)/rust | $(PREFIX)/binutils-install $(CONTAINER_TAG)
|
|
|
|
ifeq ($(PODMAN_BUILD),1)
|
|
|
|
$(PODMAN_RUN) $(MAKE) $@
|
|
|
|
else
|
2019-03-17 02:09:43 +01:00
|
|
|
rm -rf "$(PREFIX)/rust-freestanding-build" "$@.partial" "$@"
|
2018-11-28 03:45:52 +01:00
|
|
|
mkdir -p "$(PREFIX)/rust-freestanding-build"
|
2019-03-30 03:46:23 +01:00
|
|
|
cp -r "$(PREFIX)/binutils-install" "$@.partial"
|
2018-11-28 03:45:52 +01:00
|
|
|
cd "$(PREFIX)/rust-freestanding-build" && \
|
2019-03-17 02:09:43 +01:00
|
|
|
export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \
|
2019-03-30 03:46:23 +01:00
|
|
|
"$</configure" \
|
|
|
|
--prefix="/" \
|
|
|
|
--disable-docs \
|
2019-06-21 02:37:26 +02:00
|
|
|
--enable-cargo-native-static \
|
2019-06-20 04:09:48 +02:00
|
|
|
--enable-extended \
|
2022-08-17 01:09:46 +02:00
|
|
|
--enable-lld \
|
2019-06-21 02:38:54 +02:00
|
|
|
--enable-llvm-static-stdcpp \
|
2022-03-26 18:28:22 +01:00
|
|
|
--set 'llvm.targets=AArch64;X86' \
|
|
|
|
--set 'llvm.experimental-targets=' \
|
2019-06-20 05:19:59 +02:00
|
|
|
--tools=cargo \
|
2019-03-30 03:46:23 +01:00
|
|
|
&& \
|
2020-05-03 02:13:21 +02:00
|
|
|
$(MAKE) -j `$(NPROC)` && \
|
|
|
|
$(MAKE) -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial"
|
2019-03-17 04:20:02 +01:00
|
|
|
rm -rf "$(PREFIX)/rust-freestanding-build"
|
2022-07-26 15:38:01 +02:00
|
|
|
mkdir -p "$@.partial/lib/rustlib/$(HOST_TARGET)/bin"
|
2019-03-17 04:37:06 +01:00
|
|
|
cd "$@.partial" && $(PREFIX_STRIP)
|
2019-03-17 02:09:43 +01:00
|
|
|
touch "$@.partial"
|
|
|
|
mv "$@.partial" "$@"
|
2021-03-20 13:19:48 +01:00
|
|
|
mkdir $@/lib/rustlib/src
|
|
|
|
ln -s $(ROOT)/rust $@/lib/rustlib/src
|
2022-11-12 00:23:08 +01:00
|
|
|
endif
|
2018-11-28 03:45:52 +01:00
|
|
|
|
2022-11-12 00:23:08 +01:00
|
|
|
$(PREFIX)/relibc-freestanding-install: $(ROOT)/relibc | $(PREFIX_BASE_INSTALL) $(PREFIX_FREESTANDING_INSTALL) $(CONTAINER_TAG)
|
|
|
|
ifeq ($(PODMAN_BUILD),1)
|
|
|
|
$(PODMAN_RUN) $(MAKE) $@
|
|
|
|
else
|
2019-03-17 02:09:43 +01:00
|
|
|
rm -rf "$@.partial" "$@"
|
|
|
|
mkdir -p "$@.partial"
|
2018-11-26 21:28:51 +01:00
|
|
|
cd "$<" && \
|
2020-06-07 05:12:15 +02:00
|
|
|
export PATH="$(PREFIX_BASE_PATH):$(PREFIX_FREESTANDING_PATH):$$PATH" && \
|
2021-03-20 13:19:48 +01:00
|
|
|
export CARGO="env -u CARGO -u RUSTUP_TOOLCHAIN cargo" && \
|
2019-04-08 00:39:27 +02:00
|
|
|
export CC_$(subst -,_,$(TARGET))="$(TARGET)-gcc -isystem $(ROOT)/$@.partial/$(TARGET)/include" && \
|
2020-05-03 02:13:21 +02:00
|
|
|
$(MAKE) -j `$(NPROC)` all && \
|
|
|
|
$(MAKE) -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial/$(TARGET)"
|
2019-03-17 04:37:06 +01:00
|
|
|
cd "$@.partial" && $(PREFIX_STRIP)
|
2019-03-17 02:09:43 +01:00
|
|
|
touch "$@.partial"
|
|
|
|
mv "$@.partial" "$@"
|
2022-11-12 00:23:08 +01:00
|
|
|
endif
|
2018-08-17 04:30:54 +02:00
|
|
|
|
2022-11-12 00:23:08 +01:00
|
|
|
$(PREFIX)/gcc-install: $(PREFIX)/gcc | $(PREFIX)/relibc-freestanding-install $(CONTAINER_TAG)
|
|
|
|
ifeq ($(PODMAN_BUILD),1)
|
|
|
|
$(PODMAN_RUN) $(MAKE) $@
|
|
|
|
else
|
2019-03-17 02:09:43 +01:00
|
|
|
rm -rf "$<-build" "$@.partial" "$@"
|
2018-11-28 03:45:52 +01:00
|
|
|
mkdir -p "$<-build"
|
2019-03-30 03:57:33 +01:00
|
|
|
cp -r "$(PREFIX_BASE_INSTALL)" "$@.partial"
|
2018-08-17 04:30:54 +02:00
|
|
|
cd "$<-build" && \
|
2019-03-17 02:09:43 +01:00
|
|
|
export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \
|
|
|
|
"$(ROOT)/$</configure" \
|
2018-12-15 00:01:31 +01:00
|
|
|
--target="$(TARGET)" \
|
|
|
|
--program-prefix="$(TARGET)-" \
|
2019-03-17 02:09:43 +01:00
|
|
|
--prefix="" \
|
|
|
|
--with-sysroot \
|
|
|
|
--with-build-sysroot="$(ROOT)/$(PREFIX)/relibc-freestanding-install/$(TARGET)" \
|
|
|
|
--with-native-system-header-dir="/include" \
|
2019-04-16 05:07:50 +02:00
|
|
|
--disable-multilib \
|
2018-12-15 00:01:31 +01:00
|
|
|
--disable-nls \
|
|
|
|
--disable-werror \
|
|
|
|
--enable-languages=c,c++ \
|
2019-04-11 04:49:09 +02:00
|
|
|
--enable-shared \
|
2018-12-15 00:01:31 +01:00
|
|
|
--enable-threads=posix \
|
|
|
|
&& \
|
2020-05-03 02:13:21 +02:00
|
|
|
$(MAKE) -j `$(NPROC)` all-gcc all-target-libgcc all-target-libstdc++-v3 && \
|
|
|
|
$(MAKE) -j `$(NPROC)` install-gcc install-target-libgcc install-target-libstdc++-v3 DESTDIR="$(ROOT)/$@.partial" && \
|
2019-04-16 05:19:40 +02:00
|
|
|
rm $(ROOT)/$@.partial/$(TARGET)/lib/*.la
|
2019-03-17 04:20:02 +01:00
|
|
|
rm -rf "$<-build"
|
2019-03-17 04:37:06 +01:00
|
|
|
cd "$@.partial" && $(PREFIX_STRIP)
|
2019-03-17 02:09:43 +01:00
|
|
|
touch "$@.partial"
|
|
|
|
mv "$@.partial" "$@"
|
2022-11-12 00:23:08 +01:00
|
|
|
endif
|
2019-03-17 02:09:43 +01:00
|
|
|
|
|
|
|
$(PREFIX)/gcc-install.tar.gz: $(PREFIX)/gcc-install
|
|
|
|
tar \
|
|
|
|
--create \
|
|
|
|
--gzip \
|
|
|
|
--file "$@" \
|
|
|
|
--directory="$<" \
|
|
|
|
.
|
2020-05-22 23:45:13 +02:00
|
|
|
|
2022-11-12 00:23:08 +01:00
|
|
|
$(PREFIX)/rust-install: $(ROOT)/rust | $(PREFIX)/gcc-install $(PREFIX)/relibc-freestanding-install $(CONTAINER_TAG)
|
|
|
|
ifeq ($(PODMAN_BUILD),1)
|
|
|
|
$(PODMAN_RUN) $(MAKE) $@
|
|
|
|
else
|
2020-05-22 23:45:13 +02:00
|
|
|
rm -rf "$(PREFIX)/rust-build" "$@.partial" "$@"
|
|
|
|
mkdir -p "$(PREFIX)/rust-build"
|
2020-05-29 00:39:56 +02:00
|
|
|
cp -r "$(PREFIX)/gcc-install" "$@.partial"
|
2020-06-12 07:25:18 +02:00
|
|
|
cp -r "$(PREFIX)/relibc-freestanding-install/$(TARGET)" "$@.partial"
|
2020-05-22 23:45:13 +02:00
|
|
|
cd "$(PREFIX)/rust-build" && \
|
|
|
|
export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \
|
|
|
|
"$</configure" \
|
|
|
|
--prefix="/" \
|
|
|
|
--disable-docs \
|
|
|
|
--enable-cargo-native-static \
|
|
|
|
--enable-extended \
|
2022-08-17 01:09:46 +02:00
|
|
|
--enable-lld \
|
2020-05-22 23:45:13 +02:00
|
|
|
--enable-llvm-static-stdcpp \
|
|
|
|
--tools=cargo \
|
2021-07-12 15:29:29 +02:00
|
|
|
--target="$(HOST_TARGET),$(TARGET)" \
|
2020-05-22 23:45:13 +02:00
|
|
|
&& \
|
|
|
|
$(MAKE) -j `$(NPROC)` && \
|
|
|
|
rm -rf "$(ROOT)/$@.partial/lib/rustlib" "$(ROOT)/$@.partial/share/doc/rust" && \
|
|
|
|
$(MAKE) -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial"
|
|
|
|
rm -rf "$(PREFIX)/rust-build"
|
2022-07-26 15:38:01 +02:00
|
|
|
mkdir -p "$@.partial/lib/rustlib/$(HOST_TARGET)/bin"
|
2020-05-22 23:45:13 +02:00
|
|
|
cd "$@.partial" && find . -name *.old -exec rm {} ';' && $(PREFIX_STRIP)
|
|
|
|
touch "$@.partial"
|
|
|
|
mv "$@.partial" "$@"
|
2022-11-12 00:23:08 +01:00
|
|
|
endif
|
2020-05-22 23:45:13 +02:00
|
|
|
|
|
|
|
$(PREFIX)/rust-install.tar.gz: $(PREFIX)/rust-install
|
|
|
|
tar \
|
|
|
|
--create \
|
|
|
|
--gzip \
|
|
|
|
--file "$@" \
|
|
|
|
--directory="$<" \
|
|
|
|
.
|
2019-03-17 02:09:43 +01:00
|
|
|
endif
|