aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/scripts/cmake/vcpkg_replace_string.cmake
blob: 1778f6e3aaf53142b348d36b269028edbb67fdca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function(vcpkg_replace_string filename match replace)
    cmake_parse_arguments(PARSE_ARGV 3 "arg" "REGEX;IGNORE_UNCHANGED" "" "")
    if(arg_REGEX)
        set(arg_REGEX "REGEX")
    else()
        if("${match}" STREQUAL "${replace}")
            return() # Avoid reading the file or triggering warnings
        endif()

        set(arg_REGEX "")
    endif ()
    file(READ "${filename}" contents)
    string(SHA512 before_hash "${contents}")
    string(${arg_REGEX} REPLACE "${match}" "${replace}" contents "${contents}")
    string(SHA512 after_hash "${contents}")
    if(NOT arg_IGNORE_UNCHANGED AND "${before_hash}" STREQUAL "${after_hash}")
        message("${Z_VCPKG_BACKCOMPAT_MESSAGE_LEVEL}" "vcpkg_replace_string made no changes.")
    endif()
    file(WRITE "${filename}" "${contents}")
endfunction()