annotate src/vamp-plugin-sdk-2.4/build/README.osx @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents b7bda433d832
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