]> git.donarmstrong.com Git - kiibohd-controller.git/blobdiff - Bootloader/CMakeLists.txt
Adding McHCK DFU Bootloader
[kiibohd-controller.git] / Bootloader / CMakeLists.txt
diff --git a/Bootloader/CMakeLists.txt b/Bootloader/CMakeLists.txt
new file mode 100644 (file)
index 0000000..b8cb8a0
--- /dev/null
@@ -0,0 +1,173 @@
+###| CMAKE Kiibohd Controller Bootloader |###
+#
+# Jacob Alexander 2011-2014
+# Due to this file's usefulness:
+#
+# Released into the Public Domain
+#
+# This bootloader is based upon the MCHCK dfu-usb bootloader.
+# DO NOT USE with Teensy based microcontrollers.
+#
+###
+
+
+
+###
+# Chip Selection
+#
+
+#| You _MUST_ set this to match the microcontroller you are trying to compile for
+#| You _MUST_ clean the build directory if you change this value
+#|
+set( CHIP
+       "mk20dx128vlf5"    # McHCK    mk20dx128vlf5
+)
+
+
+###
+# Bootloader Configuration
+#
+set ( BOOTLOADER 1 )
+
+
+
+###
+# Compiler Intialization
+#
+set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/../Lib/CMake )
+include( initialize )
+
+
+
+##
+# Source Defines
+#
+set( SRCS
+       main.c
+       dfu.c
+       dfu.desc.c
+       flash.c
+       kinetis.c
+       usb.c
+)
+
+message( STATUS "Bootloader Source Files:" )
+message( "${SRCS}" )
+
+#| Add Lib sources to main list
+foreach( SRC_FILE ${COMPILER_SRCS} )
+       set( SRCS ${SRCS} ${CMAKE_SOURCE_DIR}/../${SRC_FILE} )
+endforeach()
+
+
+
+
+###
+# Directory Includes
+#
+include_directories( ${CMAKE_SOURCE_DIR}/../Lib )
+
+
+
+###
+# Project Description
+#
+
+#| Project
+project( kiibohd_bootloader )
+
+#| Target Name (output name)
+set( TARGET kiibohd_bootloader )
+
+#| General Settings
+cmake_minimum_required( VERSION 2.8 )
+
+
+
+###
+# Generate Header Files
+#
+configure_file( _buildvars.h buildvars.h )
+include_directories( ${CMAKE_BINARY_DIR} )
+
+
+
+###
+# CMake Module Checking
+#
+find_package( Git REQUIRED )
+find_package( Ctags ) # Optional
+
+
+
+###
+# ctag Generation
+#
+if( CTAGS_EXECUTABLE )
+       # Generate the ctags
+       execute_process( COMMAND ctags ${SRCS}
+               WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+       )
+endif()
+
+
+
+###
+# Build Targets
+#
+
+#| Create the .ELF file
+set( TARGET_ELF ${TARGET}.elf )
+add_executable( ${TARGET_ELF} ${SRCS} )
+
+
+#| .ELF Properties
+set_target_properties( ${TARGET_ELF} PROPERTIES
+       LINK_FLAGS ${LINKER_FLAGS}
+       SUFFIX ""                               # XXX Force Windows to keep the .exe off
+)
+
+
+#| Convert the .ELF into a .bin to load onto the McHCK
+set( TARGET_BIN ${TARGET}.bin )
+add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
+       COMMAND ${CMAKE_OBJCOPY} ${BIN_FLAGS} ${TARGET_ELF} ${TARGET_BIN}
+       COMMENT "Creating binary file to load:  ${TARGET_BIN}"
+)
+
+
+#| Generate the Extended .LSS
+set( TARGET_LSS ${TARGET}.lss )
+add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
+       COMMAND ${CMAKE_OBJDUMP} ${LSS_FLAGS} ${TARGET_ELF} > ${TARGET_LSS}
+       COMMENT "Creating Extended Listing:     ${TARGET_LSS}"
+)
+
+
+#| Generate the Symbol Table .SYM
+set( TARGET_SYM ${TARGET}.sym )
+add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
+       COMMAND ${CMAKE_NM} -n ${TARGET_ELF} > ${TARGET_SYM}
+       COMMENT "Creating Symbol Table:         ${TARGET_SYM}"
+)
+
+
+#| Compiler Selection Record
+add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
+       COMMAND ${CMAKE_SOURCE_DIR}/../Lib/CMake/writer compiler ${COMPILER_FAMILY}
+)
+
+
+
+###
+# Size Information
+#
+
+#| After Changes Size Information
+add_custom_target( SizeAfter ALL
+       COMMAND ${CMAKE_SOURCE_DIR}/../Lib/CMake/sizeCalculator ${CMAKE_SIZE} ram   ${TARGET_ELF} ${SIZE_RAM}   " SRAM"
+       COMMAND ${CMAKE_SOURCE_DIR}/../Lib/CMake/sizeCalculator ${CMAKE_SIZE} flash ${TARGET_ELF} ${SIZE_FLASH} "Flash"
+       DEPENDS ${TARGET_ELF}
+       COMMENT "Chip usage for ${CHIP}"
+)
+