97 lines
3.1 KiB
TOML
97 lines
3.1 KiB
TOML
# Native GCC 13.2.0 for Red Bear OS
|
|
# Produces GCC that RUNS on x86_64-unknown-redox and TARGETS x86_64-unknown-redox.
|
|
# Built via cross-compilation from the host using the existing cross-compiler in prefix/.
|
|
#
|
|
# This is Strategy A from BUILD-TOOLS-PORTING-PLAN.md: pre-built native toolchain
|
|
# produced by cross-compilation, avoiding the multi-stage self-hosting bootstrap.
|
|
#
|
|
# To use: repo cook local/recipes/dev/gcc-native
|
|
# The resulting gcc binary runs inside Red Bear OS.
|
|
|
|
[source]
|
|
same_as = "../../../../recipes/dev/gcc13"
|
|
|
|
[build]
|
|
template = "custom"
|
|
dependencies = [
|
|
"gcc13",
|
|
"gcc13.cxx",
|
|
"gnu-binutils",
|
|
"libgmp",
|
|
"libmpfr",
|
|
"mpc",
|
|
]
|
|
script = """
|
|
DYNAMIC_INIT
|
|
|
|
# Use the cross-compiler to produce native redox binaries
|
|
export CC="${GNU_TARGET}-gcc"
|
|
export CXX="${GNU_TARGET}-g++"
|
|
export AR="${GNU_TARGET}-ar"
|
|
export RANLIB="${GNU_TARGET}-ranlib"
|
|
export LD="${GNU_TARGET}-ld"
|
|
export NM="${GNU_TARGET}-nm"
|
|
export STRIP="${GNU_TARGET}-strip"
|
|
|
|
# Configure for native compilation: host AND target are both redox
|
|
COOKBOOK_CONFIGURE_FLAGS+=(
|
|
--host="${GNU_TARGET}"
|
|
--target="${GNU_TARGET}"
|
|
--prefix=/usr
|
|
--with-sysroot="${COOKBOOK_SYSROOT}"
|
|
--with-gmp="${COOKBOOK_SYSROOT}/usr"
|
|
--with-mpfr="${COOKBOOK_SYSROOT}/usr"
|
|
--with-mpc="${COOKBOOK_SYSROOT}/usr"
|
|
--with-linker-hash-style=gnu
|
|
--enable-languages=c,c++,lto
|
|
--enable-initfini-array
|
|
--disable-nls
|
|
--disable-multilib
|
|
--enable-host-shared
|
|
--enable-threads=posix
|
|
--enable-libstdcxx-threads
|
|
--disable-bootstrap
|
|
--with-bugurl="https://gitlab.redox-os.org/redox-os/gcc/-/issues"
|
|
)
|
|
|
|
"${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}"
|
|
"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" all-gcc all-target-libgcc all-target-libstdc++-v3
|
|
"${COOKBOOK_MAKE}" install-gcc install-target-libgcc install-target-libstdc++-v3 DESTDIR="${COOKBOOK_STAGE}"
|
|
|
|
# Native GCC doesn't need the target prefix
|
|
for tool in gcc g++ c++ cpp gcc-ar gcc-nm gcc-ranlib gcov gcov-dump gcov-tool gfortran; do
|
|
if [ -f "${COOKBOOK_STAGE}/usr/bin/${GNU_TARGET}-${tool}" ]; then
|
|
ln -sf "${GNU_TARGET}-${tool}" "${COOKBOOK_STAGE}/usr/bin/${tool}"
|
|
fi
|
|
done
|
|
|
|
# Provide cc symlink
|
|
ln -sf gcc "${COOKBOOK_STAGE}/usr/bin/cc"
|
|
|
|
# Remove libtool archives
|
|
rm -f "${COOKBOOK_STAGE}"/usr/lib/libgcc_s.so* "${COOKBOOK_STAGE}"/usr/lib/libstdc++.so*
|
|
rm -f "${COOKBOOK_STAGE}"/usr/lib/*.la
|
|
|
|
# Copy libgcc and libstdc++ into target lib dir
|
|
mkdir -p "${COOKBOOK_STAGE}/usr/lib/${GNU_TARGET}"
|
|
cp -a "${COOKBOOK_STAGE}"/usr/lib/gcc/${GNU_TARGET}/13.2.0/libgcc.a "${COOKBOOK_STAGE}/usr/lib/${GNU_TARGET}/" || true
|
|
cp -a "${COOKBOOK_STAGE}"/usr/lib/gcc/${GNU_TARGET}/13.2.0/libgcc_eh.a "${COOKBOOK_STAGE}/usr/lib/${GNU_TARGET}/" || true
|
|
"""
|
|
|
|
[package]
|
|
description = "Native GCC 13.2.0 compiler for Red Bear OS (runs on redox, targets redox)"
|
|
dependencies = ["gnu-binutils"]
|
|
|
|
[[optional-packages]]
|
|
name = "cxx"
|
|
dependencies = []
|
|
files = [
|
|
"usr/bin/*c++",
|
|
"usr/bin/*g++",
|
|
"usr/bin/g++",
|
|
"usr/include/c++/**",
|
|
"usr/lib/*c++*",
|
|
"usr/libexec/gcc/**/cc1plus",
|
|
"usr/share/gcc-*/python/libstdcxx/**",
|
|
]
|