Chris@23: Chris@23: The Vamp Plugin SDK -- Platform Notes for Linux and other GNU platforms Chris@23: ======================================================================= Chris@23: Chris@23: Building at the command line Chris@23: ---------------------------- Chris@23: Chris@23: To build the SDK, example plugins, and command-line host: Chris@23: Chris@23: $ ./configure Chris@23: $ make Chris@23: Chris@23: To install after a successful make, run "make install" as root (or via Chris@23: sudo). Chris@23: Chris@23: Chris@23: Installing the Example Plugins Chris@23: ------------------------------ Chris@23: Chris@23: To install the example plugins so you can load them in Vamp hosts, Chris@23: copy the files Chris@23: Chris@23: examples/vamp-example-plugins.so Chris@23: and Chris@23: examples/vamp-example-plugins.cat Chris@23: Chris@23: to Chris@23: /usr/local/lib/vamp/ Chris@23: or Chris@23: $HOME/vamp/ Chris@23: Chris@23: Chris@23: Plugin Linkage Chris@23: -------------- Chris@23: Chris@23: Vamp plugins are distributed as dynamic libraries (.so files). A Chris@23: properly packaged Vamp plugin library should export exactly one public Chris@23: symbol, namely the Vamp API entry point vampGetPluginDescriptor. Chris@23: Chris@23: The default for the GNU linker is to export all of the symbols in the Chris@23: library. This will work (the host will be able to load the plugin), Chris@23: but it unnecessarily pollutes the host's symbol namespace, it may Chris@23: cause symbol collisions in some esoteric circumstances, and it Chris@23: increases the amount of time the plugin takes to load. Chris@23: Chris@23: To improve this behaviour, you can instruct the linker to export only Chris@23: the one required symbol using a linker script. To do this, place the Chris@23: text Chris@23: Chris@23: { Chris@23: global: vampGetPluginDescriptor; Chris@23: local: *; Chris@23: }; Chris@23: Chris@23: into a text file, and then use the --version-script option to the Chris@23: linker to tell it to refer to this file. All other symbols will then Chris@23: be properly hidden. Chris@23: Chris@23: The Makefile included in this SDK uses this method to manage symbol Chris@23: visibility for the included example plugins, using the file Chris@23: build/vamp-plugin.map. There are other methods that will work too, Chris@23: but this one is simple and has the advantage of requiring no changes Chris@23: to the code. Chris@23: Chris@23: Chris@23: Test Your Plugins Chris@23: ----------------- Chris@23: Chris@23: The Vamp Plugin Tester is a vital utility which you can use to test Chris@23: your plugins for common problems. It can help you if you're having Chris@23: problems getting your plugin to work at all, and you're strongly Chris@23: advised to use it before you release anything. Download it from the Chris@23: Vamp plugins site now! Chris@23: