Mercurial > hg > vamp-plugin-sdk
diff build/Makefile.emscripten @ 433:f8a3bd2d86cb
Emscripten Makefile -- not done yet. Also need to factorise out all these common lists of source files.
author | Chris Cannam |
---|---|
date | Wed, 18 May 2016 16:15:09 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/build/Makefile.emscripten Wed May 18 16:15:09 2016 +0100 @@ -0,0 +1,363 @@ + +# Makefile for the Vamp plugin SDK. This builds the SDK objects, +# libraries, example plugins, and the test host. Please adjust to +# suit your operating system requirements. +# +# This version of the Makefile is approximately correct for cross- +# compiling for Windows from Linux using the MinGW tools. +# Note that it has no "install" target; the following are the +# library and related files that may be of interest resulting from +# the build: +# +# libvamp-sdk.dll [SDK dynamic library for plugins] +# libvamp-hostsdk.dll [SDK dynamic library for hosts] +# +# libvamp-sdk.a [SDK static library for plugins] +# libvamp-hostsdk.a [SDK static library for hosts] +# +# examples/vamp-example-plugins.cat [copy this to your Vamp plugin dir] +# examples/vamp-example-plugins.dll [copy this to your Vamp plugin dir] +# +# host/vamp-simple-host [requires libsndfile to build] +# +# rdf/generator/vamp-rdf-template-generator + +# Makefile for the Vamp plugin SDK. This builds the SDK objects, +# libraries, example plugins, and the test host. Please adjust to +# suit your operating system requirements. + +APIDIR = vamp + +SDKDIR = vamp-sdk +HOSTSDKDIR = vamp-hostsdk + +SRCDIR = src +SDKSRCDIR = src/vamp-sdk +HOSTSDKSRCDIR = src/vamp-hostsdk + +EXAMPLEDIR = examples +HOSTDIR = host +PCDIR = pkgconfig +LADIR = build +RDFGENDIR = rdf/generator + +### +### Start of user-serviceable parts +### + +# Default build target (or use "make <target>" to select one). +# Targets are: +# all -- build everything +# sdk -- build all the Vamp SDK libraries for plugins and hosts +# sdkstatic -- build only the static versions of the SDK libraries +# plugins -- build the example plugins (and the SDK if required) +# host -- build the simple Vamp plugin host (and the SDK if required) +# rdfgen -- build the RDF template generator (and the SDK if required) +# test -- build the host and example plugins, and run a quick test +# clean -- remove binary targets +# distclean -- remove all targets +# +default: all + +# Tools selection +# +TOOLPREFIX ?= +CXX = $(TOOLPREFIX)em++ +CC = $(TOOLPREFIX)emcc +LD = $(TOOLPREFIX)em++ +AR = $(TOOLPREFIX)emar +RANLIB = $(TOOLPREFIX)emranlib + +# Compile flags +# +CXXFLAGS := $(CXXFLAGS) -O2 -Wall -fno-exceptions -I. -I../DEPENDENCIES/emscripten32/include + +# Libraries required for the plugins. +# +PLUGIN_LIBS = ./libvamp-sdk.a + +# File extension for a dynamically loadable object +# +PLUGIN_EXT = .dll + +# Libraries required for the host. +# +HOST_LIBS = ./libvamp-hostsdk.a -L../DEPENDENCIES/emscripten32/lib -lsndfile + +# Libraries required for the RDF template generator. +# +RDFGEN_LIBS = ./libvamp-hostsdk.a + +# General linker flags +# +LDFLAGS := $(LDFLAGS) --emrun -fno-exceptions -static -static-libgcc + +# Flags required to tell the compiler to create a dynamically loadable object +# +DYNAMIC_LDFLAGS = -shared -Wl,-Bsymbolic + +# Flags for building specific plugin and library targets. We need to +# tell the linker the formal name for the library, and for plugins we +# also want to tell the linker to make all symbols in the library +# hidden except for the public entry point (making for a tidier library). +# +PLUGIN_LDFLAGS = $(DYNAMIC_LDFLAGS) -Wl,--retain-symbols-file=build/vamp-plugin.list +SDK_DYNAMIC_LDFLAGS = $(DYNAMIC_LDFLAGS) +HOSTSDK_DYNAMIC_LDFLAGS = $(DYNAMIC_LDFLAGS) + + +### End of user-serviceable parts + + +API_HEADERS = \ + $(APIDIR)/vamp.h + +SDK_HEADERS = \ + $(SDKDIR)/Plugin.h \ + $(SDKDIR)/PluginAdapter.h \ + $(SDKDIR)/PluginBase.h \ + $(SDKDIR)/RealTime.h \ + $(SDKDIR)/FFT.h \ + $(SDKDIR)/plugguard.h \ + $(SDKDIR)/vamp-sdk.h + +HOSTSDK_HEADERS = \ + $(HOSTSDKDIR)/Plugin.h \ + $(HOSTSDKDIR)/PluginBase.h \ + $(HOSTSDKDIR)/PluginHostAdapter.h \ + $(HOSTSDKDIR)/RealTime.h \ + $(HOSTSDKDIR)/PluginBufferingAdapter.h \ + $(HOSTSDKDIR)/PluginChannelAdapter.h \ + $(HOSTSDKDIR)/PluginInputDomainAdapter.h \ + $(HOSTSDKDIR)/PluginLoader.h \ + $(HOSTSDKDIR)/PluginSummarisingAdapter.h \ + $(HOSTSDKDIR)/PluginWrapper.h \ + $(HOSTSDKDIR)/hostguard.h \ + $(HOSTSDKDIR)/host-c.h \ + $(HOSTSDKDIR)/vamp-hostsdk.h + +SDK_OBJECTS = \ + $(SDKSRCDIR)/PluginAdapter.o \ + $(SDKSRCDIR)/RealTime.o \ + $(SDKSRCDIR)/FFT.o \ + $(SDKSRCDIR)/acsymbols.o + +HOSTSDK_OBJECTS = \ + $(HOSTSDKSRCDIR)/Files.o \ + $(HOSTSDKSRCDIR)/PluginHostAdapter.o \ + $(HOSTSDKSRCDIR)/RealTime.o \ + $(HOSTSDKSRCDIR)/PluginBufferingAdapter.o \ + $(HOSTSDKSRCDIR)/PluginChannelAdapter.o \ + $(HOSTSDKSRCDIR)/PluginInputDomainAdapter.o \ + $(HOSTSDKSRCDIR)/PluginLoader.o \ + $(HOSTSDKSRCDIR)/PluginSummarisingAdapter.o \ + $(HOSTSDKSRCDIR)/PluginWrapper.o \ + $(HOSTSDKSRCDIR)/host-c.o \ + $(HOSTSDKSRCDIR)/acsymbols.o + +SDK_STATIC = \ + ./libvamp-sdk.a + +HOSTSDK_STATIC = \ + ./libvamp-hostsdk.a + +SDK_DYNAMIC = \ + ./libvamp-sdk$(PLUGIN_EXT) + +HOSTSDK_DYNAMIC = \ + ./libvamp-hostsdk$(PLUGIN_EXT) + +SDK_LA = \ + $(LADIR)/libvamp-sdk.la + +HOSTSDK_LA = \ + $(LADIR)/libvamp-hostsdk.la + +PLUGIN_HEADERS = \ + $(EXAMPLEDIR)/SpectralCentroid.h \ + $(EXAMPLEDIR)/PowerSpectrum.h \ + $(EXAMPLEDIR)/PercussionOnsetDetector.h \ + $(EXAMPLEDIR)/FixedTempoEstimator.h \ + $(EXAMPLEDIR)/AmplitudeFollower.h \ + $(EXAMPLEDIR)/ZeroCrossing.h + +PLUGIN_OBJECTS = \ + $(EXAMPLEDIR)/SpectralCentroid.o \ + $(EXAMPLEDIR)/PowerSpectrum.o \ + $(EXAMPLEDIR)/PercussionOnsetDetector.o \ + $(EXAMPLEDIR)/FixedTempoEstimator.o \ + $(EXAMPLEDIR)/AmplitudeFollower.o \ + $(EXAMPLEDIR)/ZeroCrossing.o \ + $(EXAMPLEDIR)/plugins.o + +PLUGIN_TARGET = \ + $(EXAMPLEDIR)/vamp-example-plugins$(PLUGIN_EXT) + +HOST_HEADERS = \ + $(HOSTDIR)/system.h + +HOST_OBJECTS = \ + $(HOSTDIR)/vamp-simple-host.o + +HOST_TARGET = \ + $(HOSTDIR)/vamp-simple-host.html + +RDFGEN_OBJECTS = \ + $(RDFGENDIR)/vamp-rdf-template-generator.o + +RDFGEN_TARGET = \ + $(RDFGENDIR)/vamp-rdf-template-generator.html + +sdk: sdkstatic $(SDK_DYNAMIC) $(HOSTSDK_DYNAMIC) + +sdkstatic: $(SDK_STATIC) $(HOSTSDK_STATIC) + $(RANLIB) $(SDK_STATIC) + $(RANLIB) $(HOSTSDK_STATIC) + +plugins: $(PLUGIN_TARGET) + +host: $(HOST_TARGET) + +rdfgen: $(RDFGEN_TARGET) + +all: sdk plugins host rdfgen test + +$(SDK_STATIC): $(SDK_OBJECTS) $(API_HEADERS) $(SDK_HEADERS) + $(AR) r $@ $(SDK_OBJECTS) + +$(HOSTSDK_STATIC): $(HOSTSDK_OBJECTS) $(API_HEADERS) $(HOSTSDK_HEADERS) + $(AR) r $@ $(HOSTSDK_OBJECTS) + +$(SDK_DYNAMIC): $(SDK_OBJECTS) $(API_HEADERS) $(SDK_HEADERS) + $(CXX) $(LDFLAGS) $(SDK_DYNAMIC_LDFLAGS) -o $@ $(SDK_OBJECTS) + +$(HOSTSDK_DYNAMIC): $(HOSTSDK_OBJECTS) $(API_HEADERS) $(HOSTSDK_HEADERS) + $(CXX) $(LDFLAGS) $(HOSTSDK_DYNAMIC_LDFLAGS) -o $@ $(HOSTSDK_OBJECTS) + +$(PLUGIN_TARGET): $(PLUGIN_OBJECTS) $(SDK_STATIC) $(PLUGIN_HEADERS) + $(CXX) $(LDFLAGS) $(PLUGIN_LDFLAGS) -o $@ $(PLUGIN_OBJECTS) $(PLUGIN_LIBS) + +$(HOST_TARGET): $(HOST_OBJECTS) $(HOSTSDK_STATIC) $(HOST_HEADERS) + $(CXX) $(LDFLAGS) $(HOST_LDFLAGS) -o $@ $(HOST_OBJECTS) $(LDFLAGS) $(HOST_LIBS) + +$(RDFGEN_TARGET): $(RDFGEN_OBJECTS) $(HOSTSDK_STATIC) + $(CXX) $(LDFLAGS) $(RDFGEN_LDFLAGS) -o $@ $(RDFGEN_OBJECTS) $(LDFLAGS) $(RDFGEN_LIBS) + +test: plugins host + VAMP_PATH=$(EXAMPLEDIR) emrun $(HOST_TARGET) -l + +clean: + rm -f $(SDK_OBJECTS) $(HOSTSDK_OBJECTS) $(PLUGIN_OBJECTS) $(HOST_OBJECTS) $(RDFGEN_OBJECTS) + +distclean: clean + rm -f $(SDK_STATIC) $(SDK_DYNAMIC) $(HOSTSDK_STATIC) $(HOSTSDK_DYNAMIC) $(PLUGIN_TARGET) $(HOST_TARGET) $(RDFGEN_TARGET) *~ */*~ + +# DO NOT DELETE + +examples/AmplitudeFollower.o: examples/AmplitudeFollower.h vamp-sdk/Plugin.h +examples/AmplitudeFollower.o: vamp-sdk/PluginBase.h vamp-sdk/plugguard.h +examples/AmplitudeFollower.o: vamp-sdk/RealTime.h +examples/FixedTempoEstimator.o: examples/FixedTempoEstimator.h +examples/FixedTempoEstimator.o: vamp-sdk/Plugin.h vamp-sdk/PluginBase.h +examples/FixedTempoEstimator.o: vamp-sdk/plugguard.h vamp-sdk/RealTime.h +examples/PercussionOnsetDetector.o: examples/PercussionOnsetDetector.h +examples/PercussionOnsetDetector.o: vamp-sdk/Plugin.h vamp-sdk/PluginBase.h +examples/PercussionOnsetDetector.o: vamp-sdk/plugguard.h vamp-sdk/RealTime.h +examples/SpectralCentroid.o: examples/SpectralCentroid.h vamp-sdk/Plugin.h +examples/SpectralCentroid.o: vamp-sdk/PluginBase.h vamp-sdk/plugguard.h +examples/SpectralCentroid.o: vamp-sdk/RealTime.h +examples/PowerSpectrum.o: examples/PowerSpectrum.h vamp-sdk/Plugin.h +examples/PowerSpectrum.o: vamp-sdk/PluginBase.h vamp-sdk/plugguard.h +examples/PowerSpectrum.o: vamp-sdk/RealTime.h +examples/ZeroCrossing.o: examples/ZeroCrossing.h vamp-sdk/Plugin.h +examples/ZeroCrossing.o: vamp-sdk/PluginBase.h vamp-sdk/plugguard.h +examples/ZeroCrossing.o: vamp-sdk/RealTime.h +examples/plugins.o: vamp/vamp.h vamp-sdk/PluginAdapter.h vamp-sdk/Plugin.h +examples/plugins.o: vamp-sdk/PluginBase.h vamp-sdk/plugguard.h +examples/plugins.o: vamp-sdk/RealTime.h examples/ZeroCrossing.h +examples/plugins.o: vamp-sdk/Plugin.h examples/SpectralCentroid.h +examples/plugins.o: examples/PercussionOnsetDetector.h examples/PowerSpectrum.h +examples/plugins.o: examples/FixedTempoEstimator.h +examples/plugins.o: examples/AmplitudeFollower.h +host/vamp-simple-host.o: ./vamp-hostsdk/PluginHostAdapter.h vamp/vamp.h +host/vamp-simple-host.o: vamp-sdk/Plugin.h vamp-sdk/PluginBase.h +host/vamp-simple-host.o: vamp-sdk/plugguard.h vamp-sdk/RealTime.h +host/vamp-simple-host.o: ./vamp-hostsdk/PluginInputDomainAdapter.h +host/vamp-simple-host.o: ./vamp-hostsdk/PluginWrapper.h +host/vamp-simple-host.o: ./vamp-hostsdk/Plugin.h ./vamp-hostsdk/hostguard.h +host/vamp-simple-host.o: vamp-sdk/Plugin.h +host/vamp-simple-host.o: ./vamp-hostsdk/PluginLoader.h host/system.h +rdf/generator/vamp-rdf-template-generator.o: ./vamp-hostsdk/PluginHostAdapter.h +rdf/generator/vamp-rdf-template-generator.o: vamp/vamp.h vamp-sdk/Plugin.h +rdf/generator/vamp-rdf-template-generator.o: vamp-sdk/PluginBase.h +rdf/generator/vamp-rdf-template-generator.o: vamp-sdk/plugguard.h vamp-sdk/RealTime.h +rdf/generator/vamp-rdf-template-generator.o: ./vamp-hostsdk/PluginChannelAdapter.h +rdf/generator/vamp-rdf-template-generator.o: ./vamp-hostsdk/PluginWrapper.h +rdf/generator/vamp-rdf-template-generator.o: ./vamp-hostsdk/Plugin.h +rdf/generator/vamp-rdf-template-generator.o: ./vamp-hostsdk/hostguard.h +rdf/generator/vamp-rdf-template-generator.o: vamp-sdk/Plugin.h +rdf/generator/vamp-rdf-template-generator.o: ./vamp-hostsdk/PluginInputDomainAdapter.h +rdf/generator/vamp-rdf-template-generator.o: ./vamp-hostsdk/PluginLoader.h +src/vamp-hostsdk/PluginHostAdapter.o: ./vamp-hostsdk/PluginHostAdapter.h +src/vamp-hostsdk/PluginHostAdapter.o: vamp/vamp.h vamp-sdk/Plugin.h +src/vamp-hostsdk/PluginHostAdapter.o: vamp-sdk/PluginBase.h +src/vamp-hostsdk/PluginHostAdapter.o: vamp-sdk/plugguard.h +src/vamp-hostsdk/PluginHostAdapter.o: vamp-sdk/RealTime.h +src/vamp-hostsdk/RealTime.o: src/vamp-sdk/RealTime.cpp ./vamp-sdk/RealTime.h +src/vamp-hostsdk/RealTime.o: vamp-sdk/plugguard.h +src/vamp-sdk/PluginAdapter.o: vamp-sdk/PluginAdapter.h vamp/vamp.h +src/vamp-sdk/PluginAdapter.o: vamp-sdk/Plugin.h vamp-sdk/PluginBase.h +src/vamp-sdk/PluginAdapter.o: vamp-sdk/plugguard.h vamp-sdk/RealTime.h +src/vamp-sdk/RealTime.o: ./vamp-sdk/RealTime.h vamp-sdk/plugguard.h +src/vamp-hostsdk/PluginBufferingAdapter.o: ./vamp-hostsdk/PluginBufferingAdapter.h +src/vamp-hostsdk/PluginBufferingAdapter.o: ./vamp-hostsdk/PluginWrapper.h +src/vamp-hostsdk/PluginBufferingAdapter.o: ./vamp-hostsdk/Plugin.h +src/vamp-hostsdk/PluginBufferingAdapter.o: ./vamp-hostsdk/hostguard.h +src/vamp-hostsdk/PluginBufferingAdapter.o: vamp-sdk/Plugin.h +src/vamp-hostsdk/PluginBufferingAdapter.o: vamp-sdk/PluginBase.h +src/vamp-hostsdk/PluginBufferingAdapter.o: vamp-sdk/plugguard.h +src/vamp-hostsdk/PluginBufferingAdapter.o: vamp-sdk/RealTime.h +src/vamp-hostsdk/PluginChannelAdapter.o: ./vamp-hostsdk/PluginChannelAdapter.h +src/vamp-hostsdk/PluginChannelAdapter.o: ./vamp-hostsdk/PluginWrapper.h +src/vamp-hostsdk/PluginChannelAdapter.o: ./vamp-hostsdk/Plugin.h +src/vamp-hostsdk/PluginChannelAdapter.o: ./vamp-hostsdk/hostguard.h +src/vamp-hostsdk/PluginChannelAdapter.o: vamp-sdk/Plugin.h +src/vamp-hostsdk/PluginChannelAdapter.o: vamp-sdk/PluginBase.h +src/vamp-hostsdk/PluginChannelAdapter.o: vamp-sdk/plugguard.h +src/vamp-hostsdk/PluginChannelAdapter.o: vamp-sdk/RealTime.h +src/vamp-hostsdk/PluginInputDomainAdapter.o: ./vamp-hostsdk/PluginInputDomainAdapter.h +src/vamp-hostsdk/PluginInputDomainAdapter.o: ./vamp-hostsdk/PluginWrapper.h +src/vamp-hostsdk/PluginInputDomainAdapter.o: ./vamp-hostsdk/Plugin.h +src/vamp-hostsdk/PluginInputDomainAdapter.o: ./vamp-hostsdk/hostguard.h +src/vamp-hostsdk/PluginInputDomainAdapter.o: vamp-sdk/Plugin.h +src/vamp-hostsdk/PluginInputDomainAdapter.o: vamp-sdk/PluginBase.h +src/vamp-hostsdk/PluginInputDomainAdapter.o: vamp-sdk/plugguard.h +src/vamp-hostsdk/PluginInputDomainAdapter.o: vamp-sdk/RealTime.h +src/vamp-hostsdk/PluginLoader.o: ./vamp-hostsdk/PluginHostAdapter.h +src/vamp-hostsdk/PluginLoader.o: vamp/vamp.h vamp-sdk/Plugin.h +src/vamp-hostsdk/PluginLoader.o: vamp-sdk/PluginBase.h +src/vamp-hostsdk/PluginLoader.o: vamp-sdk/plugguard.h +src/vamp-hostsdk/PluginLoader.o: vamp-sdk/RealTime.h +src/vamp-hostsdk/PluginLoader.o: ./vamp-hostsdk/PluginLoader.h +src/vamp-hostsdk/PluginLoader.o: ./vamp-hostsdk/PluginWrapper.h +src/vamp-hostsdk/PluginLoader.o: ./vamp-hostsdk/Plugin.h +src/vamp-hostsdk/PluginLoader.o: ./vamp-hostsdk/hostguard.h +src/vamp-hostsdk/PluginLoader.o: vamp-sdk/Plugin.h +src/vamp-hostsdk/PluginLoader.o: ./vamp-hostsdk/PluginInputDomainAdapter.h +src/vamp-hostsdk/PluginLoader.o: ./vamp-hostsdk/PluginChannelAdapter.h +src/vamp-hostsdk/PluginLoader.o: ./vamp-hostsdk/PluginBufferingAdapter.h +src/vamp-hostsdk/PluginSummarisingAdapter.o: ./vamp-hostsdk/PluginSummarisingAdapter.h +src/vamp-hostsdk/PluginSummarisingAdapter.o: ./vamp-hostsdk/PluginWrapper.h +src/vamp-hostsdk/PluginSummarisingAdapter.o: ./vamp-hostsdk/Plugin.h +src/vamp-hostsdk/PluginSummarisingAdapter.o: ./vamp-hostsdk/hostguard.h +src/vamp-hostsdk/PluginSummarisingAdapter.o: vamp-sdk/Plugin.h +src/vamp-hostsdk/PluginSummarisingAdapter.o: vamp-sdk/PluginBase.h +src/vamp-hostsdk/PluginSummarisingAdapter.o: vamp-sdk/plugguard.h +src/vamp-hostsdk/PluginSummarisingAdapter.o: vamp-sdk/RealTime.h +src/vamp-hostsdk/PluginWrapper.o: ./vamp-hostsdk/PluginWrapper.h +src/vamp-hostsdk/PluginWrapper.o: ./vamp-hostsdk/Plugin.h +src/vamp-hostsdk/PluginWrapper.o: ./vamp-hostsdk/hostguard.h +src/vamp-hostsdk/PluginWrapper.o: vamp-sdk/Plugin.h +src/vamp-hostsdk/PluginWrapper.o: vamp-sdk/PluginBase.h +src/vamp-hostsdk/PluginWrapper.o: vamp-sdk/plugguard.h +src/vamp-hostsdk/PluginWrapper.o: vamp-sdk/RealTime.h