UsePkgConfig.cmake 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. # file Copyright.txt or https://cmake.org/licensing for details.
  3. #[=======================================================================[.rst:
  4. UsePkgConfig
  5. ------------
  6. .. deprecated:: 3.0
  7. Use :module:`FindPkgConfig` instead.
  8. This module defines the following macro:
  9. PKGCONFIG(package includedir libdir linkflags cflags)
  10. Calling PKGCONFIG will fill the desired information into the 4 given
  11. arguments, e.g. PKGCONFIG(libart-2.0 LIBART_INCLUDE_DIR
  12. LIBART_LINK_DIR LIBART_LINK_FLAGS LIBART_CFLAGS) if pkg-config was NOT
  13. found or the specified software package doesn't exist, the variable
  14. will be empty when the function returns, otherwise they will contain
  15. the respective information
  16. #]=======================================================================]
  17. find_program(PKGCONFIG_EXECUTABLE NAMES pkg-config )
  18. macro(PKGCONFIG _package _include_DIR _link_DIR _link_FLAGS _cflags)
  19. message(STATUS
  20. "WARNING: you are using the obsolete 'PKGCONFIG' macro, use FindPkgConfig")
  21. # reset the variables at the beginning
  22. set(${_include_DIR})
  23. set(${_link_DIR})
  24. set(${_link_FLAGS})
  25. set(${_cflags})
  26. # if pkg-config has been found
  27. if(PKGCONFIG_EXECUTABLE)
  28. execute_process(COMMAND ${PKGCONFIG_EXECUTABLE} ${_package} --exists RESULT_VARIABLE _return_VALUE OUTPUT_VARIABLE _pkgconfigDevNull )
  29. # and if the package of interest also exists for pkg-config, then get the information
  30. if(NOT _return_VALUE)
  31. execute_process(COMMAND ${PKGCONFIG_EXECUTABLE} ${_package} --variable=includedir
  32. OUTPUT_VARIABLE ${_include_DIR} OUTPUT_STRIP_TRAILING_WHITESPACE )
  33. string(REGEX REPLACE "[\r\n]" " " ${_include_DIR} "${${_include_DIR}}")
  34. execute_process(COMMAND ${PKGCONFIG_EXECUTABLE} ${_package} --variable=libdir
  35. OUTPUT_VARIABLE ${_link_DIR} OUTPUT_STRIP_TRAILING_WHITESPACE )
  36. string(REGEX REPLACE "[\r\n]" " " ${_link_DIR} "${${_link_DIR}}")
  37. execute_process(COMMAND ${PKGCONFIG_EXECUTABLE} ${_package} --libs
  38. OUTPUT_VARIABLE ${_link_FLAGS} OUTPUT_STRIP_TRAILING_WHITESPACE )
  39. string(REGEX REPLACE "[\r\n]" " " ${_link_FLAGS} "${${_link_FLAGS}}")
  40. execute_process(COMMAND ${PKGCONFIG_EXECUTABLE} ${_package} --cflags
  41. OUTPUT_VARIABLE ${_cflags} OUTPUT_STRIP_TRAILING_WHITESPACE )
  42. string(REGEX REPLACE "[\r\n]" " " ${_cflags} "${${_cflags}}")
  43. else()
  44. message(STATUS "PKGCONFIG() indicates that ${_package} is not installed (install the package which contains ${_package}.pc if you want to support this feature)")
  45. endif()
  46. # if pkg-config has NOT been found, INFORM the user
  47. else()
  48. message(STATUS "WARNING: PKGCONFIG() indicates that the tool pkg-config has not been found on your system. You should install it.")
  49. endif()
  50. endmacro()
  51. mark_as_advanced(PKGCONFIG_EXECUTABLE)