From: Brian G. <br...@ge...> - 2007-10-16 16:37:47
|
On Oct 16, 2007, at 7:06 AM, Chad George wrote: > I know this has been asked and answered a number of times, but the > answer is always to write a plugin driver. > > Currently I don't know how to get libtool to work for cross compiling > to the gumstix platform that is running my player server. And I can't > get plugins to work without libtool. Note that you don't need libtool itself. Look at player/examples/ plugins/exampledriver/Makefile.example for an example of building a plugin directly, without libtool's help. However, you *do* need libltdl available when building player. Otherwise it won't be able to load plugins, however they're built. > I would of course prefer to using the plugin mechanism for my own > drivers, but right now I can't. So how do I add my own driver to the > set of built-in drivers if I can't use libtool/plugins? A shortcut hack would be just to hollow out an existing driver that you don't need and replace its contents. Not recommended for long- term maintainability, but would be the quickest. To add a built-in driver: - In acinclude.m4, add a call to the PLAYER_ADD_DRIVER macro for your driver. This file gets incorporated into the configure script. - Implement your driver, usually in a single source file, in an existing subdirectory within server/drivers. - In the Makefile.am for your driver (the one that was already there when you added your source file), add two references to your driver. First, something like this (assuming your driver is called 'foo', and that you gave it this name in the PLAYER_ADD_DRIVER call): if INCLUDE_FOO noinst_LTLIBRARIES += libfoo.la endif Second, something like this: libfoo_la_SOURCES = foodriver.cc Where the SOURCES line includes all source files (.c, .cc, .h) that go into building your driver. You can name the source files and the resulting library (libfoo.la here) however you like. - In server/libplayerdrivers/driverregistry.cc, add two references to your driver. First, prototype your driver's registration function. Second, invoke that function inside player_register_drivers. Protect both references with #ifdef INCLUDE_FOO. Follow the examples in that file. That's it. Do an 'autoreconf -i -s' at the top, followed by normal ./ configure and make. configure should tell you that your driver will be included, and after building, just running 'player' will dump out a list of drivers that should include yours. brian. |