CMake: Fix Vorbis dependency handling

* Fix Vorbis not found for CMake < 3.17 (closes #530)
* Update FindVorbis module documentation
* Remove unused VorbisEnc.cmake
* Fix bug in SndFileConfig.cmake.in
This commit is contained in:
evpobr 2020-07-26 13:35:28 +05:00
parent 7a8149a723
commit 73e09a1705
4 changed files with 86 additions and 99 deletions

View File

@ -19,7 +19,7 @@ EXTRA_DIST = libsndfile.spec.in sndfile.pc.in Scripts/android-configure.sh \
cmake_files = cmake/ClipMode.cmake cmake/FindFLAC.cmake \ cmake_files = cmake/ClipMode.cmake cmake/FindFLAC.cmake \
cmake/CMakeAutoGen.cmake cmake/CMakeAutoGenScript.cmake \ cmake/CMakeAutoGen.cmake cmake/CMakeAutoGenScript.cmake \
cmake/FindOgg.cmake cmake/FindVorbis.cmake cmake/FindSndio.cmake \ cmake/FindOgg.cmake cmake/FindVorbis.cmake cmake/FindSndio.cmake \
cmake/FindSpeex.cmake cmake/FindSQLite3.cmake cmake/FindVorbisEnc.cmake \ cmake/FindSpeex.cmake cmake/FindSQLite3.cmake \
cmake/SndFileChecks.cmake cmake/TestInline.cmake \ cmake/SndFileChecks.cmake cmake/TestInline.cmake \
cmake/TestLargeFiles.cmake cmake/TestInline.c.in \ cmake/TestLargeFiles.cmake cmake/TestInline.c.in \
cmake/FindOpus.cmake cmake/SndFileConfig.cmake.in cmake/FindOpus.cmake cmake/SndFileConfig.cmake.in

View File

@ -1,9 +1,71 @@
# - Find vorbisenc #[=======================================================================[.rst:
# Find the native vorbisenc includes and libraries FindVorbis
# ----------
# VORBIS_INCLUDE_DIRS - where to find vorbis.h, etc.
# VORBIS_LIBRARIES - List of libraries when using vorbis. Finds the native vorbis, vorbisenc amd vorbisfile includes and libraries.
# VORBIS_FOUND - True if vorbis found.
Imported Targets
^^^^^^^^^^^^^^^^
This module provides the following imported targets, if found:
``Vorbis::vorbis``
The Vorbis library
``Vorbis::vorbisenc``
The VorbisEnc library
``Vorbis::vorbisfile``
The VorbisFile library
Result Variables
^^^^^^^^^^^^^^^^
This will define the following variables:
``Vorbis_Vorbis_INCLUDE_DIRS``
List of include directories when using vorbis.
``Vorbis_Enc_INCLUDE_DIRS``
List of include directories when using vorbisenc.
``Vorbis_File_INCLUDE_DIRS``
List of include directories when using vorbisfile.
``Vorbis_Vorbis_LIBRARIES``
List of libraries when using vorbis.
``Vorbis_Enc_LIBRARIES``
List of libraries when using vorbisenc.
``Vorbis_File_LIBRARIES``
List of libraries when using vorbisfile.
``Vorbis_FOUND``
True if vorbis and requested components found.
``Vorbis_Vorbis_FOUND``
True if vorbis found.
``Vorbis_Enc_FOUND``
True if vorbisenc found.
``Vorbis_Enc_FOUND``
True if vorbisfile found.
Cache variables
^^^^^^^^^^^^^^^
The following cache variables may also be set:
``Vorbis_Vorbis_INCLUDE_DIR``
The directory containing ``vorbis/vorbis.h``.
``Vorbis_Enc_INCLUDE_DIR``
The directory containing ``vorbis/vorbisenc.h``.
``Vorbis_File_INCLUDE_DIR``
The directory containing ``vorbis/vorbisenc.h``.
``Vorbis_Vorbis_LIBRARY``
The path to the vorbis library.
``Vorbis_Enc_LIBRARY``
The path to the vorbisenc library.
``Vorbis_File_LIBRARY``
The path to the vorbisfile library.
Hints
^^^^^
A user may set ``Vorbis_ROOT`` to a vorbis installation root to tell this module where to look.
#]=======================================================================]
if (Vorbis_Vorbis_INCLUDE_DIR) if (Vorbis_Vorbis_INCLUDE_DIR)
# Already in cache, be silent # Already in cache, be silent
@ -21,7 +83,7 @@ pkg_check_modules (PC_Vorbis_Vorbis QUIET vorbis)
pkg_check_modules (PC_Vorbis_Enc QUIET vorbisenc) pkg_check_modules (PC_Vorbis_Enc QUIET vorbisenc)
pkg_check_modules (PC_Vorbis_File QUIET vorbisfile) pkg_check_modules (PC_Vorbis_File QUIET vorbisfile)
set (Vorbis_VERSION ${PC_VORBIS_VERSION}) set (Vorbis_VERSION ${PC_Vorbis_Vorbis_VERSION})
find_path (Vorbis_Vorbis_INCLUDE_DIR vorbis/codec.h find_path (Vorbis_Vorbis_INCLUDE_DIR vorbis/codec.h
HINTS HINTS
@ -82,29 +144,26 @@ find_library (Vorbis_File_LIBRARY
include (FindPackageHandleStandardArgs) include (FindPackageHandleStandardArgs)
find_package_handle_standard_args (Vorbis_Vorbis if (Vorbis_Vorbis_LIBRARY AND Vorbis_Vorbis_INCLUDE_DIR AND Ogg_FOUND)
set (Vorbis_Vorbis_FOUND TRUE)
endif ()
if (Vorbis_Enc_LIBRARY AND Vorbis_Enc_INCLUDE_DIR AND Vorbis_Vorbis_FOUND)
set (Vorbis_Enc_FOUND TRUE)
endif ()
if (Vorbis_Vorbis_FOUND AND Vorbis_File_LIBRARY AND Vorbis_File_INCLUDE_DIR)
set (Vorbis_File_FOUND TRUE)
endif ()
find_package_handle_standard_args (Vorbis
REQUIRED_VARS REQUIRED_VARS
Vorbis_Vorbis_LIBRARY Vorbis_Vorbis_LIBRARY
Vorbis_Vorbis_INCLUDE_DIR Vorbis_Vorbis_INCLUDE_DIR
Ogg_FOUND Ogg_FOUND
NAME_MISMATCHED HANDLE_COMPONENTS
) VERSION_VAR Vorbis_VERSION)
find_package_handle_standard_args (Vorbis_Enc
REQUIRED_VARS
Vorbis_Enc_LIBRARY
Vorbis_Enc_INCLUDE_DIR
Vorbis_Vorbis_FOUND
NAME_MISMATCHED
)
find_package_handle_standard_args (Vorbis_File
REQUIRED_VARS
Vorbis_File_LIBRARY
Vorbis_File_INCLUDE_DIR
Vorbis_Vorbis_FOUND
NAME_MISMATCHED
)
if (Vorbis_Vorbis_FOUND) if (Vorbis_Vorbis_FOUND)
set (Vorbis_Vorbis_INCLUDE_DIRS ${VORBIS_INCLUDE_DIR}) set (Vorbis_Vorbis_INCLUDE_DIRS ${VORBIS_INCLUDE_DIR})
@ -146,14 +205,6 @@ if (Vorbis_Vorbis_FOUND)
endif () endif ()
find_package_handle_standard_args (Vorbis
REQUIRED_VARS
Vorbis_Vorbis_LIBRARY
Vorbis_Vorbis_INCLUDE_DIR
Ogg_FOUND
HANDLE_COMPONENTS
VERSION_VAR Vorbis_VERSION)
mark_as_advanced (Vorbis_Vorbis_INCLUDE_DIR Vorbis_Vorbis_LIBRARY) mark_as_advanced (Vorbis_Vorbis_INCLUDE_DIR Vorbis_Vorbis_LIBRARY)
mark_as_advanced (Vorbis_Enc_INCLUDE_DIR Vorbis_Enc_LIBRARY) mark_as_advanced (Vorbis_Enc_INCLUDE_DIR Vorbis_Enc_LIBRARY)
mark_as_advanced (Vorbis_File_INCLUDE_DIR Vorbis_File_LIBRARY) mark_as_advanced (Vorbis_File_INCLUDE_DIR Vorbis_File_LIBRARY)

View File

@ -1,64 +0,0 @@
# - Find vorbisenc
# Find the native vorbisenc includes and libraries
#
# VORBISENC_INCLUDE_DIRS - where to find vorbisenc.h, etc.
# VORBISENC_LIBRARIES - List of libraries when using vorbisenc.
# VORBISENC_FOUND - True if vorbisenc found.
if (VORBISENC_INCLUDE_DIR)
# Already in cache, be silent
set (VORBISENC_FIND_QUIETLY TRUE)
endif ()
find_package (Vorbis QUIET)
find_package (PkgConfig QUIET)
pkg_check_modules (PC_VORBISENC QUIET vorbisenc)
set (VORBISENC_VERSION ${PC_VORBISENC_VERSION})
find_path (VORBISENC_INCLUDE_DIR vorbis/vorbisenc.h
HINTS
${PC_VORBISENC_INCLUDEDIR}
${PC_VORBISENC_INCLUDE_DIRS}
${VORBISENC_ROOT}
)
find_library (VORBISENC_LIBRARY
NAMES
vorbisenc
vorbisenc_static
libvorbisenc
libvorbisenc_static
HINTS
${PC_VORBISENC_LIBDIR}
${PC_VORBISENC_LIBRARY_DIRS}
${VORBISENC_ROOT}
)
# Handle the QUIETLY and REQUIRED arguments and set VORBISENC_FOUND
# to TRUE if all listed variables are TRUE.
include (FindPackageHandleStandardArgs)
find_package_handle_standard_args (VorbisEnc
REQUIRED_VARS
VORBISENC_LIBRARY
VORBISENC_INCLUDE_DIR
VORBIS_FOUND
VERSION_VAR
VORBISENC_VERSION
)
if (VORBISENC_FOUND)
set (VORBISENC_INCLUDE_DIRS ${VORBISENC_INCLUDE_DIR})
set (VORBISENC_LIBRARIES ${VORBISENC_LIBRARY} ${VORBIS_LIBRARIES})
if (NOT TARGET Vorbis::VorbisEnc)
add_library (Vorbis::VorbisEnc UNKNOWN IMPORTED)
set_target_properties (Vorbis::VorbisEnc PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${VORBISENC_INCLUDE_DIR}"
IMPORTED_LOCATION "${VORBISENC_LIBRARY}"
INTERFACE_LINK_LIBRARIES Vorbis::Vorbis
)
endif ()
endif ()
mark_as_advanced (VORBISENC_INCLUDE_DIR VORBISENC_LIBRARY)

View File

@ -11,7 +11,7 @@ include (CMakeFindDependencyMacro)
if (SndFile_WITH_EXTERNAL_LIBS AND NOT @BUILD_SHARED_LIBS@) if (SndFile_WITH_EXTERNAL_LIBS AND NOT @BUILD_SHARED_LIBS@)
find_dependency (Ogg 1.3) find_dependency (Ogg 1.3)
find_dependency (VorbisEnc) find_dependency (Vorbis)
find_dependency (FLAC) find_dependency (FLAC)
find_dependency (Opus) find_dependency (Opus)
endif () endif ()