CheckLib.cmake 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 pc 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. pkg_search_module(${var} QUIET ${pc})
  23. endif()
  24. if(${var}_FOUND)
  25. include_directories(${${var}_INCLUDE_DIRS})
  26. # Make sure include directories for headers found using find_path below
  27. # are re-added when reconfiguring
  28. include_directories(${${var}_INCLUDE})
  29. _internal_message("${lib} found")
  30. else()
  31. find_library(${var} ${lib})
  32. if(_arg_list)
  33. find_path(${var}_INCLUDE ${_arg_list})
  34. else()
  35. set(${var}_INCLUDE FALSE)
  36. endif()
  37. if(${var} AND ${var}_INCLUDE)
  38. include_directories(${${var}_INCLUDE})
  39. _internal_message("${lib} found")
  40. set(${var}_FOUND 1 CACHE INTERNAL "")
  41. else()
  42. if(_is_required)
  43. message(FATAL_ERROR "${lib} is required but not found")
  44. else()
  45. _internal_message("${lib} not found")
  46. endif()
  47. endif()
  48. endif()
  49. endmacro()
  50. macro(check_libav)
  51. if(PKG_CONFIG_FOUND)
  52. pkg_check_modules(LIBAV libavcodec>=54.35.0 libavformat>=54.20.4
  53. libswscale>=2.1.1 libavutil>=52.3.0)
  54. else()
  55. message("pkg-config is required to check for libav/ffmpeg")
  56. endif()
  57. if(LIBAV_FOUND)
  58. message("libav/ffmpeg found, enabling AVI frame dumps")
  59. add_definitions(-DHAVE_LIBAV)
  60. include_directories(${LIBAV_INCLUDE_DIRS})
  61. else()
  62. message("libav/ffmpeg not found, disabling AVI frame dumps")
  63. endif()
  64. endmacro()