1392571bd7
Use a consistent standard - Tabs in front for indenting, spaces after for anything else. This way everything stays nice and lined up while also letting users change there prefered indent level. Most of the new files from Haata where already in this format.
203 lines
4.0 KiB
CMake
203 lines
4.0 KiB
CMake
###| 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
|
|
# "mk20dx256vlh7" # Kiibohd-dfu mk20dx256vlh7
|
|
)
|
|
|
|
|
|
|
|
###
|
|
# Compiler Selection
|
|
#
|
|
|
|
#| *** EXPERIMENTAL ***
|
|
#| Stick with gcc unless you know what you're doing
|
|
#| Currently only arm is supported with clang
|
|
set( COMPILER
|
|
"gcc" # arm-none-eabi-gcc / avr-gcc - Default
|
|
# "clang" # arm-none-eabi
|
|
CACHE STRING "Compiler Type" )
|
|
|
|
|
|
|
|
###
|
|
# 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()
|
|
|
|
|
|
|
|
###
|
|
# Disable -Wl,-search_paths_first for OSX (not supported by arm-none-eabi-gcc)
|
|
#
|
|
|
|
if ( APPLE )
|
|
string ( REPLACE "-Wl,-search_paths_first" "" CMAKE_C_LINK_FLAGS ${CMAKE_C_LINK_FLAGS} )
|
|
string ( REPLACE "-Wl,-search_paths_first" "" CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS} )
|
|
|
|
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." )
|
|
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}"
|
|
)
|
|
|