CMakeLists.txt 812 B

123456789101112131415161718192021222324252627282930
  1. cmake_minimum_required(VERSION 3.15)
  2. project(my_os_bootloader ASM)
  3. set(CMAKE_CXX_FLAGS "-nostdinc -m32 -nostdlib")
  4. set(CMAKE_ASM_FLAGS "-m32")
  5. set(EXTRACT_DIR ${PROJECT_BINARY_DIR}/extract)
  6. file(MAKE_DIRECTORY ${EXTRACT_DIR})
  7. set(BOOTLOADER_SOURCES src/boot.s
  8. )
  9. add_library(bootloader STATIC ${BOOTLOADER_SOURCES})
  10. add_custom_command(OUTPUT extracted_bootloader
  11. DEPENDS bootloader
  12. COMMAND ar xf ${PROJECT_BINARY_DIR}/libbootloader.a --output=${EXTRACT_DIR}
  13. )
  14. add_custom_target(boot.img
  15. DEPENDS extracted_bootloader
  16. COMMAND ld -T ${CMAKE_SOURCE_DIR}/ldscript.ld ${EXTRACT_DIR}/*.o
  17. -melf_i386 --oformat=binary -o ${CMAKE_BINARY_DIR}/boot.img
  18. )
  19. add_custom_command(OUTPUT run
  20. POST_BUILD
  21. DEPENDS boot.img
  22. COMMAND bochs -f ${CMAKE_SOURCE_DIR}/bochs.conf
  23. )