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)