From 9e36ba132d01c3f6b3d4372fda024fdd48106ac7 Mon Sep 17 00:00:00 2001
From: Pierre Wendling <[EMAIL REDACTED]>
Date: Tue, 7 Mar 2023 18:26:41 -0500
Subject: [PATCH] CMake: Use pkg-config in find modules.
This allows capturing more information such as transitive dependencies.
These hints are used as default values for the existing cache
variables, so users can still edit/overwrite them if they wish so.
---
CMakeLists.txt | 9 +++++++++
cmake/FindFLAC.cmake | 18 +++++++++++++++---
cmake/FindFluidSynth.cmake | 18 +++++++++++++++---
cmake/FindOpusFile.cmake | 24 ++++++++++++++++++------
cmake/FindSndFile.cmake | 18 +++++++++++++++---
cmake/FindVorbis.cmake | 24 ++++++++++++++++++------
cmake/Findgme.cmake | 24 ++++++++++++++++++------
cmake/Findlibxmp-lite.cmake | 18 +++++++++++++++---
cmake/Findlibxmp.cmake | 18 +++++++++++++++---
cmake/Findmodplug.cmake | 16 +++++++++++++---
cmake/Findmpg123.cmake | 18 +++++++++++++++---
cmake/Findtremor.cmake | 18 +++++++++++++++---
cmake/SDL3_mixerConfig.cmake.in | 1 +
13 files changed, 182 insertions(+), 42 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 681aa192..0a325abf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -38,6 +38,13 @@ if(POLICY CMP0112)
cmake_policy(SET CMP0112 NEW)
endif()
+if(POLICY CMP0099)
+ # Make `INTERFACE_LINK_DIRECTORIES` a transitive usage requirement.
+ # This is needed for static dependencies which have transitive dependencies
+ # outside of compiler default search paths.
+ cmake_policy(SET CMP0099 NEW)
+endif()
+
# Assume MSVC projects don't have a package manager and need vendored dependencies (by default).
# Most other platforms have some kind of package manager.
# FIXME: consider a package manager such as conan/vcpkg instead of vendoring
@@ -59,6 +66,8 @@ include(CMakeDependentOption)
include(CMakePackageConfigHelpers)
include(GNUInstallDirs)
+include(PkgConfigHelper)
+
option(CMAKE_POSITION_INDEPENDENT_CODE "Build static libraries with -fPIC" ON)
option(BUILD_SHARED_LIBS "Build the library as a shared library" ON)
diff --git a/cmake/FindFLAC.cmake b/cmake/FindFLAC.cmake
index 656ae779..d471fecf 100644
--- a/cmake/FindFLAC.cmake
+++ b/cmake/FindFLAC.cmake
@@ -1,18 +1,29 @@
include(FindPackageHandleStandardArgs)
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_FLAC QUIET flac)
+
find_library(FLAC_LIBRARY
NAMES FLAC
+ HINTS ${PC_FLAC_LIBDIR}
)
find_path(FLAC_INCLUDE_PATH
NAMES FLAC/all.h
+ HINTS ${PC_FLAC_INCLUDEDIR}
)
-set(FLAC_COMPILE_OPTIONS "" CACHE STRING "Extra compile options of FLAC")
+if(PC_FLAC_FOUND)
+ get_flags_from_pkg_config("${FLAC_LIBRARY}" "PC_FLAC" "_flac")
+endif()
+
+set(FLAC_COMPILE_OPTIONS "${_flac_compile_options}" CACHE STRING "Extra compile options of FLAC")
+
+set(FLAC_LINK_LIBRARIES "${_flac_link_libraries}" CACHE STRING "Extra link libraries of FLAC")
-set(FLAC_LINK_LIBRARIES "" CACHE STRING "Extra link libraries of FLAC")
+set(FLAC_LINK_OPTIONS "${_flac_link_options}" CACHE STRING "Extra link flags of FLAC")
-set(FLAC_LINK_OPTIONS "" CACHE STRING "Extra link flags of FLAC")
+set(FLAC_LINK_DIRECTORIES "${_flac_link_directories}" CACHE PATH "Extra link directories of FLAC")
find_package_handle_standard_args(FLAC
REQUIRED_VARS FLAC_LIBRARY FLAC_INCLUDE_PATH
@@ -27,6 +38,7 @@ if(FLAC_FOUND)
INTERFACE_COMPILE_OPTIONS "${FLAC_COMPILE_OPTIONS}"
INTERFACE_LINK_LIBRARIES "${FLAC_LINK_LIBRARIES}"
INTERFACE_LINK_OPTIONS "${FLAC_LINK_OPTIONS}"
+ INTERFACE_LINK_DIRECTORIES "${FLAC_LINK_DIRECTORIES}"
)
endif()
endif()
diff --git a/cmake/FindFluidSynth.cmake b/cmake/FindFluidSynth.cmake
index 643d71e1..012fb1d2 100644
--- a/cmake/FindFluidSynth.cmake
+++ b/cmake/FindFluidSynth.cmake
@@ -1,18 +1,29 @@
include(FindPackageHandleStandardArgs)
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_FLUIDSYNTH QUIET fluidsynth)
+
find_library(FluidSynth_LIBRARY
NAMES fluidsynth
+ HINTS ${PC_FLUIDSYNTH_LIBDIR}
)
find_path(FluidSynth_INCLUDE_PATH
NAMES fluidsynth.h
+ HINTS ${PC_FLUIDSYNTH_INCLUDEDIR}
)
-set(FluidSynth_COMPILE_OPTIONS "" CACHE STRING "Extra compile options of FluidSynth")
+if(PC_FLUIDSYNTH_FOUND)
+ get_flags_from_pkg_config("${FluidSynth_LIBRARY}" "PC_FLUIDSYNTH" "_fluidsynth")
+endif()
+
+set(FluidSynth_COMPILE_OPTIONS "${_fluidsynth_compile_options}" CACHE STRING "Extra compile options of FluidSynth")
+
+set(FluidSynth_LINK_LIBRARIES "${_fluidsynth_link_libraries}" CACHE STRING "Extra link libraries of FluidSynth")
-set(FluidSynth_LINK_LIBRARIES "" CACHE STRING "Extra link libraries of FluidSynth")
+set(FluidSynth_LINK_OPTIONS "${_fluidsynth_link_options}" CACHE STRING "Extra link flags of FluidSynth")
-set(FluidSynth_LINK_OPTIONS "" CACHE STRING "Extra link flags of FluidSynth")
+set(FluidSynth_LINK_DIRECTORIES "${_fluidsynth_link_directories}" CACHE PATH "Extra link directories of FluidSynth")
find_package_handle_standard_args(FluidSynth
REQUIRED_VARS FluidSynth_LIBRARY FluidSynth_INCLUDE_PATH
@@ -27,6 +38,7 @@ if(FluidSynth_FOUND)
INTERFACE_COMPILE_OPTIONS "${FluidSynth_COMPILE_OPTIONS}"
INTERFACE_LINK_LIBRARIES "${FluidSynth_LINK_LIBRARIES}"
INTERFACE_LINK_OPTIONS "${FluidSynth_LINK_OPTIONS}"
+ INTERFACE_LINK_DIRECTORIES "${FluidSynth_LINK_DIRECTORIES}"
)
endif()
endif()
diff --git a/cmake/FindOpusFile.cmake b/cmake/FindOpusFile.cmake
index 9b43392c..93be5993 100644
--- a/cmake/FindOpusFile.cmake
+++ b/cmake/FindOpusFile.cmake
@@ -1,20 +1,31 @@
include(FindPackageHandleStandardArgs)
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_OPUSFILE QUIET opusfile)
+
find_library(OpusFile_LIBRARY
NAMES opusfile
+ HINTS ${PC_OPUSFILE_LIBDIR}
)
-set(OpusFile_COMPILE_OPTIONS "" CACHE STRING "Extra compile options of opusfile")
-
-set(OpusFile_LINK_LIBRARIES "" CACHE STRING "Extra link libraries of opusfile")
-
-set(OpusFile_LINK_OPTIONS "" CACHE STRING "Extra link flags of opusfile")
-
find_path(OpusFile_INCLUDE_PATH
NAMES opusfile.h
PATH_SUFFIXES opus
+ HINTS ${PC_OPUSFILE_INCLUDEDIR}
)
+if(PC_OPUSFILE_FOUND)
+ get_flags_from_pkg_config("${OpusFile_LIBRARY}" "PC_OPUSFILE" "_opusfile")
+endif()
+
+set(OpusFile_COMPILE_OPTIONS "${_opusfile_compile_options}" CACHE STRING "Extra compile options of opusfile")
+
+set(OpusFile_LINK_LIBRARIES "${_opusfile_link_libraries}" CACHE STRING "Extra link libraries of opusfile")
+
+set(OpusFile_LINK_OPTIONS "${_opusfile_link_options}" CACHE STRING "Extra link flags of opusfile")
+
+set(OpusFile_LINK_DIRECTORIES "${_opusfile_link_directories}" CACHE PATH "Extra link directories of opusfile")
+
find_package_handle_standard_args(OpusFile
REQUIRED_VARS OpusFile_LIBRARY OpusFile_INCLUDE_PATH
)
@@ -32,6 +43,7 @@ if (OpusFile_FOUND)
INTERFACE_COMPILE_OPTIONS "${OpusFile_COMPILE_OPTIONS}"
INTERFACE_LINK_LIBRARIES "${OpusFile_LINK_LIBRARIES}"
INTERFACE_LINK_OPTIONS "${OpusFile_LINK_OPTIONS}"
+ INTERFACE_LINK_DIRECTORIES "${OpusFile_LINK_DIRECTORIES}"
)
endif()
endif()
diff --git a/cmake/FindSndFile.cmake b/cmake/FindSndFile.cmake
index 1cbbbdf7..4c319165 100644
--- a/cmake/FindSndFile.cmake
+++ b/cmake/FindSndFile.cmake
@@ -1,18 +1,29 @@
include(FindPackageHandleStandardArgs)
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_SNDFILE QUIET sndfile)
+
find_library(SndFile_LIBRARY
NAMES sndfile sndfile-1
+ HINTS ${PC_SNDFILE_LIBDIR}
)
find_path(SndFile_INCLUDE_PATH
NAMES sndfile.h
+ HINTS ${PC_SNDFILE_INCLUDEDIR}
)
-set(SndFile_COMPILE_OPTIONS "" CACHE STRING "Extra compile options of libsndfile")
+if(PC_SNDFILE_FOUND)
+ get_flags_from_pkg_config("${SndFile_LIBRARY}" "PC_SNDFILE" "_sndfile")
+endif()
+
+set(SndFile_COMPILE_OPTIONS "${_sndfile_compile_options}" CACHE STRING "Extra compile options of libsndfile")
+
+set(SndFile_LINK_LIBRARIES "${_sndfile_link_libraries}" CACHE STRING "Extra link libraries of libsndfile")
-set(SndFile_LINK_LIBRARIES "" CACHE STRING "Extra link libraries of libsndfile")
+set(SndFile_LINK_OPTIONS "${_sndfile_link_options}" CACHE STRING "Extra link flags of libsndfile")
-set(SndFile_LINK_OPTIONS "" CACHE STRING "Extra link flags of libsndfile")
+set(SndFile_LINK_DIRECTORIES "${_sndfile_link_directories}" CACHE PATH "Extra link directories of libsndfile")
find_package_handle_standard_args(SndFile
REQUIRED_VARS SndFile_LIBRARY SndFile_INCLUDE_PATH
@@ -27,6 +38,7 @@ if(SndFile_FOUND)
INTERFACE_COMPILE_OPTIONS "${SndFile_COMPILE_OPTIONS}"
INTERFACE_LINK_LIBRARIES "${SndFile_LINK_LIBRARIES}"
INTERFACE_LINK_OPTIONS "${SndFile_LINK_OPTIONS}"
+ INTERFACE_LINK_DIRECTORIES "${SndFile_LINK_DIRECTORIES}"
)
endif()
endif()
diff --git a/cmake/FindVorbis.cmake b/cmake/FindVorbis.cmake
index 7ad2f526..7ebcc5c3 100644
--- a/cmake/FindVorbis.cmake
+++ b/cmake/FindVorbis.cmake
@@ -1,19 +1,30 @@
include(FindPackageHandleStandardArgs)
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_VORBIS QUIET vorbisfile)
+
find_library(Vorbis_vorbisfile_LIBRARY
NAMES vorbisfile
+ HINTS ${PC_VORBIS_LIBDIR}
)
-set(Vorbis_vorbisfile_COMPILE_OPTIONS "" CACHE STRING "Extra compile options of vorbisfile")
-
-set(Vorbis_vorbisfile_LINK_LIBRARIES "" CACHE STRING "Extra link libraries of vorbisfile")
-
-set(Vorbis_vorbisfile_LINK_OPTIONS "" CACHE STRING "Extra link flags of vorbisfile")
-
find_path(Vorbis_vorbisfile_INCLUDE_PATH
NAMES vorbis/vorbisfile.h
+ HINTS ${PC_VORBIS_INCLUDEDIR}
)
+if(PC_VORBIS_FOUND)
+ get_flags_from_pkg_config("${Vorbis_vorbisfile_LIBRARY}" "PC_VORBIS" "_vorbisfile")
+endif()
+
+set(Vorbis_vorbisfile_COMPILE_OPTIONS "${_vorbisfile_compile_options}" CACHE STRING "Extra compile options of vorbisfile")
+
+set(Vorbis_vorbisfile_LINK_LIBRARIES "${_vorbisfile_link_libraries}" CACHE STRING "Extra link libraries of vorbisfile")
+
+set(Vorbis_vorbisfile_LINK_OPTIONS "${_vorbisfile_link_options}" CACHE STRING "Extra link flags of vorbisfile")
+
+set(Vorbis_vorbisfile_LINK_DIRECTORIES "${_vorbisfile_link_directories}" CACHE PATH "Extra link directories of vorbisfile")
+
find_package_handle_standard_args(Vorbis
REQUIRED_VARS Vorbis_vorbisfile_LIBRARY Vorbis_vorbisfile_INCLUDE_PATH
)
@@ -27,6 +38,7 @@ if (Vorbis_FOUND)
INTERFACE_COMPILE_OPTIONS "${Vorbis_vorbisfile_COMPILE_OPTIONS}"
INTERFACE_LINK_LIBRARIES "${Vorbis_vorbisfile_LINK_LIBRARIES}"
INTERFACE_LINK_OPTIONS "${Vorbis_vorbisfile_LINK_OPTIONS}"
+ INTERFACE_LINK_DIRECTORIES "${Vorbis_vorbisfile_LINK_DIRECTORIES}"
)
endif()
endif()
diff --git a/cmake/Findgme.cmake b/cmake/Findgme.cmake
index 04b338ac..e47c7ed0 100644
--- a/cmake/Findgme.cmake
+++ b/cmake/Findgme.cmake
@@ -1,19 +1,30 @@
include(FindPackageHandleStandardArgs)
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_GME QUIET libgme)
+
find_library(gme_LIBRARY
NAMES gme
+ HINTS ${PC_GME_LIBDIR}
)
-set(gme_COMPILE_OPTIONS "" CACHE STRING "Extra compile options of gme")
-
-set(gme_LINK_LIBRARIES "" CACHE STRING "Extra link libraries of gme")
-
-set(gme_LINK_OPTIONS "" CACHE STRING "Extra link flags of gme")
-
find_path(gme_INCLUDE_PATH
NAMES gme/gme.h
+ HINTS ${PC_GME_INCLUDEDIR}
)
+if(PC_GME_FOUND)
+ get_flags_from_pkg_config("${gme_LIBRARY}" "PC_GME" "_gme")
+endif()
+
+set(gme_COMPILE_OPTIONS "${_gme_compile_options}" CACHE STRING "Extra compile options of gme")
+
+set(gme_LINK_LIBRARIES "${_gme_link_libraries}" CACHE STRING "Extra link libraries of gme")
+
+set(gme_LINK_OPTIONS "${_gme_link_options}" CACHE STRING "Extra link flags of gme")
+
+set(gme_LINK_DIRECTORIES "${_gme_link_directories}" CACHE PATH "Extra link directories of gme")
+
find_package_handle_standard_args(gme
REQUIRED_VARS gme_LIBRARY gme_INCLUDE_PATH
)
@@ -31,6 +42,7 @@ if(gme_FOUND)
INTERFACE_COMPILE_OPTIONS "${gme_COMPILE_OPTIONS}"
INTERFACE_LINK_LIBRARIES "${gme_LINK_LIBRARIES}"
INTERFACE_LINK_OPTIONS "${gme_LINK_OPTIONS}"
+ INTERFACE_LINK_DIRECTORIES "${gme_LINK_DIRECTORIES}"
)
endif()
endif()
diff --git a/cmake/Findlibxmp-lite.cmake b/cmake/Findlibxmp-lite.cmake
index 28b5645c..b9144301 100644
--- a/cmake/Findlibxmp-lite.cmake
+++ b/cmake/Findlibxmp-lite.cmake
@@ -1,19 +1,30 @@
include(FindPackageHandleStandardArgs)
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_XMPLITE QUIET libxmp-lite)
+
find_library(libxmp_lite_LIBRARY
NAMES xmp-lite
+ HINTS ${PC_XMPLITE_LIBDIR}
)
find_path(libxmp_lite_INCLUDE_PATH
NAMES xmp.h
PATH_SUFFIXES libxmp-lite
+ HINTS ${PC_XMPLITE_INCLUDEDIR}
)
-set(libxmp_lite_COMPILE_OPTIONS "" CACHE STRING "Extra compile options of libxmp_lite")
+if(PC_XMPLITE_FOUND)
+ get_flags_from_pkg_config("${libxmp_lite_LIBRARY}" "PC_XMPLITE" "_libxmp_lite")
+endif()
+
+set(libxmp_lite_COMPILE_OPTIONS "${_libxmp_lite_compile_options}" CACHE STRING "Extra compile options of libxmp_lite")
+
+set(libxmp_lite_LINK_LIBRARIES "${_libxmp_lite_link_libraries}" CACHE STRING "Extra link libraries of libxmp_lite")
-set(libxmp_lite_LINK_LIBRARIES "" CACHE STRING "Extra link libraries of libxmp_lite")
+set(libxmp_lite_LINK_OPTIONS "${_libxmp_lite_link_options}" CACHE STRING "Extra link flags of libxmp_lite")
-set(libxmp_lite_LINK_OPTIONS "" CACHE STRING "Extra link flags of libxmp_lite")
+set(libxmp_lite_LINK_DIRECTORIES "${_libxmp_lite_link_directories}" CACHE PATH "Extra link directories of libxmp_lite")
find_package_handle_standard_args(libxmp-lite
REQUIRED_VARS libxmp_lite_LIBRARY libxmp_lite_INCLUDE_PATH
@@ -28,6 +39,7 @@ if(libxmp-lite_FOUND)
INTERFACE_COMPILE_OPTIONS "${libxmp_lite_COMPILE_OPTIONS}"
INTERFACE_LINK_LIBRARIES "${libxmp_lite_LINK_LIBRARIES}"
INTERFACE_LINK_OPTIONS "${libxmp_lite_LINK_OPTIONS}"
+ INTERFACE_LINK_DIRECTORIES "${libxmp_lite_LINK_DIRECTORIES}"
)
endif()
endif()
diff --git a/cmake/Findlibxmp.cmake b/cmake/Findlibxmp.cmake
index 56e86622..a4bb175e 100644
--- a/cmake/Findlibxmp.cmake
+++ b/cmake/Findlibxmp.cmake
@@ -1,18 +1,29 @@
include(FindPackageHandleStandardArgs)
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_XMP QUIET libxmp)
+
find_library(libxmp_LIBRARY
NAMES xmp
+ HINTS ${PC_XMP_LIBDIR}
)
find_path(libxmp_INCLUDE_PATH
NAMES xmp.h
+ HINTS ${PC_XMP_INCLUDEDIR}
)
-set(libxmp_COMPILE_OPTIONS "" CACHE STRING "Extra compile options of libxmp")
+if(PC_XMP_FOUND)
+ get_flags_from_pkg_config("${libxmp_LIBRARY}" "PC_XMP" "_libxmp")
+endif()
+
+set(libxmp_COMPILE_OPTIONS "${_libxmp_compile_options}" CACHE STRING "Extra compile options of libxmp")
+
+set(libxmp_LINK_LIBRARIES "${_libxmp_link_libraries}" CACHE STRING "Extra link libraries of libxmp")
-set(libxmp_LINK_LIBRARIES "" CACHE STRING "Extra link libraries of libxmp")
+set(libxmp_LINK_OPTIONS "${_libxmp_link_options}" CACHE STRING "Extra link flags of libxmp")
-set(libxmp_LINK_OPTIONS "" CACHE STRING "Extra link flags of libxmp")
+set(libxmp_LINK_DIRECTORIES "${_libxmp_link_directories}" CACHE PATH "Extra link flags of libxmp")
find_package_handle_standard_args(libxmp
REQUIRED_VARS libxmp_LIBRARY libxmp_INCLUDE_PATH
@@ -27,6 +38,7 @@ if(libxmp_FOUND)
INTERFACE_COMPILE_OPTIONS "${libxmp_COMPILE_OPTIONS}"
INTERFACE_LINK_LIBRARIES "${libxmp_LINK_LIBRARIES}"
INTERFACE_LINK_OPTIONS "${libxmp_LINK_OPTIONS}"
+ INTERFACE_LINK_DIRECTORIES "${libxmp_LINK_DIRECTORIES}"
)
endif()
endif()
diff --git a/cmake/Findmodplug.cmake b/cmake/Findmodplug.cmake
index d453b371..af1e82ea 100644
--- a/cmake/Findmodplug.cmake
+++ b/cmake/Findmodplug.cmake
@@ -1,5 +1,8 @@
include(FindPackageHandleStandardArgs)
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_MODPLUG QUIET libmodplug)
+
find_library(modplug_LIBRARY
NAMES modplug
)
@@ -8,11 +11,17 @@ find_path(modplug_INCLUDE_PATH
NAMES libmodplug/modplug.h
)
-set(modplug_COMPILE_OPTIONS "" CACHE STRING "Extra compile options of modplug")
+if(PC_MODPLUG_FOUND)
+ get_flags_from_pkg_config("${modplug_LIBRARY}" "PC_MODPLUG" "_modplug")
+endif()
+
+set(modplug_COMPILE_OPTIONS "${_modplug_compile_options}" CACHE STRING "Extra compile options of modplug")
+
+set(modplug_LINK_LIBRARIES "${_modplug_link_libraries}" CACHE STRING "Extra link libraries of modplug")
-set(modplug_LINK_LIBRARIES "" CACHE STRING "Extra link libraries of modplug")
+set(modplug_LINK_OPTIONS "${_modplug_link_options}" CACHE STRING "Extra link flags of modplug")
-set(modplug_LINK_OPTIONS "" CACHE STRING "Extra link flags of modplug")
+set(modplug_LINK_DIRECTORIES "${_modplug_link_directories}" CACHE PATH "Extra link directories of modplug")
find_package_handle_standard_args(modplug
REQUIRED_VARS modplug_LIBRARY modplug_INCLUDE_PATH
@@ -28,6 +37,7 @@ if (modplug_FOUND)
INTERFACE_COMPILE_OPTIONS "${modplug_COMPILE_OPTIONS}"
INTERFACE_LINK_LIBRARIES "${modplug_LINK_LIBRARIES}"
INTERFACE_LINK_OPTIONS "${modplug_LINK_OPTIONS}"
+ INTERFACE_LINK_DIRECTORIES "${modplug_LINK_DIRECTORIES}"
)
endif()
endif()
diff --git a/cmake/Findmpg123.cmake b/cmake/Findmpg123.cmake
index d7a441d1..ae4e54df 100644
--- a/cmake/Findmpg123.cmake
+++ b/cmake/Findmpg123.cmake
@@ -1,18 +1,29 @@
include(FindPackageHandleStandardArgs)
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_MPG123 QUIET libmpg123)
+
find_library(mpg123_LIBRARY
NAMES mpg123
+ HINTS ${PC_MPG123_LIBDIR}
)
find_path(mpg123_INCLUDE_PATH
NAMES mpg123.h
+ HINTS ${PC_MPG123_INCLUDEDIR}
)
-set(mpg123_COMPILE_OPTIONS "" CACHE STRING "Extra compile options of mpg123")
+if(PC_MPG123_FOUND)
+ get_flags_from_pkg_config("${mpg123_LIBRARY}" "PC_MPG123" "_mpg123")
+endif()
+
+set(mpg123_COMPILE_OPTIONS "${_mpg123_compile_options}" CACHE STRING "Extra compile options of mpg123")
+
+set(mpg123_LINK_LIBRARIES "${_mpg123_link_libraries}" CACHE STRING "Extra link libraries of mpg123")
-set(mpg123_LINK_LIBRARIES "" CACHE STRING "Extra link libraries of mpg123")
+set(mpg123_LINK_OPTIONS "${_mpg123_link_options}" CACHE STRING "Extra link flags of mpg123")
-set(mpg123_LINK_OPTIONS "" CACHE STRING "Extra link flags of mpg123")
+set(mpg123_LINK_DIRECTORIES "${_mpg123_link_directories}" CACHE PATH "Extra link directories of mpg123")
find_package_handle_standard_args(mpg123
REQUIRED_VARS mpg123_LIBRARY mpg123_INCLUDE_PATH
@@ -27,6 +38,7 @@ if(mpg123_FOUND)
INTERFACE_COMPILE_OPTIONS "${mpg123_COMPILE_OPTIONS}"
INTERFACE_LINK_LIBRARIES "${mpg123_LINK_LIBRARIES}"
INTERFACE_LINK_OPTIONS "${mpg123_LINK_OPTIONS}"
+ INTERFACE_LINK_DIRECTORIES "${mpg123_LINK_DIRECTORIES}"
)
endif()
endif()
diff --git a/cmake/Findtremor.cmake b/cmake/Findtremor.cmake
index 76e9ffef..a3bc256a 100644
--- a/cmake/Findtremor.cmake
+++ b/cmake/Findtremor.cmake
@@ -1,18 +1,29 @@
include(FindPackageHandleStandardArgs)
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_TREMOR QUIET vorbisidec)
+
find_library(tremor_LIBRARY
NAMES vorbisidec libvorbisidec
+ HINTS ${PC_TREMOR_LIBDIR}
)
find_path(tremor_INCLUDE_PATH
NAMES tremor/ivorbisfile.h
+ HINTS ${PC_TREMOR_INCLUDEDIR}
)
-set(tremor_COMPILE_OPTIONS "" CACHE STRING "Extra compile options of vorbis")
+if(PC_TREMOR_FOUND)
+ get_flags_from_pkg_config("${tremor_LIBRARY}" "PC_TREMOR" "_tremor")
+endif()
+
+set(tremor_COMPILE_OPTIONS "${_tremor_compile_options}" CACHE STRING "Extra compile options of vorbis")
+
+set(tremor_LINK_LIBRARIES "${_tremor_link_libraries}" CACHE STRING "Extra link libraries of vorbis")
-set(tremor_LINK_LIBRARIES "" CACHE STRING "Extra link libraries of vorbis")
+set(tremor_LINK_OPTIONS "${_tremor_link_options}" CACHE STRING "Extra link flags of vorbis")
-set(tremor_LINK_OPTIONS "" CACHE STRING "Extra link flags of vorbis")
+set(tremor_LINK_DIRECTORIES "${_tremor_link_directories}" CACHE PATH "Extra link directories of vorbis")
find_package_handle_standard_args(tremor
REQUIRED_VARS tremor_LIBRARY tremor_INCLUDE_PATH
@@ -27,6 +38,7 @@ if (tremor_FOUND)
INTERFACE_COMPILE_OPTIONS "${tremor_COMPILE_OPTIONS}"
INTERFACE_LINK_LIBRARIES "${tremor_LINK_LIBRARIES}"
INTERFACE_LINK_OPTIONS "${tremor_LINK_OPTIONS}"
+ INTERFACE_LINK_DIRECTORIES "${tremor_LINK_DIRECTORIES}"
)
endif()
endif()
diff --git a/cmake/SDL3_mixerConfig.cmake.in b/cmake/SDL3_mixerConfig.cmake.in
index 71e6d752..436dccb6 100644
--- a/cmake/SDL3_mixerConfig.cmake.in
+++ b/cmake/SDL3_mixerConfig.cmake.in
@@ -60,6 +60,7 @@ endif()
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/SDL3_mixer-static-targets.cmake")
include(CMakeFindDependencyMacro)
+ include(PkgConfigHelper)
if(SDL3MIXER_SNDFILE AND NOT SDL3MIXER_VENDORED AND NOT TARGET SndFile::sndfile)
find_dependency(SndFile)