See README.develop if you plan use the git or development version.

0. To compile the source, you'll need a POSIX shell and utilities (sh,
sed, grep, cat), an ANSI C compiler like gcc, and a POSIX "make"
program like GNU make or remake. You may also want to have "libtool" installed
for building portable shared libraries.

1. Uncompress and unpack the source code using for example "tar". Recent
versions of GNU tar can do this in one step like this:
  tar -xpf libcdio-*.bz  # or libcdio-*.gz

2. Go into the directory, run "configure" followed by "make":

  cd libcdio-*
  sh ./configure MAKE=make  # or remake or gmake

3. If step 2 works, compile everything:

  make  # or remake

4. Run the regression tests if you want:

  make check  # or remake check

5. Install. If the preceding steps were successful:

  make install  # you may have to do this as root 
                # or "sudo make install"


If you have problems linking libcdio or libiso9660, see the BSD
section.  You might also try the option --without-versioned-libs. However
this option does help with the situation described below so it is
preferred all other things being equal.

If you are debugging libcdio, the libtool and the dynamic libraries
can make things harder. I suggest setting CFLAGS to include
'-fno-inline -g' and using --disable-shared on configure.


VCD dependency:
---------------
One thing that confuses people is the "dependency" on libvcdinfo from
vcdimager, while vcdimager has a dependency on libcdio.  This libcdio
dependency on vcdimager is an optional (i.e. not mandatory) dependency,
while the vcdimager dependency right now is mandatory. libvcdinfo is
used only by the utility program cd-info. If you want cd-info to use
the VCD reporting portion and you don't already have vcdimager
installed, build and install libcdio, then vcdimager, then configure
libcdio again and it should find libvcdinfo. 

People who make packages might consider making two packages, a libcdio
package with just the libraries (and no dependency on libvcdinfo) and
a libcdio-utils which contains cd-info and iso-info, cd-read,
iso-read. Should you want cd-info with VCD support then you'd add a
dependency in that package to libvcdinfo.

Another thing one can do is "make install" inside the library, or run
"configure --without-vcd-info --without-cddb" (since libcddb also has
an optional dependency on libcdio).

Microsoft Windows
-------

Building under Microsoft Windows is supported for cygwin
(http://www.cygwin.com). MinGW (http://www.mingw.org/) may also work,
but it is possible you may encounter problems there. For MinGW use gcc
4.0 or greater.

Support for Microsoft compilers (e.g. Visual C) is not officially
supported.  You need to make your own "project" files.  Don't
undertake this unless you are willing to spend time hacking. In the
past xboxmediacenter team folks I believe have gone this route, as has
Pete Batard in his rufus project. You may be able to use their project
files as a starting point.

XBOX
-------

Consult the xboxmediacenter team (www.xboxmediacenter.de)


BSD, FreeBSD, NetBSD
---

Unless you use --without-versioned-libs (not recommended), you need to
use GNU make or remake (http://bashdb.sf.net/remake). GNU make can be
found under the name "gmake".

If you use another make you are likely to get problems linking libcdio
and libiso9660.


Solaris
-------

You may need to use --without-versioned-libs if you get a problem
building libcdio or libiso9660. 

If you get a message like:
   libcdio.so: attempted multiple inclusion of file

because you have enable vcd-info and it is installed, then the only
way I know how to get around is to use configure with --disable-shared.

OS Support
---------------

Support for Operating Systems's is really based on the desire, ability
and willingness of others to help out. I use GNU/Linux so that
probably works best. Before a release I'll test on servers I have
available. I also announce a pending release on libcdio-devel@gnu.org
and ask others to test out.

Steve Schultz has done a great job making BSDI CD support look like
GNU/Linux and usually he let's me know where I've blown things on BSDI
and Darwin. Usage on Darwin has been picking up although Darwin is in
a world of its own so support for that (e.g. issuing MMC commands)
seems to lag behind.

Of late FreeBSD folks have been pretty good about testing new releases
and reporting problems. 

Specific libcdio configure options and environment variables
---------------

  --disable-cxx           Disable C++ bindings (default enabled)
  --enable-cpp-progs      make C++ example programs (default enabled)
  --disable-example-progs Don't build libcdio sample programs
  --disable-dependency-tracking  speeds up one-time build
  --enable-dependency-tracking   do not reject slow dependency extractors
  --disable-largefile     omit support for large files
  --enable-shared[=PKGS]  build shared libraries [default=yes]
  --enable-static[=PKGS]  build static libraries [default=yes]
  --enable-fast-install[=PKGS]
                          optimize for fast installation [default=yes]
  --disable-libtool-lock  avoid locking (might break parallel builds)
  --disable-joliet        don't include Joliet extension support (default
                          enabled)
  --disable-rpath         do not hardcode runtime library paths
  --enable-rock           include Rock-Ridge extension support (default
                          enabled)
  --enable-cddb           include CDDB lookups in cd_info (default enabled)
  --enable-vcd-info       include Video CD Info from libvcd

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --without-cd-drive      don't build program cd-drive (default with)
  --without-cd-info       don't build program cd-info (default with)
  --without-cd-paranoia   don't build program cd-paranoia and paranoia
                          libraries (default with)
  --without-cdda-player   don't build program cdda-player (default with)
  --with-cd-paranoia-name name to use as the cd-paranoia program name (default
                          cd-paranoia)
  --without-cd-read       don't build program cd-read (default with)
  --without-iso-info      don't build program iso-info (default with)
  --without-iso-read      don't build program iso-read (default with)
  --without-versioned-libs
                          build versioned library symbols (default enabled if
                          you have GNU ld)
  --with-pic              try to use only PIC/non-PIC objects [default=use
                          both]
  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
  --with-gnu-ld           assume the C compiler uses GNU ld default=no
  --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
  --without-libiconv-prefix     don't search for libiconv in includedir and libdir

Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
              you have headers in a nonstandard directory <include dir>
  CXX         C++ compiler command
  CXXFLAGS    C++ compiler flags
  CPP         C preprocessor
  CXXCPP      C++ preprocessor
  PKG_CONFIG  path to pkg-config utility
  CDDB_CFLAGS C compiler flags for CDDB, overriding pkg-config
  CDDB_LIBS   linker flags for CDDB, overriding pkg-config
  VCDINFO_CFLAGS
              C compiler flags for VCDINFO, overriding pkg-config
  VCDINFO_LIBS
              linker flags for VCDINFO, overriding pkg-config

