#!/bin/sh

prefix="/usr"
exec_prefix="/usr"
exec_prefix_set=no

release="yes"
debug="no"
gprof="no"
cprof="no"
optim="yes"

plugins=" dummy rc telnet logger gestures memcpy hotkeys netsync showintf mpgv mpga m4v m4a h264 ps pva avi asf aac mp4 rawdv nsv real aiff mjpeg demuxdump cvdsub svcdsub spudec subsdec dvbsub mpeg_audio lpcm a52 dts cinepak deinterlace invert adjust wall transform distort clone crop motionblur float32tos16 float32tos8 float32tou16 float32tou8 a52tospdif dtstospdif fixed32tofloat32 fixed32tos16 s16tofixed32 s16tofloat32 s16tofloat32swab s8tofloat32 u8tofixed32 u8tofloat32 audio_format trivial_resampler ugly_resampler linear_resampler bandlimited_resampler trivial_channel_mixer simple_channel_mixer headphone_channel_mixer normvol trivial_mixer spdif_mixer float32_mixer aout_file equalizer i420_rgb i420_yuy2 i422_yuy2 i420_ymga m3u id3 playlist export sgimb rawvideo blend scale time marq wav araw subtitle vobsub adpcm a52sys dtssys au access_file access_udp access_tcp access_http ipv4 access_mms access_ftp access_directory sap http screensaver access_output_dummy access_output_udp access_output_file access_output_http mux_ps mux_avi mux_mp4 mux_asf mux_dummy mux_wav mux_mpjpeg packetizer_mpegvideo packetizer_h264 packetizer_mpeg4video packetizer_mpeg4audio packetizer_copy stream_out_dummy stream_out_standard stream_out_es stream_out_rtp stream_out_description vod_rtsp stream_out_duplicate stream_out_gather stream_out_display stream_out_transcode dvdread dvdnav mux_ts ts v4l pvr cddax vcd cdda screen ipv6 ogg mux_ogg mpgatofixed32 id3tag faad a52tofloat32 flac flacdec libmpeg2 vorbis cmml logo x11 xvideo glx opengl vout_sdl aout_sdl freetype fb aa caca oss esd arts alsa skins2 wxwindows ncurses visual lirc"
builtins="  memcpymmx i420_rgb_mmx i422_yuy2_mmx i420_ymga_mmx i420_yuy2_mmx memcpymmxext memcpy3dn  livedotcom mkv ffmpeg theora"

cppflags=""
cflags=""
cxxflags=""
objcflags=""
ldflags=""

cflags_tuning="-mcpu=pentiumpro"
cflags_optim=" -O3 -ffast-math -funroll-loops"
cflags_optim_nodebug=" -fomit-frame-pointer"
cflags_nooptim=" -O2"

#
#  Do not touch below this place unless you really know what you are doing
#
usage()
{
        cat << BLAH
Usage: vlc-config OPTIONS MODULES
Options:
        [--prefix[=DIR]]          set prefix
        [--exec-prefix[=DIR]]     set exec prefix
        [--version]               print version and exit
        [--linkage]               print linkage mode (c, c++, objc)
        [--target]                print targets and exit
        [--libs]                  output linking flags
        [--cflags]                output C compilation flags
        [--cxxflags]              output C++ compilation flags
        [--objcflags]             output Objective C compilation flags
Modules:
        vlc                       the main VLC object
        plugin                    flags for plugin modules
        builtin                   flags for built-in modules
        pic                       flags for PIC code
        MODULE                    any available module (dummy, gtk, avi, etc.)
BLAH
        exit $1
}

register_flags()
{
  case "$1" in
    a52tofloat32)
      cppflags="${cppflags} "
      ldflags="${ldflags} -la52 -lm"
    ;;
    aa)
      ldflags="${ldflags} -laa"
    ;;
    adjust)
      ldflags="${ldflags} -lm"
    ;;
    alsa)
      ldflags="${ldflags} -lasound -lm -ldl"
    ;;
    aout_sdl)
      cflags="${cflags} -I/usr/include/ -D_REENTRANT"
      ldflags="${ldflags} -L/usr/lib -lSDL -lpthread"
    ;;
    arts)
      cflags="${cflags} -I/usr/include/kde/artsc -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include"
      ldflags="${ldflags} -L/usr/lib -ldl -lartsc -lpthread -lgmodule-2.0 -ldl -lgthread-2.0 -lglib-2.0"
    ;;
    caca)
      cflags="${cflags} -I/usr/include/"
      ldflags="${ldflags} -L/usr/lib -lcaca_pic -lslang -lX11 -L/usr/X11R6/lib -lncurses -lncurses"
    ;;
    cddax)
      cflags="${cflags} "
      ldflags="${ldflags} -lcddb -lcdio -lm"
    ;;
    cvdsub)
      ldflags="${ldflags} -lpng -lz -lm"
    ;;
    distort)
      ldflags="${ldflags} -lm"
    ;;
    dtstofloat32)
      ldflags="${ldflags} -lm"
    ;;
    dvdnav)
      cflags="${cflags} -I/usr/include -I/usr/include/dvdnav"
      ldflags="${ldflags} -L/usr/lib -ldvdnav -lpthread"
    ;;
    dvdread)
      ldflags="${ldflags} -ldvdread"
    ;;
    equalizer)
      ldflags="${ldflags} -lm"
    ;;
    esd)
      cflags="${cflags} "
      ldflags="${ldflags} -L/usr/lib -lesd -laudiofile -lm -lasound"
    ;;
    faad)
      ldflags="${ldflags} -lfaad -lm"
    ;;
    ffmpeg)
      cppflags="${cppflags} -I/usr/src/redhat/BUILD/vlc-0.8.1/ffmpeg-20041113/libavcodec -I/usr/src/redhat/BUILD/vlc-0.8.1/ffmpeg-20041113/libavformat"
      ldflags="${ldflags} -L/usr/src/redhat/BUILD/vlc-0.8.1/ffmpeg-20041113/libavformat /usr/src/redhat/BUILD/vlc-0.8.1/ffmpeg-20041113/libavformat/libavformat.a -L/usr/src/redhat/BUILD/vlc-0.8.1/ffmpeg-20041113/libavcodec /usr/src/redhat/BUILD/vlc-0.8.1/ffmpeg-20041113/libavcodec/libavcodec.a -lfaad -lvorbis -lvorbisenc -lfaac -lmp3lame -lz -lm"
    ;;
    ffmpegaltivec)
      ldflags="${ldflags} -lm"
    ;;
    flacdec)
      ldflags="${ldflags} -lFLAC"
    ;;
    freetype)
      cflags="${cflags} -I/usr/include/freetype2 -I/usr/include -DHAVE_FRIBIDI"
      ldflags="${ldflags} -L/usr/lib -lfribidi -lfreetype -lz"
    ;;
    glx)
      cppflags="${cppflags} -I/usr/X11R6/include"
      ldflags="${ldflags} -lXinerama -L/usr/X11R6/lib -lX11 -lXext -lGL -lGLU"
    ;;
    headphone_channel_mixer)
      ldflags="${ldflags} -lm"
    ;;
    i420_rgb)
      ldflags="${ldflags} -lm"
    ;;
    i420_yuy2_mmx)
      cflags="${cflags} -fomit-frame-pointer"
    ;;
    id3tag)
      ldflags="${ldflags} -lid3tag -lz"
    ;;
    libmpeg2)
      ldflags="${ldflags} -lmpeg2"
    ;;
    lirc)
      ldflags="${ldflags} -llirc_client"
    ;;
    livedotcom)
      cxxflags="${cxxflags} -I/usr/lib/live/BasicUsageEnvironment/include -I/usr/lib/live/groupsock/include -I/usr/lib/live/liveMedia/include -I/usr/lib/live/UsageEnvironment/include"
      linkage="c++"
      ldflags="${ldflags} -L/usr/lib/live/UsageEnvironment -lUsageEnvironment -L/usr/lib/live/groupsock -lgroupsock -L/usr/lib/live/BasicUsageEnvironment -lBasicUsageEnvironment -L/usr/lib/live/liveMedia -lliveMedia"
    ;;
    logo)
      ldflags="${ldflags} -lpng -lz"
    ;;
    mkv)
      cxxflags="${cxxflags} "
      linkage="c++"
      ldflags="${ldflags} -lsysfs -lz -lmatroska -lebml"
    ;;
    mozilla)
      cppflags="${cppflags} -I/usr/include/mozilla-1.7.3/plugin -I/usr/include/mozilla-1.7.3/xpcom -I/usr/include/mozilla-1.7.3/java -I/usr/include/mozilla-1.7.3 -I/usr/include/mozilla-1.7.3/nspr"
      cflags="${cflags} -fpic -fPIC"
      cxxflags="${cxxflags} -fpic -fPIC"
      linkage="c++"
      objcflags="${objcflags} -fpic -fPIC"
      if test "${linkage}" = "c"; then linkage="objc"; fi
      ldflags="${ldflags} -L/usr/lib/mozilla-1.7.3 -lxpcom -L/usr/lib/mozilla-1.7.3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl -L/usr/X11R6/lib -lXt -lX11 -lSM -lICE -shared -fpic -fPIC"
    ;;
    mp4)
      ldflags="${ldflags} -lsysfs -lz"
    ;;
    mpgatofixed32)
      ldflags="${ldflags} -lmad"
    ;;
    mux_ogg)
      ldflags="${ldflags} -logg"
    ;;
    mux_ts)
      ldflags="${ldflags} -ldvbpsi"
    ;;
    ncurses)
      ldflags="${ldflags} -lncurses"
    ;;
    normvol)
      ldflags="${ldflags} -lm"
    ;;
    ogg)
      ldflags="${ldflags} -logg"
    ;;
    opengl)
      ldflags="${ldflags} -L/usr/X11R6/lib -lGL -lGLU"
    ;;
    pic)
      cflags="${cflags} -fpic -fPIC"
      cxxflags="${cxxflags} -fpic -fPIC"
      linkage="c++"
      objcflags="${objcflags} -fpic -fPIC"
      if test "${linkage}" = "c"; then linkage="objc"; fi
    ;;
    plugin)
      cflags="${cflags} -fpic -fPIC"
      cxxflags="${cxxflags} -fpic -fPIC"
      objcflags="${objcflags} -fpic -fPIC"
      ldflags="${ldflags} -shared -lpthread -fpic -fPIC"
    ;;
    sap)
      ldflags="${ldflags} -lz"
    ;;
    screen)
      cppflags="${cppflags} -I/usr/X11R6/include"
      ldflags="${ldflags} -L/usr/X11R6/lib -lX11 -lXext"
    ;;
    skins2)
      cppflags="${cppflags} -I/usr/include/freetype2 -I/usr/include/libxml2 -Imodules/gui/skins2 -I/usr/X11R6/include -DX11_SKINS"
      cxxflags="${cxxflags} -O2 -fno-rtti"
      linkage="c++"
      ldflags="${ldflags} -L/usr/X11R6/lib -lXext -lX11 -L/usr/lib -lxml2 -lz -lpthread -lm -lfreetype -lz -lpng -ltar -lz"
    ;;
    stream_out_transrate)
      ldflags="${ldflags} -lm"
    ;;
    svcdsub)
      ldflags="${ldflags} -lpng -lz"
    ;;
    theora)
      ldflags="${ldflags} -ltheora -logg"
    ;;
    toolame)
      ldflags="${ldflags} -lm"
    ;;
    ts)
      ldflags="${ldflags} -ldvbpsi"
    ;;
    vlc)
      cflags="${cflags} -DDBUS_API_SUBJECT_TO_CHANGE -I/usr/include/hal -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include"
      ldflags="${ldflags} -lhal -ldbus-1 -lrt -lpthread -ldl -lm"
    ;;
    vorbis)
      ldflags="${ldflags} -lvorbisenc -lvorbis -logg"
    ;;
    vout_sdl)
      cflags="${cflags} -I/usr/include/ -D_REENTRANT"
      ldflags="${ldflags} -L/usr/lib -lSDL -lpthread"
    ;;
    wxwindows)
      cxxflags="${cxxflags} -I/usr/lib/wx/include/gtk-2.4 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES"
      linkage="c++"
      ldflags="${ldflags} -pthread -lwx_gtk-2.4"
    ;;
    x11)
      cppflags="${cppflags} -I/usr/X11R6/include"
      ldflags="${ldflags} -lXinerama -L/usr/X11R6/lib -lX11 -lXext"
    ;;
    x264)
      ldflags="${ldflags} -lm"
    ;;
    xvideo)
      cppflags="${cppflags} -I/usr/X11R6/include"
      ldflags="${ldflags} -lXinerama -L/usr/X11R6/lib -lX11 -lXext -lXv"
    ;;
    *)
      ;;
  esac
}

register_targets()
{
  case "$1" in
    access_file) list="${list} access/libaccess_file" ;;
    access_directory) list="${list} access/libaccess_directory" ;;
    access_udp) list="${list} access/libaccess_udp" ;;
    access_tcp) list="${list} access/libaccess_tcp" ;;
    access_http) list="${list} access/libaccess_http" ;;
    access_ftp) list="${list} access/libaccess_ftp" ;;
    dvdnav) list="${list} access/libdvdnav" ;;
    dvdread) list="${list} access/libdvdread" ;;
    slp) list="${list} access/libslp" ;;
    cdda) list="${list} access/libcdda" ;;
    dshow) list="${list} access/dshow/libdshow" ;;
    dvb) list="${list} access/dvb/libdvb" ;;
    access_mms) list="${list} access/mms/libaccess_mms" ;;
    pvr) list="${list} access/pvr/libpvr" ;;
    satellite) list="${list} access/satellite/libsatellite" ;;
    v4l) list="${list} access/v4l/libv4l" ;;
    cddax) list="${list} access/cdda/libcddax" ;;
    vcd) list="${list} access/vcd/libvcd" ;;
    vcdx) list="${list} access/vcdx/libvcdx" ;;
    screen) list="${list} access/screen/libscreen" ;;
    access_output_dummy) list="${list} access_output/libaccess_output_dummy" ;;
    access_output_file) list="${list} access_output/libaccess_output_file" ;;
    access_output_udp) list="${list} access_output/libaccess_output_udp" ;;
    access_output_http) list="${list} access_output/libaccess_output_http" ;;
    equalizer) list="${list} audio_filter/libequalizer" ;;
    normvol) list="${list} audio_filter/libnormvol" ;;
    audio_format) list="${list} audio_filter/libaudio_format" ;;
    trivial_channel_mixer) list="${list} audio_filter/channel_mixer/libtrivial_channel_mixer" ;;
    simple_channel_mixer) list="${list} audio_filter/channel_mixer/libsimple_channel_mixer" ;;
    headphone_channel_mixer) list="${list} audio_filter/channel_mixer/libheadphone_channel_mixer" ;;
    float32tos16) list="${list} audio_filter/converter/libfloat32tos16" ;;
    float32tos8) list="${list} audio_filter/converter/libfloat32tos8" ;;
    float32tou16) list="${list} audio_filter/converter/libfloat32tou16" ;;
    float32tou8) list="${list} audio_filter/converter/libfloat32tou8" ;;
    a52tospdif) list="${list} audio_filter/converter/liba52tospdif" ;;
    a52tofloat32) list="${list} audio_filter/converter/liba52tofloat32" ;;
    dtstospdif) list="${list} audio_filter/converter/libdtstospdif" ;;
    dtstofloat32) list="${list} audio_filter/converter/libdtstofloat32" ;;
    fixed32tos16) list="${list} audio_filter/converter/libfixed32tos16" ;;
    s16tofixed32) list="${list} audio_filter/converter/libs16tofixed32" ;;
    fixed32tofloat32) list="${list} audio_filter/converter/libfixed32tofloat32" ;;
    s16tofloat32) list="${list} audio_filter/converter/libs16tofloat32" ;;
    s16tofloat32swab) list="${list} audio_filter/converter/libs16tofloat32swab" ;;
    s8tofloat32) list="${list} audio_filter/converter/libs8tofloat32" ;;
    u8tofixed32) list="${list} audio_filter/converter/libu8tofixed32" ;;
    u8tofloat32) list="${list} audio_filter/converter/libu8tofloat32" ;;
    mpgatofixed32) list="${list} audio_filter/converter/libmpgatofixed32" ;;
    trivial_resampler) list="${list} audio_filter/resampler/libtrivial_resampler" ;;
    ugly_resampler) list="${list} audio_filter/resampler/libugly_resampler" ;;
    linear_resampler) list="${list} audio_filter/resampler/liblinear_resampler" ;;
    bandlimited_resampler) list="${list} audio_filter/resampler/libbandlimited_resampler" ;;
    coreaudio_resampler) list="${list} audio_filter/resampler/libcoreaudio_resampler" ;;
    trivial_mixer) list="${list} audio_mixer/libtrivial_mixer" ;;
    float32_mixer) list="${list} audio_mixer/libfloat32_mixer" ;;
    spdif_mixer) list="${list} audio_mixer/libspdif_mixer" ;;
    alsa) list="${list} audio_output/libalsa" ;;
    arts) list="${list} audio_output/libarts" ;;
    coreaudio) list="${list} audio_output/libcoreaudio" ;;
    aout_directx) list="${list} audio_output/libaout_directx" ;;
    esd) list="${list} audio_output/libesd" ;;
    aout_file) list="${list} audio_output/libaout_file" ;;
    oss) list="${list} audio_output/liboss" ;;
    aout_sdl) list="${list} audio_output/libaout_sdl" ;;
    waveout) list="${list} audio_output/libwaveout" ;;
    hd1000a) list="${list} audio_output/libhd1000a" ;;
    portaudio) list="${list} audio_output/libportaudio" ;;
    a52) list="${list} codec/liba52" ;;
    cinepak) list="${list} codec/libcinepak" ;;
    dts) list="${list} codec/libdts" ;;
    flacdec) list="${list} codec/libflacdec" ;;
    lpcm) list="${list} codec/liblpcm" ;;
    araw) list="${list} codec/libaraw" ;;
    vorbis) list="${list} codec/libvorbis" ;;
    tarkin) list="${list} codec/libtarkin" ;;
    theora) list="${list} codec/libtheora" ;;
    tremor) list="${list} codec/libtremor" ;;
    speex) list="${list} codec/libspeex" ;;
    adpcm) list="${list} codec/libadpcm" ;;
    mpeg_audio) list="${list} codec/libmpeg_audio" ;;
    libmpeg2) list="${list} codec/liblibmpeg2" ;;
    rawvideo) list="${list} codec/librawvideo" ;;
    quicktime) list="${list} codec/libquicktime" ;;
    subsdec) list="${list} codec/libsubsdec" ;;
    faad) list="${list} codec/libfaad" ;;
    dvbsub) list="${list} codec/libdvbsub" ;;
    mash) list="${list} codec/libmash" ;;
    x264) list="${list} codec/libx264" ;;
    toolame) list="${list} codec/libtoolame" ;;
    cmml) list="${list} codec/cmml/libcmml" ;;
    dmo) list="${list} codec/dmo/libdmo" ;;
    ffmpeg) list="${list} codec/ffmpeg/libffmpeg" ;;
    ffmpegaltivec) list="${list} codec/ffmpeg/libffmpegaltivec" ;;
    svcdsub) list="${list} codec/ogt/libsvcdsub" ;;
    cvdsub) list="${list} codec/ogt/libcvdsub" ;;
    spudec) list="${list} codec/spudec/libspudec" ;;
    gestures) list="${list} control/libgestures" ;;
    showintf) list="${list} control/libshowintf" ;;
    http) list="${list} control/libhttp" ;;
    telnet) list="${list} control/libtelnet" ;;
    netsync) list="${list} control/libnetsync" ;;
    ntservice) list="${list} control/libntservice" ;;
    joystick) list="${list} control/libjoystick" ;;
    hotkeys) list="${list} control/libhotkeys" ;;
    lirc) list="${list} control/liblirc" ;;
    rc) list="${list} control/librc" ;;
    rtci) list="${list} control/librtci" ;;
    corba) list="${list} control/corba/libcorba" ;;
    a52sys) list="${list} demux/liba52sys" ;;
    dtssys) list="${list} demux/libdtssys" ;;
    flac) list="${list} demux/libflac" ;;
    ogg) list="${list} demux/libogg" ;;
    m3u) list="${list} demux/libm3u" ;;
    demuxdump) list="${list} demux/libdemuxdump" ;;
    rawdv) list="${list} demux/librawdv" ;;
    au) list="${list} demux/libau" ;;
    wav) list="${list} demux/libwav" ;;
    aac) list="${list} demux/libaac" ;;
    mkv) list="${list} demux/libmkv" ;;
    livedotcom) list="${list} demux/liblivedotcom" ;;
    nsv) list="${list} demux/libnsv" ;;
    real) list="${list} demux/libreal" ;;
    ts) list="${list} demux/libts" ;;
    ps) list="${list} demux/libps" ;;
    mod) list="${list} demux/libmod" ;;
    pva) list="${list} demux/libpva" ;;
    aiff) list="${list} demux/libaiff" ;;
    sgimb) list="${list} demux/libsgimb" ;;
    mjpeg) list="${list} demux/libmjpeg" ;;
    subtitle) list="${list} demux/libsubtitle" ;;
    vobsub) list="${list} demux/libvobsub" ;;
    asf) list="${list} demux/asf/libasf" ;;
    avi) list="${list} demux/avi/libavi" ;;
    mp4) list="${list} demux/mp4/libmp4" ;;
    m4a) list="${list} demux/mpeg/libm4a" ;;
    m4v) list="${list} demux/mpeg/libm4v" ;;
    mpga) list="${list} demux/mpeg/libmpga" ;;
    mpgv) list="${list} demux/mpeg/libmpgv" ;;
    h264) list="${list} demux/mpeg/libh264" ;;
    playlist) list="${list} demux/playlist/libplaylist" ;;
    id3) list="${list} demux/util/libid3" ;;
    id3tag) list="${list} demux/util/libid3tag" ;;
    ncurses) list="${list} gui/libncurses" ;;
    beos) list="${list} gui/beos/libbeos" ;;
    pda) list="${list} gui/pda/libpda" ;;
    gtk) list="${list} gui/gtk/libgtk" ;;
    gnome) list="${list} gui/gtk/libgnome" ;;
    gtk2) list="${list} gui/gtk2/libgtk2" ;;
    gnome2) list="${list} gui/gtk2/libgnome2" ;;
    kde) list="${list} gui/kde/libkde" ;;
    macosx) list="${list} gui/macosx/libmacosx" ;;
    qnx) list="${list} gui/qnx/libqnx" ;;
    qt) list="${list} gui/qt/libqt" ;;
    skins2) list="${list} gui/skins2/libskins2" ;;
    wxwindows) list="${list} gui/wxwindows/libwxwindows" ;;
    gtk_main) list="${list} misc/libgtk_main" ;;
    gnome_main) list="${list} misc/libgnome_main" ;;
    gtk2_main) list="${list} misc/libgtk2_main" ;;
    gnome2_main) list="${list} misc/libgnome2_main" ;;
    sap) list="${list} misc/libsap" ;;
    screensaver) list="${list} misc/libscreensaver" ;;
    qte_main) list="${list} misc/libqte_main" ;;
    freetype) list="${list} misc/libfreetype" ;;
    logger) list="${list} misc/liblogger" ;;
    vod_rtsp) list="${list} misc/libvod_rtsp" ;;
    gnutls) list="${list} misc/libgnutls" ;;
    svg) list="${list} misc/libsvg" ;;
    dummy) list="${list} misc/dummy/libdummy" ;;
    memcpy) list="${list} misc/memcpy/libmemcpy" ;;
    memcpymmx) list="${list} misc/memcpy/libmemcpymmx" ;;
    memcpymmxext) list="${list} misc/memcpy/libmemcpymmxext" ;;
    memcpy3dn) list="${list} misc/memcpy/libmemcpy3dn" ;;
    memcpyaltivec) list="${list} misc/memcpy/libmemcpyaltivec" ;;
    ipv4) list="${list} misc/network/libipv4" ;;
    ipv6) list="${list} misc/network/libipv6" ;;
    test1) list="${list} misc/testsuite/libtest1" ;;
    test2) list="${list} misc/testsuite/libtest2" ;;
    test3) list="${list} misc/testsuite/libtest3" ;;
    test4) list="${list} misc/testsuite/libtest4" ;;
    export) list="${list} misc/playlist/libexport" ;;
    mux_dummy) list="${list} mux/libmux_dummy" ;;
    mux_avi) list="${list} mux/libmux_avi" ;;
    mux_ogg) list="${list} mux/libmux_ogg" ;;
    mux_mp4) list="${list} mux/libmux_mp4" ;;
    mux_asf) list="${list} mux/libmux_asf" ;;
    mux_wav) list="${list} mux/libmux_wav" ;;
    mux_mpjpeg) list="${list} mux/libmux_mpjpeg" ;;
    mux_ps) list="${list} mux/mpeg/libmux_ps" ;;
    mux_ts) list="${list} mux/mpeg/libmux_ts" ;;
    packetizer_copy) list="${list} packetizer/libpacketizer_copy" ;;
    packetizer_mpegvideo) list="${list} packetizer/libpacketizer_mpegvideo" ;;
    packetizer_mpeg4video) list="${list} packetizer/libpacketizer_mpeg4video" ;;
    packetizer_mpeg4audio) list="${list} packetizer/libpacketizer_mpeg4audio" ;;
    packetizer_h264) list="${list} packetizer/libpacketizer_h264" ;;
    stream_out_dummy) list="${list} stream_out/libstream_out_dummy" ;;
    stream_out_description) list="${list} stream_out/libstream_out_description" ;;
    stream_out_standard) list="${list} stream_out/libstream_out_standard" ;;
    stream_out_transcode) list="${list} stream_out/libstream_out_transcode" ;;
    stream_out_duplicate) list="${list} stream_out/libstream_out_duplicate" ;;
    stream_out_es) list="${list} stream_out/libstream_out_es" ;;
    stream_out_display) list="${list} stream_out/libstream_out_display" ;;
    stream_out_gather) list="${list} stream_out/libstream_out_gather" ;;
    stream_out_rtp) list="${list} stream_out/libstream_out_rtp" ;;
    stream_out_transrate) list="${list} stream_out/transrate/libstream_out_transrate" ;;
    i420_rgb) list="${list} video_chroma/libi420_rgb" ;;
    i420_rgb_mmx) list="${list} video_chroma/libi420_rgb_mmx" ;;
    i420_yuy2) list="${list} video_chroma/libi420_yuy2" ;;
    i420_yuy2_mmx) list="${list} video_chroma/libi420_yuy2_mmx" ;;
    i420_yuy2_altivec) list="${list} video_chroma/libi420_yuy2_altivec" ;;
    i422_yuy2) list="${list} video_chroma/libi422_yuy2" ;;
    i422_yuy2_mmx) list="${list} video_chroma/libi422_yuy2_mmx" ;;
    i420_ymga) list="${list} video_chroma/libi420_ymga" ;;
    i420_ymga_mmx) list="${list} video_chroma/libi420_ymga_mmx" ;;
    transform) list="${list} video_filter/libtransform" ;;
    invert) list="${list} video_filter/libinvert" ;;
    adjust) list="${list} video_filter/libadjust" ;;
    distort) list="${list} video_filter/libdistort" ;;
    wall) list="${list} video_filter/libwall" ;;
    clone) list="${list} video_filter/libclone" ;;
    crop) list="${list} video_filter/libcrop" ;;
    motionblur) list="${list} video_filter/libmotionblur" ;;
    logo) list="${list} video_filter/liblogo" ;;
    deinterlace) list="${list} video_filter/libdeinterlace" ;;
    blend) list="${list} video_filter/libblend" ;;
    scale) list="${list} video_filter/libscale" ;;
    time) list="${list} video_filter/libtime" ;;
    marq) list="${list} video_filter/libmarq" ;;
    swscale) list="${list} video_filter/swscale/libswscale" ;;
    aa) list="${list} video_output/libaa" ;;
    caca) list="${list} video_output/libcaca" ;;
    fb) list="${list} video_output/libfb" ;;
    ggi) list="${list} video_output/libggi" ;;
    glide) list="${list} video_output/libglide" ;;
    vout_sdl) list="${list} video_output/libvout_sdl" ;;
    svgalib) list="${list} video_output/libsvgalib" ;;
    wingdi) list="${list} video_output/libwingdi" ;;
    mga) list="${list} video_output/libmga" ;;
    hd1000v) list="${list} video_output/libhd1000v" ;;
    snapshot) list="${list} video_output/libsnapshot" ;;
    opengl) list="${list} video_output/libopengl" ;;
    vout_directx) list="${list} video_output/directx/libvout_directx" ;;
    glwin32) list="${list} video_output/directx/libglwin32" ;;
    qte) list="${list} video_output/qte/libqte" ;;
    x11) list="${list} video_output/x11/libx11" ;;
    xvideo) list="${list} video_output/x11/libxvideo" ;;
    glx) list="${list} video_output/x11/libglx" ;;
    goom) list="${list} visualization/libgoom" ;;
    xosd) list="${list} visualization/libxosd" ;;
    visual) list="${list} visualization/visual/libvisual" ;;
    galaktos) list="${list} visualization/galaktos/libgalaktos" ;;
    *)
      ;;
  esac
}

if test $# -eq 0; then
        usage 1 1>&2
fi

#
#  No need to include the default @*FLAGS@ values here because they are
#  automatically added when using $(COMPILE), $(CXXCOMPILE) or $(OBJCCOMPILE)
#
if test "/usr/include" != "/usr/include"; then
  includes="-I/usr/include"
fi
if test "${top_builddir}" != ""; then
  top_builddir="${top_builddir}/"
fi
cppflags="${includes}"
libs="-L/usr/lib"
module=""
linkage="c"

#
#  On Linux and Solaris, activate 64-bit off_t (by default under BSD)
#
cppflags="${cppflags} -D_FILE_OFFSET_BITS=64 -D__USE_UNIX98 -D_LARGEFILE64_SOURCE -D_REENTRANT -D_THREAD_SAFE -D_GNU_SOURCE"

#
#  Gettext, data and plugin location
#
cppflags="${cppflags} -DLOCALEDIR=\"/usr/share/locale\""
cppflags="${cppflags} -DDATA_PATH=\"${prefix}/share/vlc\""
cppflags="${cppflags} -DPLUGIN_PATH=\"${prefix}/lib/vlc\""

#
#  Various additional defines
#
if [ "${debug}" = yes ]; then
  cppflags="${cppflags} -DDEBUG"
  cflags="${cflags} -g"
  cxxflags="${cxxflags} -g"
  objcflags="${objcflags} -g"
  ldflags="${ldflags} -g"
fi
if [ "${cprof}" = yes ]; then
  cppflags="${cppflags} -DCPROF"
  cflags="${cflags} -finstrument-functions"
  cxxflags="${cxxflags} -finstrument-functions"
  objcflags="${objcflags} -finstrument-functions"
fi
if [ "${gprof}" = yes ]; then
  cppflags="${cppflags} -DGPROF"
  cflags="${cflags} -pg"
  cxxflags="${cxxflags} -pg"
  objcflags="${objcflags} -pg"
  ldflags="${ldflags} -pg"
fi
if [ "${release}" = yes ]; then
  cppflags="${cppflags} -DHAVE_RELEASE"
fi
if [ "${optim}" = yes ]; then
  cppflags="${cppflags} ${cflags_optim} ${cflags_tuning}"
  if [ "${debug}" != yes -a "${gprof}" != yes -a "${cprof}" != yes ]; then
    cppflags="${cppflags} ${cflags_optim_nodebug}"
  fi
else
  cppflags="${cppflags} ${cflags_nooptim}"
fi

#
#  The main argument loop
#
while test $# -gt 0; do
  case "$1" in
  -*=*) optarg=`echo "$1" | sed 's/-_a-zA-Z0-9*=//'` ;;
  *) optarg= ;;
  esac

  case "$1" in
    --prefix=*)
      prefix="${optarg}"
      if test "${exec_prefix_set}" = no ; then
        exec_prefix="${optarg}"
      fi
      ;;
    --prefix)
      echo_prefix=yes
      ;;
    --exec-prefix=*)
      exec_prefix="${optarg}"
      exec_prefix_set=yes
      ;;
    --exec-prefix)
      echo_exec_prefix=yes
      ;;
    --version)
      echo "0.8.1"
      exit 0
      ;;
    --linkage)
      echo_linkage=yes
      ;;
    --target)
      echo_target=yes
      ;;
    --cflags)
      echo_cflags=yes
      ;;
    --cxxflags)
      echo_cxxflags=yes
      ;;
    --objcflags)
      echo_objcflags=yes
      ;;
    --libs)
      echo_libs=yes
      ;;
    -*)
      usage 1 1>&1
      ;;
    vlc)
      cppflags="${cppflags} -D__VLC__"
      ;;
    plugin)
      echo_plugin=yes
      cppflags="${cppflags} -D__VLC__ -D__PLUGIN__"
      ;;
    pic)
      echo_pic=yes
      ;;
    builtin)
      echo_builtin=yes
      cppflags="${cppflags} -D__VLC__ -D__BUILTIN__"
      ;;
    mozilla)
      ;;
    *)
      module="$1"
      ;;
  esac

  # Register per-module *FLAGS
  register_flags "$1"

  # Register module targets
  register_targets "$1"

  shift
done

#
#  If a module was requested, use its name
#
if test -n "${module}"; then
  cppflags="${cppflags} -DMODULE_NAME=${module} -DMODULE_NAME_IS_${module}"
fi

#
#  Output what we were asked
#
if test "${echo_linkage}" = yes; then
  if test "${echo_plugin}" = yes; then
    for module in `echo "${plugins}"`; do
      register_flags "${module}"
    done
  fi
  if test "${echo_builtin}" = yes; then
    for module in `echo "${builtins}"`; do
      register_flags "${module}"
    done
  fi
  echo "${linkage}"
  exit 0
fi

if test "${echo_target}" = yes; then
  if test "${echo_plugin}" = yes; then
    for module in `echo "${plugins}"`; do
      register_targets "${module}"
    done
    for target in `echo "${list}"`; do printf "${top_builddir}modules/${target}_plugin "; done
    printf '\n'
  fi
  if test "${echo_builtin}" = yes; then
    for module in `echo "${builtins}"`; do
      register_targets "${module}"
    done
    if test "${echo_pic}" = yes; then
      for target in `echo "${list}"`; do printf "${top_builddir}modules/${target}_pic.a "; done
    else
      for target in `echo "${list}"`; do printf "${top_builddir}modules/${target}.a "; done
    fi
    printf '\n'
  fi
  exit 0
fi

if test "${echo_prefix}" = yes; then
  echo "${prefix}"
fi
if test "${echo_exec_prefix}" = yes; then
  echo "${exec_prefix}"
fi
if test "${echo_cppflags}" = yes; then
  echo "${cppflags}"
fi
if test "${echo_cflags}" = yes; then
  echo "${cppflags} ${cflags}"
fi
if test "${echo_cxxflags}" = yes; then
  echo "${cppflags} ${cxxflags}"
fi
if test "${echo_objcflags}" = yes; then
  echo "${cppflags} ${objcflags}"
fi
if test "${echo_libs}" = yes; then
  if test "${echo_builtin}" = yes; then
    for module in `echo "${builtins}"`; do
      register_targets "${module}"
      register_flags "${module}"
    done
    if test "${echo_pic}" = yes; then
      for target in `echo "${list}"`; do printf "${top_builddir}modules/${target}_pic.a "; done
    else
      for target in `echo "${list}"`; do printf "${top_builddir}modules/${target}.a "; done
    fi
  fi
  echo "${libs} ${ldflags}"
fi

