Kiibohd Controller
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

buildinfo.cmake 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. ###| CMAKE Kiibohd Controller Source Configurator |###
  2. #
  3. # Written by Jacob Alexander in 2011-2016 for the Kiibohd Controller
  4. #
  5. # Released into the Public Domain
  6. #
  7. ###
  8. find_package ( Git REQUIRED )
  9. ###
  10. # Generate Build Defines
  11. #
  12. #| Manufacturer name
  13. set ( MANUFACTURER "Kiibohd" )
  14. #| Modified
  15. #| Takes a bit of work to extract the "M " using CMake, and not using it if there are no modifications
  16. execute_process ( COMMAND ${GIT_EXECUTABLE} status -s -uno --porcelain
  17. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  18. OUTPUT_VARIABLE Git_Modified_INFO
  19. ERROR_QUIET
  20. OUTPUT_STRIP_TRAILING_WHITESPACE
  21. )
  22. string ( LENGTH "${Git_Modified_INFO}" Git_Modified_LENGTH )
  23. set ( Git_Modified_Status "Clean" )
  24. if ( ${Git_Modified_LENGTH} GREATER 2 )
  25. string ( SUBSTRING "${Git_Modified_INFO}" 1 2 Git_Modified_Flag_INFO )
  26. set ( Git_Modified_Status "Dirty" )
  27. endif ()
  28. #| List of modified files
  29. execute_process ( COMMAND ${GIT_EXECUTABLE} diff-index --name-only HEAD --
  30. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  31. OUTPUT_VARIABLE Git_Modified_Files
  32. ERROR_QUIET
  33. OUTPUT_STRIP_TRAILING_WHITESPACE
  34. )
  35. string ( REGEX REPLACE "\n" "\\\\r\\\\n\\\\t" Git_Modified_Files "${Git_Modified_Files}" )
  36. set ( Git_Modified_Files "\\r\\n\\t${Git_Modified_Files}" )
  37. #| Branch
  38. execute_process( COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
  39. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  40. OUTPUT_VARIABLE Git_Branch_INFO
  41. ERROR_QUIET
  42. OUTPUT_STRIP_TRAILING_WHITESPACE
  43. )
  44. #| Date
  45. execute_process ( COMMAND ${GIT_EXECUTABLE} show -s --format=%ci
  46. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  47. OUTPUT_VARIABLE Git_Date_INFO
  48. ERROR_QUIET
  49. OUTPUT_STRIP_TRAILING_WHITESPACE
  50. )
  51. #| Commit Author and Email
  52. execute_process ( COMMAND ${GIT_EXECUTABLE} show -s --format="%cn <%ce>"
  53. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  54. OUTPUT_VARIABLE Git_Commit_Author
  55. ERROR_QUIET
  56. OUTPUT_STRIP_TRAILING_WHITESPACE
  57. )
  58. #| Commit Revision
  59. execute_process ( COMMAND ${GIT_EXECUTABLE} show -s --format=%H
  60. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  61. OUTPUT_VARIABLE Git_Commit_Revision
  62. ERROR_QUIET
  63. OUTPUT_STRIP_TRAILING_WHITESPACE
  64. )
  65. #| Commit Number (on branch)
  66. execute_process ( COMMAND ${GIT_EXECUTABLE} rev-list --count HEAD
  67. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  68. OUTPUT_VARIABLE Git_Commit_Number
  69. ERROR_QUIET
  70. OUTPUT_STRIP_TRAILING_WHITESPACE
  71. RESULT_VARIABLE res_var
  72. )
  73. #| Older versions of git (e.g. 1.7.1) dont' like rev-list --count
  74. #| If there's an error, try again with a less efficient version
  75. if ( NOT "${res_var}" STREQUAL "0" )
  76. execute_process ( COMMAND ${GIT_EXECUTABLE} log --pretty=oneline
  77. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  78. OUTPUT_VARIABLE Git_Log_Lines
  79. OUTPUT_STRIP_TRAILING_WHITESPACE
  80. RESULT_VARIABLE res_var
  81. )
  82. # Now we do some CMake wizardry to split lines in the variable so we have a list called contents
  83. string ( REGEX REPLACE ";" "\\\\;" contents "${Git_Log_Lines}" )
  84. string ( REGEX REPLACE "\n" ";" contents "${contents}" )
  85. # Now we just have to measure the length of the list
  86. list ( LENGTH contents Git_Commit_Number )
  87. endif ()
  88. #| Origin URL
  89. execute_process ( COMMAND ${GIT_EXECUTABLE} config --get remote.origin.url
  90. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  91. OUTPUT_VARIABLE Git_Origin_URL
  92. ERROR_QUIET
  93. OUTPUT_STRIP_TRAILING_WHITESPACE
  94. )
  95. #| Build Date
  96. execute_process ( COMMAND "date" "+%Y-%m-%d %T %z"
  97. OUTPUT_VARIABLE Build_Date
  98. ERROR_QUIET
  99. OUTPUT_STRIP_TRAILING_WHITESPACE
  100. )
  101. #| Last Commit Date
  102. set ( GitLastCommitDate "${Git_Modified_Status} ${Git_Branch_INFO} - ${Git_Date_INFO}" )