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
2023-09-08 21:23:41 +02:00
BINUTILS_BRANCH = redox-2.41
GCC_BRANCH = redox-13.2.0
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
2023-04-15 19:33:35 +02:00
export CC =
export CXX =
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
2023-12-12 21:49:45 +01:00
$(PREFIX)/relibc : $( ROOT ) /relibc
rm -rf " $@ .partial " " $@ "
cp -r " $^ " " $@ .partial "
mv " $@ .partial " " $@ "
$(PREFIX)/relibc-install : $( PREFIX ) /relibc | $( PREFIX ) /rust -install $( CONTAINER_TAG )
2022-11-12 00:23:08 +01:00
i f e q ( $( PODMAN_BUILD ) , 1 )
$( PODMAN_RUN) $( MAKE) $@
e l s e
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) / "
2023-05-22 10:42:41 +02:00
# Temporary hack to avoid breaking stuff before new pre-build prefix tarball with fixed rustlib/src is build and served at https://static.redox-os.org/toolchain/$(TARGET)/relibc-install.tar.gz
i f e q ( $( PREFIX_BINARY ) , 1 )
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
2023-05-22 10:42:41 +02:00
e n d i f
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" && \
2023-09-11 20:44:10 +02:00
$( MAKE) clean && \
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
e n d i f
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
i f e q ( $( 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
e l s e
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
2023-09-08 21:23:41 +02:00
$(PREFIX)/binutils-$(BINUTILS_BRANCH).tar.bz2 :
2018-08-17 04:30:54 +02:00
mkdir -p " $( @D) "
2023-09-08 21:23:41 +02:00
rm -fv $( PREFIX) /binutils*.tar.bz2*
wget -O $@ .partial " https://gitlab.redox-os.org/redox-os/binutils-gdb/-/archive/ $( BINUTILS_BRANCH) /binutils-gdb- $( BINUTILS_BRANCH) .tar.bz2 "
2018-08-17 04:30:54 +02:00
mv $@ .partial $@
2023-09-08 22:18:17 +02:00
$(PREFIX)/binutils : $( PREFIX ) /binutils -$( BINUTILS_BRANCH ) .tar .bz 2
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 )
i f e q ( $( PODMAN_BUILD ) , 1 )
$( PODMAN_RUN) $( MAKE) $@
e l s e
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
e n d i f
2018-08-17 04:30:54 +02:00
2023-09-08 21:23:41 +02:00
$(PREFIX)/gcc-$(GCC_BRANCH).tar.bz2 :
2018-08-17 04:30:54 +02:00
mkdir -p " $( @D) "
2023-09-08 21:23:41 +02:00
rm -fv $( PREFIX) /gcc*.tar.bz2*
wget -O $@ .partial " https://gitlab.redox-os.org/redox-os/gcc/-/archive/ $( GCC_BRANCH) /gcc- $( GCC_BRANCH) .tar.bz2 "
2018-08-18 02:47:48 +02:00
mv " $@ .partial " " $@ "
2018-08-17 04:30:54 +02:00
2023-09-08 21:23:41 +02:00
$(PREFIX)/gcc : $( PREFIX ) /gcc -$( GCC_BRANCH ) .tar .bz 2
2018-08-17 04:30:54 +02:00
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 )
i f e q ( $( PODMAN_BUILD ) , 1 )
$( PODMAN_RUN) $( MAKE) $@
e l s e
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
e n d i f
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 )
i f e q ( $( PODMAN_BUILD ) , 1 )
$( PODMAN_RUN) $( MAKE) $@
e l s e
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 \
2023-02-11 22:01:00 +01:00
--disable-download-ci-llvm \
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=' \
2023-05-22 10:42:41 +02:00
--tools= cargo,src \
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 " " $@ "
2022-11-12 00:23:08 +01:00
e n d i f
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 )
i f e q ( $( PODMAN_BUILD ) , 1 )
$( PODMAN_RUN) $( MAKE) $@
e l s e
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 " && \
2023-09-11 20:44:10 +02:00
$( MAKE) clean && \
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
e n d i f
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 )
i f e q ( $( PODMAN_BUILD ) , 1 )
$( PODMAN_RUN) $( MAKE) $@
e l s e
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
e n d i f
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 )
i f e q ( $( PODMAN_BUILD ) , 1 )
$( PODMAN_RUN) $( MAKE) $@
e l s e
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 \
2023-02-11 22:01:00 +01:00
--disable-download-ci-llvm \
2020-05-22 23:45:13 +02:00
--enable-cargo-native-static \
2022-12-18 16:06:28 +01:00
--enable-dist-src \
2020-05-22 23:45:13 +02:00
--enable-extended \
2022-08-17 01:09:46 +02:00
--enable-lld \
2020-05-22 23:45:13 +02:00
--enable-llvm-static-stdcpp \
2023-05-22 10:42:41 +02:00
--tools= cargo,src \
2021-07-12 15:29:29 +02:00
--target= " $( HOST_TARGET) , $( TARGET) " \
2020-05-22 23:45:13 +02:00
&& \
$( MAKE) -j ` $( NPROC) ` && \
2023-05-22 10:42:41 +02:00
rm -rf $( ROOT) /$@ .partial/lib/rustlib/{ components,install.log,rust-installer-version,uninstall.sh,manifest-*} " $( ROOT) / $@ .partial/share/doc/rust " && \
2020-05-22 23:45:13 +02:00
$( 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
e n d i f
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
e n d i f