]>
Commit | Line | Data |
---|---|---|
1e59de90 TL |
1 | #[===[.md:\r |
2 | # x_vcpkg_pkgconfig_get_modules\r | |
3 | \r | |
4 | Experimental\r | |
5 | Retrieve required module information from pkgconfig modules\r | |
6 | \r | |
7 | ## Usage\r | |
8 | ```cmake\r | |
9 | x_vcpkg_pkgconfig_get_modules(\r | |
10 | PREFIX <prefix>\r | |
11 | MODULES <pkgconfig_modules>...\r | |
12 | [LIBS]\r | |
13 | [LIBRARIES]\r | |
14 | [LIBRARIES_DIRS]\r | |
15 | [INCLUDE_DIRS]\r | |
16 | )\r | |
17 | ```\r | |
18 | ## Parameters\r | |
19 | \r | |
20 | ### PREFIX\r | |
21 | Used variable prefix to use\r | |
22 | \r | |
23 | ### MODULES\r | |
24 | List of pkgconfig modules to retrieve information for.\r | |
25 | \r | |
26 | ### LIBS\r | |
27 | Returns `"${PKGCONFIG}" --libs` in <prefix>_LIBS_(DEBUG|RELEASE)\r | |
28 | \r | |
29 | ### LIBRARIES\r | |
30 | Returns `"${PKGCONFIG}" --libs-only-l` in <prefix>_LIBRARIES_(DEBUG|RELEASE)\r | |
31 | \r | |
32 | ### LIBRARIES_DIRS\r | |
33 | Returns `"${PKGCONFIG}" --libs-only-L` in <prefix>_LIBRARIES_DIRS_(DEBUG|RELEASE)\r | |
34 | \r | |
35 | ### INCLUDE_DIRS\r | |
36 | Returns `"${PKGCONFIG}" --cflags-only-I` in <prefix>_INCLUDE_DIRS_(DEBUG|RELEASE)\r | |
37 | \r | |
38 | ## Examples\r | |
39 | \r | |
40 | * [qt5-base](https://github.com/microsoft/vcpkg/blob/master/ports/qt5-base/portfile.cmake)\r | |
41 | #]===]\r | |
42 | if(Z_VCPKG_PKGCONFIG_GET_MODULES_GUARD)\r | |
43 | return()\r | |
44 | endif()\r | |
45 | set(Z_VCPKG_PKGCONFIG_GET_MODULES_GUARD ON CACHE INTERNAL "guard variable")\r | |
46 | \r | |
47 | function(x_vcpkg_pkgconfig_get_modules)\r | |
48 | cmake_parse_arguments(PARSE_ARGV 0 "arg" "LIBS;LIBRARIES;LIBRARIES_DIR;INCLUDE_DIRS" "PREFIX" "MODULES")\r | |
49 | if(NOT DEFINED arg_PREFIX OR arg_PREFIX STREQUAL "")\r | |
50 | message(FATAL_ERROR "x_vcpkg_pkgconfig_get_modules requires parameter PREFIX!")\r | |
51 | endif()\r | |
52 | if(NOT DEFINED arg_MODULES OR arg_MODULES STREQUAL "")\r | |
53 | message(FATAL_ERROR "x_vcpkg_pkgconfig_get_modules requires parameter MODULES!")\r | |
54 | endif()\r | |
55 | if(DEFINED arg_UNPARSED_ARGUMENTS)\r | |
56 | message(FATAL_ERROR "extra arguments passed to x_vcpkg_pkgconfig_get_modules: ${arg_UNPARSED_ARGUMENTS}")\r | |
57 | endif()\r | |
58 | \r | |
59 | vcpkg_find_acquire_program(PKGCONFIG)\r | |
60 | set(backup_PKG_CONFIG_PATH "$ENV{PKG_CONFIG_PATH}")\r | |
61 | \r | |
62 | set(var_suffixes)\r | |
63 | if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")\r | |
64 | z_vcpkg_set_pkgconfig_path("${CURRENT_INSTALLED_DIR}/lib/pkgconfig" "${backup_PKG_CONFIG_PATH}")\r | |
65 | if(arg_LIBS)\r | |
66 | execute_process(\r | |
67 | COMMAND "${PKGCONFIG}" --libs ${arg_MODULES}\r | |
68 | OUTPUT_VARIABLE ${arg_PREFIX}_LIBS_RELEASE\r | |
69 | OUTPUT_STRIP_TRAILING_WHITESPACE\r | |
70 | )\r | |
71 | list(APPEND var_suffixes LIBS_RELEASE)\r | |
72 | endif()\r | |
73 | if(arg_LIBRARIES)\r | |
74 | execute_process(\r | |
75 | COMMAND "${PKGCONFIG}" --libs-only-l ${arg_MODULES}\r | |
76 | OUTPUT_VARIABLE ${arg_PREFIX}_LIBRARIES_RELEASE\r | |
77 | OUTPUT_STRIP_TRAILING_WHITESPACE\r | |
78 | )\r | |
79 | list(APPEND var_suffixes LIBRARIES_RELEASE)\r | |
80 | endif()\r | |
81 | if(arg_LIBRARIES_DIRS)\r | |
82 | execute_process(\r | |
83 | COMMAND "${PKGCONFIG}" --libs-only-L ${arg_MODULES}\r | |
84 | OUTPUT_VARIABLE ${arg_PREFIX}_LIBRARIES_DIRS_RELEASE\r | |
85 | OUTPUT_STRIP_TRAILING_WHITESPACE\r | |
86 | )\r | |
87 | list(APPEND var_suffixes LIBRARIES_DIRS_RELEASE)\r | |
88 | endif()\r | |
89 | if(arg_INCLUDE_DIRS)\r | |
90 | execute_process(\r | |
91 | COMMAND "${PKGCONFIG}" --cflags-only-I ${arg_MODULES}\r | |
92 | OUTPUT_VARIABLE ${arg_PREFIX}_INCLUDE_DIRS_RELEASE\r | |
93 | OUTPUT_STRIP_TRAILING_WHITESPACE\r | |
94 | )\r | |
95 | list(APPEND var_suffixes INCLUDE_DIRS_RELEASE)\r | |
96 | endif()\r | |
97 | endif()\r | |
98 | if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")\r | |
99 | z_vcpkg_set_pkgconfig_path("${CURRENT_INSTALLED_DIR}/debug/lib/pkgconfig" "${backup_PKG_CONFIG_PATH}")\r | |
100 | if(arg_LIBS)\r | |
101 | execute_process(\r | |
102 | COMMAND "${PKGCONFIG}" --libs ${arg_MODULES}\r | |
103 | OUTPUT_VARIABLE ${arg_PREFIX}_LIBS_DEBUG\r | |
104 | OUTPUT_STRIP_TRAILING_WHITESPACE\r | |
105 | )\r | |
106 | list(APPEND var_suffixes LIBS_DEBUG)\r | |
107 | endif()\r | |
108 | if(arg_LIBRARIES)\r | |
109 | execute_process(\r | |
110 | COMMAND "${PKGCONFIG}" --libs-only-l ${arg_MODULES}\r | |
111 | OUTPUT_VARIABLE ${arg_PREFIX}_LIBRARIES_DEBUG\r | |
112 | OUTPUT_STRIP_TRAILING_WHITESPACE\r | |
113 | )\r | |
114 | list(APPEND var_suffixes LIBRARIES_DEBUG)\r | |
115 | endif()\r | |
116 | if(arg_LIBRARIES_DIRS)\r | |
117 | execute_process(\r | |
118 | COMMAND "${PKGCONFIG}" --libs-only-L ${arg_MODULES}\r | |
119 | OUTPUT_VARIABLE ${arg_PREFIX}_LIBRARIES_DIRS_DEBUG\r | |
120 | OUTPUT_STRIP_TRAILING_WHITESPACE\r | |
121 | )\r | |
122 | list(APPEND var_suffixes LIBRARIES_DIRS_DEBUG)\r | |
123 | endif()\r | |
124 | if(arg_INCLUDE_DIRS)\r | |
125 | execute_process(\r | |
126 | COMMAND "${PKGCONFIG}" --cflags-only-I ${arg_MODULES}\r | |
127 | OUTPUT_VARIABLE ${arg_PREFIX}_INCLUDE_DIRS_DEBUG\r | |
128 | OUTPUT_STRIP_TRAILING_WHITESPACE\r | |
129 | )\r | |
130 | list(APPEND var_suffixes INCLUDE_DIRS_DEBUG)\r | |
131 | endif()\r | |
132 | endif()\r | |
133 | set(ENV{PKG_CONFIG_PATH} "${backup_PKG_CONFIG_PATH}")\r | |
134 | \r | |
135 | foreach(_var IN LISTS var_suffixes)\r | |
136 | set("${arg_PREFIX}_${_var}" "${${arg_PREFIX}_${_var}}" PARENT_SCOPE)\r | |
137 | endforeach()\r | |
138 | endfunction()\r | |
139 | \r | |
140 | function(z_vcpkg_set_pkgconfig_path _path _backup)\r | |
141 | if(NOT _backup STREQUAL "")\r | |
142 | set(ENV{PKG_CONFIG_PATH} "${_path}${VCPKG_HOST_PATH_SEPARATOR}${_backup}")\r | |
143 | else()\r | |
144 | set(ENV{PKG_CONFIG_PATH} "${_path}")\r | |
145 | endif()\r | |
146 | endfunction()\r |