redox/mk/prefix.mk

103 lines
3.6 KiB
Makefile
Raw Normal View History

2018-11-28 03:45:52 +01:00
PREFIX=$(ROOT)/prefix/$(TARGET)
2018-08-17 04:30:54 +02:00
2018-11-28 03:45:52 +01:00
PREFIX_FREESTANDING_INSTALL=$(PREFIX)/gcc-freestanding-install
PREFIX_INSTALL=$(PREFIX)/gcc-install
2018-08-17 04:30:54 +02:00
2018-11-28 03:45:52 +01:00
ifeq ($(PREFIX_RUSTC),1)
PREFIX_FREESTANDING_INSTALL=$(PREFIX)/rust-freestanding-install
export RUSTUP_TOOLCHAIN=$(PREFIX)/rust-freestanding-install
endif
2018-11-28 03:55:15 +01:00
PREFIX_FREESTANDING_PATH=$(PREFIX_FREESTANDING_INSTALL)/bin
2018-11-28 03:45:52 +01:00
PREFIX_PATH=$(PREFIX_INSTALL)/bin
2018-11-28 03:45:52 +01:00
prefix-freestanding: $(PREFIX_FREESTANDING_INSTALL)
2018-11-28 03:45:52 +01:00
prefix: $(PREFIX_INSTALL)
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
mkdir -p "$@.partial"
tar --extract --file "$<" --directory "$@.partial" --strip-components=1
mv "$@.partial" "$@"
2018-08-18 02:47:48 +02:00
touch "$@"
2018-08-17 04:30:54 +02:00
$(PREFIX)/binutils-install: $(PREFIX)/binutils
rm -rf "$<-build" "$@"
mkdir -p "$<-build" "$@"
cd "$<-build" && \
2018-11-28 03:45:52 +01:00
"$</configure" --target="$(TARGET)" --program-prefix="$(TARGET)-" --prefix="$@" --disable-werror && \
2018-08-17 04:30:54 +02:00
make all -j `nproc` && \
make install -j `nproc`
touch "$@"
$(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
mv "$@.partial" "$@"
2018-08-18 02:47:48 +02:00
touch "$@"
2018-08-17 04:30:54 +02:00
2018-11-28 03:45:52 +01:00
$(PREFIX)/gcc-freestanding-install: $(PREFIX)/gcc | $(PREFIX)/binutils-install
2018-08-17 04:30:54 +02:00
rm -rf "$<-freestanding-build" "$@"
2018-11-28 03:45:52 +01:00
mkdir -p "$<-freestanding-build"
cp -r "$(PREFIX)/binutils-install" "$@"
2018-08-17 04:30:54 +02:00
cd "$<-freestanding-build" && \
2018-11-28 03:45:52 +01:00
export PATH="$@/bin:$$PATH" && \
"$</configure" --target="$(TARGET)" --program-prefix="$(TARGET)-" --prefix="$@" --disable-nls --enable-languages=c,c++ --without-headers && \
2018-11-28 04:47:13 +01:00
make all-gcc all-target-libgcc -j `nproc` && \
make install-gcc install-target-libgcc -j `nproc`
2018-08-17 04:30:54 +02:00
touch "$@"
2018-11-28 03:45:52 +01:00
$(PREFIX)/rust-freestanding-install: $(ROOT)/rust | $(PREFIX)/gcc-freestanding-install
rm -rf "$(PREFIX)/rust-freestanding-build" "$@"
mkdir -p "$(PREFIX)/rust-freestanding-build"
cp -r "$(PREFIX)/gcc-freestanding-install" "$@"
cd "$(PREFIX)/rust-freestanding-build" && \
export PATH="$@/bin:$$PATH" && \
"$</configure" --prefix="$@" --disable-docs && \
make -j `nproc` && \
make install -j `nproc`
2018-11-28 03:55:15 +01:00
mkdir -p "$@/lib/rustlib/x86_64-unknown-linux-gnu/bin"
2018-11-28 03:45:52 +01:00
touch "$@"
$(PREFIX)/relibc-install: $(ROOT)/relibc | $(PREFIX_FREESTANDING_INSTALL)
2018-09-18 05:30:15 +02:00
rm -rf "$@"
2018-11-28 03:45:52 +01:00
mkdir -p "$@"
cd "$<" && \
2018-11-28 03:55:15 +01:00
export PATH="$(PREFIX_FREESTANDING_PATH):$$PATH" && \
make CARGO=xargo all && \
make CARGO=xargo DESTDIR="$@/usr" install
2018-08-17 04:30:54 +02:00
touch "$@"
2018-08-18 02:47:48 +02:00
$(PREFIX)/gcc-install: $(PREFIX)/gcc | $(PREFIX)/relibc-install
2018-08-17 04:30:54 +02:00
rm -rf "$<-build" "$@"
2018-11-28 03:45:52 +01:00
mkdir -p "$<-build"
cp -r "$(PREFIX_FREESTANDING_INSTALL)" "$@"
2018-08-17 04:30:54 +02:00
cd "$<-build" && \
2018-11-28 03:45:52 +01:00
export PATH="$@/bin:$$PATH" && \
"$</configure" --target="$(TARGET)" --program-prefix="$(TARGET)-" --prefix="$@" --with-sysroot="$(PREFIX)/relibc-install" --disable-nls --disable-werror --enable-languages=c,c++ && \
2018-11-28 04:47:13 +01:00
make all-gcc all-target-libgcc all-target-libstdc++-v3 -j `nproc` && \
make install-gcc install-target-libgcc install-target-libstdc++-v3 -j `nproc`
2018-08-17 04:30:54 +02:00
touch "$@"
2018-11-28 03:45:52 +01:00
# Building full rustc may not be required
# $(PREFIX)/rust-install: $(ROOT)/rust | $(PREFIX)/gcc-install
# rm -rf "$(PREFIX)/rust-build" "$@"
# mkdir -p "$(PREFIX)/rust-build" "$@"
# cd "$(PREFIX)/rust-build" && \
# export PATH="$(PREFIX_PATH):$$PATH" && \
# "$</configure" --target="$(TARGET)" --prefix="$@" --disable-docs && \
# make -j `nproc` && \
# make install -j `nproc`
# touch "$@"