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