Red Bear OS — microkernel OS in Rust, based on Redox
Derivative of Redox OS (https://www.redox-os.org) adding: - AMD GPU driver (amdgpu) via LinuxKPI compat layer - ext4 filesystem support (ext4d scheme daemon) - ACPI fixes for AMD bare metal (x2APIC, DMAR, IVRS, MCFG) - Custom branding (hostname, os-release, boot identity) Build system is full upstream Redox with RBOS overlay in local/. Patches for kernel, base, and relibc are symlinked from local/patches/ and protected from make clean/distclean. Custom recipes live in local/recipes/ with symlinks into the recipes/ search path. Build: make all CONFIG_NAME=redbear-full Sync: ./local/scripts/sync-upstream.sh
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
/llvm-build/
|
||||
/llvm-prefix/
|
||||
/llvm-source/
|
||||
@@ -0,0 +1,28 @@
|
||||
[llvm]
|
||||
download-ci-llvm = false
|
||||
static-libstdcpp = false
|
||||
link-shared = true
|
||||
|
||||
[build]
|
||||
host = ["TARGET"]
|
||||
target = ["TARGET", "i586-unknown-redox", "x86_64-unknown-redox", "aarch64-unknown-redox", "riscv64gc-unknown-redox"]
|
||||
cargo-native-static = true
|
||||
submodules = false
|
||||
docs = false
|
||||
tools = ["cargo", "clippy", "rustdoc", "rustfmt", "src"]
|
||||
extended = true
|
||||
verbose = 1
|
||||
|
||||
[install]
|
||||
prefix = "install"
|
||||
sysconfdir = "etc"
|
||||
|
||||
[rust]
|
||||
backtrace = false
|
||||
codegen-tests = false
|
||||
|
||||
[target.aarch64-unknown-linux-gnu]
|
||||
llvm-config = "COOKBOOK_TOOLCHAIN/bin/llvm-config"
|
||||
|
||||
[target.x86_64-unknown-linux-gnu]
|
||||
llvm-config = "COOKBOOK_TOOLCHAIN/bin/llvm-config"
|
||||
@@ -0,0 +1,35 @@
|
||||
[llvm]
|
||||
download-ci-llvm = false
|
||||
static-libstdcpp = false
|
||||
link-shared = true
|
||||
|
||||
[build]
|
||||
host = ["COOKBOOK_TARGET"]
|
||||
target = ["COOKBOOK_TARGET"]
|
||||
submodules = false
|
||||
docs = false
|
||||
tools = ["cargo", "clippy", "rustdoc", "rustfmt", "src"]
|
||||
extended = true
|
||||
verbose = 1
|
||||
|
||||
[install]
|
||||
prefix = "install"
|
||||
sysconfdir = "etc"
|
||||
|
||||
[rust]
|
||||
backtrace = false
|
||||
codegen-tests = false
|
||||
|
||||
[target.COOKBOOK_TARGET]
|
||||
cc = "COOKBOOK_GNU_TARGET-gcc"
|
||||
cxx = "COOKBOOK_GNU_TARGET-g++"
|
||||
ar = "COOKBOOK_GNU_TARGET-ar"
|
||||
linker = "COOKBOOK_GNU_TARGET-gcc"
|
||||
crt-static = false
|
||||
llvm-config = "COOKBOOK_SYSROOT/bin/llvm-config"
|
||||
|
||||
[target.aarch64-unknown-linux-gnu]
|
||||
llvm-config = "COOKBOOK_TOOLCHAIN/bin/llvm-config"
|
||||
|
||||
[target.x86_64-unknown-linux-gnu]
|
||||
llvm-config = "COOKBOOK_TOOLCHAIN/bin/llvm-config"
|
||||
@@ -0,0 +1,80 @@
|
||||
[source]
|
||||
git = "https://gitlab.redox-os.org/redox-os/rust.git"
|
||||
branch = "redox-2025-10-03"
|
||||
shallow_clone = true
|
||||
|
||||
[build]
|
||||
template = "custom"
|
||||
dependencies = [
|
||||
"llvm21",
|
||||
"zlib",
|
||||
"curl",
|
||||
"openssl3",
|
||||
]
|
||||
dev-dependencies = [
|
||||
"llvm21.dev",
|
||||
"llvm21.runtime",
|
||||
"lld21",
|
||||
]
|
||||
|
||||
script = """
|
||||
if [ "${COOKBOOK_HOST_SYSROOT}" = "/usr" ]; then
|
||||
|
||||
cat ${COOKBOOK_RECIPE}/config-bootstrap.toml > config.toml
|
||||
sed -i "s|TARGET|${TARGET}|g" config.toml
|
||||
sed -i "s|COOKBOOK_TOOLCHAIN|${COOKBOOK_TOOLCHAIN}|g" config.toml
|
||||
|
||||
else
|
||||
|
||||
DYNAMIC_INIT
|
||||
# Linker flags for stage2 compiler (host -> target)
|
||||
ARCH="${TARGET%%-*}"
|
||||
export CARGO_TARGET_${ARCH^^}_UNKNOWN_REDOX_RUSTFLAGS="${RUSTFLAGS}" # Rust
|
||||
# Hack for Rust errorneusly running `llvm-config --version` on cross compiled llvm-config
|
||||
cat "${COOKBOOK_ROOT}/bin/${TARGET}-llvm-config" > "${COOKBOOK_SYSROOT}/bin/llvm-config"
|
||||
# Hack for Rust stage1 being dynamically linked with LLVM in prefix toolchain
|
||||
export LD_LIBRARY_PATH="${COOKBOOK_HOST_SYSROOT}/lib:${LD_LIBRARY_PATH}"
|
||||
# Linker flags for stage1 compiler (host -> host)
|
||||
export RUSTFLAGS_BOOTSTRAP="\
|
||||
-Clink-args=-L${COOKBOOK_HOST_SYSROOT}/lib \
|
||||
-Clink-args=-Wl,-rpath-link,${COOKBOOK_HOST_SYSROOT}/lib"
|
||||
export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="${RUSTFLAGS_BOOTSTRAP}"
|
||||
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS="${RUSTFLAGS_BOOTSTRAP}"
|
||||
|
||||
cat ${COOKBOOK_RECIPE}/config.toml > config.toml
|
||||
sed -i "s|COOKBOOK_SYSROOT|${COOKBOOK_SYSROOT}|g" config.toml
|
||||
sed -i "s|COOKBOOK_TOOLCHAIN|${COOKBOOK_HOST_SYSROOT}|g" config.toml
|
||||
sed -i "s|COOKBOOK_TARGET|${TARGET}|g" config.toml
|
||||
sed -i "s|COOKBOOK_GNU_TARGET|${GNU_TARGET}|g" config.toml
|
||||
|
||||
fi
|
||||
|
||||
# Don't poison the stage1 compiler (host -> host)
|
||||
unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF RUSTFLAGS CARGO_ENCODED_RUSTFLAGS STRIP
|
||||
|
||||
python3 "${COOKBOOK_SOURCE}/x.py" install \
|
||||
--config config.toml \
|
||||
--jobs ${COOKBOOK_MAKE_JOBS}
|
||||
|
||||
mkdir -p "${COOKBOOK_STAGE}"/usr
|
||||
rsync -av --delete "${COOKBOOK_BUILD}"/install/* "${COOKBOOK_STAGE}"/usr/
|
||||
rm -rf "${COOKBOOK_STAGE}"/usr/lib/rustlib/*.log
|
||||
|
||||
# workaround for rust.lld, needed by e.g. compiling bootloader
|
||||
# https://github.com/rust-lang/rust/issues/143076#issuecomment-3011710678
|
||||
LLD_DIR="${COOKBOOK_STAGE}/usr/lib/rustlib/$TARGET/bin"
|
||||
mkdir -p $LLD_DIR/gcc-ld
|
||||
cp ${COOKBOOK_SYSROOT}/usr/bin/lld $LLD_DIR/rust-lld
|
||||
ln -s rust-lld $LLD_DIR/wasm-component-ld
|
||||
ln -s ../rust-lld $LLD_DIR/gcc-ld/ld.lld
|
||||
ln -s ../rust-lld $LLD_DIR/gcc-ld/ld64.lld
|
||||
ln -s ../rust-lld $LLD_DIR/gcc-ld/lld-link
|
||||
ln -s ../rust-lld $LLD_DIR/gcc-ld/wasm-ld
|
||||
ln -s ../../../libLLVM.so.21.1 $LLD_DIR/../lib/libLLVM.so.21.1
|
||||
"""
|
||||
|
||||
[[optional-packages]]
|
||||
name = "doc"
|
||||
files = [
|
||||
"usr/share/doc/**",
|
||||
]
|
||||
Reference in New Issue
Block a user