FindRPi_BcmHost.cmake 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. include(FeatureSummary)
  2. set_package_properties(RPi_BcmHost PROPERTIES
  3. URL "https://github.com/raspberrypi/firmware"
  4. DESCRIPTION "Broadcom VideoCore host API library"
  5. )
  6. set(RPi_BcmHost_PKG_CONFIG_SPEC bcm_host)
  7. find_package(PkgConfig QUIET)
  8. pkg_check_modules(PC_RPi_BcmHost QUIET ${RPi_BcmHost_PKG_CONFIG_SPEC})
  9. find_library(RPi_BcmHost_bcm_host_LIBRARY
  10. NAMES bcm_host
  11. HINTS
  12. ${PC_RPi_BcmHost_LIBRARY_DIRS}
  13. /opt/vc/lib
  14. )
  15. find_path(RPi_BcmHost_bcm_host_h_PATH
  16. NAMES bcm_host.h
  17. HINTS
  18. ${PC_RPi_BcmHost_INCLUDE_DIRS}
  19. /opt/vc/include
  20. )
  21. if(PC_RPi_BcmHost_FOUND)
  22. include("${CMAKE_CURRENT_LIST_DIR}/PkgConfigHelper.cmake")
  23. get_flags_from_pkg_config("${RPi_BcmHost_bcm_host_LIBRARY}" "PC_RPi_BcmHost" "_RPi_BcmHost")
  24. else()
  25. set(_RPi_BcmHost_include_dirs
  26. /opt/vc/include
  27. /opt/vc/include/interface/vcos/pthreads
  28. /opt/vc/include/interface/vmcs_host/linux
  29. )
  30. set(_RPi_BcmHost_compile_options
  31. -DUSE_VCHIQ_ARM
  32. )
  33. set(_RPi_BcmHost_link_libraries
  34. -lvcos -lvchiq_arm
  35. )
  36. set(_RPi_BcmHost_link_options
  37. -pthread
  38. )
  39. set(_RPi_BcmHost_link_directories
  40. /opt/vc/lib
  41. )
  42. endif()
  43. set(RPi_BcmHost_INCLUDE_DIRS "${_RPi_BcmHost_include_dirs}" CACHE STRING "Extra include dirs of bcm_host")
  44. set(RPi_BcmHost_COMPILE_OPTIONS "${_RPi_BcmHost_compile_options}" CACHE STRING "Extra compile options of bcm_host")
  45. set(RPi_BcmHost_LINK_LIBRARIES "${_RPi_BcmHost_link_libraries}" CACHE STRING "Extra link libraries of bcm_host")
  46. set(RPi_BcmHost_LINK_OPTIONS "${_RPi_BcmHost_link_options}" CACHE STRING "Extra link flags of bcm_host")
  47. set(RPi_BcmHost_LINK_DIRECTORIES "${_RPi_BcmHost_link_directories}" CACHE PATH "Extra link directories of bcm_host")
  48. include(FindPackageHandleStandardArgs)
  49. find_package_handle_standard_args(RPi_BcmHost
  50. REQUIRED_VARS RPi_BcmHost_bcm_host_LIBRARY RPi_BcmHost_bcm_host_h_PATH
  51. )
  52. if(RPi_BcmHost_FOUND)
  53. if(NOT TARGET RPi_BcmHost::RPi_BcmHost)
  54. add_library(RPi_BcmHost::RPi_BcmHost INTERFACE IMPORTED)
  55. set_target_properties(RPi_BcmHost::RPi_BcmHost PROPERTIES
  56. INTERFACE_INCLUDE_DIRECTORIES "${RPi_BcmHost_INCLUDE_DIRS}"
  57. INTERFACE_COMPILE_OPTIONS "${RPi_BcmHost_COMPILE_OPTIONS}"
  58. INTERFACE_LINK_LIBRARIES "${RPi_BcmHost_LINK_LIBRARIES}"
  59. INTERFACE_LINK_OPTIONS "${RPi_BcmHost_LINK_OPTIONS}"
  60. INTERFACE_LINK_DIRECTORIES "${RPi_BcmHost_LINK_DIRECTORIES}"
  61. )
  62. endif()
  63. endif()