Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LADSPA msvc compatibility #4794

Closed
wants to merge 6 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
11 changes: 10 additions & 1 deletion include/ladspa.h
Expand Up @@ -26,6 +26,14 @@
#define LADSPA_VERSION_MAJOR 1
#define LADSPA_VERSION_MINOR 1

#ifndef LADSPA_EXPORT
#ifdef _MSC_VER
#define LADSPA_MODULE __declspec(dllexport)
#else
#define LADSPA_MODULE
#endif
#endif

#ifdef __cplusplus
extern "C" {
#endif
Expand Down Expand Up @@ -585,7 +593,8 @@ typedef struct _LADSPA_Descriptor {
upwards. Out of range indexes must result in this function
returning NULL, so the plugin count can be determined by checking
for the least index that results in NULL being returned. */


LADSPA_MODULE
const LADSPA_Descriptor * ladspa_descriptor(unsigned long Index);

/* Datatype corresponding to the ladspa_descriptor() function. */
Expand Down
1 change: 0 additions & 1 deletion plugins/CMakeLists.txt
Expand Up @@ -90,7 +90,6 @@ ENDIF("${PLUGIN_LIST}" STREQUAL "")

IF(MSVC)
SET(MSVC_INCOMPATIBLE_PLUGINS
LadspaEffect
zynaddsubfx
)
message(WARNING "Compiling with MSVC. The following plugins are not available: ${MSVC_INCOMPATIBLE_PLUGINS}")
Expand Down
17 changes: 9 additions & 8 deletions plugins/LadspaEffect/calf/CMakeLists.txt
Expand Up @@ -36,16 +36,17 @@ SET_TARGET_PROPERTIES(veal PROPERTIES PREFIX "")
# Disable OSC messaging, it's not mingw compatible
TARGET_COMPILE_DEFINITIONS(veal PRIVATE DISABLE_OSC=1)

SET(INLINE_FLAGS "")
IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
SET(INLINE_FLAGS "-finline-functions-called-once -finline-limit=80")
ENDIF()
SET_TARGET_PROPERTIES(veal PROPERTIES COMPILE_FLAGS "-fexceptions -O2 -finline-functions ${INLINE_FLAGS}")
IF(MSVC)
SET_TARGET_PROPERTIES(veal PROPERTIES COMPILE_FLAGS "-D_USE_MATH_DEFINES")
ELSE(MSVC)
SET(INLINE_FLAGS "")
IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
SET(INLINE_FLAGS "-finline-functions-called-once -finline-limit=80")
ENDIF()
SET_TARGET_PROPERTIES(veal PROPERTIES COMPILE_FLAGS "-fexceptions -O2 -finline-functions ${INLINE_FLAGS}")
ENDIF(MSVC)

# Don't strip if "Debug" or "RelWithDebInfo"
IF(LMMS_BUILD_WIN32 AND NOT CMAKE_BUILD_TYPE MATCHES "Deb")
ADD_CUSTOM_COMMAND(TARGET veal POST_BUILD COMMAND "${STRIP}" "$<TARGET_FILE:veal>")
ENDIF()
IF(NOT LMMS_BUILD_APPLE AND NOT LMMS_BUILD_OPENBSD)
SET_TARGET_PROPERTIES(veal PROPERTIES LINK_FLAGS "${LINK_FLAGS} -shared -Wl,-no-undefined")
ENDIF()
2 changes: 1 addition & 1 deletion plugins/LadspaEffect/calf/veal
Submodule veal updated 49 files
+4 −0 ChangeLog
+66 −15 calf-gui.xml
+2 −2 configure.ac
+18 −1 doc/manuals/Limiter.html
+6 −1 doc/manuals/Multiband Limiter.html
+5 −0 doc/manuals/Sidechain Limiter.html
+ doc/manuals/images/Calf - Limiters - ASC behaviours.jpg
+ doc/manuals/images/Calf - Limiters - ASC.jpg
+1 −1 gui/gui/eq30.xml
+17 −16 gui/gui/limiter.xml
+15 −12 gui/gui/multibandlimiter.xml
+12 −9 gui/gui/sidechainlimiter.xml
+53 −48 src/analyzer.cpp
+29 −21 src/audio_fx.cpp
+1 −0 src/calf/audio_fx.h
+4 −4 src/calf/fixed_point.h
+2 −2 src/calf/giface.h
+2 −0 src/calf/gui.h
+2 −0 src/calf/gui_config.h
+2 −0 src/calf/host_session.h
+2 −2 src/calf/jackhost.h
+1 −1 src/calf/lv2_options.h
+1 −1 src/calf/lv2_ui.h
+3 −3 src/calf/lv2wrap.h
+3 −0 src/calf/metadata.h
+9 −9 src/calf/modules_filter.h
+1,373 −1,089 src/calf/orfanidis_eq.h
+7 −3 src/calf/osctl.h
+1 −0 src/calf/primitives.h
+14 −3 src/calf/utils.h
+1 −4 src/ctl_knob.cpp
+0 −3 src/ctl_tube.cpp
+25 −0 src/fluidsynth.cpp
+8 −2 src/giface.cpp
+92 −67 src/gtk_main_win.cpp
+16 −10 src/gui_config.cpp
+37 −18 src/host_session.cpp
+21 −6 src/jackhost.cpp
+1 −1 src/makerdf.cpp
+6 −2 src/metadata.cpp
+72 −72 src/modules_comp.cpp
+4 −3 src/modules_delay.cpp
+34 −12 src/modules_dist.cpp
+80 −73 src/modules_filter.cpp
+26 −17 src/modules_limit.cpp
+26 −26 src/modules_mod.cpp
+10 −9 src/modules_tools.cpp
+2 −1 src/organ.cpp
+26 −1 src/utils.cpp
7 changes: 6 additions & 1 deletion plugins/LadspaEffect/caps/CMakeLists.txt
Expand Up @@ -7,7 +7,12 @@ IF(LMMS_BUILD_WIN64)
ADD_DEFINITIONS(-DLMMS_BUILD_WIN64)
ENDIF(LMMS_BUILD_WIN64)
SET_TARGET_PROPERTIES(caps PROPERTIES PREFIX "")
SET_TARGET_PROPERTIES(caps PROPERTIES COMPILE_FLAGS "-O2 -funroll-loops -Wno-write-strings")

IF(MSVC)
SET_TARGET_PROPERTIES(caps PROPERTIES COMPILE_FLAGS "-D_USE_MATH_DEFINES")
ELSE(MSVC)
SET_TARGET_PROPERTIES(caps PROPERTIES COMPILE_FLAGS "-O2 -funroll-loops -Wno-write-strings")
ENDIF(MSVC)

IF(LMMS_BUILD_WIN32)
ADD_CUSTOM_COMMAND(TARGET caps POST_BUILD COMMAND "${STRIP}" \"$<TARGET_FILE:caps>\")
Expand Down
6 changes: 3 additions & 3 deletions plugins/LadspaEffect/caps/dsp/Eq.h
Expand Up @@ -62,11 +62,11 @@ class Eq
{
public:
/* recursion coefficients, 3 per band */
eq_sample __attribute__ ((aligned)) a[Bands], b[Bands], c[Bands];
eq_sample a[Bands], b[Bands], c[Bands];
/* past outputs, 2 per band */
eq_sample __attribute__ ((aligned)) y[2][Bands];
eq_sample y[2][Bands];
/* current gain and recursion factor, each 1 per band = 2 */
eq_sample __attribute__ ((aligned)) gain[Bands], gf[Bands];
eq_sample gain[Bands], gf[Bands];
/* input history */
eq_sample x[2];
/* history index */
Expand Down
28 changes: 25 additions & 3 deletions plugins/LadspaEffect/caps/interface.cc
Expand Up @@ -29,7 +29,9 @@
(2541 - 2580 donated to artemio@kdemail.net)
*/

#include <sys/time.h>
#ifdef _MSC_VER
#include <windows.h>
#endif

#include "basics.h"

Expand Down Expand Up @@ -68,8 +70,9 @@ seed()
}*/

extern "C" {

#ifndef _MSC_VER
__attribute__ ((constructor))
#endif
void caps_so_init()
{
DescriptorStub ** d = descriptors;
Expand Down Expand Up @@ -125,7 +128,9 @@ void caps_so_init()
//seed();
}

__attribute__ ((destructor))
#ifndef _MSC_VER
__attribute__ ((destructor))
#endif
void caps_so_fini()
{
for (ulong i = 0; i < N; ++i)
Expand All @@ -142,4 +147,21 @@ ladspa_descriptor (unsigned long i)
return 0;
}

#ifdef _MSC_VER
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
caps_so_init();
break;
case DLL_PROCESS_DETACH:
caps_so_fini();
break;
}
return TRUE;
}
#endif
}; /* extern "C" */
6 changes: 5 additions & 1 deletion plugins/LadspaEffect/cmt/CMakeLists.txt
Expand Up @@ -5,7 +5,11 @@ ADD_LIBRARY(cmt MODULE ${SOURCES})
INSTALL(TARGETS cmt LIBRARY DESTINATION "${PLUGIN_DIR}/ladspa")

SET_TARGET_PROPERTIES(cmt PROPERTIES PREFIX "")
SET_TARGET_PROPERTIES(cmt PROPERTIES COMPILE_FLAGS "-Wall -O3 -fno-strict-aliasing")
IF(MSVC)
SET_TARGET_PROPERTIES(cmt PROPERTIES COMPILE_FLAGS "-D_USE_MATH_DEFINES")
ELSE(MSVC)
SET_TARGET_PROPERTIES(cmt PROPERTIES COMPILE_FLAGS "-Wall -O3 -fno-strict-aliasing")
ENDIF(MSVC)

IF(LMMS_BUILD_WIN32)
ADD_CUSTOM_COMMAND(TARGET cmt POST_BUILD COMMAND "${STRIP}" \"$<TARGET_FILE:cmt>\")
Expand Down
37 changes: 24 additions & 13 deletions plugins/LadspaEffect/swh/CMakeLists.txt
@@ -1,18 +1,29 @@
# Create blank config.h
FILE(WRITE ladspa/config.h "")
INCLUDE(FindPerl)

IF(NOT PERL_FOUND)
MESSAGE(WARNING "Perl not found. Can't compile swh LADSPA modules")
RETURN()
ENDIF()

# Precompiler PIC Macro
IF(LMMS_BUILD_WIN32)
SET(PIC_FLAGS "")
SET(PIC_FLAGS)
SET(DEFINE_FLAGS "-D_USE_MATH_DEFINES")
ELSE()
SET(PIC_FLAGS "-fPIC -DPIC")
SET(DEFINE_FLAGS)
ENDIF()

# Additional compile flags
SET(COMPILE_FLAGS "${COMPILE_FLAGS} -O3 -Wall")
SET(COMPILE_FLAGS "${COMPILE_FLAGS} -fomit-frame-pointer -funroll-loops -ffast-math -c -fno-strict-aliasing")
SET(COMPILE_FLAGS "${COMPILE_FLAGS} ${PIC_FLAGS}")

IF(MSVC)
SET(COMPILE_FLAGS "${COMPILE_FLAGS} ${PIC_FLAGS} -D_USE_MATH_DEFINES")
ELSE()
SET(COMPILE_FLAGS "${COMPILE_FLAGS} -O3 -Wall")
SET(COMPILE_FLAGS "${COMPILE_FLAGS} -fomit-frame-pointer -funroll-loops -ffast-math -c -fno-strict-aliasing")
SET(COMPILE_FLAGS "${COMPILE_FLAGS} ${PIC_FLAGS}")
ENDIF()
# Loop over every XML file
FILE(GLOB XML_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/ladspa/*.xml")
LIST(SORT XML_SOURCES)
Expand All @@ -24,7 +35,7 @@ FOREACH(_item ${XML_SOURCES})
# Coerce XML source file to C
ADD_CUSTOM_COMMAND(
OUTPUT "${_out_file}"
COMMAND ./makestub.pl "${_item}" > "${_out_file}"
COMMAND ${PERL_EXECUTABLE} "makestub.pl" "${_item}" > "${_out_file}"
DEPENDS "${_item}"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/ladspa"
VERBATIM
Expand Down Expand Up @@ -56,7 +67,7 @@ INCLUDE_DIRECTORIES(
)

ADD_LIBRARY(iir STATIC ladspa/util/iir.c)
SET_TARGET_PROPERTIES(iir PROPERTIES COMPILE_FLAGS "${PIC_FLAGS}")
SET_TARGET_PROPERTIES(iir PROPERTIES COMPILE_FLAGS "${PIC_FLAGS} ${DEFINE_FLAGS}")
TARGET_LINK_LIBRARIES(bandpass_a_iir_1893 iir)
TARGET_LINK_LIBRARIES(bandpass_iir_1892 iir)
TARGET_LINK_LIBRARIES(butterworth_1902 iir)
Expand All @@ -67,23 +78,23 @@ 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}")
SET_TARGET_PROPERTIES(gsm PROPERTIES COMPILE_FLAGS "${PIC_FLAGS} ${DEFINE_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}")
SET_TARGET_PROPERTIES(gverb PROPERTIES COMPILE_FLAGS "${PIC_FLAGS} ${DEFINE_FLAGS}")
TARGET_LINK_LIBRARIES(gverb_1216 gverb)

ADD_LIBRARY(blo STATIC ladspa/util/blo.c)
SET_TARGET_PROPERTIES(blo PROPERTIES COMPILE_FLAGS "${PIC_FLAGS}")
SET_TARGET_PROPERTIES(blo PROPERTIES COMPILE_FLAGS "${PIC_FLAGS} ${DEFINE_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}")
SET_TARGET_PROPERTIES(rms PROPERTIES COMPILE_FLAGS "${PIC_FLAGS} ${DEFINE_FLAGS}")
SET_TARGET_PROPERTIES(db PROPERTIES COMPILE_FLAGS "${PIC_FLAGS} ${DEFINE_FLAGS}")
TARGET_LINK_LIBRARIES(sc1_1425 rms db)
TARGET_LINK_LIBRARIES(sc2_1426 rms db)
TARGET_LINK_LIBRARIES(sc3_1427 rms db)
Expand All @@ -92,7 +103,7 @@ 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}")
SET_TARGET_PROPERTIES(pitchscale PROPERTIES COMPILE_FLAGS "${PIC_FLAGS} ${DEFINE_FLAGS}")
TARGET_LINK_LIBRARIES(pitchscale -lfftw3f)
TARGET_LINK_LIBRARIES(pitch_scale_1193 pitchscale)
TARGET_LINK_LIBRARIES(pitch_scale_1194 pitchscale)
2 changes: 1 addition & 1 deletion plugins/LadspaEffect/swh/ladspa
Submodule ladspa updated 3 files
+4 −0 ladspa.h
+32 −2 makestub.pl
+2 −0 util/blo.h
8 changes: 7 additions & 1 deletion plugins/LadspaEffect/tap/CMakeLists.txt
@@ -1,7 +1,13 @@
INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/include")
FILE(GLOB PLUGIN_SOURCES tap-plugins/*.c)
LIST(SORT PLUGIN_SOURCES)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -Wno-write-strings -fomit-frame-pointer -fno-strict-aliasing -funroll-loops -ffast-math")

IF(MSVC)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_USE_MATH_DEFINES")
ELSE(MSVC)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -Wno-write-strings -fomit-frame-pointer -fno-strict-aliasing -funroll-loops -ffast-math")
ENDIF(MSVC)

FOREACH(_item ${PLUGIN_SOURCES})
GET_FILENAME_COMPONENT(_plugin "${_item}" NAME_WE)
ADD_LIBRARY("${_plugin}" MODULE "${_item}")
Expand Down
2 changes: 1 addition & 1 deletion plugins/LadspaEffect/tap/tap-plugins