Merge branch 'prefix-vars' into 'master'

prefix: Extract paths into variables

See merge request redox-os/redox!2429
This commit is contained in:
Jeremy Soller 2026-11-05 13:11:42 -07:00
commit bd81cc1c25

View File

@ -4,7 +4,15 @@ PREFIX=prefix/$(TARGET)
PREFIX_INSTALL=$(PREFIX)/sysroot/
PREFIX_PATH=$(ROOT)/$(PREFIX_INSTALL)/bin
LIBTOOL_PATH=$(ROOT)/$(PREFIX)/libtool-install
LIBTOOL_INSTALL?=$(ROOT)/$(PREFIX)/libtool-install
BINUTILS_INSTALL?=$(ROOT)/$(PREFIX)/binutils-install
CLANG_INSTALL?=$(ROOT)/$(PREFIX)/clang-install
RELIBC_FREESTANDING_INSTALL?=$(ROOT)/$(PREFIX)/relibc-freestanding-install
GCC_FREESTANDING_INSTALL?=$(ROOT)/$(PREFIX)/gcc-freestanding-install
GCC_INSTALL?=$(ROOT)/$(PREFIX)/gcc-install
RUST_INSTALL?=$(ROOT)/$(PREFIX)/rust-install
CLANG_INSTALL?=$(ROOT)/$(PREFIX)/clang-install
WASIP1_LIBC_INSTALL?=$(ROOT)/$(PREFIX)/wasip1-libc-install
BINUTILS_TARGET=recipes/dev/binutils-gdb/target/$(HOST_TARGET)/$(TARGET)
LIBTOOL_TARGET=recipes/dev/libtool/target/$(HOST_TARGET)
GCC_TARGET=recipes/dev/gcc13/target/$(HOST_TARGET)/$(TARGET)
@ -22,10 +30,10 @@ LIBGMP_TARGET=recipes/libs/libgmp/target/$(HOST_TARGET)/$(TARGET)
LIBMPFR_TARGET=recipes/libs/libmpfr/target/$(HOST_TARGET)/$(TARGET)
LIBMPC_TARGET=recipes/libs/mpc/target/$(HOST_TARGET)/$(TARGET)
LIBZLIB_TARGET=recipes/libs/zlib/target/$(HOST_TARGET)/$(TARGET)
LIBZSTD_TARGET=recipes/libs/zstd/target/$(HOST_TARGET)/$(TARGET)
LIBZSTD_TARGET=recipes/archives/zstd/target/$(HOST_TARGET)/$(TARGET)
LIBSSL_TARGET=recipes/libs/openssl3/target/$(HOST_TARGET)/$(TARGET)
LIBHTTP2_TARGET=recipes/libs/nghttp2/target/$(HOST_TARGET)/$(TARGET)
LIBCURL_TARGET=recipes/net/download/curl/target/$(HOST_TARGET)/$(TARGET)
LIBCURL_TARGET=recipes/net/curl/target/$(HOST_TARGET)/$(TARGET)
LIBGCC_TARGET=recipes/libs/libgcc/target/$(TARGET)
LIBCPP_TARGET=recipes/libs/libstdcxx/target/$(TARGET)
@ -63,15 +71,15 @@ else
@echo "\033[1;36;49mBuilding sysroot\033[0m"
rm -rf "$@.partial" "$@"
mkdir "$@.partial"
cp -r "$(PREFIX)/gcc-install/". "$@.partial"
cp -r "$(PREFIX)/rust-install/". "$@.partial"
cp -r "$(PREFIX)/clang-install/". "$@.partial"
cp -r "$(GCC_INSTALL)/". "$@.partial"
cp -r "$(RUST_INSTALL)/". "$@.partial"
cp -r "$(CLANG_INSTALL)/". "$@.partial"
ifneq ($(HOSTED_REDOX),1)
rm -rf "$@.partial/$(GNU_TARGET)/include/"*
cp -r "$(PREFIX)/gcc-install/$(GNU_TARGET)/include/c++" "$@.partial/$(GNU_TARGET)/include/c++"
cp -r "$(GCC_INSTALL)/$(GNU_TARGET)/include/c++" "$@.partial/$(GNU_TARGET)/include/c++"
else
rm -rf "$@.partial/include/"*
cp -r "$(PREFIX)/gcc-install/include/c++" "$@.partial/include/c++"
cp -r "$(GCC_INSTALL)/include/c++" "$@.partial/include/c++"
endif
$(REPO_BIN) clean-target relibc $(COOKBOOK_OPTS)
export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \
@ -242,11 +250,11 @@ ifeq ($(PODMAN_BUILD),1)
else
@echo "\033[1;36;49mFetching prefix sources\033[0m"
rm -f "$@"
export $(PREFIX_CONFIG) COOKBOOK_LIBTOOL_DIR=$(LIBTOOL_PATH) PATH="$(ROOT)/$(PREFIX)/libtool-install/bin:$$PATH" \
export $(PREFIX_CONFIG) COOKBOOK_LIBTOOL_DIR=$(LIBTOOL_INSTALL) PATH="$(LIBTOOL_INSTALL)/bin:$$PATH" \
COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=$(TARGET) COOKBOOK_CROSS_GNU_TARGET=$(GNU_TARGET) && \
$(REPO_BIN) fetch host:binutils-gdb host:gcc13 host:llvm21 relibc
ifneq ($(PREFIX_USE_UPSTREAM_RUST_COMPILER),1)
export $(PREFIX_CONFIG) COOKBOOK_LIBTOOL_DIR=$(LIBTOOL_PATH) PATH="$(ROOT)/$(PREFIX)/libtool-install/bin:$$PATH" \
export $(PREFIX_CONFIG) COOKBOOK_LIBTOOL_DIR=$(LIBTOOL_INSTALL) PATH="$(LIBTOOL_INSTALL)/bin:$$PATH" \
COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=$(TARGET) COOKBOOK_CROSS_GNU_TARGET=$(GNU_TARGET) && \
$(REPO_BIN) fetch host:wasi-libc host:rust
endif
@ -260,7 +268,7 @@ else
@echo "\033[1;36;49mBuilding binutils-install\033[0m"
rm -rf "$@.partial" "$@"
mkdir -p "$@.partial"
export $(PREFIX_CONFIG) COOKBOOK_LIBTOOL_DIR=$(LIBTOOL_PATH) PATH="$(ROOT)/$(PREFIX)/libtool-install/bin:$$PATH" \
export $(PREFIX_CONFIG) COOKBOOK_LIBTOOL_DIR=$(LIBTOOL_INSTALL) PATH="$(LIBTOOL_INSTALL)/bin:$$PATH" \
COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=$(TARGET) COOKBOOK_CROSS_GNU_TARGET=$(GNU_TARGET) && \
$(REPO_BIN) cook host:binutils-gdb
cp -r "$(BINUTILS_TARGET)/stage/usr/". "$@.partial"
@ -273,17 +281,17 @@ ifeq ($(PODMAN_BUILD),1)
$(PODMAN_RUN) make $@
else
@echo "\033[1;36;49mBuilding gcc-freestanding-install\033[0m"
rm -rf "$@.partial" "$@" $(PREFIX)/relibc-freestanding-install $(PREFIX)/sysroot
mkdir -p "$@.partial" $(PREFIX)/relibc-freestanding-install/$(GNU_TARGET)/include
export $(PREFIX_CONFIG) PATH="$(LIBTOOL_PATH)/bin:$(ROOT)/$(PREFIX)/binutils-install/bin:$$PATH" \
COOKBOOK_LIBTOOL_DIR=$(LIBTOOL_PATH) COOKBOOK_CROSS_TARGET=$(TARGET) COOKBOOK_CROSS_GNU_TARGET=$(GNU_TARGET) \
ACLOCAL_PATH=$(LIBTOOL_PATH)/share/aclocal:$$ACLOCAL_PATH \
COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_SYSROOT=$(ROOT)/$(PREFIX)/relibc-freestanding-install/$(GNU_TARGET) && \
rm -rf "$@.partial" "$@" $(RELIBC_FREESTANDING_INSTALL) $(PREFIX)/sysroot
mkdir -p "$@.partial" $(RELIBC_FREESTANDING_INSTALL)/$(GNU_TARGET)/include
export $(PREFIX_CONFIG) PATH="$(LIBTOOL_INSTALL)/bin:$(BINUTILS_INSTALL)/bin:$$PATH" \
COOKBOOK_LIBTOOL_DIR=$(LIBTOOL_INSTALL) COOKBOOK_CROSS_TARGET=$(TARGET) COOKBOOK_CROSS_GNU_TARGET=$(GNU_TARGET) \
ACLOCAL_PATH=$(LIBTOOL_INSTALL)/share/aclocal:$$ACLOCAL_PATH \
COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_SYSROOT=$(RELIBC_FREESTANDING_INSTALL)/$(GNU_TARGET) && \
$(REPO_BIN) cook host:gcc13
cp -r "$(GCC_TARGET)/stage/usr/". "$@.partial"
cp -r "$(GCC_TARGET)/stage.cxx/usr/". "$@.partial"
cp -r "$(PREFIX)/binutils-install/". "$@.partial"
rm -rf $(PREFIX)/relibc-freestanding-install
cp -r "$(BINUTILS_INSTALL)/". "$@.partial"
rm -rf "$(RELIBC_FREESTANDING_INSTALL)"
touch "$@.partial"
mv "$@.partial" "$@"
endif
@ -296,7 +304,7 @@ else
rm -rf "$@.partial" "$@"
mkdir -p "$@.partial"
export CARGO="env -u CARGO -u RUSTUP_TOOLCHAIN cargo" RUSTUP="env -u CARGO -u RUSTUP_TOOLCHAIN rustup" && \
export PATH="$(ROOT)/$(PREFIX)/gcc-freestanding-install/bin:$$PATH" && \
export PATH="$(GCC_FREESTANDING_INSTALL)/bin:$$PATH" && \
export CC_$(subst -,_,$(TARGET))="$(GNU_TARGET)-gcc -isystem $(ROOT)/$@.partial/$(GNU_TARGET)/include" LINKFLAGS="" && \
export $(PREFIX_CONFIG) COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=$(HOST_TARGET) && \
$(REPO_BIN) cook relibc
@ -313,12 +321,12 @@ else
rm -rf "$@.partial" "$@-build.partial" "$@"
if [ ! -d "$(ROOT)/$(GCC_TARGET)" ]; then \
echo "\033[1;38;5;196m Incomplete build stages. Please re-run the build\033[0m"; \
rm -rf "$(PREFIX)"/gcc-freestanding-install && "$(PREFIX)"/relibc-freestanding-install && \
rm -rf "$(GCC_FREESTANDING_INSTALL)" && "$(RELIBC_FREESTANDING_INSTALL)" && \
exit 1; fi
mkdir -p "$@.partial" "$@-build.partial"
cp -r "$(PREFIX)/gcc-freestanding-install/". "$@.partial"
cp -r "$(PREFIX)/relibc-freestanding-install/". "$@.partial"
cp -r "$(PREFIX)/libtool-install/". "$@.partial"
cp -r "$(GCC_FREESTANDING_INSTALL)/". "$@.partial"
cp -r "$(RELIBC_FREESTANDING_INSTALL)/". "$@.partial"
cp -r "$(LIBTOOL_INSTALL)/". "$@.partial"
@#TODO: how to make this not conflict with libc?
rm -f "$@.partial/lib/gcc/$(GNU_TARGET)/13.2.0/include/limits.h"
# libgcc and freestanding libstdcxx
@ -334,7 +342,7 @@ else
rm -f "$@.partial"/$(GNU_TARGET)/lib/libsupc++.la
# hosted libstdcxx
export PATH="$(ROOT)/$@.partial/bin:$$PATH" \
ACLOCAL_PATH="$(LIBTOOL_PATH)/share/aclocal:$$ACLOCAL_PATH" && \
ACLOCAL_PATH="$(LIBTOOL_INSTALL)/share/aclocal:$$ACLOCAL_PATH" && \
export $(PREFIX_CONFIG) "COOKBOOK_HOST_SYSROOT=$(ROOT)/$@.partial" COOKBOOK_CROSS_TARGET=$(HOST_TARGET) && \
rm -rf "$(LIBSTDCXX_TARGET)/stage" && $(REPO_BIN) cook libstdcxx-v3
cp -r "$(LIBSTDCXX_TARGET)/stage/usr/". "$@.partial/$(GNU_TARGET)"
@ -428,7 +436,7 @@ ifeq ($(PODMAN_BUILD),1)
else
@echo "\033[1;36;49mBuilding wasip1-libc-install\033[0m"
rm -rf "$@.partial" "$@"
export REDOXER_TOOLCHAIN=$(ROOT)/$(PREFIX)/clang-install $(PREFIX_CONFIG) PATH="$(ROOT)/$(PREFIX)/clang-install/bin:$$PATH" \
export REDOXER_TOOLCHAIN=$(CLANG_INSTALL) $(PREFIX_CONFIG) PATH="$(CLANG_INSTALL)/bin:$$PATH" \
COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=wasm32-wasip1 COOKBOOK_CROSS_GNU_TARGET=wasm32-wasip1 && \
$(REPO_BIN) cook host:wasi-libc
cp -r "$(WASIP1_LIBC_TARGET)/stage/usr/". "$@.partial"
@ -445,8 +453,8 @@ ifeq ($(PODMAN_BUILD),1)
else
@echo "\033[1;36;49mBuilding rust-install\033[0m"
rm -rf "$@.partial" "$@"
export PATH="$(LIBTOOL_PATH)/bin:$(ROOT)/$(PREFIX)/gcc-install/bin:$$PATH" WASI_SDK_PATH=$(ROOT)/$(PREFIX)/wasip1-libc-install \
$(PREFIX_CONFIG) COOKBOOK_LIBTOOL_DIR=$(LIBTOOL_PATH) COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=$(TARGET) COOKBOOK_CROSS_GNU_TARGET=$(GNU_TARGET) && \
export PATH="$(LIBTOOL_INSTALL)/bin:$(GCC_INSTALL_INSTALL)/bin:$$PATH" WASI_SDK_PATH=$(WASIP1_LIBC_INSTALL) \
$(PREFIX_CONFIG) COOKBOOK_LIBTOOL_DIR=$(LIBTOOL_INSTALL) COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=$(TARGET) COOKBOOK_CROSS_GNU_TARGET=$(GNU_TARGET) && \
$(REPO_BIN) cook host:rust
cp -r "$(RUST_TARGET)/stage/usr/". "$@.partial"
mv "$@.partial" "$@"
@ -464,8 +472,8 @@ ifeq ($(PODMAN_BUILD),1)
else
@echo "\033[1;36;49mBuilding clang-install\033[0m"
rm -rf "$@.partial" "$@"
export PATH="$(LIBTOOL_PATH)/bin:$$PATH" $(PREFIX_CONFIG) \
COOKBOOK_LIBTOOL_DIR=$(LIBTOOL_PATH) COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=$(TARGET) && \
export PATH="$(LIBTOOL_INSTALL)/bin:$$PATH" $(PREFIX_CONFIG) \
COOKBOOK_LIBTOOL_DIR=$(LIBTOOL_INSTALL) COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=$(TARGET) && \
$(REPO_BIN) cook host:llvm21 host:clang21 host:lld21
cp -r "$(LLVM_TARGET)/stage/usr/". "$@.partial"
cp -r "$(LLVM_TARGET)/stage.runtime/usr/". "$@.partial"
@ -473,7 +481,7 @@ else
cp -r "$(CLANG_TARGET)/stage/usr/". "$@.partial"
cp -r "$(LLD_TARGET)/stage/usr/". "$@.partial"
rm -rf "$@.partial/lib/"*.a
echo "--sysroot=$(ROOT)/$(PREFIX)/gcc-install" > "$@.partial/bin/$(GNU_TARGET).cfg"
echo "--sysroot=$(GCC_INSTALL)" > "$@.partial/bin/$(GNU_TARGET).cfg"
ln -s clang-21 "$@.partial/bin/wasm32-wasip1-clang"
ln -s clang-21 "$@.partial/bin/$(GNU_TARGET)-clang"
ln -s clang++ "$@.partial/bin/$(GNU_TARGET)-clang++"