Add support for building flat bootsector binaries
This commit is contained in:
@@ -59,6 +59,34 @@ function(add_module_linker_flags MODULE FLAGS)
|
|||||||
set_module_property(${MODULE} LINK_FLAGS ${FLAGS})
|
set_module_property(${MODULE} LINK_FLAGS ${FLAGS})
|
||||||
endfunction()
|
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
|
# This function sets a property for specified module
|
||||||
function(set_module_property MODULE PROPERTY FLAGS)
|
function(set_module_property MODULE PROPERTY FLAGS)
|
||||||
if(NOT ${ARGC} EQUAL 3)
|
if(NOT ${ARGC} EQUAL 3)
|
||||||
|
@@ -3,8 +3,10 @@ set(CMAKE_SYSTEM_NAME Windows)
|
|||||||
|
|
||||||
# Set toolchain compilers
|
# Set toolchain compilers
|
||||||
set(CMAKE_ASM_COMPILER clang-cl)
|
set(CMAKE_ASM_COMPILER clang-cl)
|
||||||
|
set(CMAKE_ASM_LINKER ld.lld)
|
||||||
set(CMAKE_C_COMPILER clang-cl)
|
set(CMAKE_C_COMPILER clang-cl)
|
||||||
set(CMAKE_CXX_COMPILER clang-cl)
|
set(CMAKE_CXX_COMPILER clang-cl)
|
||||||
|
set(CMAKE_LINKER lld-link)
|
||||||
set(CMAKE_MC_COMPILER wmc)
|
set(CMAKE_MC_COMPILER wmc)
|
||||||
set(CMAKE_RC_COMPILER wrc)
|
set(CMAKE_RC_COMPILER wrc)
|
||||||
set(CMAKE_SPEC_COMPILER xtcspecc)
|
set(CMAKE_SPEC_COMPILER xtcspecc)
|
||||||
|
Reference in New Issue
Block a user