# HG changeset patch # User Jacob Alexander # Date 1422237228 28800 # Node ID 5b66d1da5377c4e882558ff7a24e3ba84436e02d # Parent e6c753528873875ba5ae0ffeb953893815d67d29 Updating setup.cmake files to use Module hierarchy implicitly - Added AddModule CMake function which simplifies specifying module requirements diff -r e6c753528873 -r 5b66d1da5377 Debug/cli/setup.cmake --- a/Debug/cli/setup.cmake Sun Jan 25 12:49:23 2015 -0800 +++ b/Debug/cli/setup.cmake Sun Jan 25 17:53:48 2015 -0800 @@ -1,6 +1,6 @@ ###| CMake Kiibohd Controller Debug Module |### # -# Written by Jacob Alexander in 2014 for the Kiibohd Controller +# Written by Jacob Alexander in 2014-2015 for the Kiibohd Controller # # Released into the Public Domain # @@ -11,31 +11,15 @@ # Module C files # -set( DEBUG_SRCS +set ( Module_SRCS cli.c ) ### -# Setup File Dependencies -# - - -### -# Module Specific Options -# - - -### -# Just in case, you only want this module and are using others as well -# -add_definitions( -I${HEAD_DIR}/Debug/off ) - - -### # Compiler Family Compatibility # -set( DebugModuleCompatibility +set ( ModuleCompatibility arm avr ) diff -r e6c753528873 -r 5b66d1da5377 Debug/full/setup.cmake --- a/Debug/full/setup.cmake Sun Jan 25 12:49:23 2015 -0800 +++ b/Debug/full/setup.cmake Sun Jan 25 17:53:48 2015 -0800 @@ -1,6 +1,6 @@ ###| CMake Kiibohd Controller Debug Module |### # -# Written by Jacob Alexander in 2011-2014 for the Kiibohd Controller +# Written by Jacob Alexander in 2011-2015 for the Kiibohd Controller # # Released into the Public Domain # @@ -8,31 +8,18 @@ ### -# Module C files +# Required Submodules # -#| XXX Requires the ../ due to how the paths are constructed -set( DEBUG_SRCS - ../cli/cli.c - ../led/led.c - ../print/print.c -) - - -### -# Module Specific Options -# -add_definitions( - -I${HEAD_DIR}/Debug/cli - -I${HEAD_DIR}/Debug/led - -I${HEAD_DIR}/Debug/print -) +AddModule ( Debug cli ) +AddModule ( Debug led ) +AddModule ( Debug print ) ### # Compiler Family Compatibility # -set( DebugModuleCompatibility +set ( ModuleCompatibility arm avr ) diff -r e6c753528873 -r 5b66d1da5377 Debug/led/setup.cmake --- a/Debug/led/setup.cmake Sun Jan 25 12:49:23 2015 -0800 +++ b/Debug/led/setup.cmake Sun Jan 25 17:53:48 2015 -0800 @@ -1,6 +1,6 @@ ###| CMake Kiibohd Controller Debug Module |### # -# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller +# Written by Jacob Alexander in 2011-2015 for the Kiibohd Controller # # Released into the Public Domain # @@ -11,26 +11,15 @@ # Module C files # -set( DEBUG_SRCS +set ( Module_SRCS led.c ) ### -# Module Specific Options -# - - -### -# Just in case, you only want this module and are using others as well -# -add_definitions( -I${HEAD_DIR}/Debug/off ) - - -### # Compiler Family Compatibility # -set( DebugModuleCompatibility +set ( ModuleCompatibility arm avr ) diff -r e6c753528873 -r 5b66d1da5377 Debug/off/led.h --- a/Debug/off/led.h Sun Jan 25 12:49:23 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -/* Copyright (C) 2011 by Jacob Alexander - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef __led_h -#define __led_h - -// ----- Disabler Defines ----- -#define init_errorLED() -#define errorLED(on) - -#endif - diff -r e6c753528873 -r 5b66d1da5377 Debug/off/print.h --- a/Debug/off/print.h Sun Jan 25 12:49:23 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -/* Copyright (C) 2011 by Jacob Alexander - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef print_h__ -#define print_h__ - -// ----- Disabler Defines ----- - -#define dPrint(c) -#define dPrintStr(c) -#define dPrintStrs(...) -#define dPrintStrNL(c) -#define dPrintStrsNL(...) - -// Special Msg Constructs (Uses VT100 tags) -#define dPrintMsg(colour_code_str,msg,...) -#define printMsg(colour_code_str,msg,str) - -// Info Messages -#define info_dPrint(...) -#define info_print(str) - -// Warning Messages -#define warn_dPrint(...) -#define warn_print(str) - -// Error Messages -#define erro_dPrint(...) -#define erro_print(str) - -// Debug Messages -#define dbug_dPrint(...) -#define dbug_print(str) - -// Static String Printing -#define print(s) _print(PSTR(s)) - -// Output Functions -#define _print(s) -#define usb_debug_putstr(s) -#define usb_debug_putstrs(s, ...) - -// String Functions -#define hexToStr(hex, out) -#define int8ToStr(in, out) -#define int16ToStr(in, out) -#define hexToStr_op(in, out, op) -#define revsStr(in) -#define lenStr(in) - -#endif - diff -r e6c753528873 -r 5b66d1da5377 Debug/off/setup.cmake --- a/Debug/off/setup.cmake Sun Jan 25 12:49:23 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -###| CMake Kiibohd Controller Debug Module |### -# -# Written by Jacob Alexander in 2011 for the Kiibohd Controller -# -# Released into the Public Domain -# -### - - -### -# Module C files -# -#| None! - - -### -# Module Specific Options -# - - -### -# Compiler Family Compatibility -# -set( DebugModuleCompatibility - arm - avr -) - diff -r e6c753528873 -r 5b66d1da5377 Debug/print/setup.cmake --- a/Debug/print/setup.cmake Sun Jan 25 12:49:23 2015 -0800 +++ b/Debug/print/setup.cmake Sun Jan 25 17:53:48 2015 -0800 @@ -1,6 +1,6 @@ ###| CMake Kiibohd Controller Debug Module |### # -# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller +# Written by Jacob Alexander in 2011-2015 for the Kiibohd Controller # # Released into the Public Domain # @@ -11,26 +11,15 @@ # Module C files # -set( DEBUG_SRCS +set ( Module_SRCS print.c ) ### -# Module Specific Options -# - - -### -# Just in case, you only want this module and are using others as well -# -add_definitions( -I${HEAD_DIR}/Debug/off ) - - -### # Compiler Family Compatibility # -set( DebugModuleCompatibility +set ( ModuleCompatibility arm avr ) diff -r e6c753528873 -r 5b66d1da5377 Lib/CMake/modules.cmake --- a/Lib/CMake/modules.cmake Sun Jan 25 12:49:23 2015 -0800 +++ b/Lib/CMake/modules.cmake Sun Jan 25 17:53:48 2015 -0800 @@ -24,6 +24,7 @@ + ### # Path Setup # @@ -41,36 +42,16 @@ # Module Check Function # -#| Usage: -#| PathPrepend( ModulePath ) -#| Uses the ${COMPILER_FAMILY} variable -function( ModuleCompatibility ModulePath ) - foreach( mod_var ${ARGN} ) +function ( ModuleCompatibility ModulePath ) + foreach ( mod_var ${ARGN} ) if ( ${mod_var} STREQUAL ${COMPILER_FAMILY} ) # Module found, no need to scan further return() endif () - endforeach() - - message( FATAL_ERROR "${ModulePath} does not support the ${COMPILER_FAMILY} family..." ) -endfunction() - - - -### -# Module Configuration -# + endforeach () -#| Additional options, usually define settings -add_definitions() - -#| Include path for each of the modules -add_definitions( - -I${HEAD_DIR}/${ScanModulePath} - -I${HEAD_DIR}/${MacroModulePath} - -I${HEAD_DIR}/${OutputModulePath} - -I${HEAD_DIR}/${DebugModulePath} -) + message ( FATAL_ERROR "${ModulePath} does not support the ${COMPILER_FAMILY} family..." ) +endfunction () @@ -81,54 +62,86 @@ #| Go through lists of sources and append paths #| Usage: #| PathPrepend( OutputListOfSources ) -macro( PathPrepend Output SourcesPath ) - unset( tmpSource ) +macro ( PathPrepend Output SourcesPath ) + unset ( tmpSource ) # Loop through items - foreach( item ${ARGN} ) + foreach ( item ${ARGN} ) # Set the path - set( tmpSource ${tmpSource} "${SourcesPath}/${item}" ) - endforeach() + set ( tmpSource ${tmpSource} "${SourcesPath}/${item}" ) + endforeach () # Finalize by writing the new list back over the old one - set( ${Output} ${tmpSource} ) -endmacro() + set ( ${Output} ${tmpSource} ) +endmacro () + -#| Scan Module -include ( "${ScanModulePath}/setup.cmake" ) -PathPrepend( SCAN_SRCS ${ScanModulePath} ${SCAN_SRCS} ) +### +# Add Module Macro +# +# Optional Arg 1: Main Module Check, set to True/1 if adding a main module + +function ( AddModule ModuleType ModuleName ) + # Module path + set ( ModulePath ${ModuleType}/${ModuleName} ) + set ( ModuleFullPath ${HEAD_DIR}/${ModuleType}/${ModuleName} ) -#| Macro Module -include ( "${MacroModulePath}/setup.cmake" ) -PathPrepend( MACRO_SRCS ${MacroModulePath} ${MACRO_SRCS} ) + # Include setup.cmake file + include ( ${ModuleFullPath}/setup.cmake ) + + # Check if this is a main module add + foreach ( extraArg ${ARGN} ) + # Make sure this isn't a submodule + if ( DEFINED SubModule ) + message ( FATAL_ERROR + "The '${ModuleName}' module is not a stand-alone module, and requires further setup." + ) + endif () + endforeach () -#| Output Module -include ( "${OutputModulePath}/setup.cmake" ) -PathPrepend( OUTPUT_SRCS ${OutputModulePath} ${OUTPUT_SRCS} ) + # PathPrepend to give proper paths to each of the source files + PathPrepend ( Module_SRCS ${ModulePath} ${Module_SRCS} ) + + # Check the current scope to see if a sub-module added some source files + set ( Module_SRCS ${${ModuleType}_SRCS} ${Module_SRCS} ) + + # Append each of the sources to each type of module srcs list + set ( ${ModuleType}_SRCS ${Module_SRCS} ) + + # Add .h files + add_definitions ( -I${ModuleFullPath} ) -#| Debugging Module -include ( "${DebugModulePath}/setup.cmake" ) -PathPrepend( DEBUG_SRCS ${DebugModulePath} ${DEBUG_SRCS} ) + # Check module compatibility + ModuleCompatibility( ${ModulePath} ${ModuleCompatibility} ) + + # Check if this is a main module add + foreach ( extraArg ${ARGN} ) + # Display detected source files + if ( NOT DEFINED SubModule ) + message ( STATUS "Detected ${ModuleType} Module Source Files:" ) + message ( "${${ModuleType}_SRCS}" ) + endif () + endforeach () + + # Finally, add the sources to the parent scope (i.e. return) + set ( ${ModuleType}_SRCS ${${ModuleType}_SRCS} PARENT_SCOPE ) +endfunction () -#| Print list of all module sources -message( STATUS "Detected Scan Module Source Files:" ) -message( "${SCAN_SRCS}" ) -message( STATUS "Detected Macro Module Source Files:" ) -message( "${MACRO_SRCS}" ) -message( STATUS "Detected Output Module Source Files:" ) -message( "${OUTPUT_SRCS}" ) -message( STATUS "Detected Debug Module Source Files:" ) -message( "${DEBUG_SRCS}" ) +#| Add main modules +AddModule ( Scan ${ScanModule} 1 ) +AddModule ( Macro ${MacroModule} 1 ) +AddModule ( Output ${OutputModule} 1 ) +AddModule ( Debug ${DebugModule} 1 ) ### # CMake Module Checking # -find_package( Git REQUIRED ) -find_package( Ctags ) # Optional +find_package ( Git REQUIRED ) +find_package ( Ctags ) # Optional @@ -220,10 +233,10 @@ set( SRCS ${MAIN_SRCS} ${COMPILER_SRCS} - ${SCAN_SRCS} - ${MACRO_SRCS} - ${OUTPUT_SRCS} - ${DEBUG_SRCS} + ${Scan_SRCS} + ${Macro_SRCS} + ${Output_SRCS} + ${Debug_SRCS} ) #| Directories to include by default @@ -232,18 +245,6 @@ ### -# Module Compatibility Check -# - -#| Check for whether the set modules are compatible with the specified compiler family -ModuleCompatibility( ${ScanModulePath} ${ScanModuleCompatibility} ) -ModuleCompatibility( ${MacroModulePath} ${MacroModuleCompatibility} ) -ModuleCompatibility( ${OutputModulePath} ${OutputModuleCompatibility} ) -ModuleCompatibility( ${DebugModulePath} ${DebugModuleCompatibility} ) - - - -### # ctag Generation # diff -r e6c753528873 -r 5b66d1da5377 Macro/PartialMap/setup.cmake --- a/Macro/PartialMap/setup.cmake Sun Jan 25 12:49:23 2015 -0800 +++ b/Macro/PartialMap/setup.cmake Sun Jan 25 17:53:48 2015 -0800 @@ -1,6 +1,6 @@ ###| CMake Kiibohd Controller Macro Module |### # -# Written by Jacob Alexander in 2014 for the Kiibohd Controller +# Written by Jacob Alexander in 2014-2015 for the Kiibohd Controller # # Released into the Public Domain # @@ -11,20 +11,15 @@ # Module C files # -set( MACRO_SRCS +set ( Module_SRCS macro.c ) ### -# Module Specific Options -# - - -### # Compiler Family Compatibility # -set( MacroModuleCompatibility +set ( ModuleCompatibility arm avr ) diff -r e6c753528873 -r 5b66d1da5377 Output/pjrcUSB/setup.cmake --- a/Output/pjrcUSB/setup.cmake Sun Jan 25 12:49:23 2015 -0800 +++ b/Output/pjrcUSB/setup.cmake Sun Jan 25 17:53:48 2015 -0800 @@ -1,6 +1,6 @@ ###| CMake Kiibohd Controller USB Module |### # -# Written by Jacob Alexander in 2011-2013 for the Kiibohd Controller +# Written by Jacob Alexander in 2011-2015 for the Kiibohd Controller # # Released into the Public Domain # @@ -11,11 +11,10 @@ # Module C files # - #| AVR Compiler if ( ${COMPILER_FAMILY} MATCHES "avr" ) - set( OUTPUT_SRCS + set ( Module_SRCS output_com.c avr/usb_keyboard_serial.c ) @@ -23,7 +22,7 @@ #| ARM Compiler elseif ( ${COMPILER_FAMILY} MATCHES "arm" ) - set( OUTPUT_SRCS + set ( Module_SRCS output_com.c arm/usb_desc.c arm/usb_dev.c @@ -36,13 +35,9 @@ ### -# Module Specific Options -# - -### # Compiler Family Compatibility # -set( OutputModuleCompatibility +set( ModuleCompatibility arm avr ) diff -r e6c753528873 -r 5b66d1da5377 Output/uartOut/arm/uart_serial.c --- a/Output/uartOut/arm/uart_serial.c Sun Jan 25 12:49:23 2015 -0800 +++ b/Output/uartOut/arm/uart_serial.c Sun Jan 25 17:53:48 2015 -0800 @@ -1,4 +1,4 @@ -/* Copyright (C) 2014 by Jacob Alexander +/* Copyright (C) 2014-2015 by Jacob Alexander * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff -r e6c753528873 -r 5b66d1da5377 Output/uartOut/setup.cmake --- a/Output/uartOut/setup.cmake Sun Jan 25 12:49:23 2015 -0800 +++ b/Output/uartOut/setup.cmake Sun Jan 25 17:53:48 2015 -0800 @@ -1,6 +1,6 @@ ###| CMake Kiibohd Controller UART Output Module |### # -# Written by Jacob Alexander in 2014 for the Kiibohd Controller +# Written by Jacob Alexander in 2014-2015 for the Kiibohd Controller # # Released into the Public Domain # @@ -11,11 +11,10 @@ # Module C files # - #| AVR Compiler if ( ${COMPILER_FAMILY} MATCHES "avr" ) - set( OUTPUT_SRCS + set ( Module_SRCS output_com.c avr/uart_serial.c ) @@ -23,7 +22,7 @@ #| ARM Compiler elseif ( ${COMPILER_FAMILY} MATCHES "arm" ) - set( OUTPUT_SRCS + set ( Module_SRCS output_com.c arm/uart_serial.c ) @@ -32,13 +31,9 @@ ### -# Module Specific Options -# - -### # Compiler Family Compatibility # -set( OutputModuleCompatibility +set( ModuleCompatibility arm # avr # TODO ) diff -r e6c753528873 -r 5b66d1da5377 Output/usbMuxUart/setup.cmake --- a/Output/usbMuxUart/setup.cmake Sun Jan 25 12:49:23 2015 -0800 +++ b/Output/usbMuxUart/setup.cmake Sun Jan 25 17:53:48 2015 -0800 @@ -1,6 +1,6 @@ ###| CMake Kiibohd Controller Muxed UART and USB Output Module |### # -# Written by Jacob Alexander in 2014 for the Kiibohd Controller +# Written by Jacob Alexander in 2014-2015 for the Kiibohd Controller # # Released into the Public Domain # @@ -8,43 +8,26 @@ ### +# Required Submodules +# + +AddModule ( Output pjrcUSB ) +AddModule ( Output uartOut ) + + +### # Module C files # - -#| AVR Compiler -if ( ${COMPILER_FAMILY} MATCHES "avr" ) - - set( OUTPUT_SRCS - ) - -#| ARM Compiler -elseif ( ${COMPILER_FAMILY} MATCHES "arm" ) - - set( OUTPUT_SRCS - output_com.c - ../pjrcUSB/arm/usb_desc.c - ../pjrcUSB/arm/usb_dev.c - ../pjrcUSB/arm/usb_keyboard.c - ../pjrcUSB/arm/usb_mem.c - ../pjrcUSB/arm/usb_serial.c - ../uartOut/arm/uart_serial.c - ) - -endif () - - - -### -# Module Specific Options -# - +set( Module_SRCS + output_com.c +) ### # Compiler Family Compatibility # -set( OutputModuleCompatibility +set( ModuleCompatibility arm # avr # TODO ) diff -r e6c753528873 -r 5b66d1da5377 Scan/DPH/setup.cmake --- a/Scan/DPH/setup.cmake Sun Jan 25 12:49:23 2015 -0800 +++ b/Scan/DPH/setup.cmake Sun Jan 25 17:53:48 2015 -0800 @@ -1,6 +1,6 @@ ###| CMake Kiibohd Controller Scan Module |### # -# Written by Jacob Alexander in 2013-2014 for the Kiibohd Controller +# Written by Jacob Alexander in 2013-2015 for the Kiibohd Controller # # Released into the Public Domain # @@ -10,21 +10,15 @@ ### # Module C files # - -set( SCAN_SRCS +set ( Module_SRCS scan_loop.c ) ### -# Module Specific Options -# - - -### # Compiler Family Compatibility # -set( ScanModuleCompatibility +set ( ModuleCompatibility avr ) diff -r e6c753528873 -r 5b66d1da5377 Scan/MD1/setup.cmake --- a/Scan/MD1/setup.cmake Sun Jan 25 12:49:23 2015 -0800 +++ b/Scan/MD1/setup.cmake Sun Jan 25 17:53:48 2015 -0800 @@ -8,27 +8,25 @@ ### +# Required Submodules +# + +AddModule ( Scan MatrixARM ) + + +### # Module C files # -set( SCAN_SRCS +set ( Module_SRCS scan_loop.c - ../MatrixARM/matrix_scan.c -) - - -### -# Module Specific Options -# -add_definitions( - -I${HEAD_DIR}/Scan/MatrixARM ) ### # Compiler Family Compatibility # -set( ScanModuleCompatibility +set ( ModuleCompatibility arm ) diff -r e6c753528873 -r 5b66d1da5377 Scan/MatrixARM/setup.cmake --- a/Scan/MatrixARM/setup.cmake Sun Jan 25 12:49:23 2015 -0800 +++ b/Scan/MatrixARM/setup.cmake Sun Jan 25 17:53:48 2015 -0800 @@ -1,36 +1,30 @@ ###| CMake Kiibohd Controller Scan Module |### # -# Written by Jacob Alexander in 2014 for the Kiibohd Controller +# Written by Jacob Alexander in 2014-2015 for the Kiibohd Controller # # Released into the Public Domain # ### + ### -# Warning, that this module is not meant to be built stand-alone +# Sub-module flag, cannot be included stand-alone # -message( FATAL_ERROR -"The 'MatrixARM' module is not a stand-alone module, and requires further setup." -) +set ( SubModule 1 ) + ### # Module C files # - -set( SCAN_SRCS +set ( Module_SRCS matrix_scan.c ) ### -# Module Specific Options -# - - -### # Compiler Family Compatibility # -set( ScanModuleCompatibility +set ( ModuleCompatibility arm )