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 $ ${MBR_BIN_PATH} COMMAND ${OS3_OBJCOPY_EXE} --only-keep-debug $ ${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 $ ${ST1_BIN_PATH} COMMAND ${OS3_OBJCOPY_EXE} --only-keep-debug $ ${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})