@@ -63,6 +63,10 @@ ifneq (,$(filter arm%,$(TARGET_PROCESSOR))) | |||
CPU_ARM=true | |||
CPU_ARM_OR_AARCH64=true | |||
endif | |||
ifneq (,$(filter arm64%,$(TARGET_PROCESSOR))) | |||
CPU_ARM64=true | |||
CPU_ARM_OR_AARCH64=true | |||
endif | |||
ifneq (,$(filter aarch64%,$(TARGET_PROCESSOR))) | |||
CPU_AARCH64=true | |||
CPU_ARM_OR_AARCH64=true | |||
@@ -136,12 +140,17 @@ BASE_OPTS += -mtune=generic -msse -msse2 | |||
endif | |||
ifeq ($(CPU_ARM),true) | |||
ifneq ($(CPU_ARM64),true) | |||
BASE_OPTS += -mfpu=neon-vfpv4 -mfloat-abi=hard | |||
endif | |||
endif | |||
ifeq ($(MACOS),true) | |||
# MacOS linker flags | |||
LINK_OPTS = -fdata-sections -ffunction-sections -Wl,-dead_strip -Wl,-dead_strip_dylibs | |||
ifneq ($(SKIP_STRIPPING),true) | |||
LINK_OPTS += -Wl,-x | |||
endif | |||
else | |||
# Common linker flags | |||
LINK_OPTS = -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-O1 -Wl,--as-needed | |||
@@ -247,7 +256,7 @@ DGL_SYSTEM_LIBS += -lbe | |||
endif | |||
ifeq ($(MACOS),true) | |||
DGL_SYSTEM_LIBS += -framework Cocoa | |||
DGL_SYSTEM_LIBS += -framework Cocoa -framework CoreVideo | |||
endif | |||
ifeq ($(WINDOWS),true) | |||
@@ -55,6 +55,10 @@ endif | |||
OBJS_DSP = $(FILES_DSP:%=$(BUILD_DIR)/%.o) | |||
OBJS_UI = $(FILES_UI:%=$(BUILD_DIR)/%.o) | |||
ifeq ($(MACOS),true) | |||
OBJS_UI += $(BUILD_DIR)/DistrhoUI_macOS_$(NAME).mm.o | |||
endif | |||
# --------------------------------------------------------------------------------------------------------------------- | |||
# Set plugin binary file targets | |||
@@ -67,6 +71,17 @@ lv2_dsp = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_dsp$(LIB_EXT) | |||
lv2_ui = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_ui$(LIB_EXT) | |||
vst = $(TARGET_DIR)/$(NAME)-vst$(LIB_EXT) | |||
# --------------------------------------------------------------------------------------------------------------------- | |||
# Set plugin symbols to export | |||
ifeq ($(MACOS),true) | |||
SYMBOLS_LADSPA = -Wl,-exported_symbol,_ladspa_descriptor | |||
SYMBOLS_DSSI = -Wl,-exported_symbol,_ladspa_descriptor -Wl,-exported_symbol,_dssi_descriptor | |||
SYMBOLS_LV2 = -Wl,-exported_symbol,_lv2_descriptor -Wl,-exported_symbol,_lv2_generate_ttl | |||
SYMBOLS_LV2UI = -Wl,-exported_symbol,_lv2ui_descriptor | |||
SYMBOLS_VST2 = -Wl,-exported_symbol,_VSTPluginMain | |||
endif | |||
# --------------------------------------------------------------------------------------------------------------------- | |||
# Handle UI stuff, disable UI support automatically | |||
@@ -189,6 +204,11 @@ $(BUILD_DIR)/DistrhoUIMain_%.cpp.o: $(DPF_PATH)/distrho/DistrhoUIMain.cpp | |||
@echo "Compiling DistrhoUIMain.cpp ($*)" | |||
$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_$* -c -o $@ | |||
$(BUILD_DIR)/DistrhoUI_macOS_%.mm.o: $(DPF_PATH)/distrho/DistrhoUI_macOS.mm | |||
-@mkdir -p $(BUILD_DIR) | |||
@echo "Compiling DistrhoUI_macOS.mm ($*)" | |||
$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DPUGL_NAMESPACE=$* -DGL_SILENCE_DEPRECATION -Wno-deprecated-declarations -I$(DPF_PATH)/dgl/src -I$(DPF_PATH)/dgl/src/pugl-upstream/include -ObjC++ -c -o $@ | |||
$(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o: $(DPF_PATH)/distrho/DistrhoPluginMain.cpp | |||
-@mkdir -p $(BUILD_DIR) | |||
@echo "Compiling DistrhoPluginMain.cpp (JACK)" | |||
@@ -221,7 +241,7 @@ ladspa: $(ladspa_dsp) | |||
$(ladspa_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_LADSPA.cpp.o | |||
-@mkdir -p $(shell dirname $@) | |||
@echo "Creating LADSPA plugin for $(NAME)" | |||
$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@ | |||
$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) $(SYMBOLS_LADSPA) -o $@ | |||
# --------------------------------------------------------------------------------------------------------------------- | |||
# DSSI | |||
@@ -233,7 +253,7 @@ dssi_ui: $(dssi_ui) | |||
$(dssi_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_DSSI.cpp.o | |||
-@mkdir -p $(shell dirname $@) | |||
@echo "Creating DSSI plugin library for $(NAME)" | |||
$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@ | |||
$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) $(SYMBOLS_DSSI) -o $@ | |||
$(dssi_ui): $(OBJS_UI) $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.o $(DGL_LIB) | |||
-@mkdir -p $(shell dirname $@) | |||
@@ -250,17 +270,17 @@ lv2_sep: $(lv2_dsp) $(lv2_ui) | |||
$(lv2): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.o $(DGL_LIB) | |||
-@mkdir -p $(shell dirname $@) | |||
@echo "Creating LV2 plugin for $(NAME)" | |||
$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@ | |||
$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_LV2) $(SYMBOLS_LV2UI) -o $@ | |||
$(lv2_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o | |||
-@mkdir -p $(shell dirname $@) | |||
@echo "Creating LV2 plugin library for $(NAME)" | |||
$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@ | |||
$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) $(SYMBOLS_LV2) -o $@ | |||
$(lv2_ui): $(OBJS_UI) $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.o $(DGL_LIB) | |||
-@mkdir -p $(shell dirname $@) | |||
@echo "Creating LV2 plugin UI for $(NAME)" | |||
$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@ | |||
$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_LV2UI) -o $@ | |||
# --------------------------------------------------------------------------------------------------------------------- | |||
# VST | |||
@@ -274,7 +294,7 @@ $(vst): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_VST.cpp.o | |||
endif | |||
-@mkdir -p $(shell dirname $@) | |||
@echo "Creating VST plugin for $(NAME)" | |||
$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@ | |||
$(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_VST2) -o $@ | |||
# --------------------------------------------------------------------------------------------------------------------- | |||
@@ -16,6 +16,10 @@ LINK_FLAGS += $(DGL_LIBS) | |||
# TODO fix these after pugl-upstream is done | |||
BUILD_CXX_FLAGS += -Wno-attributes -Wno-extra -Wno-missing-field-initializers -Wno-narrowing | |||
ifeq ($(MACOS),true) | |||
BUILD_CXX_FLAGS += -DGL_SILENCE_DEPRECATION -Wno-deprecated-declarations | |||
endif | |||
# ifneq ($(MACOS_OLD),true) | |||
# needed by sofd right now, fix later | |||
# BUILD_CXX_FLAGS += -Wno-type-limits -fpermissive | |||
@@ -1 +1 @@ | |||
Subproject commit 13cd61b4915d3314cc8e43e12a3baccef6650c94 | |||
Subproject commit 4091532180ee74ebedbb7690c225a363c0ebe142 |
@@ -89,18 +89,21 @@ | |||
# endif | |||
#endif | |||
#ifndef DISTRHO_OS_MAC | |||
START_NAMESPACE_DGL | |||
#endif | |||
// -------------------------------------------------------------------------------------------------------------------- | |||
#define PUGL_DISABLE_DEPRECATED | |||
#if defined(DISTRHO_OS_HAIKU) | |||
#elif defined(DISTRHO_OS_MAC) | |||
/* | |||
# define PuglWindow DISTRHO_JOIN_MACRO(PuglWindow, DGL_NAMESPACE) | |||
# define PuglOpenGLView DISTRHO_JOIN_MACRO(PuglOpenGLView, DGL_NAMESPACE) | |||
*/ | |||
# 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) | |||
# endif | |||
# import "pugl-upstream/src/mac.m" | |||
# import "pugl-upstream/src/mac_stub.m" | |||
# ifdef DGL_CAIRO | |||
@@ -207,6 +210,7 @@ PuglStatus puglSetGeometryConstraints(PuglView* const view, const uint width, co | |||
#if defined(DISTRHO_OS_HAIKU) | |||
// nothing? | |||
#elif defined(DISTRHO_OS_MAC) | |||
/* | |||
if (view->impl->window) | |||
{ | |||
[view->impl->window setContentMinSize:sizePoints(view, view->minWidth, view->minHeight)]; | |||
@@ -214,6 +218,9 @@ PuglStatus puglSetGeometryConstraints(PuglView* const view, const uint width, co | |||
if (aspect) | |||
[view->impl->window setContentAspectRatio:sizePoints(view, view->minAspectX, view->minAspectY)]; | |||
} | |||
*/ | |||
puglSetMinSize(view, width, height); | |||
puglSetAspectRatio(view, width, height, width, height); | |||
#elif defined(DISTRHO_OS_WINDOWS) | |||
// nothing | |||
#else | |||
@@ -352,4 +359,6 @@ void puglWin32SetWindowResizable(PuglView* const view, const bool resizable) | |||
// -------------------------------------------------------------------------------------------------------------------- | |||
#ifndef DISTRHO_OS_MAC | |||
END_NAMESPACE_DGL | |||
#endif |
@@ -24,15 +24,22 @@ | |||
#include <cstddef> | |||
#include <cstdint> | |||
START_NAMESPACE_DGL | |||
// -------------------------------------------------------------------------------------------------------------------- | |||
#define PUGL_API | |||
#define PUGL_DISABLE_DEPRECATED | |||
#define PUGL_NO_INCLUDE_GLU_H | |||
// -------------------------------------------------------------------------------------------------------------------- | |||
#ifndef DISTRHO_OS_MAC | |||
START_NAMESPACE_DGL | |||
#else | |||
USE_NAMESPACE_DGL | |||
#endif | |||
#include "pugl-upstream/include/pugl/pugl.h" | |||
// -------------------------------------------------------------------------------------------------------------------- | |||
PUGL_BEGIN_DECLS | |||
// expose backend enter | |||
@@ -85,6 +92,8 @@ PUGL_END_DECLS | |||
// -------------------------------------------------------------------------------------------------------------------- | |||
#ifndef DISTRHO_OS_MAC | |||
END_NAMESPACE_DGL | |||
#endif | |||
#endif // DGL_PUGL_HPP_INCLUDED |
@@ -0,0 +1,33 @@ | |||
/* | |||
* DISTRHO Plugin Framework (DPF) | |||
* Copyright (C) 2012-2021 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
* or without fee is hereby granted, provided that the above copyright notice and this | |||
* permission notice appear in all copies. | |||
* | |||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
* TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
* NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
*/ | |||
#ifndef PUGL_NAMESPACE | |||
# error PUGL_NAMESPACE must be set when compiling this file | |||
#endif | |||
#include "src/DistrhoPluginChecks.h" | |||
#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 PuglOpenGLView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PUGL_NAMESPACE, OpenGLView) | |||
#define PuglStubView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PUGL_NAMESPACE, StubView) | |||
#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" |
@@ -15,6 +15,10 @@ LINK_FLAGS += -lpthread | |||
# TODO fix within pugl | |||
BUILD_CXX_FLAGS += -Wno-extra -Wno-missing-field-initializers | |||
ifeq ($(MACOS),true) | |||
BUILD_CXX_FLAGS += -ObjC++ -DGL_SILENCE_DEPRECATION -Wno-deprecated-declarations | |||
endif | |||
# --------------------------------------------------------------------------------------------------------------------- | |||
MANUAL_TESTS = | |||