RunPzip.cmake 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. function(run_pzip target_name source destination glob)
  2. if(NOT TARGET pzip)
  3. # If pzip isn't built, we just copy instead.
  4. file(COPY "${source}"
  5. DESTINATION "${destination}"
  6. FILES_MATCHING PATTERN "${glob}")
  7. return()
  8. endif()
  9. file(GLOB_RECURSE files RELATIVE "${source}" "${source}/${glob}")
  10. set(dstfiles "")
  11. foreach(filename ${files})
  12. string(REGEX REPLACE "^/" "" filename "${filename}")
  13. file(RELATIVE_PATH srcfile "${destination}" "${source}/${filename}")
  14. get_filename_component(dstdir "${destination}/${filename}" DIRECTORY)
  15. file(MAKE_DIRECTORY "${dstdir}")
  16. set(dstfile "${filename}.pz")
  17. list(APPEND dstfiles "${destination}/${dstfile}")
  18. add_custom_command(OUTPUT "${destination}/${dstfile}"
  19. COMMAND pzip -c > "${dstfile}" < "${srcfile}"
  20. WORKING_DIRECTORY "${destination}"
  21. DEPENDS pzip
  22. COMMENT "")
  23. endforeach(filename)
  24. add_custom_target(${target_name} ALL
  25. DEPENDS ${dstfiles}
  26. WORKING_DIRECTORY "${destination}")
  27. endfunction(run_pzip)