From 873fe3fba217ba8d5bacbda4c7aae660beb2f191 Mon Sep 17 00:00:00 2001 From: Davide Beatrici Date: Sat, 27 Aug 2022 02:33:18 +0200 Subject: [PATCH 1/3] Add CMake project --- .gitignore | 7 +--- CMakeLists.txt | 78 +++++++++++++++++++++++++++++++++++++++++++ cmake/ossp-util.cmake | 42 +++++++++++++++++++++++ 3 files changed, 121 insertions(+), 6 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 cmake/ossp-util.cmake diff --git a/.gitignore b/.gitignore index b578114..567609b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1 @@ -*.[oa] -*~ -ossp-alsap -ossp-padsp -osspd -osstest +build/ diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..807924b --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,78 @@ +cmake_minimum_required(VERSION 3.1) + +list(APPEND CMAKE_MODULE_PATH + "${CMAKE_CURRENT_SOURCE_DIR}/cmake" +) + +project("OSS Proxy" + VERSION 1.3.2 + DESCRIPTION "Emulate OSS device(s) using CUSE." + HOMEPAGE_URL "https://github.com/OpenMandrivaSoftware/ossp" + LANGUAGES "C" +) + +option(alsa "Build ALSA slave." OFF) +option(daemon "Build daemon." ON) +option(pulseaudio "Build PulseAudio slave." ON) +option(test "Build test." OFF) + +include(ossp-util) + +if(test) + include(CTest) +endif() + +# Shared library +add_library(libossp OBJECT + "ossp.c" + "ossp.h" + "ossp-slave.c" + "ossp-slave.h" + "ossp-util.c" + "ossp-util.h" +) + +# Daemon +if(daemon) + add_executable(osspd "osspd.c") + set_output_dir(osspd) + + link_pkg(osspd "fuse") + target_link_libraries(osspd PRIVATE libossp) + + install_daemon(osspd) +endif() + +# ALSA slave +if(alsa) + add_executable(ossp-alsap "ossp-alsap.c") + set_output_dir(ossp-alsap) + + link_pkg(ossp-alsap "alsa") + target_link_libraries(ossp-alsap PRIVATE libossp) + + install_slave(ossp-alsap) +endif() + +# PulseAudio slave +if(pulseaudio) + add_executable(ossp-padsp "ossp-padsp.c") + set_output_dir(ossp-padsp) + + link_pkg(ossp-padsp "libpulse") + target_link_libraries(ossp-padsp PRIVATE libossp) + + install_slave(ossp-padsp) +endif() + +if(test) + add_executable(osstest "osstest.c") + + add_test( + NAME osstest + COMMAND osstest + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + ) +endif() + +install_udev_rules("98-osscuse.rules") diff --git a/cmake/ossp-util.cmake b/cmake/ossp-util.cmake new file mode 100644 index 0000000..b0192af --- /dev/null +++ b/cmake/ossp-util.cmake @@ -0,0 +1,42 @@ +include(GNUInstallDirs) + +find_package(PkgConfig REQUIRED) + +set(INSTALL_UDEVRULESDIR + "${CMAKE_INSTALL_PREFIX}/lib/udev/rules.d" + CACHE PATH + "Install path for udev rules." +) + +function(link_pkg TARGET PKG) + pkg_search_module(${PKG} ${PKG} REQUIRED) + + target_compile_options(${TARGET} PRIVATE ${${PKG}_CFLAGS}) + target_include_directories(${TARGET} PRIVATE ${${PKG}_INCLUDE_DIRS}) + target_link_libraries(${TARGET} PRIVATE ${${PKG}_LINK_LIBRARIES}) +endfunction() + +macro(set_output_dir TARGET) + set_target_properties(${TARGET} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR} + ) +endmacro() + +macro(install_daemon TARGET) + install(TARGETS ${TARGET} + RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR} + ) +endmacro() + +macro(install_slave TARGET) + install(TARGETS ${TARGET} + RUNTIME DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/ossp" + ) +endmacro() + +macro(install_udev_rules FILES) + install(FILES ${FILES} + DESTINATION ${INSTALL_UDEVRULESDIR} + ) +endmacro() From f477cac52f90e23185e1383c0e22e2b08f8a76ed Mon Sep 17 00:00:00 2001 From: Davide Beatrici Date: Sat, 27 Aug 2022 02:33:26 +0200 Subject: [PATCH 2/3] Remove Makefile --- Makefile | 69 -------------------------------------------------------- 1 file changed, 69 deletions(-) delete mode 100644 Makefile diff --git a/Makefile b/Makefile deleted file mode 100644 index f2a3ed4..0000000 --- a/Makefile +++ /dev/null @@ -1,69 +0,0 @@ -# These can be overridden if needed -# DESTDIR is completely respected -CC := gcc -AR := ar -PKG_CONFIG ?= pkg-config -CFLAGS := -Wall $(CFLAGS) $(CPPFLAGS) -XLDFLAGS := $(LDFLAGS) -LDFLAGS := -L. -lossp $(LDFLAGS) -prefix := /usr/local -DESTDIR := -UDEVDIR := /etc/udev/rules.d - -ifeq "$(origin OSSPD_CFLAGS)" "undefined" -OSSPD_CFLAGS := $(shell $(PKG_CONFIG) --cflags fuse) -endif - -ifeq "$(origin OSSPD_LDFLAGS)" "undefined" -OSSPD_LDFLAGS := $(shell $(PKG_CONFIG) --libs fuse) -endif - -ifeq "$(origin OSSP_PADSP_CFLAGS)" "undefined" -OSSP_PADSP_CFLAGS := $(shell $(PKG_CONFIG) --cflags libpulse) -endif - -ifeq "$(origin OSSP_PADSP_LDFLAGS)" "undefined" -OSSP_PADSP_LDFLAGS := $(shell $(PKG_CONFIG) --libs libpulse) -lpthread -endif - -ifeq "$(origin OSSP_ALSAP_CFLAGS)" "undefined" -OSSP_ALSAP_CFLAGS := $(shell $(PKG_CONFIG) --libs alsa) -endif - -ifeq "$(origin OSSP_ALSAP_LDFLAGS)" "undefined" -OSSP_ALSAP_LDFLAGS := $(shell $(PKG_CONFIG) --libs alsa) -endif - -headers := ossp.h ossp-util.h ossp-slave.h - -all: osspd ossp-padsp ossp-alsap - -install: - mkdir -p $(DESTDIR)$(prefix)/sbin - install -m755 osspd ossp-padsp ossp-alsap $(DESTDIR)$(prefix)/sbin - mkdir -p $(DESTDIR)$(UDEVDIR) - install -m644 98-osscuse.rules $(DESTDIR)$(UDEVDIR) - -libossp.a: ossp.c ossp.h ossp-util.c ossp-util.h ossp-slave.c ossp-slave.h - $(CC) $(CFLAGS) -c -o ossp.o ossp.c - $(CC) $(CFLAGS) -c -o ossp-util.o ossp-util.c - $(CC) $(CFLAGS) -c -o ossp-slave.o ossp-slave.c - $(AR) rc $@ ossp.o ossp-util.o ossp-slave.o - -osspd: osspd.c libossp.a $(headers) - $(CC) $(CFLAGS) $(OSSPD_CFLAGS) -o $@ $< $(OSSPD_LDFLAGS) $(LDFLAGS) - -ossp-padsp: ossp-padsp.c libossp.a $(headers) - $(CC) $(CFLAGS) $(OSSP_PADSP_CFLAGS) -o $@ $< $(OSSP_PADSP_LDFLAGS) $(LDFLAGS) - -ossp-alsap: ossp-alsap.c libossp.a $(headers) - $(CC) $(CFLAGS) $(OSSP_ALSAP_CFLAGS) -o $@ $< $(OSSP_ALSAP_LDFLAGS) $(LDFLAGS) - -osstest: osstest.c - $(CC) $(CFLAGS) -o $@ $< $(XLDFLAGS) - -test: osstest - @./osstest - -clean: - rm -f *.o *.a osspd ossp-padsp ossp-alsap osstest From 94622190ebbb0b01459acded3b98a7f91b316ef1 Mon Sep 17 00:00:00 2001 From: Davide Beatrici Date: Sat, 27 Aug 2022 02:40:18 +0200 Subject: [PATCH 3/3] Define OSSP_VERSION in CMake project --- CMakeLists.txt | 5 +++++ ossp.h | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 807924b..e055964 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,6 +32,11 @@ add_library(libossp OBJECT "ossp-util.h" ) +target_compile_definitions(libossp + PUBLIC + "OSSP_VERSION=\"${PROJECT_VERSION}\"" +) + # Daemon if(daemon) add_executable(osspd "osspd.c") diff --git a/ossp.h b/ossp.h index 8fdd393..d90bf2b 100644 --- a/ossp.h +++ b/ossp.h @@ -15,7 +15,6 @@ #include #include -#define OSSP_VERSION "1.3.2" #define OSSP_CMD_MAGIC 0xdeadbeef #define OSSP_REPLY_MAGIC 0xbeefdead #define OSSP_NOTIFY_MAGIC 0xbebebebe