Cleanup of the CMake script.

This commit is contained in:
David Reid
2026-01-02 15:50:15 +10:00
parent 46b2cdd0cf
commit e78a86d30b
+81 -67
View File
@@ -169,8 +169,7 @@ set(LINKED_LIBS)
if(MINIAUDIO_NO_RUNTIME_LINKING) if(MINIAUDIO_NO_RUNTIME_LINKING)
if(NOT MINIAUDIO_NO_PIPEWIRE) if(NOT MINIAUDIO_NO_PIPEWIRE)
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PipeWire IMPORTED_TARGET libpipewire-0.3) pkg_check_modules(PipeWire IMPORTED_TARGET libpipewire-0.3)
pkg_check_modules(SPA IMPORTED_TARGET libspa-0.2) pkg_check_modules(SPA IMPORTED_TARGET libspa-0.2)
endif() endif()
@@ -180,13 +179,60 @@ if(MINIAUDIO_NO_RUNTIME_LINKING)
set(MINIAUDIO_NO_PIPEWIRE ON) set(MINIAUDIO_NO_PIPEWIRE ON)
endif() endif()
endif() endif()
if(NOT MINIAUDIO_NO_PULSEAUDIO)
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(PulseAudio IMPORTED_TARGET libpulse)
endif()
if(NOT TARGET PkgConfig::PulseAudio)
message(STATUS "PulseAudio development files not found. Disabling PulseAudio backend.")
set(MINIAUDIO_NO_PULSEAUDIO ON)
endif()
endif()
if(NOT MINIAUDIO_NO_ALSA)
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(ALSA IMPORTED_TARGET alsa)
endif()
if(NOT TARGET PkgConfig::ALSA)
message(STATUS "ALSA development files not found. Disabling ALSA backend.")
set(MINIAUDIO_NO_ALSA ON)
endif()
endif()
if(NOT MINIAUDIO_NO_JACK)
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(JACK IMPORTED_TARGET jack)
endif()
if(NOT TARGET PkgConfig::JACK)
message(STATUS "JACK development files not found. Disabling JACK backend.")
set(MINIAUDIO_NO_JACK ON)
endif()
endif()
if(NOT MINIAUDIO_NO_SNDIO)
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(sndio IMPORTED_TARGET sndio)
endif()
if(NOT TARGET PkgConfig::sndio)
message(STATUS "sndio development files not found. Disabling sndio backend.")
set(MINIAUDIO_NO_SNDIO ON)
endif()
endif()
endif() endif()
# SDL2. We do this outside of the MINIAUDIO_NO_RUNTIME_LINKING check because we use SDL2 in some examples. # SDL2. We do this outside of the MINIAUDIO_NO_RUNTIME_LINKING check because we use SDL2 in some examples.
if(NOT MINIAUDIO_NO_SDL2) if(NOT MINIAUDIO_NO_SDL2)
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
if(PKG_CONFIG_FOUND)
pkg_check_modules(SDL2 IMPORTED_TARGET sdl2) pkg_check_modules(SDL2 IMPORTED_TARGET sdl2)
endif() endif()
@@ -417,7 +463,7 @@ if(NOT MINIAUDIO_NO_LIBVORBIS)
if(NOT TARGET vorbisfile) if(NOT TARGET vorbisfile)
# Try pkg-config first # Try pkg-config first
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND) if(PkgConfig_FOUND)
pkg_check_modules(PC_VORBISFILE vorbisfile) pkg_check_modules(PC_VORBISFILE vorbisfile)
endif() endif()
@@ -446,7 +492,7 @@ if(NOT MINIAUDIO_NO_LIBOPUS)
if(NOT TARGET opusfile) if(NOT TARGET opusfile)
# Try pkg-config first # Try pkg-config first
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND) if(PkgConfig_FOUND)
pkg_check_modules(PC_OPUSFILE opusfile) pkg_check_modules(PC_OPUSFILE opusfile)
endif() endif()
@@ -589,7 +635,7 @@ if(NOT MINIAUDIO_NO_DEVICEIO)
target_compile_options (miniaudio_pipewire PRIVATE ${COMPILE_OPTIONS}) target_compile_options (miniaudio_pipewire PRIVATE ${COMPILE_OPTIONS})
target_compile_definitions(miniaudio_pipewire PRIVATE ${COMPILE_DEFINES}) target_compile_definitions(miniaudio_pipewire PRIVATE ${COMPILE_DEFINES})
if(MINIAUDIO_NO_RUNTIME_LINKING) if(MINIAUDIO_NO_RUNTIME_LINKING AND TARGET PkgConfig::PipeWire AND TARGET PkgConfig::SPA)
target_link_libraries(miniaudio_pipewire PRIVATE PkgConfig::PipeWire PkgConfig::SPA) target_link_libraries(miniaudio_pipewire PRIVATE PkgConfig::PipeWire PkgConfig::SPA)
endif() endif()
endif() endif()
@@ -725,86 +771,54 @@ target_link_libraries (miniaudio_test INTERFACE ${COMMON_LINK_LIBRARIES})
# of the specific compile time options rather than being influenced by externally set options. However, # of the specific compile time options rather than being influenced by externally set options. However,
# sometimes we need to disable some backends in order for automated build tools to work. # sometimes we need to disable some backends in order for automated build tools to work.
if(MINIAUDIO_NO_RUNTIME_LINKING) if(MINIAUDIO_NO_RUNTIME_LINKING)
target_compile_definitions(miniaudio_test INTERFACE MA_NO_RUNTIME_LINKING)
if(NOT TARGET PkgConfig::SDL2) if(NOT TARGET PkgConfig::SDL2)
target_compile_definitions(miniaudio_test INTERFACE MA_NO_SDL2) target_compile_definitions(miniaudio_test INTERFACE MA_NO_SDL2)
endif() endif()
endif() endif()
# Link external libraries if runtime linking is disabled.
if(MINIAUDIO_NO_RUNTIME_LINKING) if(MINIAUDIO_NO_RUNTIME_LINKING)
if (NOT MINIAUDIO_NO_PULSEAUDIO) if (NOT MINIAUDIO_NO_PIPEWIRE)
find_package(PulseAudio) if(TARGET PkgConfig::PipeWire AND TARGET PkgConfig::SPA)
target_link_libraries(miniaudio PRIVATE PkgConfig::PipeWire PkgConfig::SPA)
target_link_libraries(miniaudio_test INTERFACE PkgConfig::PipeWire PkgConfig::SPA)
list(APPEND LINKED_LIBS libpipewire-0.3)
list(APPEND LINKED_LIBS libspa-0.2)
endif()
endif()
if (PulseAudio_FOUND) if (NOT MINIAUDIO_NO_PULSEAUDIO)
target_link_libraries(miniaudio PRIVATE ${PULSEAUDIO_LIBRARY}) if(TARGET PkgConfig::PulseAudio)
target_include_directories(miniaudio SYSTEM PRIVATE ${PULSEAUDIO_INCLUDE_DIR}) target_link_libraries(miniaudio PRIVATE PkgConfig::PulseAudio)
target_link_libraries(miniaudio_test INTERFACE PkgConfig::PulseAudio)
list(APPEND LINKED_LIBS libpulse) list(APPEND LINKED_LIBS libpulse)
endif() endif()
endif() endif()
if (NOT MINIAUDIO_NO_ALSA) if (NOT MINIAUDIO_NO_ALSA)
find_package(PkgConfig QUIET) if(TARGET PkgConfig::ALSA)
target_link_libraries(miniaudio PRIVATE PkgConfig::ALSA)
if(PKG_CONFIG_FOUND) target_link_libraries(miniaudio_test INTERFACE PkgConfig::ALSA)
pkg_check_modules(PC_ALSA alsa)
endif()
find_library(ALSA_LIBRARY
NAMES asound
HINTS ${PC_ALSA_LIBRARY_DIRS}
)
if (ALSA_LIBRARY)
find_path(ALSA_INCLUDE_DIR
NAMES alsa/asoundlib.h
HINTS ${PC_ALSA_INCLUDE_DIRS}
)
target_link_libraries(miniaudio PRIVATE ${ALSA_LIBRARY})
target_include_directories(miniaudio PRIVATE ${ALSA_INCLUDE_DIR})
list(APPEND LINKED_LIBS alsa) list(APPEND LINKED_LIBS alsa)
endif() endif()
endif() endif()
if (NOT MINIAUDIO_NO_SNDIO) if (NOT MINIAUDIO_NO_JACK)
find_package(PkgConfig QUIET) if(TARGET PkgConfig::JACK)
target_link_libraries(miniaudio PRIVATE PkgConfig::JACK)
if(PKG_CONFIG_FOUND) target_link_libraries(miniaudio_test INTERFACE PkgConfig::JACK)
pkg_check_modules(PC_SNDIO sndio) list(APPEND LINKED_LIBS jack)
endif()
find_library(SNDIO_LIBRARY
NAMES sndio
HINTS ${PC_SNDIO_LIBRARY_DIRS}
)
if (SNDIO_LIBRARY)
target_link_libraries(miniaudio PRIVATE ${SNDIO_LIBRARY})
list(APPEND LINKED_LIBS sndio)
endif() endif()
endif() endif()
if (NOT MINIAUDIO_NO_JACK) if (NOT MINIAUDIO_NO_SNDIO)
find_package(PkgConfig QUIET) if(TARGET PkgConfig::sndio)
target_link_libraries(miniaudio PRIVATE PkgConfig::sndio)
if(PKG_CONFIG_FOUND) target_link_libraries(miniaudio_test INTERFACE PkgConfig::sndio)
pkg_check_modules(PC_JACK jack) list(APPEND LINKED_LIBS sndio)
endif()
find_library(JACK_LIBRARY
NAMES jack
HINTS ${PC_JACK_LIBRARY_DIRS}
)
if (JACK_LIBRARY)
find_path(JACK_INCLUDE_DIR
NAMES jack/jack.h
HINTS ${PC_JACK_INCLUDE_DIRS}
)
target_link_libraries(miniaudio PRIVATE ${JACK_LIBRARY})
target_include_directories(miniaudio PRIVATE ${JACK_INCLUDE_DIR})
list(APPEND LINKED_LIBS jack)
endif() endif()
endif() endif()
endif() endif()