From be585100b5282b244ff85f2722ffd7517311501b Mon Sep 17 00:00:00 2001 From: Andrew Savchenko Date: Sat, 22 Sep 2018 12:26:56 +0300 Subject: [PATCH 1/6] Add optional SDK installation support Install PA headers on demand to build apps without pulseaudio installed. --- CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 072f3b1..706fdfc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,6 +28,8 @@ else() include_directories(${PA_INCLUDE_DIRECTORIES}) endif() +set(INSTALL_SDK 0 CACHE BOOLEAN "Install SDK files to build applications with apulse (Pulse Audio headers and pkg-config files) instead of system ones") + link_directories(${REQ_LIBRARY_DIRS}) add_library(trace-helper STATIC @@ -81,3 +83,7 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/apulse" DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) install(TARGETS pulse-simple pulse pulse-mainloop-glib DESTINATION "${APULSEPATH}") install(FILES "${CMAKE_SOURCE_DIR}/man/apulse.1" DESTINATION share/man/man1) + +if (${INSTALL_SDK}) + install(DIRECTORY "${CMAKE_SOURCE_DIR}/3rdparty/pulseaudio-headers/pulse" DESTINATION include) +endif() From 06496d422a19d423c6310aed82de9432f73f0ac2 Mon Sep 17 00:00:00 2001 From: Andrew Savchenko Date: Sat, 22 Sep 2018 13:37:54 +0300 Subject: [PATCH 2/6] Add and install pkg-config files Add pkg-config files generation suitable for apulse. Use LIBDIR for APULSEPATH generation. --- CMakeLists.txt | 13 ++++++++++++- pkgconfig/libpulse-mainloop-glib.pc.in | 9 +++++++++ pkgconfig/libpulse-simple.pc.in | 9 +++++++++ pkgconfig/libpulse.pc.in | 9 +++++++++ 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 pkgconfig/libpulse-mainloop-glib.pc.in create mode 100644 pkgconfig/libpulse-simple.pc.in create mode 100644 pkgconfig/libpulse.pc.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 706fdfc..631e70a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,6 @@ project(apulse) cmake_minimum_required (VERSION 2.8) +include(GNUInstallDirs) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 -Wall -fPIC -fvisibility=hidden") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=implicit-function-declaration") @@ -74,10 +75,19 @@ target_link_libraries(pulse-simple ${SYMBOLMAP} trace-helper ${REQ_LIBRARIES}) add_subdirectory(tests) -set(APULSEPATH "${CMAKE_INSTALL_PREFIX}/lib/apulse" CACHE PATH "library installation directory") +set(APULSEPATH "${CMAKE_INSTALL_LIBDIR}/apulse" CACHE PATH "library installation directory") + set(APULSE_SEARCH_PATHS "${APULSEPATH}" CACHE PATH "directory list for LD_LIBRARY_PATH") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/apulse.template" "${CMAKE_CURRENT_BINARY_DIR}/apulse" @ONLY) +if (${INSTALL_SDK}) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/libpulse.pc.in" + "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/libpulse.pc" @ONLY) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/libpulse-simple.pc.in" + "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/libpulse-simple.pc" @ONLY) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/libpulse-mainloop-glib.pc.in" + "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/libpulse-mainloop-glib.pc" @ONLY) +endif() install(FILES "${CMAKE_CURRENT_BINARY_DIR}/apulse" DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) @@ -86,4 +96,5 @@ install(FILES "${CMAKE_SOURCE_DIR}/man/apulse.1" DESTINATION share/man/man1) if (${INSTALL_SDK}) install(DIRECTORY "${CMAKE_SOURCE_DIR}/3rdparty/pulseaudio-headers/pulse" DESTINATION include) + install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig" DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() diff --git a/pkgconfig/libpulse-mainloop-glib.pc.in b/pkgconfig/libpulse-mainloop-glib.pc.in new file mode 100644 index 0000000..67f16e4 --- /dev/null +++ b/pkgconfig/libpulse-mainloop-glib.pc.in @@ -0,0 +1,9 @@ +libdir=@CMAKE_INSTALL_FULL_LIBDIR@ +includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + +Name: libpulse-mainloop-glib +Description: PulseAudio GLib 2.0 Main Loop Wrapper (apulse) +Version: 5.0 +Libs: -L${libdir}/apulse -lpulse-mainloop-glib -pthread +Cflags: -I${includedir} +Requires: glib-2.0 diff --git a/pkgconfig/libpulse-simple.pc.in b/pkgconfig/libpulse-simple.pc.in new file mode 100644 index 0000000..50529ba --- /dev/null +++ b/pkgconfig/libpulse-simple.pc.in @@ -0,0 +1,9 @@ +libdir=@CMAKE_INSTALL_FULL__LIBDIR@ +includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + +Name: libpulse-simple +Description: PulseAudio Simplified Synchronous Client Interface (apulse) +Version: 5.0 +Libs: -L${libdir}/apulse -lpulse-simple -pthread +Cflags: -I${includedir} +Requires: glib-2.0 diff --git a/pkgconfig/libpulse.pc.in b/pkgconfig/libpulse.pc.in new file mode 100644 index 0000000..778e280 --- /dev/null +++ b/pkgconfig/libpulse.pc.in @@ -0,0 +1,9 @@ +libdir=@CMAKE_INSTALL_FULL_LIBDIR@ +includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + +Name: libpulse +Description: PulseAudio Client Interface (apulse) +Version: 5.0 +Libs: -L${libdir}/apulse -lpulse -pthread +Cflags: -I${includedir} +Requires: glib-2.0 alsa From 2a3ac15558776963875b6d18dc0e969e2923c0af Mon Sep 17 00:00:00 2001 From: Andrew Savchenko Date: Sat, 22 Sep 2018 21:35:14 +0300 Subject: [PATCH 3/6] Install to libdir in SDK mode In SDK mode apulse is not parallel installable with PulseAudio, but is a semi drop-in replacement for it, so install to libdir for higher compatibility (not every PA client uses pkg-config). --- CMakeLists.txt | 6 +++++- pkgconfig/libpulse-mainloop-glib.pc.in | 2 +- pkgconfig/libpulse-simple.pc.in | 2 +- pkgconfig/libpulse.pc.in | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 631e70a..1882ee1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,7 +75,11 @@ target_link_libraries(pulse-simple ${SYMBOLMAP} trace-helper ${REQ_LIBRARIES}) add_subdirectory(tests) -set(APULSEPATH "${CMAKE_INSTALL_LIBDIR}/apulse" CACHE PATH "library installation directory") +if (${INSTALL_SDK}) + set(APULSEPATH "${CMAKE_INSTALL_LIBDIR}" CACHE PATH "library installation directory") +else() + set(APULSEPATH "${CMAKE_INSTALL_LIBDIR}/apulse" CACHE PATH "library installation directory") +endif() set(APULSE_SEARCH_PATHS "${APULSEPATH}" CACHE PATH "directory list for LD_LIBRARY_PATH") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/apulse.template" diff --git a/pkgconfig/libpulse-mainloop-glib.pc.in b/pkgconfig/libpulse-mainloop-glib.pc.in index 67f16e4..957e3b2 100644 --- a/pkgconfig/libpulse-mainloop-glib.pc.in +++ b/pkgconfig/libpulse-mainloop-glib.pc.in @@ -4,6 +4,6 @@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ Name: libpulse-mainloop-glib Description: PulseAudio GLib 2.0 Main Loop Wrapper (apulse) Version: 5.0 -Libs: -L${libdir}/apulse -lpulse-mainloop-glib -pthread +Libs: -L${libdir} -lpulse-mainloop-glib -pthread Cflags: -I${includedir} Requires: glib-2.0 diff --git a/pkgconfig/libpulse-simple.pc.in b/pkgconfig/libpulse-simple.pc.in index 50529ba..3809d50 100644 --- a/pkgconfig/libpulse-simple.pc.in +++ b/pkgconfig/libpulse-simple.pc.in @@ -4,6 +4,6 @@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ Name: libpulse-simple Description: PulseAudio Simplified Synchronous Client Interface (apulse) Version: 5.0 -Libs: -L${libdir}/apulse -lpulse-simple -pthread +Libs: -L${libdir} -lpulse-simple -pthread Cflags: -I${includedir} Requires: glib-2.0 diff --git a/pkgconfig/libpulse.pc.in b/pkgconfig/libpulse.pc.in index 778e280..edcbbd8 100644 --- a/pkgconfig/libpulse.pc.in +++ b/pkgconfig/libpulse.pc.in @@ -4,6 +4,6 @@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ Name: libpulse Description: PulseAudio Client Interface (apulse) Version: 5.0 -Libs: -L${libdir}/apulse -lpulse -pthread +Libs: -L${libdir} -lpulse -pthread Cflags: -I${includedir} Requires: glib-2.0 alsa From 55a2c34416b9b1e30c2037228807f6a1161d0b2a Mon Sep 17 00:00:00 2001 From: Andrew Savchenko Date: Sun, 23 Sep 2018 00:20:13 +0300 Subject: [PATCH 4/6] Do not install apulse wrapper in SDK mode. --- CMakeLists.txt | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1882ee1..74fc184 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,30 +75,31 @@ target_link_libraries(pulse-simple ${SYMBOLMAP} trace-helper ${REQ_LIBRARIES}) add_subdirectory(tests) +set(APULSE_SEARCH_PATHS "${APULSEPATH}" CACHE PATH "directory list for LD_LIBRARY_PATH") + if (${INSTALL_SDK}) set(APULSEPATH "${CMAKE_INSTALL_LIBDIR}" CACHE PATH "library installation directory") -else() - set(APULSEPATH "${CMAKE_INSTALL_LIBDIR}/apulse" CACHE PATH "library installation directory") -endif() -set(APULSE_SEARCH_PATHS "${APULSEPATH}" CACHE PATH "directory list for LD_LIBRARY_PATH") -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/apulse.template" - "${CMAKE_CURRENT_BINARY_DIR}/apulse" @ONLY) -if (${INSTALL_SDK}) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/libpulse.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/libpulse.pc" @ONLY) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/libpulse-simple.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/libpulse-simple.pc" @ONLY) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/libpulse-mainloop-glib.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/libpulse-mainloop-glib.pc" @ONLY) +else() + set(APULSEPATH "${CMAKE_INSTALL_LIBDIR}/apulse" CACHE PATH "library installation directory") + + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/apulse.template" + "${CMAKE_CURRENT_BINARY_DIR}/apulse" @ONLY) endif() -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/apulse" DESTINATION bin - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) install(TARGETS pulse-simple pulse pulse-mainloop-glib DESTINATION "${APULSEPATH}") install(FILES "${CMAKE_SOURCE_DIR}/man/apulse.1" DESTINATION share/man/man1) if (${INSTALL_SDK}) install(DIRECTORY "${CMAKE_SOURCE_DIR}/3rdparty/pulseaudio-headers/pulse" DESTINATION include) install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig" DESTINATION "${CMAKE_INSTALL_LIBDIR}") +else() + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/apulse" DESTINATION bin + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) endif() From adc5d7bad405877e517df5f2e91d5acedbcf95c2 Mon Sep 17 00:00:00 2001 From: Andrew Savchenko Date: Mon, 24 Sep 2018 13:08:08 +0300 Subject: [PATCH 5/6] Fix typo in template. --- pkgconfig/libpulse-simple.pc.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgconfig/libpulse-simple.pc.in b/pkgconfig/libpulse-simple.pc.in index 3809d50..57d917f 100644 --- a/pkgconfig/libpulse-simple.pc.in +++ b/pkgconfig/libpulse-simple.pc.in @@ -1,4 +1,4 @@ -libdir=@CMAKE_INSTALL_FULL__LIBDIR@ +libdir=@CMAKE_INSTALL_FULL_LIBDIR@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ Name: libpulse-simple From 5d7cd80cf32f095066762b16b0582fd30666d242 Mon Sep 17 00:00:00 2001 From: Andrew Savchenko Date: Mon, 24 Sep 2018 13:12:26 +0300 Subject: [PATCH 6/6] Fix installation: 1. APULSE_SEARCH_PATHS: - set after APULSEPATH; - add CMAKE_INSTALL_PREFIX. 2. Do not install apulse man page when wrapper is not installed. --- CMakeLists.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 74fc184..5fe6bcd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,8 +75,6 @@ target_link_libraries(pulse-simple ${SYMBOLMAP} trace-helper ${REQ_LIBRARIES}) add_subdirectory(tests) -set(APULSE_SEARCH_PATHS "${APULSEPATH}" CACHE PATH "directory list for LD_LIBRARY_PATH") - if (${INSTALL_SDK}) set(APULSEPATH "${CMAKE_INSTALL_LIBDIR}" CACHE PATH "library installation directory") @@ -88,13 +86,13 @@ if (${INSTALL_SDK}) "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/libpulse-mainloop-glib.pc" @ONLY) else() set(APULSEPATH "${CMAKE_INSTALL_LIBDIR}/apulse" CACHE PATH "library installation directory") + set(APULSE_SEARCH_PATHS "${CMAKE_INSTALL_PREFIX}/${APULSEPATH}" CACHE PATH "directory list for LD_LIBRARY_PATH") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/apulse.template" "${CMAKE_CURRENT_BINARY_DIR}/apulse" @ONLY) endif() install(TARGETS pulse-simple pulse pulse-mainloop-glib DESTINATION "${APULSEPATH}") -install(FILES "${CMAKE_SOURCE_DIR}/man/apulse.1" DESTINATION share/man/man1) if (${INSTALL_SDK}) install(DIRECTORY "${CMAKE_SOURCE_DIR}/3rdparty/pulseaudio-headers/pulse" DESTINATION include) @@ -102,4 +100,5 @@ if (${INSTALL_SDK}) else() install(FILES "${CMAKE_CURRENT_BINARY_DIR}/apulse" DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + install(FILES "${CMAKE_SOURCE_DIR}/man/apulse.1" DESTINATION share/man/man1) endif()