blob: 9618312d5cfb369fe6ed06d739c90882e6708b57 [file] [edit]
# Common helpers for Sphinx source scan and sync scripts.
# CMake-script native implementation of cmake -E write_if_changed. This keeps
# frequently run scan/sync scripts from paying for an extra subprocess just to
# avoid rewriting unchanged files.
function(write_if_changed output_file contents)
if (EXISTS "${output_file}")
file(READ "${output_file}" old_contents)
else()
set(old_contents)
endif()
if (NOT contents STREQUAL old_contents)
get_filename_component(output_dir "${output_file}" DIRECTORY)
file(MAKE_DIRECTORY "${output_dir}")
file(WRITE "${output_file}" "${contents}")
endif()
endfunction()
# Escape paths for Ninja/Make depfile syntax before writing them into a depfile
# generated by a CMake script.
function(escape_depfile_path input output)
set(path "${input}")
string(REPLACE "\\" "/" path "${path}")
string(REPLACE "$" "$$" path "${path}")
string(REPLACE "#" "\\#" path "${path}")
string(REPLACE " " "\\ " path "${path}")
set(${output} "${path}" PARENT_SCOPE)
endfunction()