#!/bin/sh

prefix="/usr/local"
exec_prefix="${prefix}"
exec_prefix_set=no

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

plugins=" dummy logger memcpy mpgv mpga m4v m4a h264 ps pva avi asf mp4 rawdv nsv real aiff mjpeg demuxdump flac cvdsub svcdsub spudec subsdec dvbsub mpeg_audio lpcm a52 dts cinepak flacdec deinterlace invert adjust transform distort motionblur rv32 fixed32tos16 s16tofixed32 u8tofixed32 trivial_resampler ugly_resampler trivial_channel_mixer trivial_mixer playlist export sgimb m3u nsc xtag i420_rgb rawvideo blend scale image logo wav araw subtitle vobsub adpcm a52sys dtssys au ty voc xa nuv access_directory access_file access_udp access_tcp access_http access_mms access_ftp ipv4 packetizer_mpegvideo packetizer_h264 packetizer_mpeg4video packetizer_mpeg4audio access_fake access_filter_timeshift access_filter_record gestures rc telnet hotkeys netsync showintf time marq shout sap fake rss mosaic wall motiondetect clone crop i420_yuy2 i422_yuy2 i420_ymga aout_file linear_resampler bandlimited_resampler float32_mixer spdif_mixer simple_channel_mixer dolby_surround_decoder headphone_channel_mixer normvol equalizer fixed32tofloat32 float32tos16 float32tos8 float32tou16 float32tou8 a52tospdif dtstospdif s16tofloat32 s16tofloat32swab s8tofloat32 u8tofloat32 audio_format 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_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 stream_out_bridge stream_out_mosaic_bridge http dvdread dvdnav screen ipv6 ogg mux_ogg mpc mpgatofixed32 id3tag faad a52tofloat32 libmpeg2 vorbis png osdmenu x11 vout_sdl aout_sdl sdl_image freetype xml ncurses "
builtins="  memcpymmx i420_rgb_mmx i422_yuy2_mmx i420_ymga_mmx i420_yuy2_mmx memcpymmxext memcpy3dn  mkv ffmpeg stream_out_switcher theora xvideo "

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

cflags_tuning=""
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
        [--list]                  print modules names 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"
    ;;
    adjust)
      ldflags="${ldflags} -lm"
    ;;
    aout_sdl)
      cflags="${cflags} -I/usr/local/include/ -D_REENTRANT"
      ldflags="${ldflags} -L/usr/local/lib -L/usr/X11R6/lib -lSDL -pthread -lm -L/usr/X11R6/lib -lX11 -lXext -lusbhid"
    ;;
    distort)
      ldflags="${ldflags} -lm"
    ;;
    dtstofloat32)
      ldflags="${ldflags} -lm"
    ;;
    dvdnav)
      cflags="${cflags} -I/usr/local/include -I/usr/local/include/dvdnav -pthread"
      ldflags="${ldflags} -L/usr/local/lib -ldvdnav -pthread"
    ;;
    dvdread)
      ldflags="${ldflags} -ldvdread"
    ;;
    equalizer)
      ldflags="${ldflags} -lm"
    ;;
    faad)
      ldflags="${ldflags} -lfaad -lm"
    ;;
    ffmpeg)
      cflags="${cflags} -I/usr/local/include -I/usr/local/include/ffmpeg -I/usr/local/include/postproc"
      ldflags="${ldflags} -pthread -L/usr/local/lib -lavformat -lossaudio -lavcodec -lz -lavutil -lm -lpostproc -lm"
    ;;
    ffmpegaltivec)
      ldflags="${ldflags} -lm"
    ;;
    flacdec)
      ldflags="${ldflags} -lFLAC"
    ;;
    freetype)
      cflags="${cflags} -I/usr/X11R6/include/freetype2 -I/usr/X11R6/include -I/usr/local/include -DHAVE_FRIBIDI"
      ldflags="${ldflags} -L/usr/local/lib -lfribidi -L/usr/X11R6/lib -lfreetype -lm"
    ;;
    glx)
      ldflags="${ldflags} -lXinerama"
    ;;
    goom)
      ldflags="${ldflags} -lm"
    ;;
    headphone_channel_mixer)
      ldflags="${ldflags} -lm"
    ;;
    i420_rgb)
      ldflags="${ldflags} -lm"
    ;;
    i420_rgb_mmx)
      cflags="${cflags} -mmmx"
    ;;
    i420_yuy2_mmx)
      cflags="${cflags} -fomit-frame-pointer"
    ;;
    id3tag)
      ldflags="${ldflags} -lid3tag -lz"
    ;;
    libmpeg2)
      ldflags="${ldflags} -lmpeg2"
    ;;
    mkv)
      cxxflags="${cxxflags} "
      linkage="c++"
      ldflags="${ldflags} -lz -lmatroska -lebml"
    ;;
    mozilla)
      cflags="${cflags} -fpic -fPIC"
      cxxflags="${cxxflags} -fpic -fPIC"
      linkage="c++"
      objcflags="${objcflags} -fpic -fPIC"
      if test "${linkage}" = "c"; then linkage="objc"; fi
      ldflags="${ldflags} -shared -fpic -fPIC"
    ;;
    mp4)
      ldflags="${ldflags} -lz"
    ;;
    mpc)
      ldflags="${ldflags} -lmpcdec -lm"
    ;;
    mpgatofixed32)
      ldflags="${ldflags} -lmad"
    ;;
    mux_ogg)
      ldflags="${ldflags} -logg"
    ;;
    ncurses)
      ldflags="${ldflags} -lncurses"
    ;;
    normvol)
      ldflags="${ldflags} -lm"
    ;;
    ogg)
      ldflags="${ldflags} -logg"
    ;;
    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 -pthread -fpic -fPIC"
    ;;
    png)
      ldflags="${ldflags} -lpng -lz -lm"
    ;;
    sap)
      ldflags="${ldflags} -lz"
    ;;
    screen)
      cppflags="${cppflags} -I/usr/X11R6/include"
      ldflags="${ldflags} -L/usr/X11R6/lib -lX11 -lXext"
    ;;
    sdl_image)
      cflags="${cflags} -I/usr/local/include/ -D_REENTRANT"
      ldflags="${ldflags} -lSDL_image -ltiff -ljpeg -lpng -lz -L/usr/local/lib -L/usr/X11R6/lib -lSDL -pthread -lm -L/usr/X11R6/lib -lX11 -lXext -lusbhid"
    ;;
    skins2)
      cppflags="${cppflags} -I/usr/local/include -DHAVE_FRIBIDI"
      ldflags="${ldflags} -L/usr/local/lib -lfribidi -lz"
    ;;
    speex)
      ldflags="${ldflags} -lm"
    ;;
    stream_out_switcher)
      cflags="${cflags} -I/usr/local/include -I/usr/local/include/ffmpeg -I/usr/local/include/postproc"
    ;;
    stream_out_transrate)
      ldflags="${ldflags} -lm"
    ;;
    theora)
      ldflags="${ldflags} -ltheora -logg"
    ;;
    twolame)
      ldflags="${ldflags} -lm"
    ;;
    vlc)
      cflags="${cflags} "
      ldflags="${ldflags} -pthread -lm -liconv -lintl -liconv -L/usr/local/lib -L/usr/X11R6/lib"
    ;;
    vorbis)
      ldflags="${ldflags} -lvorbisenc -lvorbis -logg"
    ;;
    vout_sdl)
      cflags="${cflags} -I/usr/local/include/ -D_REENTRANT"
      ldflags="${ldflags} -L/usr/local/lib -L/usr/X11R6/lib -lSDL -pthread -lm -L/usr/X11R6/lib -lX11 -lXext -lusbhid"
    ;;
    x11)
      cppflags="${cppflags} -I/usr/X11R6/include"
      ldflags="${ldflags} -lXinerama -L/usr/X11R6/lib -lX11 -lXext"
    ;;
    x264)
      ldflags="${ldflags} -lm"
    ;;
    xml)
      cppflags="${cppflags} -I/usr/local/include/libxml2 -I/usr/local/include"
      ldflags="${ldflags} -L/usr/local/lib -lxml2 -lz -L/usr/local/lib -liconv -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" ;;
    access_smb) list="${list} access/libaccess_smb" ;;
    access_gnomevfs) list="${list} access/libaccess_gnomevfs" ;;
    dvdnav) list="${list} access/libdvdnav" ;;
    dvdread) list="${list} access/libdvdread" ;;
    access_fake) list="${list} access/libaccess_fake" ;;
    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" ;;
    v4l) list="${list} access/v4l/libv4l" ;;
    cddax) list="${list} access/cdda/libcddax" ;;
    access_realrtsp) list="${list} access/rtsp/libaccess_realrtsp" ;;
    vcd) list="${list} access/vcd/libvcd" ;;
    vcdx) list="${list} access/vcdx/libvcdx" ;;
    screen) list="${list} access/screen/libscreen" ;;
    access_filter_timeshift) list="${list} access_filter/libaccess_filter_timeshift" ;;
    access_filter_record) list="${list} access_filter/libaccess_filter_record" ;;
    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" ;;
    access_output_shout) list="${list} access_output/libaccess_output_shout" ;;
    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" ;;
    dolby_surround_decoder) list="${list} audio_filter/channel_mixer/libdolby_surround_decoder" ;;
    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" ;;
    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" ;;
    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" ;;
    auhal) list="${list} audio_output/libauhal" ;;
    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" ;;
    twolame) list="${list} codec/libtwolame" ;;
    dirac) list="${list} codec/libdirac" ;;
    png) list="${list} codec/libpng" ;;
    svcdsub) list="${list} codec/libsvcdsub" ;;
    cvdsub) list="${list} codec/libcvdsub" ;;
    fake) list="${list} codec/libfake" ;;
    realaudio) list="${list} codec/librealaudio" ;;
    sdl_image) list="${list} codec/libsdl_image" ;;
    cmml) list="${list} codec/cmml/libcmml" ;;
    dmo) list="${list} codec/dmo/libdmo" ;;
    ffmpeg) list="${list} codec/ffmpeg/libffmpeg" ;;
    ffmpegaltivec) list="${list} codec/ffmpeg/libffmpegaltivec" ;;
    spudec) list="${list} codec/spudec/libspudec" ;;
    gestures) list="${list} control/libgestures" ;;
    showintf) list="${list} control/libshowintf" ;;
    telnet) list="${list} control/libtelnet" ;;
    netsync) list="${list} control/libnetsync" ;;
    ntservice) list="${list} control/libntservice" ;;
    hotkeys) list="${list} control/libhotkeys" ;;
    lirc) list="${list} control/liblirc" ;;
    rc) list="${list} control/librc" ;;
    http) list="${list} control/http/libhttp" ;;
    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" ;;
    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" ;;
    ty) list="${list} demux/libty" ;;
    vobsub) list="${list} demux/libvobsub" ;;
    voc) list="${list} demux/libvoc" ;;
    xa) list="${list} demux/libxa" ;;
    nuv) list="${list} demux/libnuv" ;;
    nsc) list="${list} demux/libnsc" ;;
    mpc) list="${list} demux/libmpc" ;;
    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" ;;
    id3tag) list="${list} demux/util/libid3tag" ;;
    ncurses) list="${list} gui/libncurses" ;;
    beos) list="${list} gui/beos/libbeos" ;;
    pda) list="${list} gui/pda/libpda" ;;
    macosx) list="${list} gui/macosx/libmacosx" ;;
    qnx) list="${list} gui/qnx/libqnx" ;;
    skins2) list="${list} gui/skins2/libskins2" ;;
    wxwidgets) list="${list} gui/wxwidgets/libwxwidgets" ;;
    wince) list="${list} gui/wince/libwince" ;;
    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" ;;
    screensaver) list="${list} misc/libscreensaver" ;;
    qte_main) list="${list} misc/libqte_main" ;;
    freetype) list="${list} misc/libfreetype" ;;
    win32text) list="${list} misc/libwin32text" ;;
    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" ;;
    xtag) list="${list} misc/xml/libxtag" ;;
    xml) list="${list} misc/xml/libxml" ;;
    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" ;;
    sap) list="${list} services_discovery/libsap" ;;
    hal) list="${list} services_discovery/libhal" ;;
    daap) list="${list} services_discovery/libdaap" ;;
    shout) list="${list} services_discovery/libshout" ;;
    upnp) list="${list} services_discovery/libupnp" ;;
    bonjour) list="${list} services_discovery/libbonjour" ;;
    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_switcher) list="${list} stream_out/libstream_out_switcher" ;;
    stream_out_bridge) list="${list} stream_out/libstream_out_bridge" ;;
    stream_out_mosaic_bridge) list="${list} stream_out/libstream_out_mosaic_bridge" ;;
    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" ;;
    mosaic) list="${list} video_filter/libmosaic" ;;
    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" ;;
    rss) list="${list} video_filter/librss" ;;
    motiondetect) list="${list} video_filter/libmotiondetect" ;;
    rv32) list="${list} video_filter/librv32" ;;
    osdmenu) list="${list} video_filter/libosdmenu" ;;
    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" ;;
    wingapi) list="${list} video_output/libwingapi" ;;
    mga) list="${list} video_output/libmga" ;;
    hd1000v) list="${list} video_output/libhd1000v" ;;
    snapshot) list="${list} video_output/libsnapshot" ;;
    opengl) list="${list} video_output/libopengl" ;;
    image) list="${list} video_output/libimage" ;;
    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 "${prefix}/include" != "/usr/include"; then
  includes="-I${prefix}/include"
fi
if test "${top_builddir}" != ""; then
  top_builddir="${top_builddir}/"
elif test "${TOP_BUILDDIR}" != ""; then
  top_builddir="${TOP_BUILDDIR}/"
fi
includes="${includes}"
cppflags="${includes}"
libs="-L${exec_prefix}/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=\"${prefix}/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.4a"
      exit 0
      ;;
    --linkage)
      echo_linkage=yes
      ;;
    --target)
      echo_target=yes
      ;;
    --list)
      echo_list=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__ -I${top_builddir}src/misc"
      ;;
    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)
      ;;
    external)
      echo_external=yes
      ldflags="${ldflags} -lvlc"
      ;;      
    *)
      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_list}" = yes; then
  if test "${echo_plugin}" = yes; then
    echo "${plugins}"
    printf '\n'
  fi
  if test "${echo_builtin}" = yes; then
    echo "${builtins}"
    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
  if test "${echo_external}" = yes; then
    if test "${echo_pic}" = yes; then
      for module in `echo "${builtins}"`; do
        ldflags="${ldflags} ${exec_prefix}/lib/vlc/lib${module}_pic.a"
      done
    else
      for module in `echo "${builtins}"`; do
        ldflags="${ldflags} ${exec_prefix}/lib/vlc/lib${module}.a"
      done
    fi
    for module in `echo "${builtins}"`; do
      register_flags "${module}"
    done
    register_flags "vlc"
  fi
  echo "${libs} ${ldflags}"
fi
