]> git.donarmstrong.com Git - kiibohd-controller.git/blobdiff - Lib/CMake/modules.cmake
Fixing RAM calculator and reduced actual SRAM usage
[kiibohd-controller.git] / Lib / CMake / modules.cmake
index 689725d20f73c9a97f462bb14c5e3d0e02934974..5cd2d3dcb4f83e4ea37d7e0e28135505f270451e 100644 (file)
@@ -7,6 +7,13 @@
 ###
 
 
+###
+# CMake Custom Modules Path
+#
+
+set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/Lib/CMake/" )
+
+
 
 ###
 # Module Overrides (Used in the buildall.bash script)
@@ -122,6 +129,14 @@ message( "${DEBUG_SRCS}" )
 
 
 
+###
+# CMake Module Checking
+#
+find_package( Git REQUIRED )
+find_package( Ctags ) # Optional
+
+
+
 ###
 # Generate USB Defines
 #
@@ -234,9 +249,26 @@ ModuleCompatibility( ${DebugModulePath}  ${DebugModuleCompatibility}  )
 
 
 ###
-# CMake Module Checking
+# ctag Generation
 #
-find_package( Git REQUIRED )
+
+if( CTAGS_EXECUTABLE )
+       # Populate list of directories for ctags to parse
+       # NOTE: Doesn't support dots in the folder names...
+       foreach( filename ${SRCS} )
+               string( REGEX REPLACE "/[a-zA-Z0-9_-]+.c$" "" pathglob ${filename} )
+               file( GLOB filenames "${pathglob}/*.c" )
+               set( CTAG_PATHS ${CTAG_PATHS} ${filenames} )
+               file( GLOB filenames "${pathglob}/*.h" )
+               set( CTAG_PATHS ${CTAG_PATHS} ${filenames} )
+       endforeach()
+
+       # Generate the ctags
+       execute_process( COMMAND ctags ${CTAG_PATHS}
+               WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+       )
+endif()
+
 
 
 ###
@@ -255,12 +287,24 @@ set_target_properties( ${TARGET_ELF} PROPERTIES
 )
 
 
+#| Convert the .ELF into a .bin to load onto the McHCK
+if( DEFINED DFU )
+       set( TARGET_BIN ${TARGET}.dfu.bin )
+       add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
+               COMMAND ${CMAKE_OBJCOPY} ${BIN_FLAGS} ${TARGET_ELF} ${TARGET_BIN}
+               COMMENT "Creating dfu binary file:      ${TARGET_BIN}"
+       )
+endif()
+
+
 #| Convert the .ELF into a .HEX to load onto the Teensy
-set( TARGET_HEX ${TARGET}.hex )
-add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
-       COMMAND ${CMAKE_OBJCOPY} ${HEX_FLAGS} ${TARGET_ELF} ${TARGET_HEX}
-       COMMENT "Creating load file for Flash:  ${TARGET_HEX}"
-)
+if ( DEFINED TEENSY )
+       set( TARGET_HEX ${TARGET}.teensy.hex )
+       add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
+               COMMAND ${CMAKE_OBJCOPY} ${HEX_FLAGS} ${TARGET_ELF} ${TARGET_HEX}
+               COMMENT "Creating iHex file to load:    ${TARGET_HEX}"
+       )
+endif()
 
 
 #| Generate the Extended .LSS
@@ -279,6 +323,12 @@ add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
 )
 
 
+#| Compiler Selection Record
+add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
+       COMMAND ${CMAKE_SOURCE_DIR}/Lib/CMake/writer compiler ${COMPILER_FAMILY}
+)
+
+
 
 ###
 # Size Information
@@ -286,8 +336,8 @@ add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
 
 #| After Changes Size Information
 add_custom_target( SizeAfter ALL
-       COMMAND ${CMAKE_SOURCE_DIR}/Lib/CMake/sizeCalculator ${CMAKE_SIZE} ${FORMAT} ${TARGET_ELF} ${SIZE_RAM}   " SRAM"
-       COMMAND ${CMAKE_SOURCE_DIR}/Lib/CMake/sizeCalculator ${CMAKE_SIZE} ${FORMAT} ${TARGET_HEX} ${SIZE_FLASH} "Flash"
+       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}"
 )