apio
6cee208e62
All checks were successful
continuous-integration/drone/push Build is passing
For real this time, turns out me, being dumb, added it to Luna instead of the kernel.
79 lines
2.5 KiB
CMake
79 lines
2.5 KiB
CMake
# The Moon kernel for Luna.
|
|
|
|
set(SOURCES
|
|
src/main.cpp
|
|
src/Log.cpp
|
|
src/video/Framebuffer.cpp
|
|
src/video/TextConsole.cpp
|
|
src/memory/MemoryManager.cpp
|
|
src/memory/Heap.cpp
|
|
src/memory/KernelVM.cpp
|
|
src/memory/MemoryMap.cpp
|
|
src/boot/Init.cpp
|
|
src/arch/Serial.cpp
|
|
src/arch/Timer.cpp
|
|
src/thread/Thread.cpp
|
|
src/thread/Scheduler.cpp
|
|
)
|
|
|
|
if("${ARCH}" MATCHES "x86_64")
|
|
set(SOURCES
|
|
${SOURCES}
|
|
src/arch/x86_64/IO.cpp
|
|
src/arch/x86_64/Serial.cpp
|
|
src/arch/x86_64/MMU.cpp
|
|
src/arch/x86_64/CPU.cpp
|
|
src/arch/x86_64/Timer.cpp
|
|
src/arch/x86_64/Thread.cpp
|
|
)
|
|
endif()
|
|
|
|
add_executable(moon ${SOURCES})
|
|
|
|
if("${ARCH}" MATCHES "x86_64")
|
|
set(ASM_SOURCES
|
|
src/arch/x86_64/CPU.asm
|
|
src/arch/x86_64/Entry.asm
|
|
)
|
|
add_library(moon-asm STATIC ${ASM_SOURCES})
|
|
target_link_libraries(moon moon-asm)
|
|
endif()
|
|
|
|
target_link_libraries(moon luna-freestanding)
|
|
|
|
target_compile_definitions(moon PRIVATE IN_MOON)
|
|
|
|
target_compile_options(moon PRIVATE -Os)
|
|
|
|
target_compile_options(moon PRIVATE -Wall -Wextra -Werror -Wvla -Wsign-conversion)
|
|
target_compile_options(moon PRIVATE -Wdisabled-optimization -Wformat=2 -Winit-self)
|
|
target_compile_options(moon PRIVATE -Wmissing-include-dirs -Wswitch-default -Wcast-qual -Wundef)
|
|
target_compile_options(moon PRIVATE -Wcast-align -Wwrite-strings -Wlogical-op -Wredundant-decls -Wshadow -Wconversion)
|
|
target_compile_options(moon PRIVATE -fno-rtti -ffreestanding -fno-exceptions)
|
|
target_compile_options(moon PRIVATE -fno-asynchronous-unwind-tables -fno-omit-frame-pointer)
|
|
target_compile_options(moon PRIVATE -nostdlib -mcmodel=kernel)
|
|
|
|
if("${ARCH}" MATCHES "x86_64")
|
|
target_compile_options(moon PRIVATE -mno-red-zone)
|
|
target_compile_options(moon PRIVATE -mno-80387 -mno-mmx -mno-sse -mno-sse2)
|
|
target_link_options(moon PRIVATE -mno-red-zone)
|
|
endif()
|
|
|
|
if(MOON_DEBUG_SYMBOLS)
|
|
message(STATUS "Building Moon with debug symbols")
|
|
target_compile_options(moon PRIVATE -ggdb)
|
|
endif()
|
|
|
|
target_link_options(moon PRIVATE -lgcc -Wl,--build-id=none -z max-page-size=0x1000 -mcmodel=kernel)
|
|
|
|
set_target_properties(moon PROPERTIES CXX_STANDARD 20)
|
|
|
|
target_include_directories(moon PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src)
|
|
|
|
configure_file(src/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/gen/config.h @ONLY)
|
|
|
|
target_include_directories(moon PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gen)
|
|
|
|
target_link_options(moon PRIVATE LINKER:-T ${CMAKE_CURRENT_LIST_DIR}/moon.ld -nostdlib -nodefaultlibs)
|
|
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/moon" DESTINATION ${LUNA_ROOT}/initrd/boot) |