From da5016d3369d2e5988cabe393c8badb7478bd3b3 Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Fri, 28 Jul 2023 01:02:12 +0200 Subject: [PATCH] cmake: use pkg-config + test compile instead of Find module for detecting rpi --- cmake/FindRPi_BcmHost.cmake | 75 ------------------------------------- cmake/FindRPi_BrcmEGL.cmake | 59 ----------------------------- cmake/sdlchecks.cmake | 19 ++++++---- 3 files changed, 12 insertions(+), 141 deletions(-) delete mode 100644 cmake/FindRPi_BcmHost.cmake delete mode 100644 cmake/FindRPi_BrcmEGL.cmake diff --git a/cmake/FindRPi_BcmHost.cmake b/cmake/FindRPi_BcmHost.cmake deleted file mode 100644 index fe0b06611..000000000 --- a/cmake/FindRPi_BcmHost.cmake +++ /dev/null @@ -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() diff --git a/cmake/FindRPi_BrcmEGL.cmake b/cmake/FindRPi_BrcmEGL.cmake deleted file mode 100644 index be4a44782..000000000 --- a/cmake/FindRPi_BrcmEGL.cmake +++ /dev/null @@ -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() diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake index 1bfe8676d..f12b7e3ed 100644 --- a/cmake/sdlchecks.cmake +++ b/cmake/sdlchecks.cmake @@ -1079,17 +1079,22 @@ endmacro() # - n/a macro(CheckRPI) if(SDL_RPI) - # presence of bcm_host means raspberry pi - find_package(RPi_BcmHost) - if(RPi_BcmHost_FOUND) + set(BCM_HOST_PKG_CONFIG_SPEC bcm_host) + set(BRCMEGL_PKG_CONFIG_SPEC brcmegl) + + 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) - sdl_link_dependency(rpi LIBS RPi_BcmHost::RPi_BcmHost CMAKE_MODULE RPi_BcmHost PKG_CONFIG_SPECS ${RPi_BcmHost_PKG_CONFIG_SPEC}) - find_package(RPi_BrcmEGL) - if(SDL_VIDEO AND RPi_BrcmEGL_FOUND) + if(SDL_VIDEO) set(HAVE_SDL_VIDEO TRUE) set(SDL_VIDEO_DRIVER_RPI 1) 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()