major refactorings
Signed-off-by: kaguya3311 <kaguya3311@national.shitposting.agency>
This commit is contained in:
+39
-8
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
project(KirkOS C ASM)
|
||||
project(KirkOS C ASM_NASM)
|
||||
|
||||
set(VERSION 1)
|
||||
set(PATCHLEVEL 0)
|
||||
@@ -17,9 +17,11 @@ message(STATUS "Building KirkOS version: ${KIRKOS_VERSION_STRING}")
|
||||
|
||||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||
|
||||
set(CMAKE_ASM_NASM_OBJECT_FORMAT elf64)
|
||||
|
||||
file(GLOB_RECURSE KIRKOS_SOURCES
|
||||
"${CMAKE_SOURCE_DIR}/src/*.c"
|
||||
"${CMAKE_SOURCE_DIR}/src/*.S"
|
||||
"${CMAKE_SOURCE_DIR}/src/*.asm"
|
||||
)
|
||||
|
||||
|
||||
@@ -51,6 +53,7 @@ target_compile_definitions(KirkOS PRIVATE
|
||||
|
||||
|
||||
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${ISO_ROOT}/boot/KirkOS
|
||||
DEPENDS KirkOS
|
||||
@@ -68,6 +71,7 @@ add_custom_target(limine_files
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${ISO_ROOT}/EFI/BOOT
|
||||
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/limine.conf ${ISO_ROOT}/boot/limine/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/ramdisk.tar ${ISO_ROOT}/boot/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIMINE_DIR}/limine-bios.sys ${ISO_ROOT}/boot/limine/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIMINE_DIR}/limine-bios-cd.bin ${ISO_ROOT}/boot/limine/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIMINE_DIR}/limine-uefi-cd.bin ${ISO_ROOT}/boot/limine/
|
||||
@@ -106,9 +110,9 @@ add_custom_target(run
|
||||
COMMAND qemu-system-x86_64
|
||||
-cdrom ${ISO}
|
||||
-hda ${DISK_IMG}
|
||||
-debugcon stdio
|
||||
-serial stdio
|
||||
-m 8G
|
||||
-smp 2
|
||||
-smp 4
|
||||
-device ich9-intel-hda
|
||||
-device hda-duplex
|
||||
-cpu qemu64,+fsgsbase
|
||||
@@ -119,7 +123,7 @@ add_custom_target(debug
|
||||
COMMAND qemu-system-x86_64
|
||||
-cdrom ${ISO}
|
||||
-hda ${DISK_IMG}
|
||||
-debugcon stdio
|
||||
-serial stdio
|
||||
-s -S
|
||||
-d int,cpu_reset
|
||||
-m 8G
|
||||
@@ -129,6 +133,20 @@ add_custom_target(debug
|
||||
-cpu qemu64,+fsgsbase
|
||||
)
|
||||
|
||||
add_custom_command(TARGET KirkOS POST_BUILD
|
||||
COMMAND ${CMAKE_OBJCOPY} --only-keep-debug
|
||||
$<TARGET_FILE:KirkOS>
|
||||
${CMAKE_BINARY_DIR}/KirkOS.sym
|
||||
|
||||
COMMAND ${CMAKE_OBJCOPY} --strip-debug
|
||||
$<TARGET_FILE:KirkOS>
|
||||
|
||||
COMMAND ${CMAKE_OBJCOPY} --add-gnu-debuglink=${CMAKE_BINARY_DIR}/KirkOS.sym
|
||||
$<TARGET_FILE:KirkOS>
|
||||
|
||||
COMMENT "Splitting debug symbols (KirkOS.sym)"
|
||||
)
|
||||
|
||||
target_include_directories(KirkOS PRIVATE
|
||||
"${CMAKE_SOURCE_DIR}/src"
|
||||
)
|
||||
@@ -137,10 +155,13 @@ target_include_directories(KirkOS PRIVATE
|
||||
# ----------------------------------------
|
||||
# DEFAULT C FLAGS (cacheable overrides)
|
||||
# ----------------------------------------
|
||||
set(KIRKOS_CFLAGS "-g -O2 -pipe -Wall -Wextra -std=gnu11 -ffreestanding -fno-stack-protector -fno-stack-check -fno-lto -fno-PIC -ffunction-sections -fdata-sections -m64 -march=x86-64 -mabi=sysv -mno-80387 -mno-red-zone -mcmodel=kernel"
|
||||
set(KIRKOS_CFLAGS "-g3 -m64 -march=x86-64 -mgeneral-regs-only -fsanitize=undefined -Wall -Wextra -Wno-error -Wno-builtin-declaration-mismatch -mno-red-zone -std=gnu11 -fms-extensions -ffreestanding -fno-stack-protector -fno-stack-check -fpie -MMD"
|
||||
CACHE STRING "Default CFLAGS for KirkOS")
|
||||
|
||||
set(KIRKOS_LDFLAGS "-nostdlib -static -Wl,--gc-sections -Wl,-T,../linker.lds -Wl,-z,max-page-size=0x1000 -Wl,-m,elf_x86_64"
|
||||
set(KIRKOS_ASM_NASM_FLAGS "-MD -MP -f elf64 -g"
|
||||
CACHE STRING "Default ASM Flags for NASM in KirkOS")
|
||||
|
||||
set(KIRKOS_LDFLAGS "-nostdlib -Wl,-static,-pie -Wl,--gc-sections -Wl,--no-dynamic-linker -Wl,-z,max-page-size=0x1000 -Wl,-T../linker.lds -Wl,-m,elf_x86_64"
|
||||
CACHE STRING "Default LDFLAGS for KirkOS")
|
||||
|
||||
# ----------------------------------------
|
||||
@@ -149,5 +170,15 @@ set(KIRKOS_LDFLAGS "-nostdlib -static -Wl,--gc-sections -Wl,-T,../linker.lds -Wl
|
||||
separate_arguments(_cflags UNIX_COMMAND "${KIRKOS_CFLAGS}")
|
||||
separate_arguments(_ldflags UNIX_COMMAND "${KIRKOS_LDFLAGS}")
|
||||
|
||||
target_compile_options(KirkOS PRIVATE ${_cflags})
|
||||
separate_arguments(_asmflags UNIX_COMMAND "${KIRKOS_ASM_NASM_FLAGS}")
|
||||
|
||||
set_target_properties(KirkOS PROPERTIES
|
||||
LINK_FLAGS "-Wl,--build-id=none"
|
||||
)
|
||||
|
||||
target_compile_options(KirkOS PRIVATE
|
||||
$<$<COMPILE_LANGUAGE:C>:-masm=intel>
|
||||
$<$<COMPILE_LANGUAGE:C>:${_cflags}>
|
||||
$<$<COMPILE_LANGUAGE:ASM_NASM>:${_asmflags}>
|
||||
)
|
||||
target_link_options(KirkOS PRIVATE ${_ldflags})
|
||||
Reference in New Issue
Block a user