]> git.donarmstrong.com Git - kiibohd-controller.git/blob - Lib/CMake/build.cmake
Adding CMake build support for the KLL compiler
[kiibohd-controller.git] / Lib / CMake / build.cmake
1 ###| CMAKE Kiibohd Controller Source Configurator |###
2 #
3 # Written by Jacob Alexander in 2011-2014 for the Kiibohd Controller
4 #
5 # Released into the Public Domain
6 #
7 ###
8
9
10
11 ###
12 # Build Targets
13 #
14
15 #| Create the .ELF file
16 set( TARGET_ELF ${TARGET}.elf )
17 add_executable( ${TARGET_ELF} ${SRCS} generatedKeymap.h )
18
19
20 #| .ELF Properties
21 set_target_properties( ${TARGET_ELF} PROPERTIES
22         LINK_FLAGS ${LINKER_FLAGS}
23         SUFFIX ""                               # XXX Force Windows to keep the .exe off
24 )
25
26
27 #| Convert the .ELF into a .bin to load onto the McHCK
28 if( DEFINED DFU )
29         set( TARGET_BIN ${TARGET}.dfu.bin )
30         add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
31                 COMMAND ${CMAKE_OBJCOPY} ${BIN_FLAGS} ${TARGET_ELF} ${TARGET_BIN}
32                 COMMENT "Creating dfu binary file:      ${TARGET_BIN}"
33         )
34 endif()
35
36
37 #| Convert the .ELF into a .HEX to load onto the Teensy
38 if ( DEFINED TEENSY )
39         set( TARGET_HEX ${TARGET}.teensy.hex )
40         add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
41                 COMMAND ${CMAKE_OBJCOPY} ${HEX_FLAGS} ${TARGET_ELF} ${TARGET_HEX}
42                 COMMENT "Creating iHex file to load:    ${TARGET_HEX}"
43         )
44 endif()
45
46
47 #| Generate the Extended .LSS
48 set( TARGET_LSS ${TARGET}.lss )
49 add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
50         COMMAND ${CMAKE_OBJDUMP} ${LSS_FLAGS} ${TARGET_ELF} > ${TARGET_LSS}
51         COMMENT "Creating Extended Listing:     ${TARGET_LSS}"
52 )
53
54
55 #| Generate the Symbol Table .SYM
56 set( TARGET_SYM ${TARGET}.sym )
57 add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
58         COMMAND ${CMAKE_NM} -n ${TARGET_ELF} > ${TARGET_SYM}
59         COMMENT "Creating Symbol Table:         ${TARGET_SYM}"
60 )
61
62
63 #| Compiler Selection Record
64 add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
65         COMMAND ${CMAKE_SOURCE_DIR}/Lib/CMake/writer compiler ${COMPILER_FAMILY}
66 )
67
68
69
70 ###
71 # Size Information
72 #
73
74 #| After Changes Size Information
75 add_custom_target( SizeAfter ALL
76         COMMAND ${CMAKE_SOURCE_DIR}/Lib/CMake/sizeCalculator ${CMAKE_SIZE} ram   ${TARGET_ELF} ${SIZE_RAM}   " SRAM"
77         COMMAND ${CMAKE_SOURCE_DIR}/Lib/CMake/sizeCalculator ${CMAKE_SIZE} flash ${TARGET_ELF} ${SIZE_FLASH} "Flash"
78         DEPENDS ${TARGET_ELF}
79         COMMENT "Chip usage for ${CHIP}"
80 )
81