diff --git a/.gitmodules b/.gitmodules index a7dca7b83d2..685a724f74a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,6 +16,6 @@ [submodule "plugins/Xpressive/exprtk"] path = plugins/Xpressive/exprtk url = https://github.com/ArashPartow/exprtk -[submodule "plugins/LadspaEffect/swh/swh"] - path = plugins/LadspaEffect/swh/swh +[submodule "plugins/LadspaEffect/swh/ladspa"] + path = plugins/LadspaEffect/swh/ladspa url = https://github.com/swh/ladspa diff --git a/.travis/linux..install.sh b/.travis/linux..install.sh index a5fc3e4d540..f49f9e2859a 100755 --- a/.travis/linux..install.sh +++ b/.travis/linux..install.sh @@ -7,8 +7,11 @@ PACKAGES="cmake libsndfile-dev fftw3-dev libvorbis-dev libogg-dev libmp3lame-dev libfluidsynth-dev portaudio19-dev wine-dev g++-multilib libfltk1.3-dev libgig-dev libsoundio-dev" +# swh build dependencies +SWH_PACKAGES="perl libxml2-utils libxml-perl liblist-moreutils-perl" + # Help with unmet dependencies -PACKAGES="$PACKAGES libjack0" +PACKAGES="$PACKAGES $SWH_PACKAGES libjack0" if [ "$QT5" ]; then PACKAGES="$PACKAGES qt58base qt58translations qt58tools" diff --git a/.travis/linux.win32.install.sh b/.travis/linux.win32.install.sh index 4c35555e3c2..3dbf5fea141 100755 --- a/.travis/linux.win32.install.sh +++ b/.travis/linux.win32.install.sh @@ -14,11 +14,14 @@ MINGW_PACKAGES="mingw32-x-sdl mingw32-x-libvorbis mingw32-x-fluidsynth mingw32-x mingw32-x-pkgconfig mingw32-x-binutils mingw32-x-gcc mingw32-x-runtime mingw32-x-libgig mingw32-x-libsoundio mingw32-x-lame $MINGW_PACKAGES" +# swh build dependencies +SWH_PACKAGES="perl libxml2-utils libxml-perl liblist-moreutils-perl" + export MINGW_PACKAGES "$TRAVIS_BUILD_DIR/.travis/linux.win.download.sh" win32 -PACKAGES="nsis cloog-isl libmpc3 qt4-linguist-tools mingw32 $MINGW_PACKAGES" +PACKAGES="nsis cloog-isl libmpc3 qt4-linguist-tools mingw32 $MINGW_PACKAGES $SWH_PACKAGES" # shellcheck disable=SC2086 sudo apt-get install -y $PACKAGES diff --git a/plugins/LadspaEffect/swh/CMakeLists.txt b/plugins/LadspaEffect/swh/CMakeLists.txt new file mode 100644 index 00000000000..7860ee6cc66 --- /dev/null +++ b/plugins/LadspaEffect/swh/CMakeLists.txt @@ -0,0 +1,103 @@ +# Create blank config.h +FILE(WRITE ladspa/config.h "") + +# Precompiler PIC Macro +IF(LMMS_BUILD_WIN32) + SET(PIC_FLAGS "") +ELSE() + SET(PIC_FLAGS "-fPIC -DPIC") +ENDIF() + +# Additional link flags +IF(LMMS_BUILD_WIN32 AND MINGW_PREFIX) + SET(LINK_FLAGS "${LINK_FLAGS} -shared -Wl,-no-undefined -Wl,-Bsymbolic -lm") +ELSEIF(LMMS_BUILD_APPLE) + SET(LINK_FLAGS "${LINK_FLAGS} -Bsymbolic -lm") +ENDIF() + +# Additional compile flags +SET(COMPILE_FLAGS "${COMPILE_FLAGS} -O3 -Wall") +SET(COMPILE_FLAGS "${COMPILE_FLAGS} -fomit-frame-pointer -fstrength-reduce -funroll-loops -ffast-math -c -fno-strict-aliasing") +SET(COMPILE_FLAGS "${COMPILE_FLAGS} ${PIC_FLAGS}") + +# Loop over every XML file +FILE(GLOB XML_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/ladspa/*.xml") +LIST(SORT XML_SOURCES) +FOREACH(_item ${XML_SOURCES}) + # Get library name and (soon to be) C file + GET_FILENAME_COMPONENT(_plugin "${_item}" NAME_WE) + SET(_out_file "${CMAKE_CURRENT_SOURCE_DIR}/ladspa/${_plugin}.c") + + # Coerce XML source file to C + ADD_CUSTOM_COMMAND( + OUTPUT "${_out_file}" + COMMAND ./makestub.pl "${_item}" > "${_out_file}" + DEPENDS "${_item}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/ladspa" + VERBATIM + ) + + # Add a library target for this C file, which depends on success of makestup.pl + ADD_LIBRARY("${_plugin}" MODULE "${_out_file}") + + # Vocoder does not use fftw + IF(NOT ("${_plugin}" STREQUAL "vocoder_1337")) + TARGET_LINK_LIBRARIES("${_plugin}" -lfftw3f) + ENDIF() + + SET_TARGET_PROPERTIES("${_plugin}" PROPERTIES PREFIX "") + SET_TARGET_PROPERTIES("${_plugin}" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}") + SET_TARGET_PROPERTIES("${_plugin}" PROPERTIES LINK_FLAGS "${LINK_FLAGS}") + INSTALL(TARGETS "${_plugin}" LIBRARY DESTINATION "${PLUGIN_DIR}/ladspa") +ENDFOREACH() + +ADD_DEFINITIONS(-DFFTW3) +INCLUDE_DIRECTORIES( + "${CMAKE_SOURCE_DIR}/include" + "${CMAKE_CURRENT_SOURCE_DIR}/ladspa" + ${FFTW3F_INCLUDE_DIRS} + "${CMAKE_BINARY_DIR}" +) +LINK_DIRECTORIES(${FFTW3F_LIBRARY_DIRS}) + +ADD_LIBRARY(iir STATIC ladspa/util/iir.c) +SET_TARGET_PROPERTIES(iir PROPERTIES COMPILE_FLAGS "${PIC_FLAGS}") +TARGET_LINK_LIBRARIES(bandpass_a_iir_1893 iir) +TARGET_LINK_LIBRARIES(bandpass_iir_1892 iir) +TARGET_LINK_LIBRARIES(butterworth_1902 iir) +TARGET_LINK_LIBRARIES(highpass_iir_1890 iir) +TARGET_LINK_LIBRARIES(lowpass_iir_1891 iir) +TARGET_LINK_LIBRARIES(notch_iir_1894 iir) + +FILE(GLOB GSM_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/ladspa/gsm/*.c") +LIST(SORT GSM_SOURCES) +ADD_LIBRARY(gsm STATIC ${GSM_SOURCES}) +SET_TARGET_PROPERTIES(gsm PROPERTIES COMPILE_FLAGS "${PIC_FLAGS}") +TARGET_LINK_LIBRARIES(gsm_1215 gsm) + +ADD_LIBRARY(gverb STATIC ladspa/gverb/gverb.c ladspa/gverb/gverbdsp.c) +SET_TARGET_PROPERTIES(gverb PROPERTIES COMPILE_FLAGS "${PIC_FLAGS}") +TARGET_LINK_LIBRARIES(gverb_1216 gverb) + +ADD_LIBRARY(blo STATIC ladspa/util/blo.c) +SET_TARGET_PROPERTIES(blo PROPERTIES COMPILE_FLAGS "${PIC_FLAGS}") +TARGET_LINK_LIBRARIES(analogue_osc_1416 blo) +TARGET_LINK_LIBRARIES(fm_osc_1415 blo) +TARGET_LINK_LIBRARIES(hermes_filter_1200 blo) + +ADD_LIBRARY(rms STATIC ladspa/util/rms.c) +ADD_LIBRARY(db STATIC ladspa/util/db.c) +SET_TARGET_PROPERTIES(rms PROPERTIES COMPILE_FLAGS "${PIC_FLAGS}") +SET_TARGET_PROPERTIES(db PROPERTIES COMPILE_FLAGS "${PIC_FLAGS}") +TARGET_LINK_LIBRARIES(sc1_1425 rms db) +TARGET_LINK_LIBRARIES(sc2_1426 rms db) +TARGET_LINK_LIBRARIES(sc3_1427 rms db) +TARGET_LINK_LIBRARIES(sc4_1882 rms db) +TARGET_LINK_LIBRARIES(sc4m_1916 rms db) +TARGET_LINK_LIBRARIES(se4_1883 rms db) + +ADD_LIBRARY(pitchscale STATIC ladspa/util/pitchscale.c) +SET_TARGET_PROPERTIES(pitchscale PROPERTIES COMPILE_FLAGS "${PIC_FLAGS}") +TARGET_LINK_LIBRARIES(pitchscale -lfftw3f) +TARGET_LINK_LIBRARIES(pitch_scale_1193 pitchscale) +TARGET_LINK_LIBRARIES(pitch_scale_1194 pitchscale) diff --git a/plugins/LadspaEffect/swh/ladspa b/plugins/LadspaEffect/swh/ladspa new file mode 160000 index 00000000000..692b4001120 --- /dev/null +++ b/plugins/LadspaEffect/swh/ladspa @@ -0,0 +1 @@ +Subproject commit 692b4001120aea16385d74ce86b0865c6ce7fdf5 diff --git a/plugins/LadspaEffect/swh/swh b/plugins/LadspaEffect/swh/swh deleted file mode 160000 index 485075eaf43..00000000000 --- a/plugins/LadspaEffect/swh/swh +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 485075eaf43141376180590b74b5a95ee5b46ba9