meta: replace cmake mono-build system with a custom build co-ordinator

every system component now has its own self-contained build system, and a
seed file describing the component and its build system and dependencies.

a new tool, meadow, collects and uses these seed files to build the
components into a full system. meadow also manages the target system root
and a host prefix where toolchain tools are installed to.

the build system has also been updated to use a new $ARCH-rosetta-gcc
compiler, and the patches files necessary to build it have been
added to toolchain/cross-compiler.
This commit is contained in:
2026-07-19 13:34:32 +01:00
parent 59034be9e6
commit 1ec33767ab
104 changed files with 7111 additions and 257 deletions
+11 -6
View File
@@ -1,15 +1,19 @@
cmake_minimum_required(VERSION 3.31)
project(bootstrap C ASM)
file(GLOB c_sources *.c *.h)
file(GLOB arch_sources arch/${CMAKE_SYSTEM_PROCESSOR}/*.S)
add_executable(bootstrap ${c_sources} ${arch_sources})
set(static_deps
magenta rosetta
libc-core.a libc-malloc.a libc-io.a
libfs.a
liblaunch.a
libxpc.a)
target_link_libraries(bootstrap
libmagenta librosetta
libc-core libc-malloc libc-pthread
libfs-static
liblaunch-static
libxpc-static
interface::fs)
"$<LINK_GROUP:cross_refs,${static_deps}>")
target_compile_options(bootstrap PRIVATE
-fno-stack-protector -nostdlib -ffreestanding -fno-PIC)
@@ -17,3 +21,4 @@ target_link_options(bootstrap PRIVATE
-static -nostdlib -ffreestanding)
set_target_properties(bootstrap PROPERTIES POSITIION_INDEPENDENT_CODE FALSE)
install(TARGETS bootstrap DESTINATION boot)
+24
View File
@@ -0,0 +1,24 @@
[seed]
name = 'bootstrap'
[dependency]
no_standard_dependencies = true
seeds = [
'libmagenta',
'librosetta',
'libc-core',
'libc-malloc',
'libc-pthread',
'libfs-static',
'liblaunch-static',
'libxpc-static',
'librosetta-interface',
]
[build]
build_system = 'cmake'
[install]
prefix = "/"
# vim: ft=toml
+38
View File
@@ -0,0 +1,38 @@
[seed]
name = 'bsp'
[build]
build_system = 'generic'
build_command = {
args = [
'root-src:toolchain/mkbsp/mkbsp',
'--preset',
'src:rosetta.preset',
'--sysroot',
'install:.',
'--out',
'bin:rosetta-system.bsp',
],
}
watch_files = [ 'install:**' ]
[dependency]
seeds = [
'ld',
'bshell',
'libc',
'libpthread',
'libfx',
'liblaunch',
'libfs',
'libxpc',
'herdd',
'herdd-targets',
'nsd',
'devmd',
]
[install]
"/boot" = [ 'bin:rosetta-system.bsp' ]
# vim: ft=toml
+8
View File
@@ -0,0 +1,8 @@
[bootstrap]
bootstrap_exec = '/boot/bootstrap'
[contents]
"/lib" = [ '/lib/ld64.so' ]
"/usr/bin" = [ '/usr/bin/herdd' ]
# vim: ft=toml
+16
View File
@@ -0,0 +1,16 @@
[contents]
"/usr/lib" = [
'/usr/lib/libc.so',
'/usr/lib/libpthread.so',
'/usr/lib/libfs.so',
'/usr/lib/libfx.runtime.so',
'/usr/lib/libfx.collections.so',
'/usr/lib/libfx.io.so',
'/usr/lib/libfx.serial.so',
'/usr/lib/libfx.term.so',
'/usr/lib/libfx.cmdline.so',
'/usr/lib/liblaunch.so',
'/usr/lib/libxpc.so',
]
# vim: ft=toml
+12
View File
@@ -0,0 +1,12 @@
[contents]
"/usr/bin" = [
'/usr/bin/devmd',
'/usr/bin/nsd',
]
"/etc/herdd/services" = [
'/etc/herdd/services/devmd.service',
'/etc/herdd/services/nsd.service',
]
# vim: ft=toml
+7
View File
@@ -0,0 +1,7 @@
[contents]
"/etc/herdd/targets" = [
'/etc/herdd/targets/minimal.target',
'/etc/herdd/targets/single-user.target',
]
# vim: ft=toml
+8
View File
@@ -0,0 +1,8 @@
[contents]
"/usr/bin" = [ '/usr/bin/bshell' ]
"/usr/lib" = [
'/usr/lib/libbshell.runtime.so',
'/usr/lib/libbshell.core.so',
]
# vim: ft=toml
+8 -9
View File
@@ -1,3 +1,6 @@
cmake_minimum_required(VERSION 3.31)
project(ld C ASM)
file(GLOB c_sources *.c *.h)
file(GLOB arch_sources arch/${CMAKE_SYSTEM_PROCESSOR}/*.S)
@@ -7,9 +10,11 @@ set_target_properties(ld PROPERTIES
OUTPUT_NAME "ld64"
SUFFIX ".so")
set(libc_deps
libc-core.a libc-malloc.a libc-io.a)
target_link_libraries(ld
libc-core libc-malloc libc-io libmagenta librosetta libxpc-static
interface::fs)
"$<LINK_GROUP:cross_refs,${libc_deps}>"
libmagenta.a librosetta.a -l:libxpc.a)
target_compile_options(ld PRIVATE
-fvisibility=hidden
@@ -19,10 +24,4 @@ target_link_options(ld PRIVATE
# -Wl,--entry="_ld_start"
-T ${CMAKE_CURRENT_SOURCE_DIR}/arch/${CMAKE_SYSTEM_PROCESSOR}/layout.ld
-fPIC -nostdlib -ffreestanding -Wl,-shared)
sysroot_add_program(
NAME ld
BIN_DIR /lib)
bsp_add_program(
NAME ld
BIN_DIR /lib)
install(TARGETS ld DESTINATION lib)
+23
View File
@@ -0,0 +1,23 @@
[seed]
name = 'ld'
[dependency]
no_standard_dependencies = true
seeds = [
'libc-core',
'libc-malloc',
'libc-io',
'libc-headers',
'libxpc-static',
'libmagenta',
'librosetta',
'librosetta-interface',
]
[build]
build_system = 'cmake'
[install]
prefix = "/"
# vim: ft=toml