annotate build/README.osx @ 274:33feff966de3

* Fix an infinite loop that occurs with some features
author cannam
date Fri, 12 Dec 2008 14:28:42 +0000
parents e02c93c4de8f
children 2e16d99867bd
rev   line source
cannam@239 1
cannam@239 2 The Vamp Plugin SDK -- Platform Notes for OS/X
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:
cannam@239 9
cannam@239 10 $ make -f Makefile.osx
cannam@239 11
cannam@254 12 You must have libsndfile (http://www.mega-nerd.com/libsndfile/)
cannam@254 13 installed in order to build the command-line host successfully. To
cannam@254 14 build only the SDK and examples:
cannam@239 15
cannam@239 16 $ make -f Makefile.osx sdk examples
cannam@239 17
cannam@254 18 See the comments at the top of Makefile.osx for more information about
cannam@254 19 the libraries and other targets that are built in this way.
cannam@254 20
cannam@254 21 If you are using an IDE, you may prefer to simply add the vamp-sdk and
cannam@254 22 src/vamp-sdk (for plugins) or vamp-hostsdk and src/vamp-hostsdk (for
cannam@254 23 hosts) directories to your existing project.
cannam@239 24
cannam@239 25
cannam@239 26 Installing the Example Plugins
cannam@239 27 ------------------------------
cannam@239 28
cannam@239 29 To install the example plugins so you can load them in Vamp hosts,
cannam@239 30 copy the files
cannam@239 31
cannam@239 32 examples/vamp-example-plugins.dylib
cannam@239 33 and
cannam@239 34 examples/vamp-example-plugins.cat
cannam@239 35
cannam@239 36 to
cannam@239 37 /Library/Audio/Plug-Ins/Vamp/
cannam@239 38 or
cannam@239 39 $HOME/Library/Audio/Plug-Ins/Vamp/
cannam@239 40
cannam@239 41
cannam@239 42 Plugin Linkage
cannam@239 43 --------------
cannam@239 44
cannam@239 45 Vamp plugins are distributed as dynamic libraries (.dylib). A
cannam@239 46 well-packaged Vamp plugin library should export exactly one public
cannam@239 47 symbol, namely the Vamp API entry point vampGetPluginDescriptor.
cannam@239 48
cannam@239 49 The default for the OS/X linker is to export all of the symbols in the
cannam@239 50 library. This will work (the host will be able to load the plugin),
cannam@239 51 but it unnecessarily pollutes the host's symbol namespace, it may
cannam@239 52 cause symbol collisions in some esoteric circumstances, and it
cannam@239 53 increases the amount of time the plugin takes to load.
cannam@239 54
cannam@239 55 To improve this behaviour, you can instruct the linker to export only
cannam@239 56 the one required symbol using a symbols list file. To do this, place
cannam@239 57 the single line
cannam@239 58
cannam@239 59 _vampGetPluginDescriptor
cannam@239 60
cannam@239 61 (with leading underscore) into a text file, and then use the
cannam@239 62 -exported_symbols_list option to the linker to tell it to refer to
cannam@239 63 this file. All other symbols will then be properly hidden.
cannam@239 64
cannam@239 65 The Makefile.osx included in this SDK uses this method to manage
cannam@239 66 symbol visibility for the included example plugins, using the file
cannam@239 67 build/vamp-plugin.list. There are other methods that will work too,
cannam@239 68 but this one is simple and has the advantage of requiring no changes
cannam@239 69 to the code.
cannam@239 70