1+ if (NOT FLTK_FOUND)
2+ return ()
3+ endif ()
4+
15INCLUDE (BuildPlugin)
26
7+ find_package (Threads REQUIRED)
8+ find_package (ZLIB REQUIRED)
9+
310set (CMAKE_POSITION_INDEPENDENT_CODE ON )
411
512# definitions for ZynAddSubFX
@@ -11,40 +18,20 @@ ELSE()
1118 ADD_DEFINITIONS (-DOS_WINDOWS)
1219ENDIF ()
1320
14- # do not conflict with LMMS' Controller class
15- ADD_DEFINITIONS (-DController=ZynController)
16-
1721# use asm optimizations when on x86 or x86_64
18- IF ( LMMS_HOST_X86 OR LMMS_HOST_X86_64)
22+ if ( NOT MSVC AND ( LMMS_HOST_X86 OR LMMS_HOST_X86_64) )
1923 ADD_DEFINITIONS (-DASM_F2I_YES)
20- ENDIF (LMMS_HOST_X86 OR LMMS_HOST_X86_64 )
24+ endif ( )
2125
2226# build ZynAddSubFX with full optimizations
23- SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -Wno-write-strings -Wno-deprecated-declarations -fpermissive" )
27+ if (NOT MSVC )
28+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -Wno-write-strings -Wno-deprecated-declarations -fpermissive" )
29+ endif ()
2430
2531IF ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "GNU" AND NOT "${CMAKE_CXX_COMPILER_VERSION} " VERSION_LESS "6.0.0" )
2632 SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-misleading-indentation" )
2733ENDIF ()
2834
29- IF (LMMS_BUILD_WIN32)
30- # link system-libraries
31- ADD_DEFINITIONS (-DPTW32_STATIC_LIB)
32- # fix X11 headers errors caused by bug with mingw + c++11 (enable -std=gnu++0x)
33- SET (CMAKE_CXX_EXTENSIONS ON )
34- ENDIF (LMMS_BUILD_WIN32)
35-
36- SET (FLTK_SKIP_OPENGL TRUE )
37- SET (FLTK_SKIP_FORMS TRUE )
38- SET (FLTK_SKIP_IMAGES TRUE )
39- SET (FLTK_SKIP_MATH TRUE )
40- IF (MINGW_PREFIX)
41- SET (FLTK_SKIP_FLUID TRUE )
42- ENDIF ()
43-
44- IF (NOT FLTK_FOUND)
45- RETURN ()
46- ENDIF ()
47-
4835IF (MINGW_PREFIX)
4936 SET (FLTK_FLUID_EXECUTABLE "${MINGW_PREFIX} /bin/fluid" )
5037ENDIF ()
@@ -57,13 +44,15 @@ IF(NOT EXISTS ${FLTK_FLUID_EXECUTABLE})
5744 ENDIF ()
5845ENDIF ()
5946
60- INCLUDE_DIRECTORIES ("${FLTK_INCLUDE_DIR} "
61- "${CMAKE_CURRENT_SOURCE_DIR} "
62- ${FFTW3F_INCLUDE_DIRS}
63- "${CMAKE_CURRENT_BINARY_DIR} "
64- "${CMAKE_BINARY_DIR} " )
65-
66- include_directories ( ${CMAKE_CURRENT_SOURCE_DIR} /zynaddsubfx/src/UI)
47+ include_directories (
48+ "${FLTK_INCLUDE_DIR} "
49+ "${CMAKE_CURRENT_SOURCE_DIR} "
50+ ${FFTW3F_INCLUDE_DIRS}
51+ "${CMAKE_CURRENT_BINARY_DIR} "
52+ "${CMAKE_BINARY_DIR} "
53+ "${CMAKE_SOURCE_DIR} /src/3rdparty/mingw-std-threads"
54+ "${CMAKE_CURRENT_SOURCE_DIR} /zynaddsubfx/src/UI"
55+ )
6756
6857ADD_DEFINITIONS (-DPLUGINVERSION) # removes exit confirmation dialogs etc. in MasterUI.fl
6958add_subdirectory (zynaddsubfx/src/Nio)
@@ -116,24 +105,23 @@ SET(zynaddsubfx_core_SRCS
116105 zynaddsubfx/src/Synth/PADnote.cpp
117106 zynaddsubfx/src/Synth/Resonance.cpp
118107 zynaddsubfx/src/Synth/SUBnote.cpp
119- )
120-
121-
122- IF (LMMS_BUILD_LINUX)
123- ADD_LIBRARY (ZynAddSubFxCore MODULE LocalZynAddSubFx.cpp ${zynaddsubfx_core_SRCS} )
124- ELSE ()
125- ADD_LIBRARY (ZynAddSubFxCore SHARED LocalZynAddSubFx.cpp ${zynaddsubfx_core_SRCS} )
126- ENDIF ()
127- TARGET_LINK_LIBRARIES (ZynAddSubFxCore zynaddsubfx_nio ${FFTW3F_LIBRARIES} ${QT_LIBRARIES} -lz -lpthread)
128-
129- TARGET_LINK_LIBRARIES (ZynAddSubFxCore Qt5::Widgets Qt5::Xml)
130-
131- IF (LMMS_BUILD_WIN32)
132- TARGET_LINK_LIBRARIES (ZynAddSubFxCore -lws2_32)
133- INSTALL (TARGETS ZynAddSubFxCore RUNTIME DESTINATION "${PLUGIN_DIR} " )
134- ELSE (LMMS_BUILD_WIN32)
135- INSTALL (TARGETS ZynAddSubFxCore LIBRARY DESTINATION "${PLUGIN_DIR} " )
136- ENDIF (LMMS_BUILD_WIN32)
108+ )
109+
110+ add_library (ZynAddSubFxCoreObjs OBJECT LocalZynAddSubFx.cpp ${zynaddsubfx_core_SRCS} )
111+ add_library (ZynAddSubFxCore INTERFACE )
112+ target_sources (ZynAddSubFxCore INTERFACE
113+ $<TARGET_OBJECTS:ZynAddSubFxCoreObjs>
114+ $<TARGET_OBJECTS:zynaddsubfx_nio>
115+ )
116+
117+ target_link_libraries (ZynAddSubFxCore INTERFACE
118+ ${FFTW3F_LIBRARIES}
119+ ${QT_LIBRARIES}
120+ Qt5::Widgets
121+ Qt5::Xml
122+ Threads::Threads
123+ ZLIB::ZLIB
124+ )
137125
138126LINK_DIRECTORIES ("${CMAKE_CURRENT_BINARY_DIR} /.." )
139127IF (LMMS_BUILD_LINUX)
@@ -144,25 +132,31 @@ ELSE()
144132 SET (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX} /${PLUGIN_DIR} " )
145133ENDIF ()
146134BUILD_PLUGIN(zynaddsubfx ZynAddSubFx.cpp ZynAddSubFx.h MOCFILES ZynAddSubFx.h EMBEDDED_RESOURCES artwork.png logo.png)
147- TARGET_LINK_LIBRARIES (zynaddsubfx -lZynAddSubFxCore)
148- ADD_DEPENDENCIES (zynaddsubfx ZynAddSubFxCore)
135+ target_link_libraries (zynaddsubfx ZynAddSubFxCore)
149136
150- IF (WIN32 )
137+ if (MSVC )
138+ set (WINRC "${CMAKE_CURRENT_BINARY_DIR} /zynaddsubfx.rc" )
139+ elseif (WIN32 )
151140 SET (WINRC "${CMAKE_CURRENT_BINARY_DIR} /zynaddsubfxrc.obj" )
152141 ADD_CUSTOM_COMMAND (OUTPUT "${WINRC} "
153142 COMMAND "${CMAKE_RC_COMPILER} "
154143 "-I\" ${CMAKE_CURRENT_SOURCE_DIR} \" "
155144 "-o\" ${CMAKE_CURRENT_BINARY_DIR} /zynaddsubfxrc.obj\" "
156145 "-i\" ${CMAKE_CURRENT_BINARY_DIR} /zynaddsubfx.rc\" "
157146 DEPENDS "${CMAKE_CURRENT_BINARY_DIR} /zynaddsubfx.rc" )
158- ENDIF ( WIN32 )
147+ endif ( )
159148
160149# Use libraries in non-standard directories (e.g., another version of Qt)
161150SET (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE )
162151
163152ADD_SUBDIRECTORY ("${LMMS_SOURCE_DIR} /src/common" common)
164153
165- ADD_EXECUTABLE (RemoteZynAddSubFx RemoteZynAddSubFx.cpp ${LMMS_COMMON_SRCS} "${WINRC} " )
154+ add_executable (RemoteZynAddSubFx
155+ RemoteZynAddSubFx.cpp
156+ ${LMMS_COMMON_SRCS}
157+ "${WINRC} "
158+ $<TARGET_OBJECTS:zynaddsubfx_gui>
159+ )
166160INSTALL (TARGETS RemoteZynAddSubFx RUNTIME DESTINATION "${PLUGIN_DIR} " )
167161# Needed to deploy dependencies of RemoteZynAddSubFx
168162SET_PROPERTY (GLOBAL APPEND PROPERTY PLUGINS_BUILT "RemoteZynAddSubFx" )
@@ -182,8 +176,7 @@ IF(FLTK_CONFIG AND NOT (LMMS_BUILD_APPLE OR LMMS_BUILD_WIN32))
182176 STRING (REPLACE " " ";" FLTK_FILTERED_LDFLAGS ${FLTK_FILTERED_LDFLAGS} )
183177 LIST (REMOVE_ITEM FLTK_FILTERED_LDFLAGS -lX11)
184178ENDIF ()
185- TARGET_LINK_LIBRARIES (RemoteZynAddSubFx zynaddsubfx_gui -lZynAddSubFxCore ${FLTK_FILTERED_LDFLAGS} -lpthread )
186- ADD_DEPENDENCIES (RemoteZynAddSubFx ZynAddSubFxCore)
179+ target_link_libraries (RemoteZynAddSubFx ZynAddSubFxCore ${FLTK_FILTERED_LDFLAGS} )
187180
188181if (LMMS_HAVE_LIBRT)
189182 target_link_libraries (RemoteZynAddSubFx rt)
@@ -199,13 +192,6 @@ ENDIF(LMMS_BUILD_WIN32)
199192
200193
201194IF (LMMS_BUILD_WIN32)
202- add_custom_command (
203- TARGET ZynAddSubFxCore
204- POST_BUILD
205- COMMAND "${STRIP_COMMAND} " "$<TARGET_FILE:ZynAddSubFxCore>"
206- VERBATIM
207- COMMAND_EXPAND_LISTS
208- )
209195 add_custom_command (
210196 TARGET RemoteZynAddSubFx
211197 POST_BUILD
0 commit comments