#!/bin/sh


#############################################
# STATIC macros
#############################################
_PLATFORM=`uname -s`

# directories
_macro_prefix() {
  if [ "$_PLATFORM" = "Haiku" ]; then
    echo "/boot/common";
  else
    echo "/usr";
  fi
}
_macro_exec_prefix() { echo "`_macro_prefix`"; }
_macro_bindir() { echo "`_macro_exec_prefix`/bin";  }
_macro_sbindir() { echo "`_macro_exec_prefix`/sbin";  }
_macro_libexecdir() { echo "`_macro_exec_prefix`/libexec";  }
_macro_datadir() { echo "`_macro_prefix`/share";  }
_macro_sysconfdir() {
  if [ "$_PLATFORM" = "Haiku" ]; then
    echo "`_macro_exec_prefix`/etc";
  else
    echo "/etc";
  fi
}
_macro_localstatedir() {
  if [ "$_PLATFORM" = "Haiku" ]; then
    echo "`_macro_exec_prefix`/var";
  else
    echo "/var";
  fi
}
_macro_sharedstatedir() {
  if [ "$_PLATFORM" = "Haiku" ]; then
    echo "`_macro_exec_prefix`/var/com";
  else
    echo "/var/com";
  fi
}
_macro_libdir() { echo "`_macro_exec_prefix`/lib";  }
_macro_infodir() { echo "`_macro_datadir`/info";  }
_macro_mandir() { echo "`_macro_datadir`/man";  }
_macro_man1dir() { echo "`_macro_datadir`/man1";  }
_macro_man2dir() { echo "`_macro_datadir`/man2";  }
_macro_man3dir() { echo "`_macro_datadir`/man3";  }
_macro_man4dir() { echo "`_macro_datadir`/man4";  }
_macro_man5dir() { echo "`_macro_datadir`/man5";  }
_macro_man6dir() { echo "`_macro_datadir`/man6";  }
_macro_man7dir() { echo "`_macro_datadir`/man7";  }
_macro_man8dir() { echo "`_macro_datadir`/man8";  }
_macro_includedir() { echo "`_macro_prefix`/include";  }
_macro_oldincludedir() { echo "`_macro_prefix`/include";  }
_macro_localedir() { echo "`_macro_datadir`/locale";  }
_macro_desktopdir() { echo "`_macro_datadir`/applications";  }
_macro_pixmapsdir() { echo "`_macro_datadir`/pixmaps";  }
_macro_pkgconfigdir() { echo "`_macro_libdir`/pkgconfig";  }
_macro_aclocaldir() { echo "`_macro_datadir`/aclocal";  }
_macro_javadir() { echo "`_macro_libdir`/jvm/java-1.4.2-gcj-1.4.2.0";  }
_macro_jredir() { echo "`_macro_libdir`/jvm/java-1.4.2-gcj-1.4.2.0/jre";  }
_macro_javaclassdir() { echo "`_macro_datadir`/java";  }
_macro_docdir() { echo "`_macro_datadir`/doc";  }
_macro_pkgconfigdir() { echo "`_macro_libdir`/pkgconfig";  }

# defines
_macro_GNOME_ORG() { echo "http://ftp.gnome.org/pub/GNOME/sources";  }
_macro_GNU_ORG() { echo "ftp://ftp.gnu.org/gnu";  }
_macro_SF_NET() { echo "http://switch.dl.sourceforge.net/sourceforge";  }
_macro_CPAN_ORG() { echo "http://www.cpan.org/modules/by-module";  }

_macro_config_params()
{
    echo "--prefix=`_macro_prefix` \
--exec-prefix=`_macro_exec_prefix` \
--bindir=`_macro_bindir` \
--sbindir=`_macro_sbindir` \
--libexecdir=`_macro_libexecdir` \
--datadir=`_macro_datadir` \
--sysconfdir=`_macro_sysconfdir` \
--sharedstatedir=`_macro_sharedstatedir` \
--localstatedir=`_macro_localstatedir` \
--libdir=`_macro_libdir` \
--infodir=`_macro_infodir` \
--mandir=`_macro_mandir` \
--includedir=`_macro_includedir` \
--oldincludedir=`_macro_oldincludedir`"
}

_macro_make_params()
{
    echo "prefix=`_macro_prefix` \
exec-prefix=`_macro_exec_prefix` \
bindir=`_macro_bindir` \
sbindir=`_macro_sbindir` \
libexecdir=`_macro_libexecdir` \
datadir=`_macro_datadir` \
sysconfdir=`_macro_sysconfdir` \
sharedstatedir=`_macro_sharedstatedir` \
localstatedir=`_macro_localstatedir` \
libdir=`_macro_libdir` \
infodir=`_macro_infodir` \
mandir=`_macro_mandir` \
includedir=`_macro_includedir` \
oldincludedir=`_macro_oldincludedir`"
}

_macro_make_install_params()
{
    ROOT=$1
    echo "prefix=$ROOT`_macro_prefix` \
exec-prefix=$ROOT`_macro_exec_prefix` \
bindir=$ROOT`_macro_bindir` \
sbindir=$ROOT`_macro_sbindir` \
libexecdir=$ROOT`_macro_libexecdir` \
datadir=$ROOT`_macro_datadir` \
sysconfdir=$ROOT`_macro_sysconfdir` \
sharedstatedir=$ROOT`_macro_sharedstatedir` \
localstatedir=$ROOT`_macro_localstatedir` \
libdir=$ROOT`_macro_libdir` \
infodir=$ROOT`_macro_infodir` \
mandir=$ROOT`_macro_mandir` \
includedir=$ROOT`_macro_includedir` \
oldincludedir=$ROOT`_macro_oldincludedir`"
}

#############################################
# RUNTIME macros
#############################################

# build macros
_macro_autoconf() { autoconf;  }
_macro_automake() { automake -a -c -f;  }
_macro_aclocal() { aclocal;  }
_macro_autoheader() { autoheader;  }
_macro_gettextize() { glib-gettextize -c -f;  }
_macro_libtoolize() { libtoolize -c -f;  }
_macro_intltoolize() { intltoolize -c -f;  }
_macro_autoreconf() { touch INSTALL NEWS AUTHORS ChangeLog; autoreconf -vif;  }

# post-install
_macro_depmod() { depmod -a;  }
_macro_install_fonts() { fc-cache -v -f;  }
_macro_scrollkeeper_update() { scrollkeeper-update;  }
_macro_update_mime() { update-mime-database `_macro_datadir`/mime; update-desktop-database;  }

_macro_gconf_schemas_install()
{
    ROOT=$1

    export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
    for i in `find $ROOT -not -type d -name '*.schemas' | grep "$(_macro_sysconfdir)/gconf/schemas/"`
    do
	file=${i#$ROOT}
	gconftool-2 --makefile-install-rule $file;
    done
}


_macro()
{
    cmd=${1/./_}
    cmd=${cmd/-/_}
    shift
    params=$@
    
    eval "_macro_$cmd $params"
}

_macro_eval()
{
    eval `_macro $@`
}

#_macro $@;

#make_old="make $MAKE"
#make_install_old="make install $MAKEINSTALL"
#python_setup="python setup.py"
#clean_langs="function_clean_langs"
#categories="function_categories"
#clean_la="find $ROOT_BIN$LIBDIR -mindepth 2 -name '*.la' -exec rm -f {} \;"
#clean_all_la="find $ROOT_BIN$LIBDIR $ROOT_BIN/lib -name  '*.la' -exec rm -f {} \;"
#auto="$auto"
#ROOT_BIN="$ROOT_BIN"


#  my $str = $_[0];
#  my $ver = $_[1];
#  my $main_version = "";
#  my @numbers = split('\.', $ver);
#  my @numbers2 = split('\-', $ver);
#  # main_version(2.6.11-rc1) = 2.6
#  # main_version(6.1.9-1) = 6.1.9
#  # main_version(2.4.2) = 2.4
#
#  # we have '-' in version
#  if (scalar(@numbers2) >= 2)
#  {
#    if ($numbers2[1] =~ /^[0-9]+$/) {
#      $main_version = "$numbers2[0]";
#    } elsif (scalar(@numbers) >= 2) {
#      $main_version = "$numbers[0].$numbers[1]";
#    } else {
#      $main_version = $ver;
#    }
#  } else
#  {
#    if (scalar(@numbers) >= 2) {
#      $main_version = "$numbers[0].$numbers[1]";
#    } else {
#      $main_version = $ver;
#    }  
#  }
#  if ((scalar(@numbers2) == 1) && (scalar(@numbers) >= 2))
#  {
#    $main_version = "$numbers[0].$numbers[1]";
#  }
#
#  my ($target, $PLATFORM) = get_target_and_platform();
#  my $PERL_STR = "";
#  my $MKINSTALLDIRS = "/usr/share/automake/mkinstalldirs";
#  if ($PLATFORM eq "haiku") {
#    $PERL_STR="PERL=/boot/home/config/bin/perl";
#    $MKINSTALLDIRS = "/boot/home/config/share/automake/mkinstalldirs";
#  }
#
#  $str =~ s/\%\{version\}/$_[1]/g;
#  $str =~ s/\$VERSION/$_[1]/g;
#  $str =~ s/\%\{main_version\}/$main_version/g;
#  $str =~ s/\%\{target\}/$PLATFORM/g;
#
#  my $make_common = "echo \"\* Detecting build requires (pkg\-config)\"
#  if \[ \-f pkg\-config\.txt \]\; then pkg\-config\-anal \> pkg\-config\-anal\.txt; fi
#  if \[ \-f configure \]\; then \.\/configure --help \> configurehelp.txt; fi\n";
#
#  my $make = "$make_common make";
#
#  $str =~ s/\%\{make\}/$make/gx;
#  $str =~ s/\%\{make_ko\}/$make_common KDIR=\/lib\/modules\/\$LINUX\/build; make KDIR=\$KDIR/gx;
#  
#  my $make_install = "make install INSTALL_ROOT=\$ROOT_BIN DESTDIR=\$ROOT_BIN GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 MKINSTALLDIRS=$MKINSTALLDIRS";
#  $str =~ s/\%\{make_install\}/$make_install/g;
#
#  $str =~ s/\%\{make_install_ko\}/make install DESTDIR=\$ROOT_BIN GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 MKINSTALLDIRS=$MKINSTALLDIRS INSTALL_MOD_PATH=\$ROOT_BIN MODPREFIX=\$ROOT_BIN KDIR=\$KDIR/g;
#

#
#  my $python_build = "python setup.py build \$CFG";
#  $str =~ s/\%\{python_build\}/$python_build/g;
#
#  my $python_install = "python setup.py install --root=\$ROOT_BIN --prefix=\$PREFIX \$CFG";
#  $str =~ s/\%\{python_install\}/$python_install/g;
#
#  my $perl_make = "perl Makefile.PL";
#  $str =~ s/\%\{perl_make\}/$perl_make/g;
#
#  my $configure = "`rm -rf autom4te.cache 2>/dev/null; chmod +x \$START_DIR./configure;` \\
#    \$START_DIR./configure --x-includes=/usr/include --x-libraries=/usr/lib --build=$target \\
#    LDFLAGS=\"\$BOX_LDFLAGS\" \\
#    PKG_CONFIG=pkg-config \\
#    PATH=\$PWD:\$PATH \\
#    --disable-static \\
#    $PERL_STR \\
#    \$CONFIG \$CFG \$FPARAM";
#  my $configure_old = "`rm -rf autom4te.cache 2>/dev/null; chmod +x \$START_DIR./configure`; \\
#    LDFLAGS=\"\$BOX_LDFLAGS\"; export LDFLAGS; \\
#    PKG_CONFIG=pkg-config; export PKG_CONFIG; \\
#    PATH=\$PWD:\$PATH; export PATH; \\
#    \$START_DIR./configure --x-includes=/usr/include --x-libraries=/usr/lib --build=$target \\
#    --disable-static \\
#    \$CONFIG \$CFG \$FPARAM";
#
#  my $configure_general = "NEW_CONF=0;
#    \$START_DIR\.\/configure \-\-help \| grep '\\[VAR=VALUE\\]' \>\/dev\/null && NEW_CONF=1;
#    if [ \$NEW_CONF = \"1\" ]; then $configure;
#    else $configure_old; fi";
#
#  my $configure_general_script = "
#configure_general_script()
#{
#FPARAM=\$@
#$configure_general
#}
#configure_general_script";
#
#  $str =~ s/\%\{configure\}/$configure_general_script/g;
#  $str =~ s/\%\{configure_old\}/$configure_old/g;
#
#  my $qmake = "qmake -recursive \&\& $make \&\& $make_install";
#  $str =~ s/\%\{qmake\}/$qmake/g;
#
#  my $auto = "
#  if [ -f configure.in -o -f configure.ac -a -f configure ]
#  then
#    $configure_general_script \&\&
#    $make \&\&
#    $make_install
#  elif [ -f setup.py ]
#  then
#    $python_build \&\&
#    $python_install
#  elif [ -f Makefile.PL ]
#  then
#    $perl_make \&\&
#    $make \&\&
#    $make_install
#  elif [ -f CMakeLists.txt ]
#  then
#    mkdir cmake_build_tmp
#    cd cmake_build_tmp
#    cmake .. \$CFG \&\&
#    $make \&\&
#    $make_install
#    cd ..
#  elif [ -f \*\.pro ]
#  then
#    $qmake
#  elif [ -f SConstruct ]
#  then
#    scons
#  elif [ -f Makefile -o -f makefile ]
#  then
#    $make \&\&
#    $make_install
#  fi";
#
