Skip to content

Commit af8fe11

Browse files
committed
Update DPF
Signed-off-by: falkTX <[email protected]>
1 parent 72f62d2 commit af8fe11

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+1395
-275
lines changed

dpf/CMakeLists.txt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# DISTRHO Plugin Framework (DPF)
22
# Copyright (C) 2021 Jean Pierre Cimalando <[email protected]>
3-
# Copyright (C) 2022-2024 Filipe Coelho <[email protected]>
3+
# Copyright (C) 2022-2025 Filipe Coelho <[email protected]>
44
#
55
# SPDX-License-Identifier: ISC
66

7-
cmake_minimum_required(VERSION 3.7)
7+
cmake_minimum_required(VERSION 3.8)
88

99
project(DPF)
1010

@@ -34,11 +34,11 @@ if(DPF_LIBRARIES)
3434
if(PKG_CONFIG_FOUND)
3535
pkg_check_modules(CAIRO "cairo")
3636
if(CAIRO_FOUND AND (NOT HAIKU))
37-
dpf__add_dgl_cairo(TRUE, TRUE)
37+
dpf__add_dgl_cairo(TRUE, TRUE, TRUE)
3838
endif()
3939
endif()
40-
dpf__add_dgl_external(TRUE)
41-
dpf__add_dgl_opengl(TRUE, TRUE)
40+
dpf__add_dgl_external(TRUE, TRUE)
41+
dpf__add_dgl_opengl(TRUE, TRUE, TRUE)
4242
endif()
4343

4444
if(DPF_EXAMPLES)

dpf/Makefile.plugins.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ HAVE_DGL = false
287287
endif
288288
endif
289289

290-
ifeq ($(HAVE_DGL)$(LINUX)$(USE_WEB_VIEW),truetruetrue)
290+
ifeq ($(HAVE_DGL)$(LINUX)$(UI_TYPE),truetruewebview)
291291
DGL_LIB_SHARED = $(shell $(CC) -print-file-name=Scrt1.o)
292292
endif
293293

dpf/cmake/DPF-plugin.cmake

Lines changed: 206 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -121,23 +121,33 @@ function(dpf_add_plugin NAME)
121121
set(_dgl_library)
122122
if(_dpf_plugin_FILES_UI)
123123
if(_dpf_plugin_UI_TYPE STREQUAL "cairo")
124-
dpf__add_dgl_cairo($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>> $<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>)
124+
dpf__add_dgl_cairo($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>>
125+
$<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
126+
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
125127
set(_dgl_library dgl-cairo)
126128
elseif(_dpf_plugin_UI_TYPE STREQUAL "external")
127-
dpf__add_dgl_external($<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>)
129+
dpf__add_dgl_external($<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
130+
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
128131
set(_dgl_library dgl-external)
129132
elseif(_dpf_plugin_UI_TYPE STREQUAL "opengl")
130-
dpf__add_dgl_opengl($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>> $<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>)
133+
dpf__add_dgl_opengl($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>>
134+
$<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
135+
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
131136
set(_dgl_library dgl-opengl)
132137
elseif(_dpf_plugin_UI_TYPE STREQUAL "opengl3")
133-
dpf__add_dgl_opengl3($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>> $<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>)
138+
dpf__add_dgl_opengl3($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>>
139+
$<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
140+
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
134141
set(_dgl_library dgl-opengl3)
135142
elseif(_dpf_plugin_UI_TYPE STREQUAL "vulkan")
136-
dpf__add_dgl_vulkan($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>> $<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>)
143+
dpf__add_dgl_vulkan($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>>
144+
$<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
145+
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
137146
set(_dgl_library dgl-vulkan)
138147
elseif(_dpf_plugin_UI_TYPE STREQUAL "webview")
139148
set(_dpf_plugin_USE_WEB_VIEW TRUE)
140-
dpf__add_dgl_external($<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>)
149+
dpf__add_dgl_external($<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
150+
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
141151
set(_dgl_library dgl-external)
142152
else()
143153
message(FATAL_ERROR "Unrecognized UI type for plugin: ${_dpf_plugin_UI_TYPE}")
@@ -234,6 +244,112 @@ function(dpf_add_plugin NAME)
234244
endforeach()
235245
endfunction()
236246

247+
# dpf_add_executable(target <args...>)
248+
# ------------------------------------------------------------------------------
249+
#
250+
# Add a simple executable built using the DISTRHO Plugin Framework.
251+
#
252+
# ------------------------------------------------------------------------------
253+
# Arguments:
254+
#
255+
# `UI_TYPE` <type>
256+
# the user interface type, can be one of the following:
257+
# - cairo
258+
# - external
259+
# - opengl (default)
260+
# - opengl3
261+
# - vulkan
262+
# - webview
263+
#
264+
# `NO_SHARED_RESOURCES`
265+
# do not build DPF shared resources (fonts, etc)
266+
#
267+
# `USE_FILE_BROWSER`
268+
# enable file browser dialog APIs
269+
#
270+
# `USE_WEB_VIEW`
271+
# enable web browser view APIs
272+
#
273+
function(dpf_add_executable NAME)
274+
set(options NO_SHARED_RESOURCES USE_FILE_BROWSER USE_WEB_VIEW)
275+
set(oneValueArgs UI_TYPE)
276+
cmake_parse_arguments(_dpf_plugin "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
277+
278+
if("${_dpf_plugin_UI_TYPE}" STREQUAL "")
279+
set(_dpf_plugin_UI_TYPE "opengl")
280+
endif()
281+
282+
set(_dgl_library)
283+
if(_dpf_plugin_UI_TYPE STREQUAL "cairo")
284+
dpf__add_dgl_cairo($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>>
285+
$<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
286+
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
287+
set(_dgl_library dgl-cairo)
288+
elseif(_dpf_plugin_UI_TYPE STREQUAL "external")
289+
dpf__add_dgl_external($<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
290+
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
291+
set(_dgl_library dgl-external)
292+
elseif(_dpf_plugin_UI_TYPE STREQUAL "opengl")
293+
dpf__add_dgl_opengl($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>>
294+
$<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
295+
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
296+
set(_dgl_library dgl-opengl)
297+
elseif(_dpf_plugin_UI_TYPE STREQUAL "opengl3")
298+
dpf__add_dgl_opengl3($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>>
299+
$<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
300+
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
301+
set(_dgl_library dgl-opengl3)
302+
elseif(_dpf_plugin_UI_TYPE STREQUAL "vulkan")
303+
dpf__add_dgl_vulkan($<NOT:$<BOOL:${_dpf_plugin_NO_SHARED_RESOURCES}>>
304+
$<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
305+
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
306+
set(_dgl_library dgl-vulkan)
307+
elseif(_dpf_plugin_UI_TYPE STREQUAL "webview")
308+
set(_dpf_plugin_USE_WEB_VIEW TRUE)
309+
dpf__add_dgl_external($<BOOL:${_dpf_plugin_USE_FILE_BROWSER}>
310+
$<BOOL:${_dpf_plugin_USE_WEB_VIEW}>)
311+
set(_dgl_library dgl-external)
312+
else()
313+
message(FATAL_ERROR "Unrecognized UI type for executable: ${_dpf_plugin_UI_TYPE}")
314+
endif()
315+
316+
set(_dgl_has_ui OFF)
317+
if(_dgl_library)
318+
set(_dgl_has_ui ON)
319+
endif()
320+
321+
dpf__create_dummy_source_list(_no_srcs)
322+
dpf__add_executable("${NAME}" ${_no_srcs})
323+
target_include_directories("${NAME}" PUBLIC "${DPF_ROOT_DIR}/distrho")
324+
325+
if(_dpf_plugin_USE_FILE_BROWSER)
326+
target_compile_definitions("${NAME}" PUBLIC "DGL_USE_FILE_BROWSER")
327+
endif()
328+
329+
if(_dpf_plugin_USE_WEB_VIEW)
330+
target_compile_definitions("${NAME}" PUBLIC "DGL_USE_WEB_VIEW")
331+
endif()
332+
333+
if((NOT WIN32) AND (NOT APPLE) AND (NOT HAIKU))
334+
target_link_libraries("${NAME}" PRIVATE "dl")
335+
endif()
336+
337+
if(_dgl_library)
338+
# make sure that all code will see DGL_* definitions
339+
target_link_libraries("${NAME}" PUBLIC
340+
"${_dgl_library}"
341+
"${_dgl_library}-definitions"
342+
dgl-system-libs-definitions
343+
dgl-system-libs)
344+
# extra linkage for linux web view
345+
if(LINUX AND _dpf_plugin_USE_WEB_VIEW)
346+
target_link_libraries("${NAME}" PRIVATE "rt")
347+
endif()
348+
# add the files containing C++17 or Objective-C classes
349+
dpf__add_plugin_specific_ui_sources("${NAME}" "${_dpf_plugin_USE_WEB_VIEW}")
350+
endif()
351+
endfunction()
352+
237353
# ------------------------------------------------------------------------------
238354
# DPF private functions (prefixed with `dpf__`)
239355
# ------------------------------------------------------------------------------
@@ -661,7 +777,7 @@ endfunction()
661777
#
662778
# Add the Cairo variant of DGL, if not already available.
663779
#
664-
function(dpf__add_dgl_cairo SHARED_RESOURCES USE_FILE_BROWSER)
780+
function(dpf__add_dgl_cairo SHARED_RESOURCES USE_FILE_BROWSER USE_WEB_VIEW)
665781
if(TARGET dgl-cairo)
666782
return()
667783
endif()
@@ -710,6 +826,21 @@ function(dpf__add_dgl_cairo SHARED_RESOURCES USE_FILE_BROWSER)
710826
target_compile_definitions(dgl-cairo PUBLIC "DGL_USE_FILE_BROWSER")
711827
endif()
712828

829+
if(USE_WEB_VIEW)
830+
target_compile_definitions(dgl-cairo PUBLIC "DGL_USE_FILE_BROWSER")
831+
if(APPLE)
832+
find_library(APPLE_WEBKIT_FRAMEWORK "WebKit")
833+
target_link_libraries(dgl-cairo PRIVATE "${APPLE_WEBKIT_FRAMEWORK}")
834+
elseif(WIN32)
835+
target_sources(dgl-cairo PRIVATE
836+
"${DPF_ROOT_DIR}/dgl/src/WebViewWin32.cpp")
837+
set_source_files_properties("${DPF_ROOT_DIR}/dgl/src/WebViewWin32.cpp"
838+
PROPERTIES
839+
COMPILE_FLAGS
840+
$<IF:$<BOOL:${MSVC}>,/std:c++17,-std=gnu++17>)
841+
endif()
842+
endif()
843+
713844
dpf__add_dgl_system_libs()
714845
target_link_libraries(dgl-cairo PRIVATE dgl-system-libs)
715846

@@ -730,7 +861,7 @@ endfunction()
730861
#
731862
# Add the external variant of DGL, if not already available.
732863
#
733-
function(dpf__add_dgl_external USE_FILE_BROWSER)
864+
function(dpf__add_dgl_external USE_FILE_BROWSER USE_WEB_VIEW)
734865
if(TARGET dgl-external)
735866
return()
736867
endif()
@@ -770,6 +901,21 @@ function(dpf__add_dgl_external USE_FILE_BROWSER)
770901
target_compile_definitions(dgl-external PUBLIC "DGL_USE_FILE_BROWSER")
771902
endif()
772903

904+
if(USE_WEB_VIEW)
905+
target_compile_definitions(dgl-external PUBLIC "DGL_USE_WEB_VIEW")
906+
if(APPLE)
907+
find_library(APPLE_WEBKIT_FRAMEWORK "WebKit")
908+
target_link_libraries(dgl-external PRIVATE "${APPLE_WEBKIT_FRAMEWORK}")
909+
elseif(WIN32)
910+
target_sources(dgl-external PRIVATE
911+
"${DPF_ROOT_DIR}/dgl/src/WebViewWin32.cpp")
912+
set_source_files_properties("${DPF_ROOT_DIR}/dgl/src/WebViewWin32.cpp"
913+
PROPERTIES
914+
COMPILE_FLAGS
915+
$<IF:$<BOOL:${MSVC}>,/std:c++17,-std=gnu++17>)
916+
endif()
917+
endif()
918+
773919
dpf__add_dgl_system_libs()
774920
target_compile_definitions(dgl-external PUBLIC "DGL_NO_SHARED_RESOURCES")
775921
target_link_libraries(dgl-external PRIVATE dgl-system-libs)
@@ -786,7 +932,7 @@ endfunction()
786932
#
787933
# Add the OpenGL variant of DGL, if not already available.
788934
#
789-
function(dpf__add_dgl_opengl SHARED_RESOURCES USE_FILE_BROWSER)
935+
function(dpf__add_dgl_opengl SHARED_RESOURCES USE_FILE_BROWSER USE_WEB_VIEW)
790936
if(TARGET dgl-opengl)
791937
return()
792938
endif()
@@ -841,6 +987,21 @@ function(dpf__add_dgl_opengl SHARED_RESOURCES USE_FILE_BROWSER)
841987
target_compile_definitions(dgl-opengl PUBLIC "DGL_USE_FILE_BROWSER")
842988
endif()
843989

990+
if(USE_WEB_VIEW)
991+
target_compile_definitions(dgl-opengl PUBLIC "DGL_USE_WEB_VIEW")
992+
if(APPLE)
993+
find_library(APPLE_WEBKIT_FRAMEWORK "WebKit")
994+
target_link_libraries(dgl-opengl PRIVATE "${APPLE_WEBKIT_FRAMEWORK}")
995+
elseif(WIN32)
996+
target_sources(dgl-opengl PRIVATE
997+
"${DPF_ROOT_DIR}/dgl/src/WebViewWin32.cpp")
998+
set_source_files_properties("${DPF_ROOT_DIR}/dgl/src/WebViewWin32.cpp"
999+
PROPERTIES
1000+
COMPILE_FLAGS
1001+
$<IF:$<BOOL:${MSVC}>,/std:c++17,-std=gnu++17>)
1002+
endif()
1003+
endif()
1004+
8441005
dpf__add_dgl_system_libs()
8451006
target_link_libraries(dgl-opengl PRIVATE dgl-system-libs)
8461007

@@ -856,7 +1017,7 @@ endfunction()
8561017
#
8571018
# Add the OpenGL3 variant of DGL, if not already available.
8581019
#
859-
function(dpf__add_dgl_opengl3 SHARED_RESOURCES USE_FILE_BROWSER)
1020+
function(dpf__add_dgl_opengl3 SHARED_RESOURCES USE_FILE_BROWSER USE_WEB_VIEW)
8601021
if(TARGET dgl-opengl3)
8611022
return()
8621023
endif()
@@ -911,6 +1072,21 @@ function(dpf__add_dgl_opengl3 SHARED_RESOURCES USE_FILE_BROWSER)
9111072
target_compile_definitions(dgl-opengl3 PUBLIC "DGL_USE_FILE_BROWSER")
9121073
endif()
9131074

1075+
if(USE_WEB_VIEW)
1076+
target_compile_definitions(dgl-opengl3 PUBLIC "DGL_USE_WEB_VIEW")
1077+
if(APPLE)
1078+
find_library(APPLE_WEBKIT_FRAMEWORK "WebKit")
1079+
target_link_libraries(dgl-opengl3 PRIVATE "${APPLE_WEBKIT_FRAMEWORK}")
1080+
elseif(WIN32)
1081+
target_sources(dgl-opengl3 PRIVATE
1082+
"${DPF_ROOT_DIR}/dgl/src/WebViewWin32.cpp")
1083+
set_source_files_properties("${DPF_ROOT_DIR}/dgl/src/WebViewWin32.cpp"
1084+
PROPERTIES
1085+
COMPILE_FLAGS
1086+
$<IF:$<BOOL:${MSVC}>,/std:c++17,-std=gnu++17>)
1087+
endif()
1088+
endif()
1089+
9141090
dpf__add_dgl_system_libs()
9151091
target_link_libraries(dgl-opengl3 PRIVATE dgl-system-libs)
9161092

@@ -926,7 +1102,7 @@ endfunction()
9261102
#
9271103
# Add the Vulkan variant of DGL, if not already available.
9281104
#
929-
function(dpf__add_dgl_vulkan SHARED_RESOURCES USE_FILE_BROWSER)
1105+
function(dpf__add_dgl_vulkan SHARED_RESOURCES USE_FILE_BROWSER USE_WEB_VIEW)
9301106
if(TARGET dgl-vulkan)
9311107
return()
9321108
endif()
@@ -976,6 +1152,21 @@ function(dpf__add_dgl_vulkan SHARED_RESOURCES USE_FILE_BROWSER)
9761152
target_compile_definitions(dgl-vulkan PUBLIC "DGL_USE_FILE_BROWSER")
9771153
endif()
9781154

1155+
if(USE_WEB_VIEW)
1156+
target_compile_definitions(dgl-vulkan PUBLIC "DGL_USE_WEB_VIEW")
1157+
if(APPLE)
1158+
find_library(APPLE_WEBKIT_FRAMEWORK "WebKit")
1159+
target_link_libraries(dgl-vulkan PRIVATE "${APPLE_WEBKIT_FRAMEWORK}")
1160+
elseif(WIN32)
1161+
target_sources(dgl-vulkan PRIVATE
1162+
"${DPF_ROOT_DIR}/dgl/src/WebViewWin32.cpp")
1163+
set_source_files_properties("${DPF_ROOT_DIR}/dgl/src/WebViewWin32.cpp"
1164+
PROPERTIES
1165+
COMPILE_FLAGS
1166+
$<IF:$<BOOL:${MSVC}>,/std:c++17,-std=gnu++17>)
1167+
endif()
1168+
endif()
1169+
9791170
dpf__add_dgl_system_libs()
9801171
target_link_libraries(dgl-vulkan PRIVATE dgl-system-libs)
9811172

@@ -1002,13 +1193,10 @@ function(dpf__add_plugin_specific_ui_sources NAME USE_WEB_VIEW)
10021193
elseif(WIN32 AND USE_WEB_VIEW)
10031194
target_sources("${NAME}" PRIVATE
10041195
"${DPF_ROOT_DIR}/distrho/DistrhoUI_win32.cpp")
1005-
if (MSVC)
1006-
set_source_files_properties("${DPF_ROOT_DIR}/distrho/DistrhoUI_win32.cpp"
1007-
PROPERTIES COMPILE_FLAGS /std:c++17)
1008-
else()
1009-
set_source_files_properties("${DPF_ROOT_DIR}/distrho/DistrhoUI_win32.cpp"
1010-
PROPERTIES COMPILE_FLAGS -std=gnu++17)
1011-
endif()
1196+
set_source_files_properties("${DPF_ROOT_DIR}/distrho/DistrhoUI_win32.cpp"
1197+
PROPERTIES
1198+
COMPILE_FLAGS
1199+
$<IF:$<BOOL:${MSVC}>,/std:c++17,-std=gnu++17>)
10121200
target_link_libraries("${NAME}" PRIVATE "ole32" "uuid")
10131201
endif()
10141202
endfunction()

0 commit comments

Comments
 (0)