redox/recipes/core/base-initfs/recipe.toml
2025-04-21 19:12:00 +02:00

40 lines
1.2 KiB
TOML

[source]
same_as = "../base"
[build]
template = "custom"
script = """
mkdir -pv "${COOKBOOK_STAGE}/usr/bin"
for package in init logd ramfs randd zerod; do
"${COOKBOOK_CARGO}" build \
--manifest-path "${COOKBOOK_SOURCE}/${package}/Cargo.toml" \
${build_flags}
cp -v \
"target/${TARGET}/${build_type}/${package}" \
"${COOKBOOK_STAGE}/usr/bin/${package}"
done
# TODO: symlinks aren't supported by redox-initfs
#ln -sv zerod "${COOKBOOK_STAGE}/usr/bin/nulld"
cp "${COOKBOOK_STAGE}/usr/bin/zerod" "${COOKBOOK_STAGE}/usr/bin/nulld"
ARCH="$(echo "${GNU_TARGET}" | cut -d - -f1)"
cargo \
-Zbuild-std=core,alloc,compiler_builtins \
-Zbuild-std-features=compiler-builtins-mem rustc \
--target "${TARGET}" \
--manifest-path "${COOKBOOK_SOURCE}/bootstrap/Cargo.toml" \
--release \
--target-dir "${COOKBOOK_BUILD}" \
-- \
--emit link="${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a"
mkdir -v "${COOKBOOK_STAGE}/boot"
"${GNU_TARGET}-ld" \
-o "${COOKBOOK_STAGE}/boot/bootstrap" \
--gc-sections \
-T "${COOKBOOK_SOURCE}/bootstrap/src/${ARCH}.ld" \
-z max-page-size=4096 \
"${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a"
"""