mirror of
https://github.com/reactos/CMake.git
synced 2024-11-25 12:40:06 +00:00
Merge topic 'pkg-config-variable-function'
51b83f14
FindPkgConfig: add a command to query arbitrary variables7f7f1eec
FindPkgConfig: use execute_process to strip trailing whitespace
This commit is contained in:
commit
cec45e27f6
6
Help/release/dev/pkg-config-variable-function.rst
Normal file
6
Help/release/dev/pkg-config-variable-function.rst
Normal file
@ -0,0 +1,6 @@
|
||||
pkg-config-variable-function
|
||||
----------------------------
|
||||
|
||||
* The :module:`FindPkgConfig` learned a new :command:`pkg_get_variable`
|
||||
command which may be used to query for arbitrary variables from a package
|
||||
(such as for related tools or data and plugin install paths).
|
@ -70,14 +70,14 @@ macro(_pkgconfig_invoke _pkglist _prefix _varname _regexp)
|
||||
execute_process(
|
||||
COMMAND ${PKG_CONFIG_EXECUTABLE} ${ARGN} ${_pkglist}
|
||||
OUTPUT_VARIABLE _pkgconfig_invoke_result
|
||||
RESULT_VARIABLE _pkgconfig_failed)
|
||||
RESULT_VARIABLE _pkgconfig_failed
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
if (_pkgconfig_failed)
|
||||
set(_pkgconfig_${_varname} "")
|
||||
_pkgconfig_unset(${_prefix}_${_varname})
|
||||
else()
|
||||
string(REGEX REPLACE "[\r\n]" " " _pkgconfig_invoke_result "${_pkgconfig_invoke_result}")
|
||||
string(REGEX REPLACE " +$" "" _pkgconfig_invoke_result "${_pkgconfig_invoke_result}")
|
||||
|
||||
if (NOT ${_regexp} STREQUAL "")
|
||||
string(REGEX REPLACE "${_regexp}" " " _pkgconfig_invoke_result "${_pkgconfig_invoke_result}")
|
||||
@ -91,6 +91,26 @@ macro(_pkgconfig_invoke _pkglist _prefix _varname _regexp)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
#[========================================[.rst:
|
||||
.. command:: pkg_get_variable
|
||||
|
||||
Retrieves the value of a variable from a package::
|
||||
|
||||
pkg_get_variable(<RESULT> <MODULE> <VARIABLE>)
|
||||
|
||||
For example:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
pkg_get_variable(GI_GIRDIR gobject-introspection-1.0 girdir)
|
||||
#]========================================]
|
||||
function (pkg_get_variable result pkg variable)
|
||||
_pkgconfig_invoke("${pkg}" "prefix" "result" "" "--variable=${variable}")
|
||||
set("${result}"
|
||||
"${prefix_result}"
|
||||
PARENT_SCOPE)
|
||||
endfunction ()
|
||||
|
||||
# Invokes pkgconfig two times; once without '--static' and once with
|
||||
# '--static'
|
||||
macro(_pkgconfig_invoke_dyn _pkglist _prefix _varname cleanup_regexp)
|
||||
@ -356,9 +376,9 @@ macro(_pkg_check_modules_internal _is_required _is_silent _no_cmake_path _no_cma
|
||||
endif()
|
||||
|
||||
_pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" VERSION "" --modversion )
|
||||
_pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" PREFIX "" --variable=prefix )
|
||||
_pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" INCLUDEDIR "" --variable=includedir )
|
||||
_pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" LIBDIR "" --variable=libdir )
|
||||
pkg_get_variable("${_pkg_check_prefix}_PREFIX" ${_pkg_check_modules_pkg} "prefix")
|
||||
pkg_get_variable("${_pkg_check_prefix}_INCLUDEDIR" ${_pkg_check_modules_pkg} "includedir")
|
||||
pkg_get_variable("${_pkg_check_prefix}_LIBDIR" ${_pkg_check_modules_pkg} "libdir")
|
||||
|
||||
if (NOT ${_is_silent})
|
||||
message(STATUS " Found ${_pkg_check_modules_pkg}, version ${_pkgconfig_VERSION}")
|
||||
|
@ -0,0 +1 @@
|
||||
-- g_ir_scanner: .*/g-ir-scanner
|
@ -0,0 +1,9 @@
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(GOBJECT_INTROSPECTION QUIET gobject-introspection-1.0)
|
||||
|
||||
if (GOBJECT_INTROSPECTION_FOUND)
|
||||
pkg_get_variable(g_ir_scanner gobject-introspection-1.0 g_ir_scanner)
|
||||
message(STATUS "g_ir_scanner: ${g_ir_scanner}")
|
||||
else ()
|
||||
message(STATUS "g_ir_scanner: skipping test; gobject-introspection-1.0 not found /g-ir-scanner")
|
||||
endif ()
|
@ -9,3 +9,9 @@ if(APPLE)
|
||||
run_cmake(FindPkgConfig_CMAKE_FRAMEWORK_PATH)
|
||||
run_cmake(FindPkgConfig_CMAKE_APPBUNDLE_PATH)
|
||||
endif()
|
||||
|
||||
# We need a real pkg-config to run the test for get_variable.
|
||||
find_package(PkgConfig)
|
||||
if (PKG_CONFIG_FOUND)
|
||||
run_cmake(FindPkgConfig_GET_VARIABLE)
|
||||
endif ()
|
||||
|
Loading…
Reference in New Issue
Block a user