CheckLib.cmake 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. include(FindPkgConfig OPTIONAL)
  2. macro(_internal_message msg)
  3. if(NOT ${_is_quiet})
  4. message("${msg}")
  5. endif()
  6. endmacro()
  7. macro(check_lib var lib)
  8. set(_is_required 0)
  9. set(_is_quiet 0)
  10. set(_arg_list ${ARGN})
  11. foreach(_arg ${ARGN})
  12. if(_arg STREQUAL "REQUIRED")
  13. list(REMOVE_ITEM _arg_list "REQUIRED")
  14. set(_is_required 1)
  15. endif()
  16. if(_arg STREQUAL "QUIET")
  17. list(REMOVE_ITEM _arg_list "QUIET")
  18. set(_is_quiet 1)
  19. endif()
  20. endforeach()
  21. if(PKG_CONFIG_FOUND AND NOT ${var}_FOUND)
  22. string(TOLOWER ${lib} lower_lib)
  23. pkg_search_module(${var} QUIET ${lower_lib})
  24. endif()
  25. if(${var}_FOUND)
  26. include_directories(${${var}_INCLUDE_DIRS})
  27. # Make sure include directories for headers found using find_path below
  28. # are re-added when reconfiguring
  29. include_directories(${${var}_INCLUDE})
  30. _internal_message("${lib} found")
  31. else()
  32. find_library(${var} ${lib})
  33. if(_arg_list)
  34. find_path(${var}_INCLUDE ${_arg_list})
  35. else()
  36. set(${var}_INCLUDE FALSE)
  37. endif()
  38. if(${var} AND ${var}_INCLUDE)
  39. include_directories(${${var}_INCLUDE})
  40. _internal_message("${lib} found")
  41. set(${var}_FOUND 1 CACHE INTERNAL "")
  42. else()
  43. if(_is_required)
  44. message(FATAL_ERROR "${lib} is required but not found")
  45. else()
  46. _internal_message("${lib} not found")
  47. endif()
  48. endif()
  49. endif()
  50. endmacro()
  51. macro(check_libav)
  52. if(PKG_CONFIG_FOUND)
  53. pkg_check_modules(LIBAV libavcodec>=53.35.0 libavformat>=53.21.0
  54. libswscale>=2.1.0 libavutil>=51.22.1)
  55. else()
  56. message("pkg-config is required to check for libav")
  57. endif()
  58. if(LIBAV_FOUND)
  59. message("libav found, enabling AVI frame dumps")
  60. add_definitions(-DHAVE_LIBAV)
  61. include_directories(${LIBAV_INCLUDE_DIRS})
  62. else()
  63. message("libav not found, disabling AVI frame dumps")
  64. endif()
  65. endmacro()