--- /dev/null
+#[===[.md:\r
+# x_vcpkg_pkgconfig_get_modules\r
+\r
+Experimental\r
+Retrieve required module information from pkgconfig modules\r
+\r
+## Usage\r
+```cmake\r
+x_vcpkg_pkgconfig_get_modules(\r
+ PREFIX <prefix>\r
+ MODULES <pkgconfig_modules>...\r
+ [LIBS]\r
+ [LIBRARIES]\r
+ [LIBRARIES_DIRS]\r
+ [INCLUDE_DIRS]\r
+)\r
+```\r
+## Parameters\r
+\r
+### PREFIX\r
+Used variable prefix to use\r
+\r
+### MODULES\r
+List of pkgconfig modules to retrieve information for.\r
+\r
+### LIBS\r
+Returns `"${PKGCONFIG}" --libs` in <prefix>_LIBS_(DEBUG|RELEASE)\r
+\r
+### LIBRARIES\r
+Returns `"${PKGCONFIG}" --libs-only-l` in <prefix>_LIBRARIES_(DEBUG|RELEASE)\r
+\r
+### LIBRARIES_DIRS\r
+Returns `"${PKGCONFIG}" --libs-only-L` in <prefix>_LIBRARIES_DIRS_(DEBUG|RELEASE)\r
+\r
+### INCLUDE_DIRS\r
+Returns `"${PKGCONFIG}" --cflags-only-I` in <prefix>_INCLUDE_DIRS_(DEBUG|RELEASE)\r
+\r
+## Examples\r
+\r
+* [qt5-base](https://github.com/microsoft/vcpkg/blob/master/ports/qt5-base/portfile.cmake)\r
+#]===]\r
+if(Z_VCPKG_PKGCONFIG_GET_MODULES_GUARD)\r
+ return()\r
+endif()\r
+set(Z_VCPKG_PKGCONFIG_GET_MODULES_GUARD ON CACHE INTERNAL "guard variable")\r
+\r
+function(x_vcpkg_pkgconfig_get_modules)\r
+ cmake_parse_arguments(PARSE_ARGV 0 "arg" "LIBS;LIBRARIES;LIBRARIES_DIR;INCLUDE_DIRS" "PREFIX" "MODULES")\r
+ if(NOT DEFINED arg_PREFIX OR arg_PREFIX STREQUAL "")\r
+ message(FATAL_ERROR "x_vcpkg_pkgconfig_get_modules requires parameter PREFIX!")\r
+ endif()\r
+ if(NOT DEFINED arg_MODULES OR arg_MODULES STREQUAL "")\r
+ message(FATAL_ERROR "x_vcpkg_pkgconfig_get_modules requires parameter MODULES!")\r
+ endif()\r
+ if(DEFINED arg_UNPARSED_ARGUMENTS)\r
+ message(FATAL_ERROR "extra arguments passed to x_vcpkg_pkgconfig_get_modules: ${arg_UNPARSED_ARGUMENTS}")\r
+ endif()\r
+\r
+ vcpkg_find_acquire_program(PKGCONFIG)\r
+ set(backup_PKG_CONFIG_PATH "$ENV{PKG_CONFIG_PATH}")\r
+\r
+ set(var_suffixes)\r
+ if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")\r
+ z_vcpkg_set_pkgconfig_path("${CURRENT_INSTALLED_DIR}/lib/pkgconfig" "${backup_PKG_CONFIG_PATH}")\r
+ if(arg_LIBS)\r
+ execute_process(\r
+ COMMAND "${PKGCONFIG}" --libs ${arg_MODULES}\r
+ OUTPUT_VARIABLE ${arg_PREFIX}_LIBS_RELEASE\r
+ OUTPUT_STRIP_TRAILING_WHITESPACE\r
+ )\r
+ list(APPEND var_suffixes LIBS_RELEASE)\r
+ endif()\r
+ if(arg_LIBRARIES)\r
+ execute_process(\r
+ COMMAND "${PKGCONFIG}" --libs-only-l ${arg_MODULES}\r
+ OUTPUT_VARIABLE ${arg_PREFIX}_LIBRARIES_RELEASE\r
+ OUTPUT_STRIP_TRAILING_WHITESPACE\r
+ )\r
+ list(APPEND var_suffixes LIBRARIES_RELEASE)\r
+ endif()\r
+ if(arg_LIBRARIES_DIRS)\r
+ execute_process(\r
+ COMMAND "${PKGCONFIG}" --libs-only-L ${arg_MODULES}\r
+ OUTPUT_VARIABLE ${arg_PREFIX}_LIBRARIES_DIRS_RELEASE\r
+ OUTPUT_STRIP_TRAILING_WHITESPACE\r
+ )\r
+ list(APPEND var_suffixes LIBRARIES_DIRS_RELEASE)\r
+ endif()\r
+ if(arg_INCLUDE_DIRS)\r
+ execute_process(\r
+ COMMAND "${PKGCONFIG}" --cflags-only-I ${arg_MODULES}\r
+ OUTPUT_VARIABLE ${arg_PREFIX}_INCLUDE_DIRS_RELEASE\r
+ OUTPUT_STRIP_TRAILING_WHITESPACE\r
+ )\r
+ list(APPEND var_suffixes INCLUDE_DIRS_RELEASE)\r
+ endif()\r
+ endif()\r
+ if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")\r
+ z_vcpkg_set_pkgconfig_path("${CURRENT_INSTALLED_DIR}/debug/lib/pkgconfig" "${backup_PKG_CONFIG_PATH}")\r
+ if(arg_LIBS)\r
+ execute_process(\r
+ COMMAND "${PKGCONFIG}" --libs ${arg_MODULES}\r
+ OUTPUT_VARIABLE ${arg_PREFIX}_LIBS_DEBUG\r
+ OUTPUT_STRIP_TRAILING_WHITESPACE\r
+ )\r
+ list(APPEND var_suffixes LIBS_DEBUG)\r
+ endif()\r
+ if(arg_LIBRARIES)\r
+ execute_process(\r
+ COMMAND "${PKGCONFIG}" --libs-only-l ${arg_MODULES}\r
+ OUTPUT_VARIABLE ${arg_PREFIX}_LIBRARIES_DEBUG\r
+ OUTPUT_STRIP_TRAILING_WHITESPACE\r
+ )\r
+ list(APPEND var_suffixes LIBRARIES_DEBUG)\r
+ endif()\r
+ if(arg_LIBRARIES_DIRS)\r
+ execute_process(\r
+ COMMAND "${PKGCONFIG}" --libs-only-L ${arg_MODULES}\r
+ OUTPUT_VARIABLE ${arg_PREFIX}_LIBRARIES_DIRS_DEBUG\r
+ OUTPUT_STRIP_TRAILING_WHITESPACE\r
+ )\r
+ list(APPEND var_suffixes LIBRARIES_DIRS_DEBUG)\r
+ endif()\r
+ if(arg_INCLUDE_DIRS)\r
+ execute_process(\r
+ COMMAND "${PKGCONFIG}" --cflags-only-I ${arg_MODULES}\r
+ OUTPUT_VARIABLE ${arg_PREFIX}_INCLUDE_DIRS_DEBUG\r
+ OUTPUT_STRIP_TRAILING_WHITESPACE\r
+ )\r
+ list(APPEND var_suffixes INCLUDE_DIRS_DEBUG)\r
+ endif()\r
+ endif()\r
+ set(ENV{PKG_CONFIG_PATH} "${backup_PKG_CONFIG_PATH}")\r
+\r
+ foreach(_var IN LISTS var_suffixes)\r
+ set("${arg_PREFIX}_${_var}" "${${arg_PREFIX}_${_var}}" PARENT_SCOPE)\r
+ endforeach()\r
+endfunction()\r
+\r
+function(z_vcpkg_set_pkgconfig_path _path _backup)\r
+ if(NOT _backup STREQUAL "")\r
+ set(ENV{PKG_CONFIG_PATH} "${_path}${VCPKG_HOST_PATH_SEPARATOR}${_backup}")\r
+ else()\r
+ set(ENV{PKG_CONFIG_PATH} "${_path}")\r
+ endif()\r
+endfunction()\r