From d928bfd1eacf1f2612dfb5d1322d010aa8da4f46 Mon Sep 17 00:00:00 2001 From: Kurt Kartaltepe Date: Fri, 3 Apr 2020 20:56:48 -0700 Subject: [PATCH] cmake: Fix warnings and normalize variables/errors As of 3.17 using find_package_handle_standard_args checks that the name of the FindXXX file and the first argument are the same case. Some modules used non-standard variables or the old singular variables instead of plurals. This normalizes variable usage to the new-style. Some CMakeLists.txt did custom error checking instead of propagating find_package errors. These were changes to call find_package with REQUIRED or without QUIET where needed and shortens the custom status messages. This helps users who want to enable that functionality see what precisely wasnt found. --- UI/win-update/updater/CMakeLists.txt | 2 -- cmake/Modules/FindLibVLC.cmake | 12 ++----- cmake/Modules/FindLibv4l2.cmake | 2 +- cmake/Modules/FindMbedTLS.cmake | 26 ++++++---------- .../{FindLibUDev.cmake => FindUDev.cmake} | 2 +- cmake/Modules/FindVulkan.cmake | 2 +- cmake/Modules/FindXCB.cmake | 21 ++++--------- cmake/Modules/FindZLIB.cmake | 5 +-- libobs/CMakeLists.txt | 2 +- plugins/linux-v4l2/CMakeLists.txt | 31 +++++++++++-------- plugins/obs-outputs/CMakeLists.txt | 25 +++++++-------- plugins/vlc-video/CMakeLists.txt | 16 +++++----- 12 files changed, 63 insertions(+), 83 deletions(-) rename cmake/Modules/{FindLibUDev.cmake => FindUDev.cmake} (94%) diff --git a/UI/win-update/updater/CMakeLists.txt b/UI/win-update/updater/CMakeLists.txt index faa5d2265..83309c362 100644 --- a/UI/win-update/updater/CMakeLists.txt +++ b/UI/win-update/updater/CMakeLists.txt @@ -14,8 +14,6 @@ include_directories(${LIBLZMA_INCLUDE_DIRS}) include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/libobs") include_directories(${BLAKE2_INCLUDE_DIR}) -find_package(ZLIB REQUIRED) - set(updater_HEADERS ../win-update-helpers.hpp resource.h diff --git a/cmake/Modules/FindLibVLC.cmake b/cmake/Modules/FindLibVLC.cmake index c8cb555b9..7360e179d 100644 --- a/cmake/Modules/FindLibVLC.cmake +++ b/cmake/Modules/FindLibVLC.cmake @@ -4,9 +4,6 @@ # LIBVLC_INCLUDE_DIRS # LIBVLC_LIBRARIES # -# For use in OBS: -# -# VLC_INCLUDE_DIR find_package(PkgConfig QUIET) if (PKG_CONFIG_FOUND) @@ -59,14 +56,11 @@ find_library(VLC_LIB ../bin${_lib_suffix} ../bin) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(LibVLC_INCLUDES DEFAULT_MSG VLC_INCLUDE_DIR) -find_package_handle_standard_args(LibVLC DEFAULT_MSG VLC_LIB VLC_INCLUDE_DIR) +# OBS doesnt depend on linking, so we dont include VLC_LIB here as required. +find_package_handle_standard_args(LibVLC DEFAULT_MSG VLC_INCLUDE_DIR) mark_as_advanced(VLC_INCLUDE_DIR VLC_LIB) -if(LIBVLC_INCLUDES_FOUND) - set(LIBVLC_INCLUDE_DIRS ${VLC_INCLUDE_DIR}) -endif() - if(LIBVLC_FOUND) set(LIBVLC_LIBRARIES ${VLC_LIB}) + set(LIBVLC_INCLUDE_DIRS ${VLC_INCLUDE_DIR}) endif() diff --git a/cmake/Modules/FindLibv4l2.cmake b/cmake/Modules/FindLibv4l2.cmake index bffa24f82..e2b76dd76 100644 --- a/cmake/Modules/FindLibv4l2.cmake +++ b/cmake/Modules/FindLibv4l2.cmake @@ -24,7 +24,7 @@ find_library(V4L2_LIB /usr/lib /usr/local/lib /opt/local/lib) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(LibV4L2 DEFAULT_MSG V4L2_LIB V4L2_INCLUDE_DIR) +find_package_handle_standard_args(Libv4l2 DEFAULT_MSG V4L2_LIB V4L2_INCLUDE_DIR) mark_as_advanced(V4L2_INCLUDE_DIR V4L2_LIB) if(LIBV4L2_FOUND) diff --git a/cmake/Modules/FindMbedTLS.cmake b/cmake/Modules/FindMbedTLS.cmake index 954df18e8..0ac264120 100644 --- a/cmake/Modules/FindMbedTLS.cmake +++ b/cmake/Modules/FindMbedTLS.cmake @@ -1,12 +1,9 @@ # Once done these will be defined: # -# LIBMBEDTLS_FOUND -# LIBMBEDTLS_INCLUDE_DIRS -# LIBMBEDTLS_LIBRARIES +# MBEDTLS_FOUND +# MBEDTLS_INCLUDE_DIRS +# MBEDTLS_LIBRARIES # -# For use in OBS: -# -# MBEDTLS_INCLUDE_DIR find_package(PkgConfig QUIET) if (PKG_CONFIG_FOUND) @@ -122,22 +119,19 @@ endif() # If we find all three libraries, then go ahead. if(MBEDTLS_LIB AND MBEDCRYPTO_LIB AND MBEDX509_LIB) - set(LIBMBEDTLS_INCLUDE_DIRS ${MBEDTLS_INCLUDE_DIR}) - set(LIBMBEDTLS_LIBRARIES ${MBEDTLS_LIB} ${MBEDCRYPTO_LIB} ${MBEDX509_LIB}) - set(MBEDTLS_INCLUDE_DIRS ${LIBMBEDTLS_INCLUDE_DIRS}) - set(MBEDTLS_LIBRARIES ${LIBMBEDTLS_LIBRARIES}) + set(MBEDTLS_INCLUDE_DIRS ${MBEDTLS_INCLUDE_DIR}) + set(MBEDTLS_LIBRARIES ${MBEDTLS_LIB} ${MBEDCRYPTO_LIB} ${MBEDX509_LIB}) # Otherwise, if we find MBEDTLS_LIB, and it has both CRYPTO and x509 # within the single lib (i.e. a windows build environment), then also # feel free to go ahead. elseif(MBEDTLS_LIB AND MBEDTLS_INCLUDES_CRYPTO AND MBEDTLS_INCLUDES_X509) - set(LIBMBEDTLS_INCLUDE_DIRS ${MBEDTLS_INCLUDE_DIR}) - set(LIBMBEDTLS_LIBRARIES ${MBEDTLS_LIB}) - set(MBEDTLS_INCLUDE_DIRS ${LIBMBEDTLS_INCLUDE_DIRS}) - set(MBEDTLS_LIBRARIES ${LIBMBEDTLS_LIBRARIES}) + set(MBEDTLS_INCLUDE_DIRS ${MBEDTLS_INCLUDE_DIR}) + set(MBEDTLS_LIBRARIES ${MBEDTLS_LIB}) endif() # Now we've accounted for the 3-vs-1 library case: include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(Libmbedtls DEFAULT_MSG MBEDTLS_LIBRARIES MBEDTLS_INCLUDE_DIRS) -mark_as_advanced(MBEDTLS_INCLUDE_DIR MBEDTLS_LIBRARIES MBEDTLS_INCLUDE_DIRS) +find_package_handle_standard_args(MbedTLS DEFAULT_MSG MBEDTLS_LIBRARIES MBEDTLS_INCLUDE_DIRS) +mark_as_advanced(MBEDTLS_INCLUDE_DIR MBEDTLS_LIB MBEDCRYPTO_LIB MBEDX509_LIB) + diff --git a/cmake/Modules/FindLibUDev.cmake b/cmake/Modules/FindUDev.cmake similarity index 94% rename from cmake/Modules/FindLibUDev.cmake rename to cmake/Modules/FindUDev.cmake index 7731ec0eb..5e07e6659 100644 --- a/cmake/Modules/FindLibUDev.cmake +++ b/cmake/Modules/FindUDev.cmake @@ -6,7 +6,7 @@ find_package(PkgConfig QUIET) if (PKG_CONFIG_FOUND) - pkg_check_modules(_UDEV QUIET udev) + pkg_check_modules(_UDEV QUIET libudev) endif() find_path(UDEV_INCLUDE_DIR diff --git a/cmake/Modules/FindVulkan.cmake b/cmake/Modules/FindVulkan.cmake index 5bea7771d..a9d222754 100644 --- a/cmake/Modules/FindVulkan.cmake +++ b/cmake/Modules/FindVulkan.cmake @@ -61,7 +61,7 @@ find_library(VULKAN_LIB ../bin${_lib_suffix} ../bin) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(vulkan DEFAULT_MSG VULKAN_LIB VULKAN_INCLUDE_DIR) +find_package_handle_standard_args(Vulkan DEFAULT_MSG VULKAN_LIB VULKAN_INCLUDE_DIR) mark_as_advanced(VULKAN_INCLUDE_DIR VULKAN_LIB) if(VULKAN_FOUND) diff --git a/cmake/Modules/FindXCB.cmake b/cmake/Modules/FindXCB.cmake index 7f948bc7c..2c05484ce 100644 --- a/cmake/Modules/FindXCB.cmake +++ b/cmake/Modules/FindXCB.cmake @@ -204,30 +204,19 @@ macro(_XCB_HANDLE_COMPONENT _comp) find_path(XCB_${_comp}_INCLUDE_DIR NAMES ${_header} HINTS ${PKG_XCB_INCLUDE_DIRS}) find_library(XCB_${_comp}_LIBRARY NAMES ${_lib} HINTS ${PKG_XCB_LIBRARY_DIRS}) + mark_as_advanced(XCB_${_comp}_LIBRARY XCB_${_comp}_INCLUDE_DIR) if(XCB_${_comp}_INCLUDE_DIR AND XCB_${_comp}_LIBRARY) + set(XCB_${_comp}_FOUND TRUE) list(APPEND XCB_INCLUDE_DIRS ${XCB_${_comp}_INCLUDE_DIR}) list(APPEND XCB_LIBRARIES ${XCB_${_comp}_LIBRARY}) if (NOT XCB_FIND_QUIETLY) message(STATUS "XCB[${_comp}]: Found component ${_comp}") endif() endif() - - if(XCB_FIND_REQUIRED_${_comp}) - list(APPEND requiredComponents XCB_${_comp}_FOUND) - endif() - - find_package_handle_standard_args(XCB_${_comp} DEFAULT_MSG XCB_${_comp}_LIBRARY XCB_${_comp}_INCLUDE_DIR) - - mark_as_advanced(XCB_${_comp}_LIBRARY XCB_${_comp}_INCLUDE_DIR) - - # compatibility for old variable naming - set(XCB_${_comp}_INCLUDE_DIRS ${XCB_${_comp}_INCLUDE_DIR}) - set(XCB_${_comp}_LIBRARIES ${XCB_${_comp}_LIBRARY}) endmacro() IF (NOT WIN32) - include(FindPackageHandleStandardArgs) # Use pkg-config to get the directories and then use these values # in the FIND_PATH() and FIND_LIBRARY() calls find_package(PkgConfig) @@ -243,9 +232,11 @@ IF (NOT WIN32) list(REMOVE_DUPLICATES XCB_INCLUDE_DIRS) endif() - find_package_handle_standard_args(XCB DEFAULT_MSG XCB_LIBRARIES XCB_INCLUDE_DIRS ${requiredComponents}) + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(XCB + REQUIRED_VARS XCB_LIBRARIES XCB_INCLUDE_DIRS + HANDLE_COMPONENTS) # compatibility for old variable naming set(XCB_INCLUDE_DIR ${XCB_INCLUDE_DIRS}) - ENDIF (NOT WIN32) diff --git a/cmake/Modules/FindZLIB.cmake b/cmake/Modules/FindZLIB.cmake index a7b23d3db..ec58bae11 100644 --- a/cmake/Modules/FindZLIB.cmake +++ b/cmake/Modules/FindZLIB.cmake @@ -4,9 +4,6 @@ # ZLIB_INCLUDE_DIRS # ZLIB_LIBRARIES # -# For use in OBS: -# -# ZLIB_INCLUDE_DIR find_package(PkgConfig QUIET) if (PKG_CONFIG_FOUND) @@ -59,7 +56,7 @@ find_library(ZLIB_LIB ../bin${_lib_suffix} ../bin) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(zlib DEFAULT_MSG ZLIB_LIB ZLIB_INCLUDE_DIR) +find_package_handle_standard_args(ZLIB DEFAULT_MSG ZLIB_LIB ZLIB_INCLUDE_DIR) mark_as_advanced(ZLIB_INCLUDE_DIR ZLIB_LIB) if(ZLIB_FOUND) diff --git a/libobs/CMakeLists.txt b/libobs/CMakeLists.txt index b7e4b7d81..5bd5408a8 100644 --- a/libobs/CMakeLists.txt +++ b/libobs/CMakeLists.txt @@ -74,7 +74,7 @@ endif() find_package(ZLIB REQUIRED) -include_directories(SYSTEM ${ZLIB_INCLUDE_DIR}) +include_directories(SYSTEM ${ZLIB_INCLUDE_DIRS}) add_definitions(-DLIBOBS_EXPORTS) diff --git a/plugins/linux-v4l2/CMakeLists.txt b/plugins/linux-v4l2/CMakeLists.txt index f2b58d95f..89882cc95 100644 --- a/plugins/linux-v4l2/CMakeLists.txt +++ b/plugins/linux-v4l2/CMakeLists.txt @@ -5,23 +5,28 @@ if(DISABLE_V4L2) return() endif() -find_package(Libv4l2) -find_package(LibUDev QUIET) -if(NOT LIBV4L2_FOUND AND ENABLE_V4L2) - message(FATAL_ERROR "libv4l2 not found bit plugin set as enabled") -elseif(NOT LIBV4L2_FOUND) - message(STATUS "libv4l2 not found, disabling v4l2 plugin") - return() +if(ENABLE_V4L2) + find_package(Libv4l2 REQUIRED) +else() + find_package(Libv4l2) + if(NOT LIBV4L2_FOUND) + message(STATUS "libv4l2 not found, disabling v4l2 plugin") + return() + endif() endif() -if(NOT UDEV_FOUND OR DISABLE_UDEV) - message(STATUS "udev disabled for v4l2 plugin") -else() - set(linux-v4l2-udev_SOURCES - v4l2-udev.c - ) +if(DISABLE_UDEV) add_definitions(-DHAVE_UDEV) +else() + find_package(UDev) + if(NOT UDEV_FOUND) + message(STATUS "udev disabled for v4l2 plugin") + else() + set(linux-v4l2-udev_SOURCES + v4l2-udev.c + ) + endif() endif() include_directories( diff --git a/plugins/obs-outputs/CMakeLists.txt b/plugins/obs-outputs/CMakeLists.txt index 5db2d52a3..404e34f01 100644 --- a/plugins/obs-outputs/CMakeLists.txt +++ b/plugins/obs-outputs/CMakeLists.txt @@ -5,22 +5,21 @@ set_property(CACHE WITH_RTMPS PROPERTY STRINGS AUTO ON OFF) option(STATIC_MBEDTLS "Statically link mbedTLS into binary" OFF) -if (WITH_RTMPS OR (WITH_RTMPS STREQUAL "AUTO")) - find_package(MbedTLS QUIET) - find_package(ZLIB QUIET) +if (WITH_RTMPS STREQUAL "AUTO") + find_package(MbedTLS) + find_package(ZLIB) + if (NOT MBEDTLS_FOUND OR NOT ZLIB_FOUND) + set(WITH_RTMPS "OFF") + message(WARNING "mbedTLS or zlib was not found, RTMPS will be auto-disabled") + endif() endif() -if (LIBMBEDTLS_FOUND AND ZLIB_FOUND) +if (WITH_RTMPS) + find_package(MbedTLS REQUIRED) + find_package(ZLIB REQUIRED) add_definitions(-DCRYPTO -DUSE_MBEDTLS) - include_directories(${LIBMBEDTLS_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS}) + include_directories(${MBEDTLS_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS}) else() - if(WITH_RTMPS STREQUAL "AUTO") - message(WARNING "mbedTLS was not found, RTMPS will be auto-disabled") - elseif (WITH_RTMPS) - message(FATAL_ERROR "RTMPS enabled by user, but mbedTLS was not found") - endif() - unset(LIBMBEDTLS_LIBRARIES) - unset(ZLIB_LIBRARIES) add_definitions(-DNO_CRYPTO) endif() @@ -172,7 +171,7 @@ add_library(obs-outputs MODULE ${obs-outputs_librtmp_HEADERS}) target_link_libraries(obs-outputs libobs - ${LIBMBEDTLS_LIBRARIES} + ${MBEDTLS_LIBRARIES} ${ZLIB_LIBRARIES} ${ftl_IMPORTS} ${obs-outputs_PLATFORM_DEPS}) diff --git a/plugins/vlc-video/CMakeLists.txt b/plugins/vlc-video/CMakeLists.txt index d8f5b6904..09b858b59 100644 --- a/plugins/vlc-video/CMakeLists.txt +++ b/plugins/vlc-video/CMakeLists.txt @@ -5,13 +5,14 @@ if(DISABLE_VLC) return() endif() -find_package(LibVLC QUIET) - -if(NOT LIBVLC_INCLUDES_FOUND AND ENABLE_VLC) - message(FATAL_ERROR "LibVLC includes not found but set as enabled") -elseif(NOT LIBVLC_INCLUDES_FOUND) - message(STATUS "LibVLC includes not found, VLC video plugin disabled") - return() +if(ENABLE_VLC) + find_package(LibVLC REQUIRED) +else() + find_package(LibVLC) + if(NOT LibVLC_FOUND) + message(STATUS "VLC video plugin disabled") + return() + endif() endif() include_directories(${LIBVLC_INCLUDE_DIRS}) @@ -41,6 +42,7 @@ endif() add_library(vlc-video MODULE ${vlc-video_SOURCES} ${vlc-video_HEADERS}) +# instead of linking vlc we load at runtime. target_link_libraries(vlc-video libobs ${vlc-video_PLATFORM_DEPS})