Files
opencoreC/CMakeLists.txt

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)