# Configuration file for the Rust/GCC cross-compilers, relibc and libtool PREFIX=prefix/$(TARGET) PREFIX_INSTALL=$(PREFIX)/sysroot/ PREFIX_PATH=$(ROOT)/$(PREFIX_INSTALL)/bin BINUTILS_BRANCH=redox-2.43.1 GCC_BRANCH=redox-13.2.0 LIBTOOL_VERSION=2.5.4 export PREFIX_RUSTFLAGS=-L $(ROOT)/$(PREFIX_INSTALL)/$(TARGET)/lib export RUSTUP_TOOLCHAIN=$(ROOT)/$(PREFIX_INSTALL) export REDOXER_TOOLCHAIN=$(RUSTUP_TOOLCHAIN) export CC= export CXX= ifeq ($(TARGET),riscv64gc-unknown-redox) GCC_ARCH?=--with-arch=rv64gc --with-abi=lp64d else GCC_ARCH?= endif # TODO(andypython): Upstream libtool patches to remove the need to locally build libtool. # Cannot be CI built, i.e. be a part of relibc-install.tar.gz, as the prefix has to be correctly # set while building. Otherwise aclocal will not be able to find libtool's files. Furthermore, doing # so would break non-podman builds (not sure if they are still supported though). prefix: $(PREFIX)/sysroot PREFIX_STRIP=\ mkdir -p bin libexec "$(GCC_TARGET)/bin" && \ find bin libexec "$(GCC_TARGET)/bin" "$(GCC_TARGET)/lib" \ -type f \ -exec strip --strip-unneeded {} ';' \ 2> /dev/null $(PREFIX)/relibc: $(ROOT)/relibc mkdir -p "$(@D)" rm -rf "$@.partial" "$@" cp -r "$^" "$@.partial" touch "$@.partial" mv "$@.partial" "$@" $(PREFIX)/relibc-install: $(PREFIX)/relibc | $(PREFIX)/rust-install $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) $(MAKE) $@ else rm -rf "$@.partial" "$@" cp -r "$(PREFIX)/rust-install" "$@.partial" rm -rf "$@.partial/$(TARGET)/include/"* cp -r "$(PREFIX)/rust-install/$(GNU_TARGET)/include/c++" "$@.partial/$(GNU_TARGET)/include/c++" cp -r "$(PREFIX)/rust-install/lib/rustlib/$(HOST_TARGET)/lib/" "$@.partial/lib/rustlib/$(HOST_TARGET)/" cd "$<" && \ export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \ export CARGO="env -u CARGO cargo" && \ $(MAKE) clean && \ $(MAKE) -j `$(NPROC)` all && \ $(MAKE) -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial/$(GNU_TARGET)" cd "$@.partial" && $(PREFIX_STRIP) touch "$@.partial" mv "$@.partial" "$@" endif $(PREFIX)/relibc-install.tar.gz: $(PREFIX)/relibc-install tar \ --create \ --gzip \ --file "$@" \ --directory="$<" \ . $(PREFIX)/libtool: rm -rf "$@.partial" "$@" mkdir -p "$@.partial" git clone \ --recurse-submodules \ "https://gitlab.redox-os.org/andypython/libtool/" \ --branch "v$(LIBTOOL_VERSION)-redox" \ --depth 2 \ "$@.partial" touch "$@.partial" mv "$@.partial" "$@" $(PREFIX)/libtool-build: $(PREFIX)/libtool $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) $(MAKE) $@ else mkdir -p "$@.partial" cd "$<" && \ ./bootstrap \ --skip-po \ --force \ --gnulib-srcdir=./gnulib cd "$@.partial" && \ cp -rp $(abspath $<)/. ./ && \ "$(ROOT)/$