Mercurial > hg > vamp-plugin-sdk
comparison Makefile @ 58:0284955e31e5 host-factory-stuff
* reshuffle
| author | cannam |
|---|---|
| date | Thu, 24 May 2007 10:05:00 +0000 |
| parents | 09a1aac6c362 |
| children | fa79c4ec847d |
comparison
equal
deleted
inserted
replaced
| 57:09a1aac6c362 | 58:0284955e31e5 |
|---|---|
| 1 | 1 |
| 2 # Makefile for the Vamp plugin SDK. This builds the SDK objects, | 2 # Makefile for the Vamp plugin SDK. This builds the SDK objects, |
| 3 # libraries, example plugins, and the test host. Please adjust to | 3 # libraries, example plugins, and the test host. Please adjust to |
| 4 # suit your operating system requirements. | 4 # suit your operating system requirements. |
| 5 | 5 |
| 6 ## Choose your | |
| 7 | |
| 8 APIDIR = vamp | |
| 6 SDKDIR = vamp-sdk | 9 SDKDIR = vamp-sdk |
| 7 HOSTSDKDIR = vamp-hostsdk | 10 HOSTEXTDIR = vamp-sdk/hostext |
| 8 APIDIR = vamp | |
| 9 EXAMPLEDIR = examples | 11 EXAMPLEDIR = examples |
| 10 HOSTDIR = host | 12 HOSTDIR = host |
| 11 | 13 |
| 12 | 14 ### |
| 13 ### Start of user-serviceable parts | 15 ### Start of user-serviceable parts |
| 16 ### | |
| 17 | |
| 18 # Default build target (or use "make <target>" to select one). | |
| 19 # Targets are: | |
| 20 # all -- build everything | |
| 21 # sdk -- build all the Vamp SDK libraries for plugins and hosts | |
| 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 # | |
| 28 default: all | |
| 29 | |
| 30 # Compile flags | |
| 31 # | |
| 32 CXXFLAGS := $(CXXFLAGS) -O2 -Wall -I$(SDKDIR) -I$(HOSTEXTDIR) -I$(APIDIR) -I. | |
| 33 | |
| 34 # Libraries required for the plugins. | |
| 35 # (Note that it is desirable to statically link libstdc++ if possible, | |
| 36 # because our plugin exposes only a C API so there are no boundary | |
| 37 # compatibility problems.) | |
| 38 # | |
| 39 PLUGIN_LIBS = $(SDKDIR)/libvamp-sdk.a | |
| 40 #PLUGIN_LIBS = vamp-sdk/libvamp-sdk.a $(shell g++ -print-file-name=libstdc++.a) | |
| 41 | |
| 42 # Flags required to tell the compiler to link to a dynamically loadable object | |
| 43 # | |
| 44 PLUGIN_LDFLAGS = -shared -Wl,-Bsymbolic -static-libgcc | |
| 45 | |
| 46 # File extension for a dynamically loadable object | |
| 47 # | |
| 48 PLUGIN_EXT = .so | |
| 49 | |
| 50 ## For OS/X with g++: | |
| 51 #PLUGIN_LDFLAGS = -dynamiclib | |
| 52 #PLUGIN_EXT = .dylib | |
| 53 | |
| 54 # Libraries required for the host. | |
| 55 # | |
| 56 HOST_LIBS = $(SDKDIR)/libvamp-hostsdk.a -lsndfile -ldl | |
| 14 | 57 |
| 15 # Locations for "make install". This will need quite a bit of | 58 # Locations for "make install". This will need quite a bit of |
| 16 # editing for non-Linux platforms. Of course you don't necessarily | 59 # editing for non-Linux platforms. Of course you don't necessarily |
| 17 # have to use "make install". | 60 # have to use "make install". |
| 18 # | 61 # |
| 33 INSTALL_HOSTSDK_STATIC := libvamp-hostsdk.a | 76 INSTALL_HOSTSDK_STATIC := libvamp-hostsdk.a |
| 34 INSTALL_HOSTSDK_LA := libvamp-hostsdk.la | 77 INSTALL_HOSTSDK_LA := libvamp-hostsdk.la |
| 35 | 78 |
| 36 INSTALL_PKGCONFIG := $(INSTALL_PREFIX)/lib/pkgconfig | 79 INSTALL_PKGCONFIG := $(INSTALL_PREFIX)/lib/pkgconfig |
| 37 | 80 |
| 38 # Compile flags | |
| 39 # | |
| 40 CXXFLAGS := $(CXXFLAGS) -O2 -Wall -I$(SDKDIR) -I$(HOSTSDKDIR) -I$(APIDIR) -I. | |
| 41 | |
| 42 # Libraries required for the host at link time | |
| 43 # | |
| 44 HOST_LIBS = $(HOSTSDKDIR)/libvamp-hostsdk.a -lsndfile -ldl | |
| 45 | |
| 46 # Libraries required for the plugin. Note that we can (and actively | |
| 47 # want to) statically link libstdc++, because our plugin exposes only | |
| 48 # a C API so there are no boundary compatibility problems. | |
| 49 # | |
| 50 PLUGIN_LIBS = $(SDKDIR)/libvamp-sdk.a | |
| 51 #PLUGIN_LIBS = vamp-sdk/libvamp-sdk.a $(shell g++ -print-file-name=libstdc++.a) | |
| 52 | |
| 53 # Flags required to tell the compiler to link to a dynamically loadable object | |
| 54 # | |
| 55 PLUGIN_LDFLAGS = -shared -Wl,-Bsymbolic -static-libgcc | |
| 56 | |
| 57 # File extension for a dynamically loadable object | |
| 58 # | |
| 59 PLUGIN_EXT = .so | |
| 60 | |
| 61 ## For OS/X with g++: | |
| 62 #PLUGIN_LDFLAGS = -dynamiclib | |
| 63 #PLUGIN_EXT = .dylib | |
| 64 | |
| 65 ### End of user-serviceable parts | 81 ### End of user-serviceable parts |
| 66 | 82 |
| 67 | 83 |
| 68 API_HEADERS = \ | 84 API_HEADERS = \ |
| 69 $(APIDIR)/vamp.h | 85 $(APIDIR)/vamp.h |
| 75 $(SDKDIR)/RealTime.h | 91 $(SDKDIR)/RealTime.h |
| 76 | 92 |
| 77 HOSTSDK_HEADERS = \ | 93 HOSTSDK_HEADERS = \ |
| 78 $(SDKDIR)/Plugin.h \ | 94 $(SDKDIR)/Plugin.h \ |
| 79 $(SDKDIR)/PluginBase.h \ | 95 $(SDKDIR)/PluginBase.h \ |
| 80 $(HOSTSDKDIR)/PluginHostAdapter.h \ | 96 $(SDKDIR)/PluginHostAdapter.h \ |
| 81 $(HOSTSDKDIR)/PluginInputDomainAdapter.h \ | 97 $(HOSTEXTDIR)/PluginInputDomainAdapter.h \ |
| 82 $(HOSTSDKDIR)/PluginLoader.h \ | 98 $(HOSTEXTDIR)/PluginLoader.h \ |
| 83 $(HOSTSDKDIR)/PluginWrapper.h \ | 99 $(HOSTEXTDIR)/PluginWrapper.h \ |
| 84 $(SDKDIR)/RealTime.h | 100 $(SDKDIR)/RealTime.h |
| 85 | 101 |
| 86 SDK_OBJECTS = \ | 102 SDK_OBJECTS = \ |
| 87 $(SDKDIR)/PluginAdapter.o \ | 103 $(SDKDIR)/PluginAdapter.o \ |
| 88 $(SDKDIR)/RealTime.o | 104 $(SDKDIR)/RealTime.o |
| 89 | 105 |
| 90 HOSTSDK_OBJECTS = \ | 106 HOSTSDK_OBJECTS = \ |
| 91 $(HOSTSDKDIR)/PluginHostAdapter.o \ | 107 $(SDKDIR)/PluginHostAdapter.o \ |
| 92 $(HOSTSDKDIR)/PluginInputDomainAdapter.o \ | 108 $(HOSTEXTDIR)/PluginInputDomainAdapter.o \ |
| 93 $(HOSTSDKDIR)/PluginLoader.o \ | 109 $(HOSTEXTDIR)/PluginLoader.o \ |
| 94 $(HOSTSDKDIR)/PluginWrapper.o \ | 110 $(HOSTEXTDIR)/PluginWrapper.o \ |
| 95 $(SDKDIR)/RealTime.o | 111 $(SDKDIR)/RealTime.o |
| 96 | 112 |
| 97 SDK_STATIC = \ | 113 SDK_STATIC = \ |
| 98 $(SDKDIR)/libvamp-sdk.a | 114 $(SDKDIR)/libvamp-sdk.a |
| 99 | 115 |
| 100 HOSTSDK_STATIC = \ | 116 HOSTSDK_STATIC = \ |
| 101 $(HOSTSDKDIR)/libvamp-hostsdk.a | 117 $(SDKDIR)/libvamp-hostsdk.a |
| 102 | 118 |
| 103 SDK_DYNAMIC = \ | 119 SDK_DYNAMIC = \ |
| 104 $(SDKDIR)/libvamp-sdk.so | 120 $(SDKDIR)/libvamp-sdk.so |
| 105 | 121 |
| 106 HOSTSDK_DYNAMIC = \ | 122 HOSTSDK_DYNAMIC = \ |
| 107 $(HOSTSDKDIR)/libvamp-hostsdk.so | 123 $(SDKDIR)/libvamp-hostsdk.so |
| 108 | 124 |
| 109 SDK_LA = \ | 125 SDK_LA = \ |
| 110 $(SDKDIR)/libvamp-sdk.la | 126 $(SDKDIR)/libvamp-sdk.la |
| 111 | 127 |
| 112 PLUGIN_HEADERS = \ | 128 PLUGIN_HEADERS = \ |
| 132 $(HOSTDIR)/vamp-simple-host.o | 148 $(HOSTDIR)/vamp-simple-host.o |
| 133 | 149 |
| 134 HOST_TARGET = \ | 150 HOST_TARGET = \ |
| 135 $(HOSTDIR)/vamp-simple-host | 151 $(HOSTDIR)/vamp-simple-host |
| 136 | 152 |
| 137 all: $(SDK_STATIC) $(SDK_DYNAMIC) $(HOSTSDK_STATIC) $(HOSTSDK_DYNAMIC) $(PLUGIN_TARGET) $(HOST_TARGET) test | 153 sdk: $(SDK_STATIC) $(SDK_DYNAMIC) $(HOSTSDK_STATIC) $(HOSTSDK_DYNAMIC) |
| 154 | |
| 155 plugins: sdk $(PLUGIN_TARGET) | |
| 156 | |
| 157 host: sdk $(HOST_TARGET) | |
| 158 | |
| 159 all: sdk plugins host test | |
| 138 | 160 |
| 139 $(SDK_STATIC): $(SDK_OBJECTS) $(API_HEADERS) $(SDK_HEADERS) | 161 $(SDK_STATIC): $(SDK_OBJECTS) $(API_HEADERS) $(SDK_HEADERS) |
| 140 $(AR) r $@ $(SDK_OBJECTS) | 162 $(AR) r $@ $(SDK_OBJECTS) |
| 141 | 163 |
| 142 $(HOSTSDK_STATIC): $(HOSTSDK_OBJECTS) $(API_HEADERS) $(HOSTSDK_HEADERS) | 164 $(HOSTSDK_STATIC): $(HOSTSDK_OBJECTS) $(API_HEADERS) $(HOSTSDK_HEADERS) |
| 152 $(CXX) $(LDFLAGS) $(PLUGIN_LDFLAGS) -o $@ $(PLUGIN_OBJECTS) $(PLUGIN_LIBS) | 174 $(CXX) $(LDFLAGS) $(PLUGIN_LDFLAGS) -o $@ $(PLUGIN_OBJECTS) $(PLUGIN_LIBS) |
| 153 | 175 |
| 154 $(HOST_TARGET): $(HOST_OBJECTS) $(HOSTSDK_TARGET) $(HOST_HEADERS) | 176 $(HOST_TARGET): $(HOST_OBJECTS) $(HOSTSDK_TARGET) $(HOST_HEADERS) |
| 155 $(CXX) $(LDFLAGS) $(HOST_LDFLAGS) -o $@ $(HOST_OBJECTS) $(HOST_LIBS) | 177 $(CXX) $(LDFLAGS) $(HOST_LDFLAGS) -o $@ $(HOST_OBJECTS) $(HOST_LIBS) |
| 156 | 178 |
| 157 test: $(HOST_TARGET) $(PLUGIN_TARGET) | 179 test: plugins host |
| 158 $(HOST_TARGET) $(PLUGIN_TARGET) | 180 $(HOST_TARGET) $(PLUGIN_TARGET) |
| 159 | 181 |
| 160 clean: | 182 clean: |
| 161 rm -f $(SDK_OBJECTS) $(HOSTSDK_OBJECTS) $(PLUGIN_OBJECTS) $(HOST_OBJECTS) | 183 rm -f $(SDK_OBJECTS) $(HOSTSDK_OBJECTS) $(PLUGIN_OBJECTS) $(HOST_OBJECTS) |
| 162 | 184 |
