cmake: use pkg-config + test compile instead of Find module for detecting rpi
parent
deec574ff6
commit
da5016d336
|
@ -1,75 +0,0 @@
|
||||||
include(FeatureSummary)
|
|
||||||
set_package_properties(RPi_BcmHost PROPERTIES
|
|
||||||
URL "https://github.com/raspberrypi/firmware"
|
|
||||||
DESCRIPTION "Broadcom VideoCore host API library"
|
|
||||||
)
|
|
||||||
|
|
||||||
set(RPi_BcmHost_PKG_CONFIG_SPEC bcm_host)
|
|
||||||
|
|
||||||
find_package(PkgConfig QUIET)
|
|
||||||
pkg_check_modules(PC_RPi_BcmHost QUIET ${RPi_BcmHost_PKG_CONFIG_SPEC})
|
|
||||||
|
|
||||||
find_library(RPi_BcmHost_bcm_host_LIBRARY
|
|
||||||
NAMES bcm_host
|
|
||||||
HINTS
|
|
||||||
${PC_RPi_BcmHost_LIBRARY_DIRS}
|
|
||||||
/opt/vc/lib
|
|
||||||
)
|
|
||||||
|
|
||||||
find_path(RPi_BcmHost_bcm_host_h_PATH
|
|
||||||
NAMES bcm_host.h
|
|
||||||
HINTS
|
|
||||||
${PC_RPi_BcmHost_INCLUDE_DIRS}
|
|
||||||
/opt/vc/include
|
|
||||||
)
|
|
||||||
|
|
||||||
if(PC_RPi_BcmHost_FOUND)
|
|
||||||
include("${CMAKE_CURRENT_LIST_DIR}/PkgConfigHelper.cmake")
|
|
||||||
get_flags_from_pkg_config("${RPi_BcmHost_bcm_host_LIBRARY}" "PC_RPi_BcmHost" "_RPi_BcmHost")
|
|
||||||
else()
|
|
||||||
set(_RPi_BcmHost_include_dirs
|
|
||||||
/opt/vc/include
|
|
||||||
/opt/vc/include/interface/vcos/pthreads
|
|
||||||
/opt/vc/include/interface/vmcs_host/linux
|
|
||||||
)
|
|
||||||
set(_RPi_BcmHost_compile_options
|
|
||||||
-DUSE_VCHIQ_ARM
|
|
||||||
)
|
|
||||||
set(_RPi_BcmHost_link_libraries
|
|
||||||
-lvcos -lvchiq_arm
|
|
||||||
)
|
|
||||||
set(_RPi_BcmHost_link_options
|
|
||||||
-pthread
|
|
||||||
)
|
|
||||||
set(_RPi_BcmHost_link_directories
|
|
||||||
/opt/vc/lib
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(RPi_BcmHost_INCLUDE_DIRS "${_RPi_BcmHost_include_dirs}" CACHE STRING "Extra include dirs of bcm_host")
|
|
||||||
|
|
||||||
set(RPi_BcmHost_COMPILE_OPTIONS "${_RPi_BcmHost_compile_options}" CACHE STRING "Extra compile options of bcm_host")
|
|
||||||
|
|
||||||
set(RPi_BcmHost_LINK_LIBRARIES "${_RPi_BcmHost_link_libraries}" CACHE STRING "Extra link libraries of bcm_host")
|
|
||||||
|
|
||||||
set(RPi_BcmHost_LINK_OPTIONS "${_RPi_BcmHost_link_options}" CACHE STRING "Extra link flags of bcm_host")
|
|
||||||
|
|
||||||
set(RPi_BcmHost_LINK_DIRECTORIES "${_RPi_BcmHost_link_directories}" CACHE PATH "Extra link directories of bcm_host")
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
find_package_handle_standard_args(RPi_BcmHost
|
|
||||||
REQUIRED_VARS RPi_BcmHost_bcm_host_LIBRARY RPi_BcmHost_bcm_host_h_PATH
|
|
||||||
)
|
|
||||||
|
|
||||||
if(RPi_BcmHost_FOUND)
|
|
||||||
if(NOT TARGET RPi_BcmHost::RPi_BcmHost)
|
|
||||||
add_library(RPi_BcmHost::RPi_BcmHost INTERFACE IMPORTED)
|
|
||||||
set_target_properties(RPi_BcmHost::RPi_BcmHost PROPERTIES
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${RPi_BcmHost_INCLUDE_DIRS}"
|
|
||||||
INTERFACE_COMPILE_OPTIONS "${RPi_BcmHost_COMPILE_OPTIONS}"
|
|
||||||
INTERFACE_LINK_LIBRARIES "${RPi_BcmHost_LINK_LIBRARIES}"
|
|
||||||
INTERFACE_LINK_OPTIONS "${RPi_BcmHost_LINK_OPTIONS}"
|
|
||||||
INTERFACE_LINK_DIRECTORIES "${RPi_BcmHost_LINK_DIRECTORIES}"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
|
@ -1,59 +0,0 @@
|
||||||
include(FeatureSummary)
|
|
||||||
set_package_properties(RPi_BrcmEGL PROPERTIES
|
|
||||||
URL "https://github.com/raspberrypi/firmware"
|
|
||||||
DESCRIPTION "Fake brcmEGL package for RPi"
|
|
||||||
)
|
|
||||||
|
|
||||||
set(RPi_BrcmEGL_PKG_CONFIG_SPEC brcmegl)
|
|
||||||
|
|
||||||
find_package(PkgConfig QUIET)
|
|
||||||
pkg_check_modules(PC_RPi_BrcmEGL QUIET ${RPi_BrcmEGL_PKG_CONFIG_SPEC})
|
|
||||||
|
|
||||||
find_package(RPi_BcmHost)
|
|
||||||
|
|
||||||
find_library(RPi_BrcmEGL_brcmEGL_LIBRARY
|
|
||||||
NAMES brcmEGL
|
|
||||||
HINTS
|
|
||||||
${PC_RPi_BrcmEGL_LIBRARY_DIRS}
|
|
||||||
/opt/vc/lib
|
|
||||||
)
|
|
||||||
|
|
||||||
find_path(RPi_BrcmEGL_EGL_eglplatform_h_PATH
|
|
||||||
NAMES EGL/eglplatform.h
|
|
||||||
HINTS
|
|
||||||
${PC_RPi_BrcmEGL_INCLUDE_DIRS}
|
|
||||||
/opt/vc/include
|
|
||||||
)
|
|
||||||
|
|
||||||
if(PC_RPi_BrcmEGL_FOUND)
|
|
||||||
include("${CMAKE_CURRENT_LIST_DIR}/PkgConfigHelper.cmake")
|
|
||||||
get_flags_from_pkg_config("${RPi_BrcmEGL_brcmEGL_LIBRARY}" "PC_RPi_BrcmEGL" "_RPi_BrcmEGL")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(RPi_BrcmEGL_INCLUDE_DIRS "${_RPi_BrcmEGL_include_dirs}" CACHE STRING "Extra include dirs of brcmEGL")
|
|
||||||
|
|
||||||
set(RPi_BrcmEGL_COMPILE_OPTIONS "${_RPi_BrcmEGL_compile_options}" CACHE STRING "Extra compile options of brcmEGL")
|
|
||||||
|
|
||||||
set(RPi_BrcmEGL_LINK_LIBRARIES "${_RPi_BrcmEGL_link_libraries}" CACHE STRING "Extra link libraries of brcmEGL")
|
|
||||||
|
|
||||||
set(RPi_BrcmEGL_LINK_OPTIONS "${_RPi_BrcmEGL_link_options}" CACHE STRING "Extra link flags of brcmEGL")
|
|
||||||
|
|
||||||
set(RPi_BrcmEGL_LINK_DIRECTORIES "${_RPi_BrcmEGL_link_directories}" CACHE PATH "Extra link directories of brcmEGL")
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
find_package_handle_standard_args(RPi_BrcmEGL
|
|
||||||
REQUIRED_VARS RPi_BrcmEGL_brcmEGL_LIBRARY RPi_BrcmEGL_EGL_eglext_brcm_h_PATH RPi_BcmHost_FOUND
|
|
||||||
)
|
|
||||||
|
|
||||||
if(RPi_BrcmEGL_FOUND)
|
|
||||||
if(NOT TARGET RPi_BcmHost::RPi_BcmHost)
|
|
||||||
add_library(RPi_BcmHost::RPi_BcmHost INTERFACE IMPORTED)
|
|
||||||
set_target_properties(RPi_BcmHost::RPi_BcmHost PROPERTIES
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${RPi_BrcmEGL_INCLUDE_DIRS}"
|
|
||||||
INTERFACE_COMPILE_OPTIONS "${RPi_BrcmEGL_COMPILE_OPTIONS}"
|
|
||||||
INTERFACE_LINK_LIBRARIES "${RPi_BrcmEGL_LINK_LIBRARIES};RPi_BcmHost::RPi_BcmHost"
|
|
||||||
INTERFACE_LINK_OPTIONS "${RPi_BrcmEGL_LINK_OPTIONS}"
|
|
||||||
INTERFACE_LINK_DIRECTORIES "${RPi_BrcmEGL_LINK_DIRECTORIES}"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
|
@ -1079,17 +1079,22 @@ endmacro()
|
||||||
# - n/a
|
# - n/a
|
||||||
macro(CheckRPI)
|
macro(CheckRPI)
|
||||||
if(SDL_RPI)
|
if(SDL_RPI)
|
||||||
# presence of bcm_host means raspberry pi
|
set(BCM_HOST_PKG_CONFIG_SPEC bcm_host)
|
||||||
find_package(RPi_BcmHost)
|
set(BRCMEGL_PKG_CONFIG_SPEC brcmegl)
|
||||||
if(RPi_BcmHost_FOUND)
|
|
||||||
|
set(original_PKG_CONFIG_PATH $ENV{PKG_CONFIG_PATH})
|
||||||
|
set(ENV{PKG_CONFIG_PATH} "${original_PKG_CONFIG_PATH}:/opt/vc/lib/pkgconfig")
|
||||||
|
pkg_check_modules(PC_BCM_HOST IMPORTED_TARGET QUIET ${BCM_HOST_PKG_CONFIG_SPEC})
|
||||||
|
pkg_check_modules(PC_BRCMEGL IMPORTED_TARGET QUIET ${BRCMEGL_PKG_CONFIG_SPEC})
|
||||||
|
set(ENV{PKG_CONFIG_PATH} "${original_PKG_CONFIG_PATH}")
|
||||||
|
|
||||||
|
if(TARGET PkgConfig::PC_BCM_HOST AND TARGET PkgConfig::PC_BRCMEGL)
|
||||||
set(HAVE_RPI TRUE)
|
set(HAVE_RPI TRUE)
|
||||||
sdl_link_dependency(rpi LIBS RPi_BcmHost::RPi_BcmHost CMAKE_MODULE RPi_BcmHost PKG_CONFIG_SPECS ${RPi_BcmHost_PKG_CONFIG_SPEC})
|
if(SDL_VIDEO)
|
||||||
find_package(RPi_BrcmEGL)
|
|
||||||
if(SDL_VIDEO AND RPi_BrcmEGL_FOUND)
|
|
||||||
set(HAVE_SDL_VIDEO TRUE)
|
set(HAVE_SDL_VIDEO TRUE)
|
||||||
set(SDL_VIDEO_DRIVER_RPI 1)
|
set(SDL_VIDEO_DRIVER_RPI 1)
|
||||||
sdl_glob_sources("${SDL3_SOURCE_DIR}/src/video/raspberry/*.c")
|
sdl_glob_sources("${SDL3_SOURCE_DIR}/src/video/raspberry/*.c")
|
||||||
sdl_link_dependency(rpi-video LIBS RPi_BrcmEGL::RPi_BrcmEGL CMAKE_MODULE RPi_BrcmEGL PKG_CONFIG_SPECS ${RPi_BrcmEGL_PKG_CONFIG_SPEC})
|
sdl_link_dependency(rpi-video LIBS PkgConfig::PC_BCM_HOST PKG_CONFIG_PREFIX PC_BCM_HOST PKG_CONFIG_SPECS ${BCM_HOST_PKG_CONFIG_SPEC})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
Loading…
Reference in New Issue