Kiibohd Controller
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

CMakeLists.txt 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. ###| CMAKE Kiibohd Controller Bootloader |###
  2. #
  3. # Jacob Alexander 2011-2014
  4. # Due to this file's usefulness:
  5. #
  6. # Released into the Public Domain
  7. #
  8. # This bootloader is based upon the MCHCK dfu-usb bootloader.
  9. # DO NOT USE with Teensy based microcontrollers.
  10. #
  11. ###
  12. ###
  13. # Chip Selection
  14. #
  15. #| You _MUST_ set this to match the microcontroller you are trying to compile for
  16. #| You _MUST_ clean the build directory if you change this value
  17. #|
  18. set( CHIP
  19. "mk20dx128vlf5" # McHCK mk20dx128vlf5
  20. # "mk20dx256vlh7" # Kiibohd-dfu
  21. )
  22. ###
  23. # Bootloader Configuration
  24. #
  25. set ( BOOTLOADER 1 )
  26. ###
  27. # Compiler Intialization
  28. #
  29. set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/../Lib/CMake )
  30. include( initialize )
  31. ##
  32. # Source Defines
  33. #
  34. set( SRCS
  35. main.c
  36. dfu.c
  37. dfu.desc.c
  38. flash.c
  39. kinetis.c
  40. usb.c
  41. )
  42. message( STATUS "Bootloader Source Files:" )
  43. message( "${SRCS}" )
  44. #| Add Lib sources to main list
  45. foreach( SRC_FILE ${COMPILER_SRCS} )
  46. set( SRCS ${SRCS} ${CMAKE_SOURCE_DIR}/../${SRC_FILE} )
  47. endforeach()
  48. ###
  49. # Directory Includes
  50. #
  51. include_directories( ${CMAKE_SOURCE_DIR}/../Lib )
  52. ###
  53. # Project Description
  54. #
  55. #| Project
  56. project( kiibohd_bootloader )
  57. #| Target Name (output name)
  58. set( TARGET kiibohd_bootloader )
  59. #| General Settings
  60. cmake_minimum_required( VERSION 2.8 )
  61. ###
  62. # Generate Header Files
  63. #
  64. configure_file( _buildvars.h buildvars.h )
  65. include_directories( ${CMAKE_BINARY_DIR} )
  66. ###
  67. # CMake Module Checking
  68. #
  69. find_package( Git REQUIRED )
  70. find_package( Ctags ) # Optional
  71. ###
  72. # ctag Generation
  73. #
  74. if( CTAGS_EXECUTABLE )
  75. # Generate the ctags
  76. execute_process( COMMAND ctags ${SRCS}
  77. WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  78. )
  79. endif()
  80. ###
  81. # Disable -Wl,-search_paths_first for OSX (not supported by arm-none-eabi-gcc)
  82. #
  83. if ( APPLE )
  84. string ( REPLACE "-Wl,-search_paths_first" "" CMAKE_C_LINK_FLAGS ${CMAKE_C_LINK_FLAGS} )
  85. string ( REPLACE "-Wl,-search_paths_first" "" CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS} )
  86. message ( AUTHOR_WARNING "Bootloader binary may not fit on device (must be less than 4096 bytes). Macports arm-none-eabi-gcc 4.7.3 doesn't seem to work properly with -flto. However, even disabling it doesn't shrink the binary enough... 4.9.1 is known to work on Arch Linux." )
  87. endif ()
  88. ###
  89. # Build Targets
  90. #
  91. #| Create the .ELF file
  92. set( TARGET_ELF ${TARGET}.elf )
  93. add_executable( ${TARGET_ELF} ${SRCS} )
  94. #| .ELF Properties
  95. set_target_properties( ${TARGET_ELF} PROPERTIES
  96. LINK_FLAGS ${LINKER_FLAGS}
  97. SUFFIX "" # XXX Force Windows to keep the .exe off
  98. )
  99. #| Convert the .ELF into a .bin to load onto the McHCK
  100. set( TARGET_BIN ${TARGET}.bin )
  101. add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
  102. COMMAND ${CMAKE_OBJCOPY} ${BIN_FLAGS} ${TARGET_ELF} ${TARGET_BIN}
  103. COMMENT "Creating binary file to load: ${TARGET_BIN}"
  104. )
  105. #| Generate the Extended .LSS
  106. set( TARGET_LSS ${TARGET}.lss )
  107. add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
  108. COMMAND ${CMAKE_OBJDUMP} ${LSS_FLAGS} ${TARGET_ELF} > ${TARGET_LSS}
  109. COMMENT "Creating Extended Listing: ${TARGET_LSS}"
  110. )
  111. #| Generate the Symbol Table .SYM
  112. set( TARGET_SYM ${TARGET}.sym )
  113. add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
  114. COMMAND ${CMAKE_NM} -n ${TARGET_ELF} > ${TARGET_SYM}
  115. COMMENT "Creating Symbol Table: ${TARGET_SYM}"
  116. )
  117. #| Compiler Selection Record
  118. add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
  119. COMMAND ${CMAKE_SOURCE_DIR}/../Lib/CMake/writer compiler ${COMPILER_FAMILY}
  120. )
  121. ###
  122. # Size Information
  123. #
  124. #| After Changes Size Information
  125. add_custom_target( SizeAfter ALL
  126. COMMAND ${CMAKE_SOURCE_DIR}/../Lib/CMake/sizeCalculator ${CMAKE_SIZE} ram ${TARGET_ELF} ${SIZE_RAM} " SRAM"
  127. COMMAND ${CMAKE_SOURCE_DIR}/../Lib/CMake/sizeCalculator ${CMAKE_SIZE} flash ${TARGET_ELF} ${SIZE_FLASH} "Flash"
  128. DEPENDS ${TARGET_ELF}
  129. COMMENT "Chip usage for ${CHIP}"
  130. )