diff --git a/mbr/CMakeLists.txt b/mbr/CMakeLists.txt index 225d7ec..ab6222f 100644 --- a/mbr/CMakeLists.txt +++ b/mbr/CMakeLists.txt @@ -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 $ $.bin COMMAND ${OS3_OBJCOPY_EXE} --only-keep-debug $ $.sym DEPENDS mbr) \ No newline at end of file diff --git a/mbr/linker.ld b/mbr/linker.ld index 9c11568..83fbf79 100644 --- a/mbr/linker.ld +++ b/mbr/linker.ld @@ -4,6 +4,8 @@ SECTIONS . = 0x7C00; .text : AT(0x7c00){ *.o(.text); + } + .data : { *.o(.data); } .sig : AT(0x7DFE){ diff --git a/rawimg/CMakeLists.txt b/rawimg/CMakeLists.txt index 6584d46..28e362e 100644 --- a/rawimg/CMakeLists.txt +++ b/rawimg/CMakeLists.txt @@ -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}) \ No newline at end of file +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 $ ${MBR_BIN_PATH} COMMAND ${OS3_OBJCOPY_EXE} --only-keep-debug $ ${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}) \ No newline at end of file diff --git a/rawimg/mkmbrimg.sh b/rawimg/mkmbrimg.sh new file mode 100644 index 0000000..7e218ce --- /dev/null +++ b/rawimg/mkmbrimg.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BASEDIR=$(dirname "$0") +cp "$1" "$3" +"${BASEDIR}/../build/host/mbrcopy/mbrcopy" "$3" "$2" \ No newline at end of file