Add support for building flat bootsector binaries
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in 33s
Builds / ExectOS (amd64, release) (push) Successful in 32s
Builds / ExectOS (i686, debug) (push) Successful in 30s
Builds / ExectOS (i686, release) (push) Successful in 28s

This commit is contained in:
2025-09-25 18:32:27 +02:00
parent 332e57f305
commit 4696faf86d
2 changed files with 30 additions and 0 deletions

View File

@@ -59,6 +59,34 @@ function(add_module_linker_flags MODULE FLAGS)
set_module_property(${MODULE} LINK_FLAGS ${FLAGS})
endfunction()
# This function compiles an assembly bootsector file into a flat binary
function(compile_bootsector NAME SOURCE BASEADDR ENTRYPOINT)
set(BINARY_NAME "${NAME}.bin")
set(OBJECT_NAME "${NAME}.obj")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${BINARY_NAME}
COMMAND ${CMAKE_ASM_COMPILER}
/nologo
--target=i386-none-elf
/Fo${CMAKE_CURRENT_BINARY_DIR}/${OBJECT_NAME}
-c -- ${SOURCE}
COMMAND ${CMAKE_ASM_LINKER}
-m elf_i386
--image-base=0
--oformat binary
-Ttext=${BASEADDR}
--entry=_start${ENTRYPOINT}
-o ${CMAKE_CURRENT_BINARY_DIR}/${BINARY_NAME}
${CMAKE_CURRENT_BINARY_DIR}/${OBJECT_NAME}
DEPENDS ${SOURCE}
)
add_custom_target(${NAME} ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${BINARY_NAME}
)
endfunction()
# This function sets a property for specified module
function(set_module_property MODULE PROPERTY FLAGS)
if(NOT ${ARGC} EQUAL 3)

View File

@@ -3,8 +3,10 @@ set(CMAKE_SYSTEM_NAME Windows)
# Set toolchain compilers
set(CMAKE_ASM_COMPILER clang-cl)
set(CMAKE_ASM_LINKER ld.lld)
set(CMAKE_C_COMPILER clang-cl)
set(CMAKE_CXX_COMPILER clang-cl)
set(CMAKE_LINKER lld-link)
set(CMAKE_MC_COMPILER wmc)
set(CMAKE_RC_COMPILER wrc)
set(CMAKE_SPEC_COMPILER xtcspecc)