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
|
||||
Reference in New Issue
Block a user