diff --git a/scripts/cmake/vcpkg_configure_meson.cmake b/scripts/cmake/vcpkg_configure_meson.cmake index 0bc181c41ae..194c0709d2c 100644 --- a/scripts/cmake/vcpkg_configure_meson.cmake +++ b/scripts/cmake/vcpkg_configure_meson.cmake @@ -91,6 +91,11 @@ function(vcpkg_internal_meson_generate_native_file _additional_binaries) #https: file(WRITE "${_file}" "${NATIVE}") endfunction() +function(vcpkg_internal_meson_convert_compiler_flags_to_list _out_var _compiler_flags) + string(REGEX REPLACE [=[( +|^)((\"(\\\"|[^"])+\"|\\\"|\\ |[^ ])+)]=] ";\\2" ${_out_var} "${_compiler_flags}") + set(${_out_var} "${${_out_var}}" PARENT_SCOPE) +endfunction() + function(vcpkg_internal_meson_generate_native_file_config _config) #https://mesonbuild.com/Native-environments.html if(VCPKG_TARGET_IS_WINDOWS) set(L_FLAG /LIBPATH:) @@ -101,7 +106,7 @@ function(vcpkg_internal_meson_generate_native_file_config _config) #https://meso set(LIBPATH_${_config} "'${L_FLAG}${CURRENT_INSTALLED_DIR}${PATH_SUFFIX_${_config}}/lib'") set(NATIVE_${_config} "[properties]\n") #https://mesonbuild.com/Builtin-options.html - string(REGEX REPLACE "( |^)(-|/)" ";\\2" MESON_CFLAGS_${_config} "${VCPKG_DETECTED_CMAKE_C_FLAGS_${_config}}") + vcpkg_internal_meson_convert_compiler_flags_to_list(MESON_CFLAGS_${_config} "${VCPKG_DETECTED_CMAKE_C_FLAGS_${_config}}") list(TRANSFORM MESON_CFLAGS_${_config} APPEND "'") list(TRANSFORM MESON_CFLAGS_${_config} PREPEND "'") #list(APPEND MESON_CFLAGS_${_config} "${LIBPATH_${_config}}") @@ -109,7 +114,7 @@ function(vcpkg_internal_meson_generate_native_file_config _config) #https://meso list(JOIN MESON_CFLAGS_${_config} ", " MESON_CFLAGS_${_config}) string(REPLACE "'', " "" MESON_CFLAGS_${_config} "${MESON_CFLAGS_${_config}}") string(APPEND NATIVE_${_config} "c_args = [${MESON_CFLAGS_${_config}}]\n") - string(REGEX REPLACE "( |^)(-|/)" ";\\2" MESON_CXXFLAGS_${_config} "${VCPKG_DETECTED_CMAKE_CXX_FLAGS_${_config}}") + vcpkg_internal_meson_convert_compiler_flags_to_list(MESON_CXXFLAGS_${_config} "${VCPKG_DETECTED_CMAKE_CXX_FLAGS_${_config}}") list(TRANSFORM MESON_CXXFLAGS_${_config} APPEND "'") list(TRANSFORM MESON_CXXFLAGS_${_config} PREPEND "'") #list(APPEND MESON_CXXFLAGS_${_config} "${LIBPATH_${_config}}") @@ -291,14 +296,14 @@ function(vcpkg_internal_meson_generate_cross_file_config _config) #https://meson set(NATIVE_${_config} "[properties]\n") #https://mesonbuild.com/Builtin-options.html - string(REGEX REPLACE "( |^)(-|/)" ";\\2" MESON_CFLAGS_${_config} "${VCPKG_DETECTED_CMAKE_C_FLAGS_${_config}}") + vcpkg_internal_meson_convert_compiler_flags_to_list(MESON_CFLAGS_${_config} "${VCPKG_DETECTED_CMAKE_C_FLAGS_${_config}}") list(TRANSFORM MESON_CFLAGS_${_config} APPEND "'") list(TRANSFORM MESON_CFLAGS_${_config} PREPEND "'") list(APPEND MESON_CFLAGS_${_config} "'-I\"${CURRENT_INSTALLED_DIR}/include\"'") list(JOIN MESON_CFLAGS_${_config} ", " MESON_CFLAGS_${_config}) string(REPLACE "'', " "" MESON_CFLAGS_${_config} "${MESON_CFLAGS_${_config}}") string(APPEND NATIVE_${_config} "c_args = [${MESON_CFLAGS_${_config}}]\n") - string(REGEX REPLACE "( |^)(-|/)" ";\\2" MESON_CXXFLAGS_${_config} "${VCPKG_DETECTED_CMAKE_CXX_FLAGS_${_config}}") + vcpkg_internal_meson_convert_compiler_flags_to_list(MESON_CXXFLAGS_${_config} "${VCPKG_DETECTED_CMAKE_CXX_FLAGS_${_config}}") list(TRANSFORM MESON_CXXFLAGS_${_config} APPEND "'") list(TRANSFORM MESON_CXXFLAGS_${_config} PREPEND "'") list(APPEND MESON_CXXFLAGS_${_config} "'-I\"${CURRENT_INSTALLED_DIR}/include\"'")