X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Lib%2FCMake%2Fmodules.cmake;h=d13b86896b1527d740a6f16d01097a1440c14fcf;hb=7e68e81f4757ffff2261ab4a887d4114318aa5b6;hp=02ecbe8e4c69c59ca7a4aad5e2ce3393cc44be77;hpb=88ace02e517950f3ec3eb71d9d0b7b51939d46f7;p=kiibohd-controller.git diff --git a/Lib/CMake/modules.cmake b/Lib/CMake/modules.cmake index 02ecbe8..d13b868 100644 --- a/Lib/CMake/modules.cmake +++ b/Lib/CMake/modules.cmake @@ -1,6 +1,6 @@ ###| CMAKE Kiibohd Controller Source Configurator |### # -# 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 # @@ -104,10 +104,8 @@ function ( AddModule ModuleType ModuleName ) 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} ) + set ( ${ModuleType}_SRCS ${${ModuleType}_SRCS} ${Module_SRCS} ) # Add .h files add_definitions ( -I${ModuleFullPath} ) @@ -124,8 +122,17 @@ function ( AddModule ModuleType ModuleName ) endif () endforeach () - # Finally, add the sources to the parent scope (i.e. return) + # Check for any capabilities.kll files in the Module + set ( kll_capabilities_file "${ModuleFullPath}/capabilities.kll" ) + if ( EXISTS ${kll_capabilities_file} ) + # Add the kll file and any submodule kll files to the running list + set ( ${ModuleType}Module_KLL ${${ModuleType}Module_KLL} ${kll_capabilities_file} ) + endif () + + + # Finally, add the sources and kll files to the parent scope (i.e. return) set ( ${ModuleType}_SRCS ${${ModuleType}_SRCS} PARENT_SCOPE ) + set ( ${ModuleType}Module_KLL ${${ModuleType}Module_KLL} PARENT_SCOPE ) endfunction () @@ -150,7 +157,7 @@ find_package ( Ctags ) # Optional # #| Manufacturer name -set( MANUFACTURER "Kiibohd" ) +set ( MANUFACTURER "Kiibohd" ) #| Serial Number @@ -158,19 +165,29 @@ set( MANUFACTURER "Kiibohd" ) #| Modified #| Takes a bit of work to extract the "M " using CMake, and not using it if there are no modifications -execute_process( COMMAND ${GIT_EXECUTABLE} status -s -uno --porcelain +execute_process ( COMMAND ${GIT_EXECUTABLE} status -s -uno --porcelain WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} OUTPUT_VARIABLE Git_Modified_INFO ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE ) -string( LENGTH "${Git_Modified_INFO}" Git_Modified_LENGTH ) -set( Git_Modified_Status "Clean" ) +string ( LENGTH "${Git_Modified_INFO}" Git_Modified_LENGTH ) +set ( Git_Modified_Status "Clean" ) if ( ${Git_Modified_LENGTH} GREATER 2 ) - string( SUBSTRING "${Git_Modified_INFO}" 1 2 Git_Modified_Flag_INFO ) - set( Git_Modified_Status "Dirty" ) + string ( SUBSTRING "${Git_Modified_INFO}" 1 2 Git_Modified_Flag_INFO ) + set ( Git_Modified_Status "Dirty" ) endif () +#| List of modified files +execute_process ( COMMAND ${GIT_EXECUTABLE} diff-index --name-only HEAD -- + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + OUTPUT_VARIABLE Git_Modified_Files + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE +) +string ( REGEX REPLACE "\n" "\\\\r\\\\n\\\\t" Git_Modified_Files "${Git_Modified_Files}" ) +set ( Git_Modified_Files "\\r\\n\\t${Git_Modified_Files}" ) + #| Branch execute_process( COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} @@ -180,7 +197,7 @@ execute_process( COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD ) #| Date -execute_process( COMMAND ${GIT_EXECUTABLE} show -s --format=%ci +execute_process ( COMMAND ${GIT_EXECUTABLE} show -s --format=%ci WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} OUTPUT_VARIABLE Git_Date_INFO ERROR_QUIET @@ -188,7 +205,7 @@ execute_process( COMMAND ${GIT_EXECUTABLE} show -s --format=%ci ) #| Commit Author and Email -execute_process( COMMAND ${GIT_EXECUTABLE} show -s --format="%cn <%ce>" +execute_process ( COMMAND ${GIT_EXECUTABLE} show -s --format="%cn <%ce>" WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} OUTPUT_VARIABLE Git_Commit_Author ERROR_QUIET @@ -196,7 +213,7 @@ execute_process( COMMAND ${GIT_EXECUTABLE} show -s --format="%cn <%ce>" ) #| Commit Revision -execute_process( COMMAND ${GIT_EXECUTABLE} show -s --format=%H +execute_process ( COMMAND ${GIT_EXECUTABLE} show -s --format=%H WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} OUTPUT_VARIABLE Git_Commit_Revision ERROR_QUIET @@ -204,7 +221,7 @@ execute_process( COMMAND ${GIT_EXECUTABLE} show -s --format=%H ) #| Origin URL -execute_process( COMMAND ${GIT_EXECUTABLE} config --get remote.origin.url +execute_process ( COMMAND ${GIT_EXECUTABLE} config --get remote.origin.url WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} OUTPUT_VARIABLE Git_Origin_URL ERROR_QUIET @@ -212,25 +229,25 @@ execute_process( COMMAND ${GIT_EXECUTABLE} config --get remote.origin.url ) #| Build Date -execute_process( COMMAND "date" "+%Y-%m-%d %T %z" +execute_process ( COMMAND "date" "+%Y-%m-%d %T %z" OUTPUT_VARIABLE Build_Date ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE ) #| Last Commit Date -set( GitLastCommitDate "${Git_Modified_Status} ${Git_Branch_INFO} - ${Git_Date_INFO}" ) +set ( GitLastCommitDate "${Git_Modified_Status} ${Git_Branch_INFO} - ${Git_Date_INFO}" ) #| Uses CMake variables to include as defines #| Primarily for USB configuration -configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/Lib/_buildvars.h buildvars.h ) +configure_file ( ${CMAKE_CURRENT_SOURCE_DIR}/Lib/_buildvars.h buildvars.h ) ### # Source Defines # -set( SRCS +set ( SRCS ${MAIN_SRCS} ${COMPILER_SRCS} ${Scan_SRCS} @@ -240,7 +257,7 @@ set( SRCS ) #| Directories to include by default -include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ) +include_directories ( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ) @@ -248,20 +265,20 @@ include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ) # ctag Generation # -if( CTAGS_EXECUTABLE ) +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() + 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} + execute_process ( COMMAND ctags --fields=+l ${CTAG_PATHS} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) -endif() +endif ()