UseSourcePermissions.cmake 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/sourcefile.txt
  2. ${CMAKE_CURRENT_BINARY_DIR}/sourcefile-use-source-permissions.txt
  3. USE_SOURCE_PERMISSIONS
  4. )
  5. if (CMAKE_HOST_UNIX)
  6. find_program(STAT_EXECUTABLE NAMES stat)
  7. if(NOT STAT_EXECUTABLE)
  8. return()
  9. endif()
  10. if (CMAKE_HOST_SYSTEM_NAME MATCHES "FreeBSD")
  11. execute_process(COMMAND "${STAT_EXECUTABLE}" -f %Lp "${CMAKE_CURRENT_SOURCE_DIR}/sourcefile.txt"
  12. OUTPUT_VARIABLE output1
  13. )
  14. execute_process(COMMAND "${STAT_EXECUTABLE}" -f %Lp "${CMAKE_CURRENT_BINARY_DIR}/sourcefile-use-source-permissions.txt"
  15. OUTPUT_VARIABLE output2
  16. )
  17. elseif (CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin")
  18. execute_process(COMMAND "${STAT_EXECUTABLE}" -f %A "${CMAKE_CURRENT_SOURCE_DIR}/sourcefile.txt"
  19. OUTPUT_VARIABLE output1
  20. )
  21. execute_process(COMMAND "${STAT_EXECUTABLE}" -f %A "${CMAKE_CURRENT_BINARY_DIR}/sourcefile-use-source-permissions.txt"
  22. OUTPUT_VARIABLE output2
  23. )
  24. else()
  25. execute_process(COMMAND "${STAT_EXECUTABLE}" -c %a "${CMAKE_CURRENT_SOURCE_DIR}/sourcefile.txt"
  26. OUTPUT_VARIABLE output1
  27. )
  28. execute_process(COMMAND "${STAT_EXECUTABLE}" -c %a "${CMAKE_CURRENT_BINARY_DIR}/sourcefile-use-source-permissions.txt"
  29. OUTPUT_VARIABLE output2
  30. )
  31. endif()
  32. if (NOT output1 EQUAL output2)
  33. message(FATAL_ERROR "configure file has different permissions source "
  34. "permissions: ${output1} generated permissions: ${output2}")
  35. endif()
  36. endif()