annotate build/README.linux @ 239:cc467e52da4c

* Add platform README files
author cannam
date Mon, 10 Nov 2008 12:39:19 +0000
parents
children 683f4bc92a69
rev   line source
cannam@239 1
cannam@239 2 The Vamp Plugin SDK -- Platform Notes for Linux and other GNU platforms
cannam@239 3 =======================================================================
cannam@239 4
cannam@239 5 Building at the command line
cannam@239 6 ----------------------------
cannam@239 7
cannam@239 8 To build the SDK, example plugins, and command-line host, first edit
cannam@239 9 the Makefile to suit your platform according to the comments in it,
cannam@239 10 then run "make".
cannam@239 11
cannam@239 12 Note that you must have libsndfile
cannam@239 13 (http://www.mega-nerd.com/libsndfile/) installed in order to build the
cannam@239 14 command-line host successfully. To build only the SDK and examples,
cannam@239 15 run "make sdk examples" instead of just "make".
cannam@239 16
cannam@239 17
cannam@239 18 Installing the Example Plugins
cannam@239 19 ------------------------------
cannam@239 20
cannam@239 21 To install the example plugins so you can load them in Vamp hosts,
cannam@239 22 copy the files
cannam@239 23
cannam@239 24 examples/vamp-example-plugins.so
cannam@239 25 and
cannam@239 26 examples/vamp-example-plugins.cat
cannam@239 27
cannam@239 28 to
cannam@239 29 /usr/local/lib/vamp/
cannam@239 30 or
cannam@239 31 $HOME/vamp/
cannam@239 32
cannam@239 33
cannam@239 34 Plugin Linkage
cannam@239 35 --------------
cannam@239 36
cannam@239 37 Vamp plugins are distributed as dynamic libraries (.so files). A
cannam@239 38 properly packaged Vamp plugin library should export exactly one public
cannam@239 39 symbol, namely the Vamp API entry point vampGetPluginDescriptor.
cannam@239 40
cannam@239 41 The default for the GNU linker is to export all of the symbols in the
cannam@239 42 library. This will work (the host will be able to load the plugin),
cannam@239 43 but it unnecessarily pollutes the host's symbol namespace, it may
cannam@239 44 cause symbol collisions in some esoteric circumstances, and it
cannam@239 45 increases the amount of time the plugin takes to load.
cannam@239 46
cannam@239 47 To improve this behaviour, you can instruct the linker to export only
cannam@239 48 the one required symbol using a linker script. To do this, place the
cannam@239 49 text
cannam@239 50
cannam@239 51 {
cannam@239 52 global: vampGetPluginDescriptor;
cannam@239 53 local: *;
cannam@239 54 };
cannam@239 55
cannam@239 56 into a text file, and then use the --version-script option to the
cannam@239 57 linker to tell it to refer to this file. All other symbols will then
cannam@239 58 be properly hidden.
cannam@239 59
cannam@239 60 The Makefile included in this SDK uses this method to manage symbol
cannam@239 61 visibility for the included example plugins, using the file
cannam@239 62 build/vamp-plugin.map. There are other methods that will work too,
cannam@239 63 but this one is simple and has the advantage of requiring no changes
cannam@239 64 to the code.
cannam@239 65