From badf36a37897a80c2a0803114acd4415d287284f Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sat, 19 Jul 2025 22:35:09 +0200 Subject: [PATCH] Generate and install pkg-config file Signed-off-by: Marcin Serwin --- CMakeLists.txt | 27 ++++++++++++++++++++++++++- miniaudio.pc.in | 15 +++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 miniaudio.pc.in diff --git a/CMakeLists.txt b/CMakeLists.txt index cf990c47..c0d0660c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.10) project(miniaudio - VERSION 0.11 + VERSION 0.11.22 ) @@ -588,12 +588,15 @@ function(is_backend_enabled NAME) endif() endfunction() +set(LINKED_LIBS) + if(MINIAUDIO_NO_RUNTIME_LINKING) is_backend_enabled(PULSEAUDIO) if (PULSEAUDIO_ENABLED) find_package(PulseAudio REQUIRED) target_link_libraries(miniaudio PRIVATE ${PULSEAUDIO_LIBRARY}) target_include_directories(miniaudio SYSTEM PRIVATE ${PULSEAUDIO_INCLUDE_DIR}) + list(APPEND LINKED_LIBS libpulse) endif() is_backend_enabled(ALSA) @@ -615,6 +618,7 @@ if(MINIAUDIO_NO_RUNTIME_LINKING) target_link_libraries(miniaudio PRIVATE ${ALSA_LIBRARY}) target_include_directories(miniaudio PRIVATE ${ALSA_INCLUDE_DIR}) + list(APPEND LINKED_LIBS alsa) endif() is_backend_enabled(SNDIO) @@ -630,6 +634,7 @@ if(MINIAUDIO_NO_RUNTIME_LINKING) HINTS ${PC_SNDIO_LIBRARY_DIRS} ) target_link_libraries(miniaudio PRIVATE ${SNDIO_LIBRARY}) + list(APPEND LINKED_LIBS sndio) endif() is_backend_enabled(JACK) @@ -652,6 +657,7 @@ if(MINIAUDIO_NO_RUNTIME_LINKING) target_link_libraries(miniaudio PRIVATE ${JACK_LIBRARY}) target_include_directories(miniaudio PRIVATE ${JACK_INCLUDE_DIR}) + list(APPEND LINKED_LIBS jack) endif() endif() @@ -767,6 +773,25 @@ if (MINIAUDIO_BUILD_EXAMPLES) add_miniaudio_example(miniaudio_simple_spatialization simple_spatialization.c) endif() +if(IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}") + set(MINIAUDIO_PC_INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}") +else() + set(MINIAUDIO_PC_INCLUDEDIR "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") +endif() +if(IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}") + set(MINIAUDIO_PC_LIBDIR "${CMAKE_INSTALL_LIBDIR}") +else() + set(MINIAUDIO_PC_LIBDIR "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}") +endif() + +string(JOIN ", " MINIAUDIO_PC_REQUIRES_PRIVATE ${LINKED_LIBS}) +list(TRANSFORM COMMON_LINK_LIBRARIES PREPEND "-l") +string(JOIN " " MINIAUDIO_PC_LIBS_PRIVATE ${COMMON_LINK_LIBRARIES}) + +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/miniaudio.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/miniaudio.pc" @ONLY) + +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/miniaudio.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") + message(STATUS "Library list: ${LIBS_TO_INSTALL}") install(TARGETS ${LIBS_TO_INSTALL} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} diff --git a/miniaudio.pc.in b/miniaudio.pc.in new file mode 100644 index 00000000..cae173bd --- /dev/null +++ b/miniaudio.pc.in @@ -0,0 +1,15 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +includedir=@MINIAUDIO_PC_INCLUDEDIR@ +libdir=@MINIAUDIO_PC_LIBDIR@ + +Name: miniaudio +Description: An audio playback and capture library. +URL: https://miniaud.io/ +License: Unlicense OR MIT-0 +Version: @PROJECT_VERSION@ + +Requires.private: @MINIAUDIO_PC_REQUIRES_PRIVATE@ +Cflags: -I${includedir} @MINIAUDIO_PC_CFLAGS@ +Libs: -L${libdir} -lminiaudio +Libs.private: @MINIAUDIO_PC_LIBS_PRIVATE@