Files
termOS/Boot/CMakeLists.txt
2026-04-21 00:09:30 +04:00

49 lines
1.2 KiB
CMake

project(termOS_Bootloader LANGUAGES C ASM)
if(APPLE)
set(CMAKE_C_LINK_FLAGS "")
endif()
set(UEFI_COMPILE_OPTIONS
-std=c23
-target x86_64-unknown-windows-msvc
-Wall -Wextra
-fno-builtin
$<$<CONFIG:Release>:-Werror>
)
set(POSIX_UEFI_SOURCES
src/uefi/crt_x86_64.c
src/uefi/dirent.c
src/uefi/qsort.c
src/uefi/stat.c
src/uefi/stdio.c
src/uefi/stdlib.c
src/uefi/string.c
src/uefi/time.c
src/uefi/unistd.c
)
add_library(posix_uefi_lib OBJECT ${POSIX_UEFI_SOURCES})
target_compile_options(posix_uefi_lib PRIVATE ${UEFI_COMPILE_OPTIONS})
target_include_directories(posix_uefi_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src/uefi)
add_executable(BOOTX64 src/main.c)
target_compile_options(BOOTX64 PRIVATE ${UEFI_COMPILE_OPTIONS})
target_sources(BOOTX64 PRIVATE $<TARGET_OBJECTS:posix_uefi_lib>)
target_include_directories(BOOTX64 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/uefi)
target_link_options(BOOTX64 PRIVATE
-fuse-ld=lld
-target x86_64-unknown-windows-msvc
-nostdlib
-Wl,-subsystem:efi_application
-Wl,-entry:uefi_init
)
set_target_properties(BOOTX64 PROPERTIES
SUFFIX ".EFI"
OUTPUT_NAME "BOOTX64"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/efi_bin"
)