# HG changeset patch # User cannam # Date 1144324867 0 # Node ID 83d3eb5807315a5c02b0847ec286a337b21874b4 # Parent 44113b1e296bd30f7a8a2814e40f69591eafb230 * Use a single Makefile diff -r 44113b1e296b -r 83d3eb580731 Makefile --- a/Makefile Wed Apr 05 16:50:07 2006 +0000 +++ b/Makefile Thu Apr 06 12:01:07 2006 +0000 @@ -1,21 +1,75 @@ +# Makefile for the Vamp plugin SDK. This builds the SDK objects, +# example plugins, and the test host. Please adjust to suit your +# operating system requirements. -all: examples_ host_ test +SDKDIR = vamp-sdk +APIDIR = vamp +EXAMPLEDIR = examples +HOSTDIR = host -examples_: - $(MAKE) -C examples all -host_: - $(MAKE) -C host all +### Start of user-serviceable parts -test: - $(MAKE) -C host test +# Compile flags +CXXFLAGS := $(CXXFLAGS) -O2 -Wall -I$(SDKDIR) -I$(APIDIR) -I. -clean: - $(MAKE) -C examples clean +# Libraries required for the host at link time +HOST_LIBS = -ldl -distclean: - $(MAKE) -C examples distclean - $(MAKE) -C host distclean - rm -f *~ *.bak $(TARGET) +# Libraries required for the plugin. Note that we can (and actively +# want to) statically link with libstdc++, because our plugin exposes +# a C API so there are no boundary compatibility problems. +#PLUGIN_LIBS = $(shell g++ -print-file-name=libstdc++.a) +# Flags required to tell the compiler to link to a dynamically loadable object +PLUGIN_LDFLAGS = -shared -Wl,-Bsymbolic -static-libgcc + +# File extension for a dynamically loadable object +PLUGIN_EXT = .so + +## For OS/X with g++: +#PLUGIN_LDFLAGS = -dynamiclib +#PLUGIN_EXT = .dylib + +### End of user-serviceable parts + + +PLUGIN_OBJECTS = \ + $(SDKDIR)/PluginAdapter.o \ + $(SDKDIR)/PluginHostAdapter.o \ + $(SDKDIR)/RealTime.o \ + $(EXAMPLEDIR)/ZeroCrossing.o \ + $(EXAMPLEDIR)/SpectralCentroid.o \ + $(EXAMPLEDIR)/plugins.o + +PLUGIN_TARGET = \ + $(EXAMPLEDIR)/plugins$(PLUGIN_EXT) + +HOST_OBJECTS = \ + $(SDKDIR)/PluginAdapter.o \ + $(SDKDIR)/PluginHostAdapter.o \ + $(SDKDIR)/RealTime.o \ + $(HOSTDIR)/simplehost.o + +HOST_TARGET = \ + $(HOSTDIR)/simplehost + +all: $(PLUGIN_TARGET) $(HOST_TARGET) test + +$(PLUGIN_TARGET): $(PLUGIN_OBJECTS) + $(CXX) $(LDFLAGS) $(PLUGIN_LDFLAGS) -o $@ $^ $(PLUGIN_LIBS) + +$(HOST_TARGET): $(HOST_OBJECTS) + $(CXX) $(LDFLAGS) $(HOST_LDFLAGS) -o $@ $^ $(HOST_LIBS) + +test: $(HOST_TARGET) $(PLUGIN_TARGET) + $(HOST_TARGET) $(PLUGIN_TARGET) + +clean: + rm -f $(PLUGIN_OBJECTS) $(HOST_OBJECTS) + +distclean: clean + rm -f $(PLUGIN_TARGET) $(HOST_TARGET) *~ */*~ + + diff -r 44113b1e296b -r 83d3eb580731 examples/Makefile --- a/examples/Makefile Wed Apr 05 16:50:07 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ - -TARGET := plugins.so -OBJECTS := ZeroCrossing.o SpectralCentroid.o plugins.o - -SDKPATH := ../vamp-sdk -APIPATH := ../vamp - -CXXFLAGS := $(CXXFLAGS) -O2 -Wall -I$(SDKPATH) -I$(APIPATH) - -LDFLAGS := -shared -Wl,-Bsymbolic - -SDKFILES := $(SDKPATH)/PluginAdapter.cpp $(SDKPATH)/RealTime.cpp - -plugins.so: $(OBJECTS) - $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $(TARGET) $(SDKFILES) $(OBJECTS) - -all: $(TARGET) - -clean: - rm -f $(OBJECTS) - -distclean: clean - rm -f *~ *.bak $(TARGET) - -ZeroCrossing.o: ZeroCrossing.cpp $(APIPATH)/vamp.h $(SDKPATH)/PluginAdapter.h $(SDKPATH)/PluginAdapter.cpp $(SDKPATH)/RealTime.h $(SDKPATH)/RealTime.cpp $(SDKPATH)/Plugin.h $(SDKPATH)/PluginBase.h -SpectralCentroid.o: SpectralCentroid.cpp $(APIPATH)/vamp.h $(SDKPATH)/PluginAdapter.h $(SDKPATH)/PluginAdapter.cpp $(SDKPATH)/RealTime.h $(SDKPATH)/RealTime.cpp $(SDKPATH)/Plugin.h $(SDKPATH)/PluginBase.h diff -r 44113b1e296b -r 83d3eb580731 examples/plugins.cpp --- a/examples/plugins.cpp Wed Apr 05 16:50:07 2006 +0000 +++ b/examples/plugins.cpp Thu Apr 06 12:01:07 2006 +0000 @@ -34,7 +34,7 @@ authorization. */ -#include "vamp.h" +#include #include "PluginAdapter.h" #include "ZeroCrossing.h" diff -r 44113b1e296b -r 83d3eb580731 host/Makefile --- a/host/Makefile Wed Apr 05 16:50:07 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ - -SDKPATH := ../vamp-sdk -APIPATH := ../vamp - -CXXFLAGS := $(CXXFLAGS) -O2 -Wall -I$(SDKPATH) -I$(APIPATH) -LIBS := $(LIBS) -ldl - -SDKFILES := $(SDKPATH)/PluginHostAdapter.cpp $(SDKPATH)/RealTime.cpp - -simplehost: simplehost.o - $(CXX) $(CXXFLAGS) -o simplehost $(SDKFILES) simplehost.o $(LIBS) - -all: simplehost - -test: - simplehost ../examples/plugins.so - -clean: - rm -f simplehost.o - -distclean: clean - rm -f simplehost *~ *.bak - -simplehost.o: simplehost.cpp system.h $(APIPATH)/vamp.h $(SDKPATH)/PluginHostAdapter.h $(SDKPATH)/PluginHostAdapter.cpp $(SDKPATH)/RealTime.h $(SDKPATH)/RealTime.cpp $(SDKPATH)/Plugin.h $(SDKPATH)/PluginBase.h diff -r 44113b1e296b -r 83d3eb580731 host/simplehost.cpp --- a/host/simplehost.cpp Wed Apr 05 16:50:07 2006 +0000 +++ b/host/simplehost.cpp Thu Apr 06 12:01:07 2006 +0000 @@ -63,7 +63,7 @@ if (!libraryHandle) { std::cerr << argv[0] << ": Failed to open plugin library " - << soname << std::endl; + << soname << ": " << DLERROR() << std::endl; return 1; } diff -r 44113b1e296b -r 83d3eb580731 host/system.h --- a/host/system.h Wed Apr 05 16:50:07 2006 +0000 +++ b/host/system.h Thu Apr 06 12:01:07 2006 +0000 @@ -57,9 +57,17 @@ #define DLCLOSE(a) dlclose((a)) #define DLERROR() dlerror() +#ifdef __APPLE__ + +#define PLUGIN_GLOB "*.dylib" + +#else + #define PLUGIN_GLOB "*.so" +#endif /* __APPLE__ */ + +#endif /* ! _WIN32 */ + #endif -#endif - diff -r 44113b1e296b -r 83d3eb580731 vamp-sdk/PluginAdapter.h --- a/vamp-sdk/PluginAdapter.h Wed Apr 05 16:50:07 2006 +0000 +++ b/vamp-sdk/PluginAdapter.h Thu Apr 06 12:01:07 2006 +0000 @@ -37,7 +37,8 @@ #ifndef _VAMP_PLUGIN_ADAPTER_H_ #define _VAMP_PLUGIN_ADAPTER_H_ -#include "vamp.h" +#include + #include "Plugin.h" #include diff -r 44113b1e296b -r 83d3eb580731 vamp-sdk/PluginHostAdapter.h --- a/vamp-sdk/PluginHostAdapter.h Wed Apr 05 16:50:07 2006 +0000 +++ b/vamp-sdk/PluginHostAdapter.h Thu Apr 06 12:01:07 2006 +0000 @@ -37,7 +37,7 @@ #ifndef _VAMP_PLUGIN_HOST_ADAPTER_H_ #define _VAMP_PLUGIN_HOST_ADAPTER_H_ -#include "vamp.h" +#include #include "Plugin.h" diff -r 44113b1e296b -r 83d3eb580731 vamp-sdk/RealTime.cpp --- a/vamp-sdk/RealTime.cpp Wed Apr 05 16:50:07 2006 +0000 +++ b/vamp-sdk/RealTime.cpp Thu Apr 06 12:01:07 2006 +0000 @@ -37,7 +37,8 @@ /* This is a modified version of a source file from the Rosegarden MIDI and audio sequencer and notation editor. - This file copyright 2000-2006 Chris Cannam; relicensed as detailed above + This file copyright 2000-2006 Chris Cannam. + Relicensed by the author as detailed above. */ #include diff -r 44113b1e296b -r 83d3eb580731 vamp-sdk/RealTime.h --- a/vamp-sdk/RealTime.h Wed Apr 05 16:50:07 2006 +0000 +++ b/vamp-sdk/RealTime.h Thu Apr 06 12:01:07 2006 +0000 @@ -37,7 +37,8 @@ /* This is a modified version of a source file from the Rosegarden MIDI and audio sequencer and notation editor. - This file copyright 2000-2006 Chris Cannam; relicensed as detailed above + This file copyright 2000-2006 Chris Cannam. + Relicensed by the author as detailed above. */ #ifndef _VAMP_REAL_TIME_H_