44 lines
1.5 KiB
CMake
44 lines
1.5 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
project(opencoreC C CXX ASM)
|
|
|
|
set(CMAKE_C_STANDARD 11)
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
|
|
# Freestanding flags
|
|
set(FREESTANDING_FLAGS "-ffreestanding -fno-stack-protector -fno-pie -no-pie -mno-red-zone -m64")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FREESTANDING_FLAGS} -Wall -Wextra -O2")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FREESTANDING_FLAGS} -Wall -Wextra -O2 -fno-exceptions -fno-rtti")
|
|
|
|
include_directories(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
${CMAKE_CURRENT_SOURCE_DIR}/lib/libc/include
|
|
${CMAKE_CURRENT_SOURCE_DIR}/lib/libipc_cpp/include
|
|
${CMAKE_CURRENT_SOURCE_DIR}/hal/include
|
|
)
|
|
|
|
# Bare-metal libc
|
|
add_library(freestanding_libc STATIC
|
|
lib/libc/src/string.c
|
|
lib/libc/src/syscalls.c
|
|
)
|
|
|
|
# HAL Library
|
|
add_library(hal STATIC
|
|
hal/src/uart.c
|
|
hal/src/pci.c
|
|
hal/src/apic.c
|
|
)
|
|
|
|
# Ring 3 User Servers
|
|
add_executable(init_server servers/init/main.cpp)
|
|
target_link_options(init_server PRIVATE -T${CMAKE_CURRENT_SOURCE_DIR}/config/user.ld -nostdlib -static)
|
|
target_link_libraries(init_server PRIVATE freestanding_libc)
|
|
|
|
add_executable(uart_driver servers/uart_driver/main.c)
|
|
target_link_options(uart_driver PRIVATE -T${CMAKE_CURRENT_SOURCE_DIR}/config/user.ld -nostdlib -static)
|
|
target_link_libraries(uart_driver PRIVATE hal freestanding_libc)
|
|
|
|
add_executable(procmgr servers/procmgr/main.cpp)
|
|
target_link_options(procmgr PRIVATE -T${CMAKE_CURRENT_SOURCE_DIR}/config/user.ld -nostdlib -static)
|
|
target_link_libraries(procmgr PRIVATE freestanding_libc)
|