diff options
| author | Hannes Steffenhagen <cubicentertain@gmail.com> | 2020-08-22 10:23:56 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-08-22 02:23:56 -0700 |
| commit | 299f581dc3cb6803f21e93f4c2a23c45c38cc653 (patch) | |
| tree | fe29f318f3b6793caa89ca350a7dcecac15151ad | |
| parent | b919cf7f7c382e8180ea995a500c5b91b2ba6384 (diff) | |
| download | vcpkg-299f581dc3cb6803f21e93f4c2a23c45c38cc653.tar.gz vcpkg-299f581dc3cb6803f21e93f4c2a23c45c38cc653.zip | |
[vcpkg] Do not use raw paths inside regexes (#12964)
Co-authored-by: Billy Robert O'Neal <bion@microsoft.com>
| -rw-r--r-- | scripts/cmake/vcpkg_escape_regex_control_characters.cmake | 4 | ||||
| -rw-r--r-- | scripts/cmake/vcpkg_fixup_pkgconfig.cmake | 8 |
2 files changed, 10 insertions, 2 deletions
diff --git a/scripts/cmake/vcpkg_escape_regex_control_characters.cmake b/scripts/cmake/vcpkg_escape_regex_control_characters.cmake new file mode 100644 index 000000000..3d9d92b5e --- /dev/null +++ b/scripts/cmake/vcpkg_escape_regex_control_characters.cmake @@ -0,0 +1,4 @@ +function(vcpkg_escape_regex_control_characters out_var string_with_regex_characters) + string(REGEX REPLACE "[][+.*()^\\$?|]" "\\\\\\0" _escaped_content "${string_with_regex_characters}") + set(${out_var} "${_escaped_content}" PARENT_SCOPE) +endfunction() diff --git a/scripts/cmake/vcpkg_fixup_pkgconfig.cmake b/scripts/cmake/vcpkg_fixup_pkgconfig.cmake index 3e44ec172..c479f5ba8 100644 --- a/scripts/cmake/vcpkg_fixup_pkgconfig.cmake +++ b/scripts/cmake/vcpkg_fixup_pkgconfig.cmake @@ -37,6 +37,8 @@ ## ## ## Examples ## Just call vcpkg_fixup_pkgconfig() after any install step which installs *.pc files. + +include(vcpkg_escape_regex_control_characters) function(vcpkg_fixup_pkgconfig_check_files pkg_cfg_cmd _file _config _system_libs _ignore_flags) # Setup pkg-config paths set(_VCPKG_INSTALLED_PKGCONF "${CURRENT_INSTALLED_DIR}") @@ -134,6 +136,7 @@ function(vcpkg_fixup_pkgconfig_check_files pkg_cfg_cmd _file _config _system_lib foreach(_search_path IN LISTS _pkg_lib_paths_output) debug_message("REMOVING:'${_search_path}'") debug_message("FROM:'${_pkg_libs_output}'") + vcpkg_escape_regex_control_characters(_search_path "${_search_path}") string(REGEX REPLACE "(^[\t ]*|[\t ]+|;[\t ]*)-L${_search_path}([\t ]+|[\t ]*$)" ";" _pkg_libs_output "${_pkg_libs_output}") # Remove search paths from libs endforeach() debug_message("LIBS AFTER -L<path> REMOVAL:'${_pkg_libs_output}'") @@ -254,14 +257,15 @@ function(vcpkg_fixup_pkgconfig) message(FATAL_ERROR "vcpkg_fixup_pkgconfig was passed extra arguments: ${_vfct_UNPARSED_ARGUMENTS}") endif() + vcpkg_escape_regex_control_characters(_vfpkg_ESCAPED_CURRENT_PACKAGES_DIR "${CURRENT_PACKAGES_DIR}") if(NOT _vfpkg_RELEASE_FILES) file(GLOB_RECURSE _vfpkg_RELEASE_FILES "${CURRENT_PACKAGES_DIR}/**/*.pc") - list(FILTER _vfpkg_RELEASE_FILES EXCLUDE REGEX "${CURRENT_PACKAGES_DIR}/debug/") + list(FILTER _vfpkg_RELEASE_FILES EXCLUDE REGEX "${_vfpkg_ESCAPED_CURRENT_PACKAGES_DIR}/debug/") endif() if(NOT _vfpkg_DEBUG_FILES) file(GLOB_RECURSE _vfpkg_DEBUG_FILES "${CURRENT_PACKAGES_DIR}/debug/**/*.pc") - list(FILTER _vfpkg_DEBUG_FILES INCLUDE REGEX "${CURRENT_PACKAGES_DIR}/debug/") + list(FILTER _vfpkg_DEBUG_FILES INCLUDE REGEX "${_vfpkg_ESCAPED_CURRENT_PACKAGES_DIR}/debug/") endif() vcpkg_find_acquire_program(PKGCONFIG) |
