annotate build/README.osx @ 287:f3b1ba71a305

* When calculating timestamps in order to write them into features that previously lacked them, from a buffering adapter, we need to take into account any timestamp adjustment used by other wrappers that are being wrapped by this one (i.e. input domain adapter)
author cannam
date Thu, 10 Sep 2009 15:21:34 +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