build.cmake 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. cmake_minimum_required(VERSION 2.6)
  2. list(APPEND CMAKE_MODULE_PATH "${PCILIB_SOURCE_DIR}/cmake/")
  3. find_package(BAZAAR QUIET)
  4. set(PCILIB_BUILD_DATE "")
  5. set(PCILIB_LAST_MODIFICATION "")
  6. set(PCILIB_REVISION "0")
  7. set(PCILIB_REVISION_BRANCH "")
  8. set(PCILIB_REVISION_AUTHOR "")
  9. set(PCILIB_REVISION_MODIFICATIONS "")
  10. execute_process(
  11. COMMAND date "+%Y/%m/%d %H:%M:%S"
  12. RESULT_VARIABLE _retcode
  13. OUTPUT_VARIABLE _output
  14. OUTPUT_STRIP_TRAILING_WHITESPACE
  15. )
  16. if (${_retcode} EQUAL 0)
  17. set(PCILIB_BUILD_DATE ${_output})
  18. endif (${_retcode} EQUAL 0)
  19. execute_process(
  20. COMMAND find ${PCILIB_SOURCE_DIR} -type f -name "*.[ch]" -printf "%TY/%Tm/%Td %TH:%TM:%TS %p\n"
  21. COMMAND sort -n
  22. COMMAND grep -E -v "build.h|config.h|CMakeFiles|./apps"
  23. COMMAND tail -n 1
  24. COMMAND cut -d " " -f 1-2
  25. COMMAND cut -d "." -f 1
  26. RESULT_VARIABLE _retcode
  27. OUTPUT_VARIABLE _output
  28. OUTPUT_STRIP_TRAILING_WHITESPACE
  29. )
  30. if (${_retcode} EQUAL 0)
  31. set(PCILIB_LAST_MODIFICATION ${_output})
  32. endif (${_retcode} EQUAL 0)
  33. if (BAZAAR_FOUND AND EXISTS ${PCILIB_SOURCE_DIR}/.bzr)
  34. execute_process(
  35. COMMAND ${BAZAAR_EXECUTABLE} revno --tree ${PCILIB_SOURCE_DIR}
  36. RESULT_VARIABLE _retcode
  37. OUTPUT_VARIABLE _output
  38. OUTPUT_STRIP_TRAILING_WHITESPACE
  39. )
  40. if (${_retcode} EQUAL 0)
  41. set(PCILIB_REVISION ${_output})
  42. execute_process(
  43. COMMAND ${BAZAAR_EXECUTABLE} log -r${PCILIB_REVISION} ${PCILIB_SOURCE_DIR}
  44. RESULT_VARIABLE _retcode
  45. OUTPUT_VARIABLE _output
  46. OUTPUT_STRIP_TRAILING_WHITESPACE
  47. )
  48. if (${_retcode} EQUAL 0)
  49. string(REGEX REPLACE "^(.*\n)?committer: ([^\n]+).*"
  50. "\\2" PCILIB_REVISION_AUTHOR "${_output}" )
  51. string(REGEX REPLACE "^(.*\n)?branch nick: ([^\n]+).*"
  52. "\\2" PCILIB_REVISION_BRANCH "${_output}" )
  53. endif (${_retcode} EQUAL 0)
  54. endif (${_retcode} EQUAL 0)
  55. execute_process(
  56. COMMAND ${BAZAAR_EXECUTABLE} status -SV
  57. COMMAND cut -c 5-
  58. WORKING_DIRECTORY ${PCILIB_SOURCE_DIR}
  59. RESULT_VARIABLE _retcode
  60. OUTPUT_VARIABLE _output
  61. OUTPUT_STRIP_TRAILING_WHITESPACE
  62. )
  63. if (${_retcode} EQUAL 0)
  64. string(REGEX REPLACE "\n+" ";" PCILIB_REVISION_MODIFICATIONS "${_output}")
  65. # set(PCILIB_REVISION_MODIFICATIONS ${_output})
  66. endif (${_retcode} EQUAL 0)
  67. endif(BAZAAR_FOUND AND EXISTS ${PCILIB_SOURCE_DIR}/.bzr)
  68. configure_file(${PCILIB_SOURCE_DIR}/pcilib/build.h.in ${PCILIB_BINARY_DIR}/pcilib/build.h)