#! /bin/sh

##  bootstrap file for the VLC media player
##
## Copyright (C) 2005-2008 the VideoLAN team
##
##  Authors: Sam Hocevar <sam@zoy.org>
##           Rémi Denis-Courmont <rem # videolan # org>

if test "$#" != "0"; then
  echo "Usage: $0"
  echo "  Calls autoreconf to generate m4 macros and prepare Makefiles."
  exit 1
fi

###
###  Get a sane environment, just in case
###
CYGWIN=binmode
export CYGWIN

set -e
set -x

##
## Check for various tools
##

ACLOCAL_ARGS="-I m4 ${ACLOCAL_ARGS}"

# Check for contrib directory
if test -d extras/contrib/bin; then
  PATH="`pwd`/extras/contrib/bin:$PATH"
  if test -d extras/contrib/share/aclocal; then
    ACLOCAL_ARGS="${ACLOCAL_ARGS} -I extras/contrib/share/aclocal"
  fi
  if test ".`uname -s`" = ".Darwin"; then
    LD_LIBRARY_PATH=./extras/contrib/lib:$LD_LIBRARY_PATH
    DYLD_LIBRARY_PATH=./extras/contrib/lib:$DYLD_LIBRARY_PATH
    export LD_LIBRARY_PATH
    export DYLD_LIBRARY_PATH
  elif test ".`uname -s`" = ".BeOS"; then
    LIBRARY_PATH=./extras/contrib/lib:$LIBRARY_PATH
    BELIBRARIES=./extras/contrib/lib:$BELIBRARIES
    export LIBRARY_PATH
    export BELIBRARIES
  fi
elif test ".`uname -s`" = ".Darwin"; then
  set +x
  echo ""
  echo "ERR: Contribs haven't been built"
  echo "ERR: Please run:"
  echo "ERR: "
  echo "ERR:    'cd extras/contrib && ./bootstrap && make && cd ../..'"
  echo "ERR: "
  echo "ERR: Make sure fink has been disabled too."
  echo ""
  set -x
  exit 1
fi

# Check for pkg-config
if pkg-config --version >/dev/null 2>&1; then
  # We have pkg-config, everything is cool.
  PKGCONFIG=yes
else
  PKGCONFIG=no
fi

##
## Generate the modules makefile, by parsing modules/**/Modules.am
##

set +x
echo "generating modules/**/Makefile.am and m4/private.m4"

# Prepare m4/private.m4
rm -f m4/private.m4 && cat > m4/private.m4 << EOF
dnl  Private VLC macros - generated by bootstrap

EOF

if [ "${PKGCONFIG}" = "no" ]; then cat >> m4/private.m4 << EOF
dnl  User does not have pkg-config, so assume package was not found
AC_DEFUN([PKG_CHECK_MODULES],[ifelse([\$4], , :, [\$4])])

EOF
fi

cat >> m4/private.m4 << EOF
dnl  Helper macro for vlc-config generation
AC_DEFUN([VLC_CONFIG_HELPER], [
  cat >> vlc-config.in << BLAH
EOF

modules=""

rm -f modules/Makefile.am && cat > modules/Makefile.am << EOF
# Autogenerated by bootstrap - DO NOT EDIT
EXTRA_DIST = LIST
dist_noinst_SCRIPTS = genmf
SUBDIRS = `sed -ne 's,modules/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`

EOF

modules/genmf `sed -ne 's,modules/\(.*\)/Makefile,\1,p' configure.ac`

cat >> m4/private.m4 << EOF
BLAH
])
EOF

###
###  classic bootstrap stuff
###
set -x

# Automake complains if these are not present
echo > vlc-config.in
cp -f INSTALL INSTALL.svn

autoreconf --install --force --verbose ${ACLOCAL_ARGS}
rm -f po/Makevars.template
echo > ABOUT-NLS
mv -f INSTALL.svn INSTALL

##
##  files which need to be regenerated
##
rm -f vlc-config.in vlc-config
rm -f src/misc/modules_builtin.h
rm -f stamp-builtin stamp-h* mozilla/stamp-pic

# Shut up
set +x

##
##  Tell the user about gettext, pkg-config and sed
##
if [ "$PKGCONFIG" = "no" ]; then
  cat << EOF

==============================================================
NOTE: "pkg-config" is missing from your system. Certain
libraries may not be detected properly.
EOF
fi

echo "Successfully bootstrapped"