cmake_minimum_required(VERSION 3.31)
project(Rosetta C CXX ASM)

include(CheckPIESupported)
check_pie_supported()

set(sys_dir ${CMAKE_CURRENT_BINARY_DIR}/sys)

set(kernel_name mango_kernel)
set(bsp_name rosetta-system.bsp)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
include(Meta)
include(Sysroot)
include(BSP)
include(Arch)
include(Msg-Interface)
include(Templates)

bsp_reset()
sysroot_reset()

sysroot_set_base(
	PATH ${CMAKE_SOURCE_DIR}/base)

add_subdirectory(kernel)
add_subdirectory(interface)
add_subdirectory(sys)
add_subdirectory(lib)
add_subdirectory(services)
add_subdirectory(runlevel)
add_subdirectory(programs)

sysroot_add_program(NAME ${kernel_name} BIN_DIR /boot)

bsp_finalise(
	BSP_NAME ${bsp_name}
	DEST_DIR ${sys_dir}
	BOOTSTRAP_PROGRAM bootstrap)

sysroot_add_file(
	ID bsp
	SRC_PATH ${CMAKE_BINARY_DIR}/sys/${bsp_name}
	DEST_DIR /boot
	DEPENDS bsp)
sysroot_finalise()
