[General] Rework CMAKE custom targets as custom commands instead, bundled in a single "image" custom target

This commit is contained in:
John Stefanelli 2023-01-13 15:56:25 +01:00
parent 642385797c
commit f7d06b8ff3
Signed by: jstefanelli
GPG key ID: 60EDE2437640D2AA
4 changed files with 17 additions and 5 deletions

View file

@ -1,6 +1,4 @@
add_executable(mbr mbr.asm linker.ld)
add_executable(mbr mbr.asm)
set_target_properties(mbr PROPERTIES LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/linker.ld)
target_link_options(mbr PRIVATE -T${CMAKE_CURRENT_SOURCE_DIR}/linker.ld)
add_custom_target(mbr_bin ${OS3_OBJCOPY_EXE} -O binary -g -S -R .eh_frame $<TARGET_FILE:mbr> $<TARGET_FILE:mbr>.bin COMMAND ${OS3_OBJCOPY_EXE} --only-keep-debug $<TARGET_FILE:mbr> $<TARGET_FILE:mbr>.sym DEPENDS mbr)

View file

@ -4,6 +4,8 @@ SECTIONS
. = 0x7C00;
.text : AT(0x7c00){
*.o(.text);
}
.data : {
*.o(.data);
}
.sig : AT(0x7DFE){

View file

@ -6,4 +6,11 @@ elseif (CMAKE_HOST_UNIX)
set(IMAGE_GEN_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/mkimg_linux.sh)
endif (CMAKE_HOST_APPLE)
add_custom_target(raw_img COMMAND sh ${IMAGE_GEN_SCRIPT} ${IMAGE_TARGET} BYPRODUCTS ${IMAGE_TARGET})
cmake_path(SET MBR_BIN_PATH NORMALIZE "${CMAKE_CURRENT_BINARY_DIR}/../mbr/mbr.bin")
add_custom_command(OUTPUT ${MBR_BIN_PATH} COMMAND ${OS3_OBJCOPY_EXE} -O binary -g -S -R .eh_frame $<TARGET_FILE:mbr> ${MBR_BIN_PATH} COMMAND ${OS3_OBJCOPY_EXE} --only-keep-debug $<TARGET_FILE:mbr> ${MBR_BIN_PATH}.sym COMMAND echo "Building .bin file" DEPENDS mbr BYPRODUCTS ${MBR_BIN_PATH}.sym)
cmake_path(SET MBR_IMAGE_TARGET "${CMAKE_CURRENT_BINARY_DIR}/mbr.img")
add_custom_command(OUTPUT ${IMAGE_TARGET} COMMAND sh ${IMAGE_GEN_SCRIPT} ${IMAGE_TARGET})
add_custom_command(OUTPUT ${MBR_IMAGE_TARGET} COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/mkmbrimg.sh ${IMAGE_TARGET} ${MBR_BIN_PATH} ${MBR_IMAGE_TARGET} DEPENDS ${IMAGE_TARGET} ${MBR_BIN_PATH})
add_custom_target(image DEPENDS ${MBR_IMAGE_TARGET})

5
rawimg/mkmbrimg.sh Normal file
View file

@ -0,0 +1,5 @@
#!/bin/sh
BASEDIR=$(dirname "$0")
cp "$1" "$3"
"${BASEDIR}/../build/host/mbrcopy/mbrcopy" "$3" "$2"