annotate Makefile @ 0:e20e214bdfb5

Added VAMP-Python binding project vampy
author fazekasgy
date Tue, 11 Mar 2008 19:47:34 +0000
parents
children e1b508f2f914
rev   line source
fazekasgy@0 1
fazekasgy@0 2 # Makefile for the Vamp plugin SDK. This builds the SDK objects,
fazekasgy@0 3 # libraries, example plugins, and the test host. Please adjust to
fazekasgy@0 4 # suit your operating system requirements.
fazekasgy@0 5
fazekasgy@0 6 APIDIR = sdk/vamp
fazekasgy@0 7 SDKDIR = sdk/vamp-sdk
fazekasgy@0 8 HOSTEXTDIR = sdk/vamp-sdk/hostext
fazekasgy@0 9 #EXAMPLEDIR = sdk/examples
fazekasgy@0 10 HOSTDIR = sdk/host
fazekasgy@0 11 EXAMPLEDIR = .
fazekasgy@0 12
fazekasgy@0 13 ###
fazekasgy@0 14 ### Start of user-serviceable parts
fazekasgy@0 15 ###
fazekasgy@0 16
fazekasgy@0 17 # Default build target (or use "make <target>" to select one).
fazekasgy@0 18 # Targets are:
fazekasgy@0 19 # all -- build everything
fazekasgy@0 20 # sdk -- build all the Vamp SDK libraries for plugins and hosts
fazekasgy@0 21 # sdkstatic -- build only the static versions of the SDK libraries
fazekasgy@0 22 # plugins -- build the example plugins (and the SDK if required)
fazekasgy@0 23 # host -- build the simple Vamp plugin host (and the SDK if required)
fazekasgy@0 24 # test -- build the host and example plugins, and run a quick test
fazekasgy@0 25 # _clean -- remove binary targets
fazekasgy@0 26 # distclean -- remove all targets
fazekasgy@0 27 # cleanplug -- remove compiled plugin files
fazekasgy@0 28
fazekasgy@0 29 default: plugins
fazekasgy@0 30
fazekasgy@0 31 # Compile flags
fazekasgy@0 32 #
fazekasgy@0 33 CXXFLAGS := $(CXXFLAGS) -O2 -Wall -I. -fPIC
fazekasgy@0 34
fazekasgy@0 35 # ar, ranlib
fazekasgy@0 36 #
fazekasgy@0 37 AR := ar
fazekasgy@0 38 RANLIB := ranlib
fazekasgy@0 39
fazekasgy@0 40 # Libraries required for the plugins.
fazekasgy@0 41 # (Note that it is desirable to statically link libstdc++ if possible,
fazekasgy@0 42 # because our plugin exposes only a C API so there are no boundary
fazekasgy@0 43 # compatibility problems.)
fazekasgy@0 44 #
fazekasgy@0 45 PLUGIN_LIBS = $(SDKDIR)/libvamp-sdk.a
fazekasgy@0 46 #PLUGIN_LIBS = $(SDKDIR)/libvamp-sdk.a $(shell g++ -print-file-name=libstdc++.a)
fazekasgy@0 47
fazekasgy@0 48 # File extension for a dynamically loadable object
fazekasgy@0 49 #
fazekasgy@0 50 #PLUGIN_EXT = .so
fazekasgy@0 51 #PLUGIN_EXT = .dll
fazekasgy@0 52 PLUGIN_EXT = .dylib
fazekasgy@0 53
fazekasgy@0 54 # Libraries required for the host.
fazekasgy@0 55 #
fazekasgy@0 56 HOST_LIBS = $(SDKDIR)/libvamp-hostsdk.a -lsndfile -ldl
fazekasgy@0 57
fazekasgy@0 58 # Locations for "make install". This will need quite a bit of
fazekasgy@0 59 # editing for non-Linux platforms. Of course you don't necessarily
fazekasgy@0 60 # have to use "make install".
fazekasgy@0 61 #
fazekasgy@0 62 INSTALL_PREFIX := /usr/local
fazekasgy@0 63 INSTALL_API_HEADERS := $(INSTALL_PREFIX)/include/vamp
fazekasgy@0 64 INSTALL_SDK_HEADERS := $(INSTALL_PREFIX)/include/vamp-sdk
fazekasgy@0 65 INSTALL_HOSTEXT_HEADERS := $(INSTALL_PREFIX)/include/vamp-sdk/hostext
fazekasgy@0 66 INSTALL_SDK_LIBS := $(INSTALL_PREFIX)/lib
fazekasgy@0 67
fazekasgy@0 68 INSTALL_SDK_LIBNAME := libvamp-sdk.dylib.1.1.0
fazekasgy@0 69 INSTALL_SDK_LINK_ABI := libvamp-sdk.dylib.1
fazekasgy@0 70 INSTALL_SDK_LINK_DEV := libvamp-sdk.dylib
fazekasgy@0 71 INSTALL_SDK_STATIC := libvamp-sdk.o
fazekasgy@0 72 INSTALL_SDK_LA := libvamp-sdk.la
fazekasgy@0 73
fazekasgy@0 74 INSTALL_HOSTSDK_LIBNAME := libvamp-hostsdk.dylib.2.0.0
fazekasgy@0 75 INSTALL_HOSTSDK_LINK_ABI := libvamp-hostsdk.dylib.2
fazekasgy@0 76 INSTALL_HOSTSDK_LINK_DEV := libvamp-hostsdk.dylib
fazekasgy@0 77 INSTALL_HOSTSDK_STATIC := libvamp-hostsdk.a
fazekasgy@0 78 INSTALL_HOSTSDK_LA := libvamp-hostsdk.la
fazekasgy@0 79
fazekasgy@0 80 INSTALL_PKGCONFIG := $(INSTALL_PREFIX)/lib/pkgconfig
fazekasgy@0 81
fazekasgy@0 82 # Install plugins to this location
fazekasgy@0 83 #
fazekasgy@0 84 LIBRARY_PREFIX :=/Library
fazekasgy@0 85 INSTALL_PLUGIN :=$(LIBRARY_PREFIX)/Audio/Plug-Ins/Vamp
fazekasgy@0 86
fazekasgy@0 87 # Flags required to tell the compiler to create a dynamically loadable object
fazekasgy@0 88 #
fazekasgy@0 89 #DYNAMIC_LDFLAGS = --static-libgcc -shared -Wl,-Bsymbolic
fazekasgy@0 90 DYNAMIC_LDFLAGS = -dynamiclib
fazekasgy@0 91 PLUGIN_LDFLAGS = $(DYNAMIC_LDFLAGS)
fazekasgy@0 92 SDK_DYNAMIC_LDFLAGS = $(DYNAMIC_LDFLAGS) -Wl,-soname=$(INSTALL_SDK_LINK_ABI)
fazekasgy@0 93 HOSTSDK_DYNAMIC_LDFLAGS = $(DYNAMIC_LDFLAGS) -Wl,-soname=$(INSTALL_HOSTSDK_LINK_ABI)
fazekasgy@0 94
fazekasgy@0 95 ## For OS/X with g++:
fazekasgy@0 96 #DYNAMIC_LDFLAGS = -dynamiclib
fazekasgy@0 97 PLUGIN_LDFLAGS = $(DYNAMIC_LDFLAGS)
fazekasgy@0 98 SDK_DYNAMIC_LDFLAGS = $(DYNAMIC_LDFLAGS)
fazekasgy@0 99 HOSTSDK_DYNAMIC_LDFLAGS = $(DYNAMIC_LDFLAGS)
fazekasgy@0 100
fazekasgy@0 101
fazekasgy@0 102 ### End of user-serviceable parts
fazekasgy@0 103
fazekasgy@0 104 # Plugin headers, compiler objects and targets
fazekasgy@0 105
fazekasgy@0 106 PLUGIN_HEADERS = \
fazekasgy@0 107 $(EXAMPLEDIR)/PyPlugScanner.h \
fazekasgy@0 108 $(EXAMPLEDIR)/PyPlugin.h
fazekasgy@0 109
fazekasgy@0 110 PLUGIN_OBJECTS = \
fazekasgy@0 111 $(EXAMPLEDIR)/PyPlugScanner.o \
fazekasgy@0 112 $(EXAMPLEDIR)/PyPlugin.o \
fazekasgy@0 113 $(EXAMPLEDIR)/pyvamp-main.o
fazekasgy@0 114
fazekasgy@0 115 PLUGIN_NAME = vamp-pyvamp-plugin
fazekasgy@0 116
fazekasgy@0 117 PLUGIN_TARGET = \
fazekasgy@0 118 $(EXAMPLEDIR)/$(PLUGIN_NAME)$(PLUGIN_EXT)
fazekasgy@0 119
fazekasgy@0 120 PLUGIN_DESCRIPTORS = \
fazekasgy@0 121 $(EXAMPLEDIR)/exampleplugin.n3
fazekasgy@0 122
fazekasgy@0 123 # We need to link with python
fazekasgy@0 124 # Links the actual python executable. forces to export symbol _PyMac_Error
fazekasgy@0 125 PYTHON_LINK_AS_SHARED := \
fazekasgy@0 126 -u _PyMac_Error /Library/Frameworks/Python.framework/Versions/2.5/Python
fazekasgy@0 127
fazekasgy@0 128 API_HEADERS = \
fazekasgy@0 129 $(APIDIR)/vamp.h
fazekasgy@0 130
fazekasgy@0 131 SDK_HEADERS = \
fazekasgy@0 132 $(SDKDIR)/Plugin.h \
fazekasgy@0 133 $(SDKDIR)/PluginAdapter.h \
fazekasgy@0 134 $(SDKDIR)/PluginBase.h \
fazekasgy@0 135 $(SDKDIR)/RealTime.h
fazekasgy@0 136
fazekasgy@0 137 HOSTSDK_HEADERS = \
fazekasgy@0 138 $(SDKDIR)/Plugin.h \
fazekasgy@0 139 $(SDKDIR)/PluginBase.h \
fazekasgy@0 140 $(SDKDIR)/PluginHostAdapter.h \
fazekasgy@0 141 $(SDKDIR)/RealTime.h
fazekasgy@0 142
fazekasgy@0 143 HOSTEXT_HEADERS = \
fazekasgy@0 144 $(HOSTEXTDIR)/PluginBufferingAdapter.h \
fazekasgy@0 145 $(HOSTEXTDIR)/PluginChannelAdapter.h \
fazekasgy@0 146 $(HOSTEXTDIR)/PluginInputDomainAdapter.h \
fazekasgy@0 147 $(HOSTEXTDIR)/PluginLoader.h \
fazekasgy@0 148 $(HOSTEXTDIR)/PluginWrapper.h
fazekasgy@0 149
fazekasgy@0 150 SDK_OBJECTS = \
fazekasgy@0 151 $(SDKDIR)/PluginAdapter.o \
fazekasgy@0 152 $(SDKDIR)/RealTime.o
fazekasgy@0 153
fazekasgy@0 154 HOSTSDK_OBJECTS = \
fazekasgy@0 155 $(SDKDIR)/PluginHostAdapter.o \
fazekasgy@0 156 $(HOSTEXTDIR)/PluginBufferingAdapter.o \
fazekasgy@0 157 $(HOSTEXTDIR)/PluginChannelAdapter.o \
fazekasgy@0 158 $(HOSTEXTDIR)/PluginInputDomainAdapter.o \
fazekasgy@0 159 $(HOSTEXTDIR)/PluginLoader.o \
fazekasgy@0 160 $(HOSTEXTDIR)/PluginWrapper.o \
fazekasgy@0 161 $(SDKDIR)/RealTime.o
fazekasgy@0 162
fazekasgy@0 163 SDK_STATIC = \
fazekasgy@0 164 $(SDKDIR)/libvamp-sdk.a
fazekasgy@0 165
fazekasgy@0 166 HOSTSDK_STATIC = \
fazekasgy@0 167 $(SDKDIR)/libvamp-hostsdk.a
fazekasgy@0 168
fazekasgy@0 169 SDK_DYNAMIC = \
fazekasgy@0 170 $(SDKDIR)/libvamp-sdk$(PLUGIN_EXT)
fazekasgy@0 171
fazekasgy@0 172 HOSTSDK_DYNAMIC = \
fazekasgy@0 173 $(SDKDIR)/libvamp-hostsdk$(PLUGIN_EXT)
fazekasgy@0 174
fazekasgy@0 175 SDK_LA = \
fazekasgy@0 176 $(SDKDIR)/libvamp-sdk.la
fazekasgy@0 177
fazekasgy@0 178 HOSTSDK_LA = \
fazekasgy@0 179 $(SDKDIR)/libvamp-hostsdk.la
fazekasgy@0 180
fazekasgy@0 181 HOST_HEADERS = \
fazekasgy@0 182 $(HOSTDIR)/system.h
fazekasgy@0 183
fazekasgy@0 184 HOST_OBJECTS = \
fazekasgy@0 185 $(HOSTDIR)/vamp-simple-host.o
fazekasgy@0 186
fazekasgy@0 187 HOST_TARGET = \
fazekasgy@0 188 $(HOSTDIR)/vamp-simple-host
fazekasgy@0 189
fazekasgy@0 190 #Primary Make rules
fazekasgy@0 191 #
fazekasgy@0 192
fazekasgy@0 193 sdk: sdkstatic $(SDK_DYNAMIC) $(HOSTSDK_DYNAMIC)
fazekasgy@0 194
fazekasgy@0 195 sdkstatic:
fazekasgy@0 196 $(SDK_STATIC) $(HOSTSDK_STATIC)
fazekasgy@0 197 $(RANLIB) $(SDK_STATIC)
fazekasgy@0 198 $(RANLIB) $(HOSTSDK_STATIC)
fazekasgy@0 199
fazekasgy@0 200 plugins: $(PLUGIN_TARGET)
fazekasgy@0 201
fazekasgy@0 202 host: $(HOST_TARGET)
fazekasgy@0 203
fazekasgy@0 204 all: sdk plugins host test
fazekasgy@0 205
fazekasgy@0 206 #This is where all the stuff gets built
fazekasgy@0 207 #
fazekasgy@0 208
fazekasgy@0 209 $(SDK_STATIC): $(SDK_OBJECTS) $(API_HEADERS) $(SDK_HEADERS)
fazekasgy@0 210 $(AR) r $@ $(SDK_OBJECTS)
fazekasgy@0 211
fazekasgy@0 212 $(HOSTSDK_STATIC): $(HOSTSDK_OBJECTS) $(API_HEADERS) $(HOSTSDK_HEADERS) $(HOSTEXT_HEADERS)
fazekasgy@0 213 $(AR) r $@ $(HOSTSDK_OBJECTS)
fazekasgy@0 214
fazekasgy@0 215 $(SDK_DYNAMIC): $(SDK_OBJECTS) $(API_HEADERS) $(SDK_HEADERS)
fazekasgy@0 216 $(CXX) $(LDFLAGS) $(SDK_DYNAMIC_LDFLAGS) -o $@ $(SDK_OBJECTS)
fazekasgy@0 217
fazekasgy@0 218 $(HOSTSDK_DYNAMIC): $(HOSTSDK_OBJECTS) $(API_HEADERS) $(HOSTSDK_HEADERS) $(HOSTEXT_HEADERS)
fazekasgy@0 219 $(CXX) $(LDFLAGS) $(HOSTSDK_DYNAMIC_LDFLAGS) -o $@ $(HOSTSDK_OBJECTS)
fazekasgy@0 220
fazekasgy@0 221 $(PLUGIN_TARGET): $(PLUGIN_OBJECTS) $(SDK_STATIC) $(PLUGIN_HEADERS)
fazekasgy@0 222 $(CXX) $(LDFLAGS) $(PLUGIN_LDFLAGS) -o $@ $(PLUGIN_OBJECTS) $(PLUGIN_LIBS) $(PYTHON_LINK_AS_SHARED)
fazekasgy@0 223
fazekasgy@0 224 $(HOST_TARGET): $(HOST_OBJECTS) $(HOSTSDK_STATIC) $(HOST_HEADERS)
fazekasgy@0 225 $(CXX) $(LDFLAGS) $(HOST_LDFLAGS) -o $@ $(HOST_OBJECTS) $(HOST_LIBS)
fazekasgy@0 226
fazekasgy@0 227 test: plugins host
fazekasgy@0 228 VAMP_PATH=$(EXAMPLEDIR) $(HOST_TARGET) -l
fazekasgy@0 229
fazekasgy@0 230 _clean:
fazekasgy@0 231 rm -f $(SDK_OBJECTS) $(HOSTSDK_OBJECTS) $(PLUGIN_OBJECTS) $(HOST_OBJECTS)
fazekasgy@0 232
fazekasgy@0 233 cleanplug :
fazekasgy@0 234 rm -f $(PLUGIN_OBJECTS)
fazekasgy@0 235 rm -f $(EXAMPLEDIR)/$(PLUGIN_NAME)$(PLUGIN_EXT)
fazekasgy@0 236 # rm -f $(LIBRARY_PREFIX)/$(INSTALL_PLUGIN)/$(PLUGIN_NAME)$(PLUGIN_EXT)
fazekasgy@0 237
fazekasgy@0 238
fazekasgy@0 239 distclean: clean
fazekasgy@0 240 rm -f $(SDK_STATIC) $(SDK_DYNAMIC) $(HOSTSDK_STATIC) $(HOSTSDK_DYNAMIC) $(PLUGIN_TARGET) $(HOST_TARGET) *~ */*~
fazekasgy@0 241
fazekasgy@0 242 _install: $(SDK_STATIC) $(SDK_DYNAMIC) $(HOSTSDK_STATIC) $(HOSTSDK_DYNAMIC) $(PLUGIN_TARGET) $(HOST_TARGET)
fazekasgy@0 243 mkdir -p $(DESTDIR)$(INSTALL_API_HEADERS)
fazekasgy@0 244 mkdir -p $(DESTDIR)$(INSTALL_SDK_HEADERS)
fazekasgy@0 245 mkdir -p $(DESTDIR)$(INSTALL_HOSTEXT_HEADERS)
fazekasgy@0 246 mkdir -p $(DESTDIR)$(INSTALL_SDK_LIBS)
fazekasgy@0 247 mkdir -p $(DESTDIR)$(INSTALL_PKGCONFIG)
fazekasgy@0 248 cp $(API_HEADERS) $(DESTDIR)$(INSTALL_API_HEADERS)
fazekasgy@0 249 cp $(SDK_HEADERS) $(DESTDIR)$(INSTALL_SDK_HEADERS)
fazekasgy@0 250 cp $(HOSTSDK_HEADERS) $(DESTDIR)$(INSTALL_SDK_HEADERS)
fazekasgy@0 251 cp $(HOSTEXT_HEADERS) $(DESTDIR)$(INSTALL_HOSTEXT_HEADERS)
fazekasgy@0 252 cp $(SDK_STATIC) $(DESTDIR)$(INSTALL_SDK_LIBS)
fazekasgy@0 253 cp $(HOSTSDK_STATIC) $(DESTDIR)$(INSTALL_SDK_LIBS)
fazekasgy@0 254 cp $(SDK_DYNAMIC) $(DESTDIR)$(INSTALL_SDK_LIBS)/$(INSTALL_SDK_LIBNAME)
fazekasgy@0 255 cp $(HOSTSDK_DYNAMIC) $(DESTDIR)$(INSTALL_SDK_LIBS)/$(INSTALL_HOSTSDK_LIBNAME)
fazekasgy@0 256 rm -f $(DESTDIR)$(INSTALL_SDK_LIBS)/$(INSTALL_SDK_LINK_ABI)
fazekasgy@0 257 ln -s $(INSTALL_SDK_LIBNAME) $(DESTDIR)$(INSTALL_SDK_LIBS)/$(INSTALL_SDK_LINK_ABI)
fazekasgy@0 258 rm -f $(DESTDIR)$(INSTALL_SDK_LIBS)/$(INSTALL_HOSTSDK_LINK_ABI)
fazekasgy@0 259 ln -s $(INSTALL_HOSTSDK_LIBNAME) $(DESTDIR)$(INSTALL_SDK_LIBS)/$(INSTALL_HOSTSDK_LINK_ABI)
fazekasgy@0 260 rm -f $(DESTDIR)$(INSTALL_SDK_LIBS)/$(INSTALL_SDK_LINK_DEV)
fazekasgy@0 261 ln -s $(INSTALL_SDK_LIBNAME) $(DESTDIR)$(INSTALL_SDK_LIBS)/$(INSTALL_SDK_LINK_DEV)
fazekasgy@0 262 rm -f $(DESTDIR)$(INSTALL_SDK_LIBS)/$(INSTALL_HOSTSDK_LINK_DEV)
fazekasgy@0 263 ln -s $(INSTALL_HOSTSDK_LIBNAME) $(DESTDIR)$(INSTALL_SDK_LIBS)/$(INSTALL_HOSTSDK_LINK_DEV)
fazekasgy@0 264 sed "s,%PREFIX%,$(INSTALL_PREFIX)," $(APIDIR)/vamp.pc.in \
fazekasgy@0 265 > $(DESTDIR)$(INSTALL_PKGCONFIG)/vamp.pc
fazekasgy@0 266 sed "s,%PREFIX%,$(INSTALL_PREFIX)," $(SDKDIR)/vamp-sdk.pc.in \
fazekasgy@0 267 > $(DESTDIR)$(INSTALL_PKGCONFIG)/vamp-sdk.pc
fazekasgy@0 268 sed "s,%PREFIX%,$(INSTALL_PREFIX)," $(SDKDIR)/vamp-hostsdk.pc.in \
fazekasgy@0 269 > $(DESTDIR)$(INSTALL_PKGCONFIG)/vamp-hostsdk.pc
fazekasgy@0 270 sed -e "s,%LIBNAME%,$(INSTALL_SDK_LIBNAME),g" \
fazekasgy@0 271 -e "s,%LINK_ABI%,$(INSTALL_SDK_LINK_ABI),g" \
fazekasgy@0 272 -e "s,%LINK_DEV%,$(INSTALL_SDK_LINK_DEV),g" \
fazekasgy@0 273 -e "s,%STATIC%,$(INSTALL_SDK_STATIC),g" \
fazekasgy@0 274 -e "s,%LIBS%,$(INSTALL_SDK_LIBS),g" $(SDK_LA).in \
fazekasgy@0 275 > $(DESTDIR)$(INSTALL_SDK_LIBS)/$(INSTALL_SDK_LA)
fazekasgy@0 276 sed -e "s,%LIBNAME%,$(INSTALL_HOSTSDK_LIBNAME),g" \
fazekasgy@0 277 -e "s,%LINK_ABI%,$(INSTALL_HOSTSDK_LINK_ABI),g" \
fazekasgy@0 278 -e "s,%LINK_DEV%,$(INSTALL_HOSTSDK_LINK_DEV),g" \
fazekasgy@0 279 -e "s,%STATIC%,$(INSTALL_HOSTSDK_STATIC),g" \
fazekasgy@0 280 -e "s,%LIBS%,$(INSTALL_SDK_LIBS),g" $(HOSTSDK_LA).in \
fazekasgy@0 281 > $(DESTDIR)$(INSTALL_SDK_LIBS)/$(INSTALL_HOSTSDK_LA)
fazekasgy@0 282
fazekasgy@0 283 installplug:
fazekasgy@0 284 mkdir -p $(INSTALL_PLUGIN)
fazekasgy@0 285 rm -f $(INSTALL_PLUGIN)/$(PLUGIN_NAME)$(PLUGIN_EXT)
fazekasgy@0 286 cp $(PLUGIN_NAME)$(PLUGIN_EXT) $(INSTALL_PLUGIN)/$(PLUGIN_NAME)$(PLUGIN_EXT)
fazekasgy@0 287 # cp $(PLUGIN_DESCRIPTORS) $(INSTALL_PLUGIN)
fazekasgy@0 288
fazekasgy@0 289 installplugin: installplug