Building
--------
Mac OS X builds of xine-lib are built using the same autoconf-based build
scripts that are used on other Unix-based platforms (e.g., Linux, FreeBSD).
There is no Xcode project, nor is there any intention to create and/or
maintain one in the future.  There's no good reason, and it would only add
unnecessary complexity and an additional maintenance burden.

Currently, xine-lib is only supported on Mac OS X 10.4 Tiger.  There are no
plans to support older versions of Mac OS X for a variety of reasons.

As of xine-lib 1.2, specific versions of build tools are required.  They are
as follows:

  - GNU M4 1.4.7       (1.4.9 is current,  1.4.2 is installed on Tiger)
  - autoconf 2.59      (2.61 is current,   2.59 is installed on Tiger)
  - automake 1.9       (1.10 is current,   1.6.3 is installed on Tiger)
  - GNU libtool 1.5.20 (1.5.22 is current, 1.5 is installed on Tiger)

When building on Tiger, since some of the system-installed tools are out of
date, you'll need to update at least some of them.  It is recommended that you
bring all of them up to current releases as listed above.

The order in which you install updated tools to replace the system-installed
versions is important, and in some cases, specific build options are required
for them to work properly.

 1. Install GNU M4 >= 1.4.7
    - This is optional if you use the system-installed version of autoconf;
      however, if you install a newer version of autoconf, you MUST install
      a newer version of GNU M4 first.
    - Run its configure script with --program-prefix=g
 2. Install autoconf >= 2.59
    - This is optional, but it is recommended that you use autoconf 2.61.
    - No special configure options are required.  Simply configure, make, and
      make install.
 3. Install automake >= 1.9
    - This is required, and since it is required, it is recommended that you
      use automake 1.10.
    - No special configure options are required.  Simply configure, make, and
      make install.
 4. Install GNU libtool >= 1.5.20
    - This is required, and since it is required, it is recommended that you
      use GNU libtool 1.5.22.
    - Run its configure script with --program-prefix=g

 ** A special note about GNU libtool:
    Mac OS X has its own utility called libtool that is NOT the same as GNU
    libtool, but the Developer tools install GNU libtool as well.  The system-
    installed version of GNU libtool is installed with a g- prefix, and xine's
    build scripts expect this as well if you install your own version.  If you
    do not install GNU libtool with a g- prefix, xine's build scripts will
    pick up the system-installed version instead of the newer one you install!

With your tool chain brought up-to-date with xine's requirements, you can go
ahead and build xine-lib by first running configure, then make, and finally,
make install, just as you would on, say, Linux.  If you are building from a
source repository snapshot or checkout, you will need to run autogen.sh first.

When running configure, it's best if you do not attempt to forcibly enable most
options that are disabled by default.  For example, DVB support is disabled by
default on Mac OS X because it doesn't work.  Enabling it may allow it to build
okay, but it will not work at runtime.

The one exception is --enable-macosx-universal.  Universal binaries are not
enabled by default, but they are fully supported.  With this optional enabled,
the default is to build FAT binaries for ppc and i386; however, you may also
enable support for ppc64 and/or x86_64.  For example:

    ./configure --enable-macosx-universal=i386,ppc,x86_64,ppc64

CoreAudio audio output support will be enabled by default.  Mac OS X video
output support will be enabled by default.  Xwindows support will be enabled
by default for video output (using XShm, Xv, and OpenGL).  In most cases,
you'll probably want to disable Xwindows support, and that is safe to do by
adding --without-x to the configure command-line.

Running
-------
Very limited run-time testing has been done so far.  The Mac OS X port of
xine-lib is in its early stages, only recently becoming buildable at all,
though some quick-and-dirty efforts have been made in the past to build and
run on Mac OS X.

At this time, native video output only works with Objective-C Cocoa windows
using the XineOpenGLView class that resides in libxineMacOSXVideo.dylib.  This
works, but it isn't yet stable enough for every day use.  Xwindows video output
support builds, but it is unknown whether it works.  If you plan on using the
Cocoa video output support, you'll need to link with both libxine.dylib and
libxineMacOSXVideo.dylib as well as libxine.dylib.

Instantiate an audio output port as follows:

    ao_port = xine_open_audio_driver(xine_instance, "coreaudio", NULL);

Instantiate a video output port as follows:

    vo_port = xine_open_video_driver(xine_instance, "macosx",
                                     XINE_VISUAL_TYPE_MACOSX, view);

In both cases, xine_instance is the return from xine_new() that has been then
been initialized with xine_init().  For video output, the view argument to
xine_open_video_driver() is the XineOpenGLView instance in which to render.

The Future
----------
A full, proper port of xine-lib to Mac OS X is in progress.  Efforts are under
way to make as many of the various plug-ins work properly on Mac OS X as makes
sense, but it is unlikely that full support will be complete by the time that
xine-lib 1.2 is released.

The following is a list of the things that will definitely be done:

  * CoreVideo support for video output instead of the current NSOpenGLView-
    based video output plug-in.  The existing video output plugin will not be
    retained as a plug-in, but the code will remain available based on the new
    CoreVideo video output plugin.
  * Building xine-lib as an application bundle embeddable framework, as well as
    a system-wide installable framework, though the utility of the latter is
    questionable.
  * Enable VCD input support.  Mac OS X specific code is required in xine-lib
    itself to support this.  Currently, only FreeBSD, Linux, and Solaris can
    build the VCD input plugin.
  * Investigate enabling Real binary and Win32 binary support for Intel Macs.
  * Investigate better font support without the need for FreeType2.
  * SPDIF pass-through for CoreAudio

Known Issues
------------
  * Building on Leopard does not work due to build problems with ffmpeg.
  * VCD support is not yet available, though internal versions of libcdio and
    libvcd will build.  If you enable VCD at configure time, the build WILL
    fail.
  * Real binary codec support is not yet available.
  * On Intel, Win32 binary codec support is not yet available.
  * Very little run-time testing has been done.  Basic file input and ffmpeg
    based demux/decoding is known to work.
  * Xwindows support builds, but it has not been tested at all.
  * Applications using xine-lib must link with both libxine.dylib and
    libxineMacOSXVideo.dylib if they will be using the Cocoa video output
    support.
