@@ -75,7 +75,7 @@ include(CMakeParseArguments)
75
75
# `jack`, `ladspa`, `dssi`, `lv2`, `vst2`, `vst3`, `clap`
76
76
#
77
77
# `UI_TYPE` <type>
78
- # the user interface type: `opengl` (default), `cairo`
78
+ # the user interface type: `opengl` (default), `cairo`, `external`
79
79
#
80
80
# `MONOLITHIC`
81
81
# build LV2 as a single binary for UI and DSP
@@ -101,18 +101,26 @@ function(dpf_add_plugin NAME)
101
101
endif ()
102
102
103
103
set (_dgl_library )
104
+ set (_dgl_external OFF )
104
105
if (_dpf_plugin_FILES_UI )
105
106
if (_dpf_plugin_UI_TYPE STREQUAL "cairo" )
106
107
dpf__add_dgl_cairo ("${_dpf_plugin_NO_SHARED_RESOURCES} " )
107
108
set (_dgl_library dgl-cairo )
108
109
elseif (_dpf_plugin_UI_TYPE STREQUAL "opengl" )
109
110
dpf__add_dgl_opengl ("${_dpf_plugin_NO_SHARED_RESOURCES} " )
110
111
set (_dgl_library dgl-opengl )
112
+ elseif (_dpf_plugin_UI_TYPE STREQUAL "external" )
113
+ set (_dgl_external ON )
111
114
else ()
112
115
message (FATAL_ERROR "Unrecognized UI type for plugin: ${_dpf_plugin_UI_TYPE} " )
113
116
endif ()
114
117
endif ()
115
118
119
+ set (_dgl_has_ui OFF )
120
+ if (_dgl_library OR _dgl_external )
121
+ set (_dgl_has_ui ON )
122
+ endif ()
123
+
116
124
###
117
125
dpf__ensure_sources_non_empty (_dpf_plugin_FILES_COMMON )
118
126
dpf__ensure_sources_non_empty (_dpf_plugin_FILES_DSP )
@@ -127,44 +135,55 @@ function(dpf_add_plugin NAME)
127
135
target_link_libraries ("${NAME} " PRIVATE "dl" )
128
136
endif ()
129
137
130
- if (_dgl_library )
138
+ if (_dgl_library AND NOT _dgl_external )
131
139
# make sure that all code will see DGL_* definitions
132
140
target_link_libraries ("${NAME} " PUBLIC
133
141
"${_dgl_library} -definitions"
134
142
dgl-system-libs-definitions )
143
+ elseif (_dgl_external )
144
+ target_link_libraries ("${NAME} " PUBLIC
145
+ dgl-system-libs-definitions )
135
146
endif ()
136
147
137
148
dpf__add_static_library ("${NAME} -dsp" ${_dpf_plugin_FILES_DSP} )
138
149
target_link_libraries ("${NAME} -dsp" PUBLIC "${NAME} " )
139
150
140
- if (_dgl_library )
151
+ if (_dgl_library AND NOT _dgl_external )
141
152
dpf__add_static_library ("${NAME} -ui" ${_dpf_plugin_FILES_UI} )
142
153
target_link_libraries ("${NAME} -ui" PUBLIC "${NAME} " ${_dgl_library} )
143
154
if ((NOT WIN32 ) AND (NOT APPLE ) AND (NOT HAIKU ))
144
155
target_link_libraries ("${NAME} -ui" PRIVATE "dl" )
145
156
endif ()
146
157
# add the files containing Objective-C classes
147
158
dpf__add_plugin_specific_ui_sources ("${NAME} -ui" )
159
+ elseif (_dgl_external )
160
+ dpf__add_static_library ("${NAME} -ui" ${_dpf_plugin_FILES_UI} )
161
+ target_link_libraries ("${NAME} -ui" PUBLIC "${NAME} " )
162
+ if ((NOT WIN32 ) AND (NOT APPLE ) AND (NOT HAIKU ))
163
+ target_link_libraries ("${NAME} -ui" PRIVATE "dl" )
164
+ endif ()
165
+ # add the files containing Objective-C classes
166
+ dpf__add_plugin_specific_ui_sources ("${NAME} -ui" )
148
167
else ()
149
168
add_library ("${NAME} -ui" INTERFACE )
150
169
endif ()
151
170
152
171
###
153
172
foreach (_target ${_dpf_plugin_TARGETS} )
154
173
if (_target STREQUAL "jack" )
155
- dpf__build_jack ("${NAME} " "${_dgl_library } " )
174
+ dpf__build_jack ("${NAME} " "${_dgl_has_ui } " )
156
175
elseif (_target STREQUAL "ladspa" )
157
176
dpf__build_ladspa ("${NAME} " )
158
177
elseif (_target STREQUAL "dssi" )
159
- dpf__build_dssi ("${NAME} " "${_dgl_library } " )
178
+ dpf__build_dssi ("${NAME} " "${_dgl_has_ui } " )
160
179
elseif (_target STREQUAL "lv2" )
161
- dpf__build_lv2 ("${NAME} " "${_dgl_library } " "${_dpf_plugin_MONOLITHIC} " )
180
+ dpf__build_lv2 ("${NAME} " "${_dgl_has_ui } " "${_dpf_plugin_MONOLITHIC} " )
162
181
elseif (_target STREQUAL "vst2" )
163
- dpf__build_vst2 ("${NAME} " "${_dgl_library } " )
182
+ dpf__build_vst2 ("${NAME} " "${_dgl_has_ui } " )
164
183
elseif (_target STREQUAL "vst3" )
165
- dpf__build_vst3 ("${NAME} " "${_dgl_library } " )
184
+ dpf__build_vst3 ("${NAME} " "${_dgl_has_ui } " )
166
185
elseif (_target STREQUAL "clap" )
167
- dpf__build_clap ("${NAME} " "${_dgl_library } " )
186
+ dpf__build_clap ("${NAME} " "${_dgl_has_ui } " )
168
187
else ()
169
188
message (FATAL_ERROR "Unrecognized target type for plugin: ${_target} " )
170
189
endif ()
@@ -184,12 +203,12 @@ endfunction()
184
203
#
185
204
# Add build rules for a JACK/Standalone program.
186
205
#
187
- function (dpf__build_jack NAME DGL_LIBRARY )
206
+ function (dpf__build_jack NAME HAS_UI )
188
207
dpf__create_dummy_source_list (_no_srcs )
189
208
190
209
dpf__add_executable ("${NAME} -jack" ${_no_srcs} )
191
210
dpf__add_plugin_main ("${NAME} -jack" "jack" )
192
- dpf__add_ui_main ("${NAME} -jack" "jack" "${DGL_LIBRARY } " )
211
+ dpf__add_ui_main ("${NAME} -jack" "jack" "${HAS_UI } " )
193
212
target_link_libraries ("${NAME} -jack" PRIVATE "${NAME} -dsp" "${NAME} -ui" )
194
213
set_target_properties ("${NAME} -jack" PROPERTIES
195
214
RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR} /bin/$<0:>"
@@ -267,7 +286,7 @@ endfunction()
267
286
#
268
287
# Add build rules for a DSSI plugin.
269
288
#
270
- function (dpf__build_dssi NAME DGL_LIBRARY )
289
+ function (dpf__build_dssi NAME HAS_UI )
271
290
find_package (PkgConfig )
272
291
pkg_check_modules (LIBLO "liblo" )
273
292
if (NOT LIBLO_FOUND )
@@ -288,9 +307,9 @@ function(dpf__build_dssi NAME DGL_LIBRARY)
288
307
OUTPUT_NAME "${NAME} -dssi"
289
308
PREFIX "" )
290
309
291
- if (DGL_LIBRARY )
310
+ if (HAS_UI )
292
311
dpf__add_executable ("${NAME} -dssi-ui" ${_no_srcs} )
293
- dpf__add_ui_main ("${NAME} -dssi-ui" "dssi" "${DGL_LIBRARY } " )
312
+ dpf__add_ui_main ("${NAME} -dssi-ui" "dssi" "${HAS_UI } " )
294
313
target_link_libraries ("${NAME} -dssi-ui" PRIVATE "${NAME} -ui" )
295
314
set_target_properties ("${NAME} -dssi-ui" PROPERTIES
296
315
RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR} /bin/${NAME} -dssi/$<0:>"
@@ -308,12 +327,12 @@ endfunction()
308
327
#
309
328
# Add build rules for an LV2 plugin.
310
329
#
311
- function (dpf__build_lv2 NAME DGL_LIBRARY MONOLITHIC )
330
+ function (dpf__build_lv2 NAME HAS_UI MONOLITHIC )
312
331
dpf__create_dummy_source_list (_no_srcs )
313
332
314
333
dpf__add_module ("${NAME} -lv2" ${_no_srcs} )
315
334
dpf__add_plugin_main ("${NAME} -lv2" "lv2" )
316
- if (DGL_LIBRARY AND MONOLITHIC )
335
+ if (HAS_UI AND MONOLITHIC )
317
336
dpf__set_module_export_list ("${NAME} -lv2" "lv2" )
318
337
else ()
319
338
dpf__set_module_export_list ("${NAME} -lv2" "lv2-dsp" )
@@ -325,15 +344,15 @@ function(dpf__build_lv2 NAME DGL_LIBRARY MONOLITHIC)
325
344
OUTPUT_NAME "${NAME} _dsp"
326
345
PREFIX "" )
327
346
328
- if (DGL_LIBRARY )
347
+ if (HAS_UI )
329
348
if (MONOLITHIC )
330
- dpf__add_ui_main ("${NAME} -lv2" "lv2" "${DGL_LIBRARY } " )
349
+ dpf__add_ui_main ("${NAME} -lv2" "lv2" "${HAS_UI } " )
331
350
target_link_libraries ("${NAME} -lv2" PRIVATE "${NAME} -ui" )
332
351
set_target_properties ("${NAME} -lv2" PROPERTIES
333
352
OUTPUT_NAME "${NAME} " )
334
353
else ()
335
354
dpf__add_module ("${NAME} -lv2-ui" ${_no_srcs} )
336
- dpf__add_ui_main ("${NAME} -lv2-ui" "lv2" "${DGL_LIBRARY } " )
355
+ dpf__add_ui_main ("${NAME} -lv2-ui" "lv2" "${HAS_UI } " )
337
356
dpf__set_module_export_list ("${NAME} -lv2-ui" "lv2-ui" )
338
357
target_link_libraries ("${NAME} -lv2-ui" PRIVATE "${NAME} -ui" )
339
358
set_target_properties ("${NAME} -lv2-ui" PROPERTIES
@@ -361,12 +380,12 @@ endfunction()
361
380
#
362
381
# Add build rules for a VST2 plugin.
363
382
#
364
- function (dpf__build_vst2 NAME DGL_LIBRARY )
383
+ function (dpf__build_vst2 NAME HAS_UI )
365
384
dpf__create_dummy_source_list (_no_srcs )
366
385
367
386
dpf__add_module ("${NAME} -vst2" ${_no_srcs} )
368
387
dpf__add_plugin_main ("${NAME} -vst2" "vst2" )
369
- dpf__add_ui_main ("${NAME} -vst2" "vst2" "${DGL_LIBRARY } " )
388
+ dpf__add_ui_main ("${NAME} -vst2" "vst2" "${HAS_UI } " )
370
389
dpf__set_module_export_list ("${NAME} -vst2" "vst2" )
371
390
target_link_libraries ("${NAME} -vst2" PRIVATE "${NAME} -dsp" "${NAME} -ui" )
372
391
set_target_properties ("${NAME} -vst2" PROPERTIES
@@ -439,14 +458,14 @@ endfunction()
439
458
#
440
459
# Add build rules for a VST3 plugin.
441
460
#
442
- function (dpf__build_vst3 NAME DGL_LIBRARY )
461
+ function (dpf__build_vst3 NAME HAS_UI )
443
462
dpf__determine_vst3_package_architecture (vst3_arch )
444
463
445
464
dpf__create_dummy_source_list (_no_srcs )
446
465
447
466
dpf__add_module ("${NAME} -vst3" ${_no_srcs} )
448
467
dpf__add_plugin_main ("${NAME} -vst3" "vst3" )
449
- dpf__add_ui_main ("${NAME} -vst3" "vst3" "${DGL_LIBRARY } " )
468
+ dpf__add_ui_main ("${NAME} -vst3" "vst3" "${HAS_UI } " )
450
469
dpf__set_module_export_list ("${NAME} -vst3" "vst3" )
451
470
target_link_libraries ("${NAME} -vst3" PRIVATE "${NAME} -dsp" "${NAME} -ui" )
452
471
set_target_properties ("${NAME} -vst3" PROPERTIES
@@ -481,12 +500,12 @@ endfunction()
481
500
#
482
501
# Add build rules for a VST2 plugin.
483
502
#
484
- function (dpf__build_clap NAME DGL_LIBRARY )
503
+ function (dpf__build_clap NAME HAS_UI )
485
504
dpf__create_dummy_source_list (_no_srcs )
486
505
487
506
dpf__add_module ("${NAME} -clap" ${_no_srcs} )
488
507
dpf__add_plugin_main ("${NAME} -clap" "clap" )
489
- dpf__add_ui_main ("${NAME} -clap" "clap" "${DGL_LIBRARY } " )
508
+ dpf__add_ui_main ("${NAME} -clap" "clap" "${HAS_UI } " )
490
509
dpf__set_module_export_list ("${NAME} -clap" "clap" )
491
510
target_link_libraries ("${NAME} -clap" PRIVATE "${NAME} -dsp" "${NAME} -ui" )
492
511
set_target_properties ("${NAME} -clap" PROPERTIES
0 commit comments