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:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1,8 @@
|
||||
[bootstrap]
|
||||
bootstrap_exec = '/boot/bootstrap'
|
||||
|
||||
[contents]
|
||||
"/lib" = [ '/lib/ld64.so' ]
|
||||
"/usr/bin" = [ '/usr/bin/herdd' ]
|
||||
|
||||
# vim: ft=toml
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1,7 @@
|
||||
[contents]
|
||||
"/etc/herdd/targets" = [
|
||||
'/etc/herdd/targets/minimal.target',
|
||||
'/etc/herdd/targets/single-user.target',
|
||||
]
|
||||
|
||||
# vim: ft=toml
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user