Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/plugins_build_7.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ jobs:
libeigen3-dev libfluidsynth-dev libpng-dev \
libwebsockets-dev libuv1-dev libhdf5-dev \
ocl-icd-opencl-dev libtinfo-dev \
libgtest-dev \
flex bison

- name: Cache Csound install
Expand Down Expand Up @@ -136,6 +137,9 @@ jobs:
-DFAUST_STDLIB_DIR_HINT="$FAUST_STDLIB_DIR_HINT"
cmake --build build --parallel "$(nproc)"

- name: Run plugin tests
run: ctest --test-dir build --output-on-failure

- name: Stage plugins
run: |
mkdir -p package
Expand Down
3 changes: 3 additions & 0 deletions 7.x/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,9 @@ if(WIN32)
add_definitions(-DWIN32)
endif()

# Register CTest so subdirectory regression tests (e.g. dssi4cs) can be run.
enable_testing()

add_subdirectory(./src/chua)
add_subdirectory(./src/linear_algebra)
add_subdirectory(./src/fluidOpcodes)
Expand Down
32 changes: 32 additions & 0 deletions 7.x/src/dssi4cs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,36 @@ if(BUILD_DSSI_OPCODES)
target_compile_definitions(dssi4cs PRIVATE
"DSSI4CS_DEFAULT_PATH=\"/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/dssi:/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/ladspa:/usr/local/lib/dssi:/usr/lib/dssi:/usr/lib64/dssi:/usr/local/lib/ladspa:/usr/lib/ladspa:/usr/lib64/ladspa\"")
endif()

# Regression tests for the host, built and registered with CTest when
# GoogleTest is available. The fixture is a small real DSSI/LADSPA plugin
# built from the vendored headers, so its ABI matches the host.
find_package(GTest QUIET)
if(GTest_FOUND)
add_library(dssi_test_plugin MODULE tests/fixtures/dssi_test_plugin.c)
add_library(ladspa_test_plugin MODULE tests/fixtures/dssi_test_plugin.c)
target_compile_definitions(ladspa_test_plugin PRIVATE DSSI_TEST_LADSPA)
foreach(plugin dssi_test_plugin ladspa_test_plugin)
target_include_directories(${plugin} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include/dssi
${CMAKE_CURRENT_SOURCE_DIR}/include/ladspa
${DSSI_ALSA_ASOUNDLIB_H})
endforeach()

add_executable(dssi_tests tests/dssi_test.cpp)
# Recent GoogleTest releases require C++14, which is newer than the
# C++11 default used for the plugin itself.
set_target_properties(dssi_tests PROPERTIES
CXX_STANDARD 14
CXX_STANDARD_REQUIRED ON)
target_include_directories(dssi_tests PRIVATE ${CSOUND_INCLUDE_DIRS})
target_link_libraries(dssi_tests PRIVATE
GTest::gtest_main ${CSOUND_LIBRARY} ${CMAKE_DL_LIBS})
target_compile_definitions(dssi_tests PRIVATE
CSOUND_TEST_DSSI_HOST="$<TARGET_FILE:dssi4cs>"
CSOUND_TEST_DSSI_PLUGIN="$<TARGET_FILE:dssi_test_plugin>"
CSOUND_TEST_LADSPA_PLUGIN="$<TARGET_FILE:ladspa_test_plugin>")
add_dependencies(dssi_tests dssi4cs dssi_test_plugin ladspa_test_plugin)
add_test(NAME dssi_tests COMMAND dssi_tests)
endif()
endif()
29 changes: 27 additions & 2 deletions 7.x/src/dssi4cs/dssi4cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -803,8 +803,33 @@ static int32_t dssilist(CSOUND *csound, DSSILIST *p)
static OENTRY localops[] = {
{"dssiinit", sizeof(DSSIINIT), 0, "i", "Tip", (SUBR)dssiinit},
{"dssiactivate", sizeof(DSSIACTIVATE), 0, "", "ik", (SUBR)dssiactivate_init, (SUBR)dssiactivate},
{"dssiaudio", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iyyyyyyyyy", (SUBR)dssiaudio_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssisynth", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iyyyyyyyyy", (SUBR)dssisynth_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
/* The audio inputs are optional (see README) and must be a-rate. A single
'y' (indefinite a-rate list) entry would make every input mandatory,
because the parser only treats the 'M'/'N'/'m'/'W' lists as omittable.
Register one entry per possible input count instead: fixed 'a' inputs
are a-rate only (so the opcode never reads past a scalar) and the
matching entry is selected by argument count, allowing the inputs to be
omitted. */
{"dssiaudio", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "i", (SUBR)dssiaudio_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssiaudio", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "ia", (SUBR)dssiaudio_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssiaudio", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iaa", (SUBR)dssiaudio_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssiaudio", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iaaa", (SUBR)dssiaudio_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssiaudio", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iaaaa", (SUBR)dssiaudio_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssiaudio", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iaaaaa", (SUBR)dssiaudio_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssiaudio", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iaaaaaa", (SUBR)dssiaudio_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssiaudio", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iaaaaaaa", (SUBR)dssiaudio_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssiaudio", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iaaaaaaaa", (SUBR)dssiaudio_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssiaudio", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iaaaaaaaaa", (SUBR)dssiaudio_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssisynth", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "i", (SUBR)dssisynth_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssisynth", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "ia", (SUBR)dssisynth_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssisynth", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iaa", (SUBR)dssisynth_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssisynth", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iaaa", (SUBR)dssisynth_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssisynth", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iaaaa", (SUBR)dssisynth_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssisynth", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iaaaaa", (SUBR)dssisynth_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssisynth", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iaaaaaa", (SUBR)dssisynth_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssisynth", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iaaaaaaa", (SUBR)dssisynth_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssisynth", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iaaaaaaaa", (SUBR)dssisynth_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssisynth", sizeof(DSSIAUDIO), 0, "mmmmmmmmm", "iaaaaaaaaa", (SUBR)dssisynth_init, (SUBR)dssiaudio, (SUBR)dssiaudio_deinit},
{"dssictls", sizeof(DSSICTLS), 0, "", "iikk", (SUBR)dssictls_init, (SUBR)dssictls},
{"dssiget", sizeof(DSSIGET), 0, "k", "ii", (SUBR)dssiget_init, (SUBR)dssiget},
{"dssinote", sizeof(DSSINOTE), 0, "", "kikkko", (SUBR)dssinote_init, (SUBR)dssinote},
Expand Down
Loading
Loading