annotate src/vamp-plugin-sdk-2.4/build/README.osx @ 12:b7bda433d832

Add Vamp SDK source
author Chris Cannam
date Wed, 20 Mar 2013 15:58:35 +0000
parents
children
rev   line source
Chris@12 1
Chris@12 2 The Vamp Plugin SDK -- Platform Notes for OS/X
Chris@12 3 ==============================================
Chris@12 4
Chris@12 5 Prerequisites
Chris@12 6 -------------
Chris@12 7
Chris@12 8 You must have Xcode installed, with the command-line build tools.
Chris@12 9
Chris@12 10 (If you are using Xcode 4, you may have to go to Preferences ->
Chris@12 11 Downloads -> Components and install the Command Line Tools component.)
Chris@12 12
Chris@12 13 You must have libsndfile (http://www.mega-nerd.com/libsndfile/)
Chris@12 14 installed in order to build the command-line host successfully. But
Chris@12 15 you do not need libsndfile if you only want to build plugins.
Chris@12 16
Chris@12 17
Chris@12 18 Building at the command line
Chris@12 19 ----------------------------
Chris@12 20
Chris@12 21 To build the SDK, example plugins, and command-line host:
Chris@12 22
Chris@12 23 $ make -f build/Makefile.osx
Chris@12 24
Chris@12 25 To build only the SDK and example plugins (for example if you do not
Chris@12 26 have libsndfile installed):
Chris@12 27
Chris@12 28 $ make -f build/Makefile.osx sdk examples
Chris@12 29
Chris@12 30 See the comments at the top of Makefile.osx for more information about
Chris@12 31 the libraries and other targets that are built in this way.
Chris@12 32
Chris@12 33 If you are using an IDE such as Xcode, you may prefer to simply add
Chris@12 34 the vamp-sdk and src/vamp-sdk (for plugins) or vamp-hostsdk and
Chris@12 35 src/vamp-hostsdk (for hosts) directories to your existing project.
Chris@12 36
Chris@12 37 If you are using OS/X 10.6 or older, use Makefile.osx.106 instead of
Chris@12 38 Makefile.osx.
Chris@12 39
Chris@12 40
Chris@12 41 Installing the Example Plugins
Chris@12 42 ------------------------------
Chris@12 43
Chris@12 44 To install the example plugins so you can load them in Vamp hosts,
Chris@12 45 copy the files
Chris@12 46
Chris@12 47 examples/vamp-example-plugins.dylib
Chris@12 48 and
Chris@12 49 examples/vamp-example-plugins.cat
Chris@12 50
Chris@12 51 to
Chris@12 52 /Library/Audio/Plug-Ins/Vamp/
Chris@12 53 or
Chris@12 54 $HOME/Library/Audio/Plug-Ins/Vamp/
Chris@12 55
Chris@12 56
Chris@12 57 Plugin Linkage
Chris@12 58 --------------
Chris@12 59
Chris@12 60 Vamp plugins are distributed as dynamic libraries (.dylib). An OS/X
Chris@12 61 dynamic library has a formal installed name, which is recorded in the
Chris@12 62 library's header: you will need to ensure that this matches the
Chris@12 63 plugin's filename (e.g. vamp-example-plugins.dylib) by using the
Chris@12 64 -install_name <name> option at link time. The Makefile.osx provided
Chris@12 65 with the SDK contains an example of this.
Chris@12 66
Chris@12 67 A well-packaged Vamp plugin library should export exactly one public
Chris@12 68 symbol, namely the Vamp API entry point vampGetPluginDescriptor.
Chris@12 69
Chris@12 70 The default for the OS/X linker is to export all of the symbols in the
Chris@12 71 library. This will work (the host will be able to load the plugin),
Chris@12 72 but it unnecessarily pollutes the host's symbol namespace, it may
Chris@12 73 cause symbol collisions in some esoteric circumstances, and it
Chris@12 74 increases the amount of time the plugin takes to load.
Chris@12 75
Chris@12 76 To improve this behaviour, you can instruct the linker to export only
Chris@12 77 the one required symbol using a symbols list file. To do this, place
Chris@12 78 the single line
Chris@12 79
Chris@12 80 _vampGetPluginDescriptor
Chris@12 81
Chris@12 82 (with leading underscore) into a text file, and then use the
Chris@12 83 -exported_symbols_list option to the linker to tell it to refer to
Chris@12 84 this file. All other symbols will then be properly hidden.
Chris@12 85
Chris@12 86 The Makefile.osx included in this SDK uses this method to manage
Chris@12 87 symbol visibility for the included example plugins, using the file
Chris@12 88 build/vamp-plugin.list. There are other methods that will work too,
Chris@12 89 but this one is simple and has the advantage of requiring no changes
Chris@12 90 to the code.
Chris@12 91
Chris@12 92
Chris@12 93 Test Your Plugins
Chris@12 94 -----------------
Chris@12 95
Chris@12 96 The Vamp Plugin Tester is a vital utility which you can use to test
Chris@12 97 your plugins for common problems. It can help you if you're having
Chris@12 98 problems getting your plugin to work at all, and you're strongly
Chris@12 99 advised to use it before you release anything. Download it from the
Chris@12 100 Vamp plugins site now!
Chris@12 101