From: James Courtier-D. <Ja...@su...> - 2004-11-13 14:10:37
|
Andre Pang wrote: > On 14/11/2004, at 1:12 AM, James Courtier-Dutton wrote: > >> Andre Pang wrote: >> >>> OK, a bit more background -- the reason I put this in is so a xine >>> front-end can tell libdvdnav where to look for libdvdcss. My >>> scenario is writing a xine front-end on Mac OS X: even though the Mac >>> is UNIX-based now, it still has different conventions for its >>> 'native' GUI applications than it does for command-line stuff: for >>> example, plugins typically go into a ~/Library/Application Support/ >>> folder rather than /usr/local/lib/, or they may reside in the >>> application itself (Mac applications are directories laid out a >>> particular way with a .app extension). >> >> >> I think that this is the wrong approach. Why should the xine front-end >> care where libdvdcss is? >> Even libdvdnav does not need to know where libdvdcss is. It only needs >> to know how to load it. >> libdvdnav uses dlopen() functions, so I would say that this is a bug >> in dlopen() and not any bug in xine. >> dlopen() should use conventions for whichever platform it resides on, >> in order to find a specific lib. > > > On Mac OS X, plugins for programs aren't even expected to have a .dylib > extension (.dylib is the equivalent of .so on Linux) -- I intend to use > a .xineplugin extension to indicate that a plugin is intended for xine, > but other front-end authors are free to choose whatever filename > extensions they wish. That is the platform convention. Thus, > hard-coding the filename to load in dvd_input.c ("libdvd.so.2") doesn't > follow convention on that platform. > > Put another way, I argue that this is exactly the same sort of > flexibility that the XINE_PLUGIN_PATH environment variable provides, and > the patch to libdvdcss is for exactly the same reasons that > XINE_PLUGIN_PATH exists: flexibility, and letting the user or front-end > specify non-standard plugin paths to be searched. > > Here is the libdvdnav code in question: /* dlopening libdvdcss */ #ifndef WIN32 dvdcss_library = dlopen("libdvdcss.so.2", RTLD_LAZY); #else dvdcss_library = dlopen("libdvdcss.dll", RTLD_LAZY); #endif So, just add an extra line for the Mac OS X specific filename. The libdvdcss suffix should be set by libtool. |