]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/vcpkg-pkgconfig-get-modules/x_vcpkg_pkgconfig_get_modules.cmake
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / tools / vcpkg / ports / vcpkg-pkgconfig-get-modules / x_vcpkg_pkgconfig_get_modules.cmake
diff --git a/ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/vcpkg-pkgconfig-get-modules/x_vcpkg_pkgconfig_get_modules.cmake b/ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/vcpkg-pkgconfig-get-modules/x_vcpkg_pkgconfig_get_modules.cmake
new file mode 100644 (file)
index 0000000..43ccf92
--- /dev/null
@@ -0,0 +1,146 @@
+#[===[.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