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 | |||