set(IMAGE_TARGET ${CMAKE_CURRENT_BINARY_DIR}/raw.img)

if (CMAKE_HOST_APPLE)
set(IMAGE_GEN_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/mkimg_macos.sh)
elseif (CMAKE_HOST_UNIX)
set(IMAGE_GEN_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/mkimg_linux.sh)
endif (CMAKE_HOST_APPLE)

cmake_path(SET MBR_BIN_PATH NORMALIZE "${CMAKE_CURRENT_BINARY_DIR}/../mbr/mbr.bin")
cmake_path(SET ST1_BIN_PATH NORMALIZE "${CMAKE_CURRENT_BINARY_DIR}/../stage1/stage1.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 DEPENDS mbr BYPRODUCTS ${MBR_BIN_PATH}.sym)

cmake_path(SET MBR_IMAGE_TARGET "${CMAKE_CURRENT_BINARY_DIR}/mbr.img")
cmake_path(SET KERNEL_IMAGE_TARGET "${CMAKE_CURRENT_BINARY_DIR}/kernel.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_command(OUTPUT ${ST1_BIN_PATH} COMMAND ${OS3_OBJCOPY_EXE} -O binary -g -S -R .eh_frame $<TARGET_FILE:stage1> ${ST1_BIN_PATH} COMMAND ${OS3_OBJCOPY_EXE} --only-keep-debug $<TARGET_FILE:stage1> ${ST1_BIN_PATH}.sym DEPENDS stage1 BYPRODUCTS ${ST1_BIN_PATH}.sym)
add_custom_command(OUTPUT ${KERNEL_IMAGE_TARGET} COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/mkkernelimg.sh ${MBR_IMAGE_TARGET} ${ST1_BIN_PATH} ${KERNEL_IMAGE_TARGET} DEPENDS ${MBR_IMAGE_TARGET} ${ST1_BIN_PATH})
add_custom_target(image DEPENDS ${KERNEL_IMAGE_TARGET})