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