Signed-off-by: falkTX <falktx@falktx.com>pull/321/head
@@ -142,7 +142,7 @@ function(dpf_add_plugin NAME) | |||
if((NOT WIN32) AND (NOT APPLE) AND (NOT HAIKU)) | |||
target_link_libraries("${NAME}-ui" PRIVATE "dl") | |||
endif() | |||
# add the files containing Objective-C classes, recompiled under namespace | |||
# add the files containing Objective-C classes | |||
dpf__add_plugin_specific_ui_sources("${NAME}-ui") | |||
else() | |||
add_library("${NAME}-ui" INTERFACE) | |||
@@ -468,9 +468,9 @@ function(dpf__add_dgl_cairo) | |||
if(NOT APPLE) | |||
target_sources(dgl-cairo PRIVATE | |||
"${DPF_ROOT_DIR}/dgl/src/pugl.cpp") | |||
else() # Note: macOS pugl will be built as part of DistrhoUI_macOS.mm | |||
#target_sources(dgl-opengl PRIVATE | |||
# "${DPF_ROOT_DIR}/dgl/src/pugl.mm") | |||
else() | |||
target_sources(dgl-opengl PRIVATE | |||
"${DPF_ROOT_DIR}/dgl/src/pugl.mm") | |||
endif() | |||
target_include_directories(dgl-cairo PUBLIC | |||
"${DPF_ROOT_DIR}/dgl") | |||
@@ -530,9 +530,9 @@ function(dpf__add_dgl_opengl) | |||
if(NOT APPLE) | |||
target_sources(dgl-opengl PRIVATE | |||
"${DPF_ROOT_DIR}/dgl/src/pugl.cpp") | |||
else() # Note: macOS pugl will be built as part of DistrhoUI_macOS.mm | |||
#target_sources(dgl-opengl PRIVATE | |||
# "${DPF_ROOT_DIR}/dgl/src/pugl.mm") | |||
else() | |||
target_sources(dgl-opengl PRIVATE | |||
"${DPF_ROOT_DIR}/dgl/src/pugl.mm") | |||
endif() | |||
target_include_directories(dgl-opengl PUBLIC | |||
"${DPF_ROOT_DIR}/dgl") | |||
@@ -556,19 +556,12 @@ endfunction() | |||
# dpf__add_plugin_specific_ui_sources | |||
# ------------------------------------------------------------------------------ | |||
# | |||
# Compile plugin-specific UI sources into the target designated by the given | |||
# name. There are some special considerations here: | |||
# - On most platforms, sources can be compiled only once, as part of DGL; | |||
# - On macOS, for any sources which define Objective-C interfaces, these must | |||
# be recompiled for each plugin under a unique namespace. In this case, the | |||
# name must be a plugin-specific identifier, and it will be used for computing | |||
# the unique ID along with the project version. | |||
# Compile system specific files, for now it is just Objective-C code | |||
# | |||
function(dpf__add_plugin_specific_ui_sources NAME) | |||
if(APPLE) | |||
target_sources("${NAME}" PRIVATE | |||
"${DPF_ROOT_DIR}/distrho/DistrhoUI_macOS.mm") | |||
string(SHA256 _hash "${NAME}:${PROJECT_VERSION}") | |||
target_compile_definitions("${NAME}" PUBLIC "PUGL_NAMESPACE=${_hash}") | |||
endif() | |||
endfunction() | |||
@@ -119,9 +119,13 @@ START_NAMESPACE_DGL | |||
# ifndef DISTRHO_MACOS_NAMESPACE_MACRO | |||
# define DISTRHO_MACOS_NAMESPACE_MACRO_HELPER(NS, SEP, INTERFACE) NS ## SEP ## INTERFACE | |||
# define DISTRHO_MACOS_NAMESPACE_MACRO(NS, INTERFACE) DISTRHO_MACOS_NAMESPACE_MACRO_HELPER(NS, _, INTERFACE) | |||
# define PuglStubView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PuglStubView) | |||
# define PuglWrapperView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PuglWrapperView) | |||
# define PuglWindow DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PuglWindow) | |||
# define PuglCairoView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PuglCairoView) | |||
# define PuglOpenGLView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PuglOpenGLView) | |||
# define PuglStubView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PuglStubView) | |||
# define PuglVulkanView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PuglVulkanView) | |||
# define PuglWindow DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PuglWindow) | |||
# define PuglWindowDelegate DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PuglWindowDelegate) | |||
# define PuglWrapperView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PuglWrapperView) | |||
# endif | |||
# pragma clang diagnostic push | |||
# pragma clang diagnostic ignored "-Wdeprecated-declarations" | |||
@@ -14,9 +14,7 @@ | |||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
*/ | |||
#ifndef PUGL_NAMESPACE | |||
# error PUGL_NAMESPACE must be set when compiling this file | |||
#endif | |||
// A few utils declared in DistrhoUI.cpp but defined here because they use Obj-C | |||
#include "src/DistrhoPluginChecks.h" | |||
#include "src/DistrhoDefines.h" | |||
@@ -25,14 +23,13 @@ | |||
# import <Cocoa/Cocoa.h> | |||
#endif | |||
// A few utils declared in DistrhoUI.cpp but defined here because they uses Obj-C | |||
#if DISTRHO_UI_FILE_BROWSER | |||
# define DISTRHO_FILE_BROWSER_DIALOG_HPP_INCLUDED | |||
# define FILE_BROWSER_DIALOG_DISTRHO_NAMESPACE | |||
START_NAMESPACE_DISTRHO | |||
# include "extra/FileBrowserDialogImpl.hpp" | |||
END_NAMESPACE_DISTRHO | |||
# import "extra/FileBrowserDialogImpl.cpp" | |||
# include "extra/FileBrowserDialogImpl.cpp" | |||
#endif | |||
#if DISTRHO_PLUGIN_HAS_EXTERNAL_UI | |||
@@ -52,16 +49,4 @@ double getDesktopScaleFactor(const uintptr_t parentWindowHandle) | |||
return [NSScreen mainScreen].backingScaleFactor; | |||
} | |||
END_NAMESPACE_DISTRHO | |||
#else // DISTRHO_PLUGIN_HAS_EXTERNAL_UI | |||
# include "../dgl/Base.hpp" | |||
# define DISTRHO_MACOS_NAMESPACE_MACRO_HELPER(DGL_NS, SEP, PUGL_NS, INTERFACE) DGL_NS ## SEP ## PUGL_NS ## SEP ## INTERFACE | |||
# define DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NS, PUGL_NS, INTERFACE) DISTRHO_MACOS_NAMESPACE_MACRO_HELPER(DGL_NS, _, PUGL_NS, INTERFACE) | |||
# define PuglCairoView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PUGL_NAMESPACE, CairoView) | |||
# define PuglOpenGLView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PUGL_NAMESPACE, OpenGLView) | |||
# define PuglStubView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PUGL_NAMESPACE, StubView) | |||
# define PuglVulkanView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PUGL_NAMESPACE, VulkanView) | |||
# define PuglWindow DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PUGL_NAMESPACE, Window) | |||
# define PuglWindowDelegate DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PUGL_NAMESPACE, WindowDelegate) | |||
# define PuglWrapperView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PUGL_NAMESPACE, WrapperView) | |||
# import "src/pugl.mm" | |||
#endif // DISTRHO_PLUGIN_HAS_EXTERNAL_UI | |||
#endif |
@@ -48,7 +48,6 @@ | |||
START_NAMESPACE_DISTRHO | |||
# include "../extra/FileBrowserDialogImpl.hpp" | |||
END_NAMESPACE_DISTRHO | |||
# include "../extra/FileBrowserDialogImpl.hpp" | |||
# include "../extra/FileBrowserDialogImpl.cpp" | |||
#endif | |||