summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfalkTX <falktx@gmail.com>2019-01-24 11:36:00 +0000
committerfalkTX <falktx@gmail.com>2019-01-24 11:36:00 +0000
commitd97f0ae1b6f4d07bc6957338b4f8b86e894d50cd (patch)
treee6acbc11d65d16066f926651e39c5c603973f8d9
parentf992b82b73351a7d5b4bec47344b34533704afee (diff)
AU plugin builds
-rw-r--r--Makefile.plugins.mk49
-rwxr-xr-xdistrho/src/CoreAudio106/AudioUnits/AUPublic/AUBase/ComponentBase.h8
-rw-r--r--distrho/src/DistrhoPluginAU.cpp35
-rw-r--r--examples/Parameters/Makefile4
4 files changed, 85 insertions, 11 deletions
diff --git a/Makefile.plugins.mk b/Makefile.plugins.mk
index 4afe6b40..3ab599c1 100644
--- a/Makefile.plugins.mk
+++ b/Makefile.plugins.mk
@@ -57,6 +57,34 @@ lv2 = $(TARGET_DIR)/$(NAME).lv2/$(NAME)$(LIB_EXT)
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)
+au = $(TARGET_DIR)/$(NAME).component/Contents/MacOS/plugin
+
+# ---------------------------------------------------------------------------------------------------------------------
+# Set stuff needed for AU
+
+AU_BUILD_FLAGS = \
+ -I$(DPF_PATH)/distrho/src/CoreAudio106/AudioUnits/AUPublic/AUBase \
+ -I$(DPF_PATH)/distrho/src/CoreAudio106/AudioUnits/AUPublic/Utility \
+ -I$(DPF_PATH)/distrho/src/CoreAudio106/PublicUtility\
+ -Wno-deprecated-declarations \
+ -Wno-four-char-constants \
+ -Wno-overloaded-virtual \
+ -Wno-unused-parameter
+
+AU_LINK_FLAGS = \
+ -bundle \
+ -framework AudioToolbox \
+ -framework AudioUnit \
+ -Wl,-exported_symbol,_PluginAUEntry
+
+# not needed yet
+# -I$(DPF_PATH)/distrho/src/CoreAudio106/AudioUnits/AUPublic/AUCarbonViewBase
+# -I$(DPF_PATH)/distrho/src/CoreAudio106/AudioUnits/AUPublic/AUInstrumentBase
+# -I$(DPF_PATH)/distrho/src/CoreAudio106/AudioUnits/AUPublic/AUViewBase
+# -I$(DPF_PATH)/distrho/src/CoreAudio106/AudioUnits/AUPublic/OtherBases
+
+# -framework CoreAudio
+# -framework CoreServices
# ---------------------------------------------------------------------------------------------------------------------
# Handle UI stuff, disable UI support automatically
@@ -147,6 +175,11 @@ $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o: $(DPF_PATH)/distrho/DistrhoPluginMain
@echo "Compiling DistrhoPluginMain.cpp (JACK)"
@$(CXX) $< $(BUILD_CXX_FLAGS) $(shell $(PKG_CONFIG) --cflags jack) -DDISTRHO_PLUGIN_TARGET_JACK -c -o $@
+$(BUILD_DIR)/DistrhoPluginMain_AU.cpp.o: $(DPF_PATH)/distrho/DistrhoPluginMain.cpp
+ -@mkdir -p $(BUILD_DIR)
+ @echo "Compiling DistrhoPluginMain.cpp (AU)"
+ $(CXX) $< $(BUILD_CXX_FLAGS) $(AU_BUILD_FLAGS) -DDISTRHO_PLUGIN_TARGET_AU -c -o $@
+
$(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.o: $(DPF_PATH)/distrho/DistrhoUIMain.cpp
-@mkdir -p $(BUILD_DIR)
@echo "Compiling DistrhoUIMain.cpp (DSSI)"
@@ -230,6 +263,20 @@ endif
@$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@
# ---------------------------------------------------------------------------------------------------------------------
+# AU
+
+au: $(au)
+
+ifeq ($(HAVE_DGL),true)
+$(au): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_AU.cpp.o $(BUILD_DIR)/DistrhoUIMain_AU.cpp.o $(DGL_LIB)
+else
+$(au): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_AU.cpp.o
+endif
+ -@mkdir -p $(shell dirname $@)
+ @echo "Creating AU plugin for $(NAME)"
+ $(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(AU_LINK_FLAGS) $(DGL_LIBS) -o $@
+
+# ---------------------------------------------------------------------------------------------------------------------
-include $(OBJS_DSP:%.o=%.d)
ifeq ($(HAVE_DGL),true)
@@ -241,10 +288,12 @@ endif
-include $(BUILD_DIR)/DistrhoPluginMain_DSSI.cpp.d
-include $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.d
-include $(BUILD_DIR)/DistrhoPluginMain_VST.cpp.d
+-include $(BUILD_DIR)/DistrhoPluginMain_AU.cpp.d
-include $(BUILD_DIR)/DistrhoUIMain_JACK.cpp.d
-include $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.d
-include $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.d
-include $(BUILD_DIR)/DistrhoUIMain_VST.cpp.d
+-include $(BUILD_DIR)/DistrhoUIMain_AU.cpp.d
# ---------------------------------------------------------------------------------------------------------------------
diff --git a/distrho/src/CoreAudio106/AudioUnits/AUPublic/AUBase/ComponentBase.h b/distrho/src/CoreAudio106/AudioUnits/AUPublic/AUBase/ComponentBase.h
index f60bd3f6..410192d8 100755
--- a/distrho/src/CoreAudio106/AudioUnits/AUPublic/AUBase/ComponentBase.h
+++ b/distrho/src/CoreAudio106/AudioUnits/AUPublic/AUBase/ComponentBase.h
@@ -154,8 +154,8 @@ public:
#if TARGET_OS_MAC && TARGET_CPU_PPC && !TARGET_RT_MAC_MACHO
// for OS 9, a PPC native component's entry point must be a routine descriptor
#define COMPONENT_ENTRY(Class) \
- extern "C" OSStatus Class##Entry(ComponentParameters *params, Class *obj); \
- extern "C" OSStatus Class##Entry(ComponentParameters *params, Class *obj) { \
+ extern "C" __attribute__ ((visibility("default"))) OSStatus Class##Entry(ComponentParameters *params, Class *obj); \
+ extern "C" __attribute__ ((visibility("default"))) OSStatus Class##Entry(ComponentParameters *params, Class *obj) { \
return ComponentEntryPoint<Class>::Dispatch(params, obj); \
} \
\
@@ -165,8 +165,8 @@ public:
STACK_ROUTINE_PARAMETER (2, kFourByteCode)), Class##Entry);
#else
#define COMPONENT_ENTRY(Class) \
- extern "C" OSStatus Class##Entry(ComponentParameters *params, Class *obj); \
- extern "C" OSStatus Class##Entry(ComponentParameters *params, Class *obj) { \
+ extern "C" __attribute__ ((visibility("default"))) OSStatus Class##Entry(ComponentParameters *params, Class *obj); \
+ extern "C" __attribute__ ((visibility("default"))) OSStatus Class##Entry(ComponentParameters *params, Class *obj) { \
return ComponentEntryPoint<Class>::Dispatch(params, obj); \
}
#endif
diff --git a/distrho/src/DistrhoPluginAU.cpp b/distrho/src/DistrhoPluginAU.cpp
index a3036844..4050f3ac 100644
--- a/distrho/src/DistrhoPluginAU.cpp
+++ b/distrho/src/DistrhoPluginAU.cpp
@@ -56,7 +56,7 @@ public:
AUKernelBase* NewKernel() override
{
- return new dpfplugKernel(this);
+ return new PluginKernel(this, fPlugin);
}
OSStatus GetParameterValueStrings(AudioUnitScope inScope,
@@ -75,9 +75,10 @@ public:
// Name
{
- const String& name = fPlugin.getParameterUnit(inParameterID);
+ // FIXME
+ // const String& name = fPlugin.getParameterUnit(inParameterID);
- AUBase::FillInParameterName(outParameterInfo, name.buffer(), true);
+ // AUBase::FillInParameterName(outParameterInfo, name.buffer(), true);
}
// Hints
@@ -132,8 +133,9 @@ public:
}
else
{
- outParameterInfo.unit = kAudioUnitParameterUnit_CustomUnit;
- outParameterInfo.unitName = unit.buffer();
+ // FIXME
+ // outParameterInfo.unit = kAudioUnitParameterUnit_CustomUnit;
+ // outParameterInfo.unitName = unit.buffer();
}
}
@@ -190,7 +192,8 @@ private:
{
DISTRHO_SAFE_ASSERT_RETURN(inNumChannels == DISTRHO_PLUGIN_NUM_INPUTS,);
- fPlugin.run(inSourceP, inDestP, inFramesToProcess);
+ // FIXME
+ // fPlugin.run(inSourceP, inDestP, inFramesToProcess);
}
void Reset() override
@@ -210,6 +213,24 @@ END_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
-COMPONENT_ENTRY(DISTRHO_NAMESPACE::PluginAU)
+using DISTRHO_NAMESPACE::PluginAU;
+COMPONENT_ENTRY(PluginAU)
+
+// -----------------------------------------------------------------------
+
+#include "CoreAudio106/AudioUnits/AUPublic/AUBase/AUBase.cpp"
+#include "CoreAudio106/AudioUnits/AUPublic/AUBase/AUDispatch.cpp"
+#include "CoreAudio106/AudioUnits/AUPublic/AUBase/AUInputElement.cpp"
+#include "CoreAudio106/AudioUnits/AUPublic/AUBase/AUOutputElement.cpp"
+#include "CoreAudio106/AudioUnits/AUPublic/AUBase/AUScopeElement.cpp"
+#include "CoreAudio106/AudioUnits/AUPublic/AUBase/ComponentBase.cpp"
+#include "CoreAudio106/AudioUnits/AUPublic/OtherBases/AUEffectBase.cpp"
+#include "CoreAudio106/AudioUnits/AUPublic/Utility/AUBaseHelper.cpp"
+#include "CoreAudio106/AudioUnits/AUPublic/Utility/AUBuffer.cpp"
+#include "CoreAudio106/PublicUtility/CAAudioChannelLayout.cpp"
+#include "CoreAudio106/PublicUtility/CAAUParameter.cpp"
+#include "CoreAudio106/PublicUtility/CAMutex.cpp"
+#include "CoreAudio106/PublicUtility/CAStreamBasicDescription.cpp"
+#include "CoreAudio106/PublicUtility/CAVectorUnit.cpp"
// -----------------------------------------------------------------------
diff --git a/examples/Parameters/Makefile b/examples/Parameters/Makefile
index f097b403..92fddd17 100644
--- a/examples/Parameters/Makefile
+++ b/examples/Parameters/Makefile
@@ -49,6 +49,10 @@ endif
TARGETS += vst
+ifeq ($(MACOS),true)
+TARGETS += au
+endif
+
all: $(TARGETS)
# --------------------------------------------------------------