#!/bin/sh
#
# Copyright (c) 2005-2006 The ABINIT Group (Yann Pouillon)
# All rights reserved.
#
# This file is part of the ABINIT software package. For license information,
# please see the COPYING file in the top-level directory of the ABINIT source
# distribution.
#

# Check that we are in the right directory
if test ! -s "./configure.ac" -o ! -s "src/main/abinit.F90"; then
	echo "makemake: This is not an ABINIT source tree - aborting now"
	exit 1
fi

start_time=`date '+%s'`

cat <<EOF
Makemake report
===============

EOF

# Fix build system
cat <<EOF
Build system update
-------------------

BEGIN
EOF
echo -n " * Fixing Autoconf 2.60 issue..."
ac_version=`autoconf --version | head -n 1 | sed -e 's/[ ]*$//;s/.* //;s/.$//'`
if test "${ac_version}" = "2.6"; then
   sed_cmd="s/_AC_SRCPATHS/_AC_SRCDIRS/g"
else
   sed_cmd="s/_AC_SRCDIRS/_AC_SRCPATHS/g"
fi
for f in config/m4/init.m4; do
   sed -e "${sed_cmd}" ${f} > ${f}.tmp
   mv ${f}.tmp ${f}
done
echo "done."

# Update source tree
cat <<EOF
END

Source tree update
------------------

BEGIN
EOF
#echo -n " * Generating ETSF module..."
#./config/scripts/etsf-make-module
#echo "done."
#echo -n " * Generating ETSF low-level routines..."
#./config/scripts/etsf-make-routines
#echo "done."
echo -n " * Updating routines inside 03iovars..."
perl ./util/subs/iovars/make-sub-is_input_variable.pl
echo "done."
echo -n " * Updating routines inside 03ionetcdf..."
perl ./util/subs/netcdf/make-sub-netcdf_def_dtset.pl
perl ./util/subs/netcdf/make-sub-netcdf_get_dims_dtset.pl
perl ./util/subs/netcdf/make-sub-netcdf_get_dtset.pl
perl ./util/subs/netcdf/make-sub-netcdf_put_dtset.pl
echo "done."
echo -n " * Updating Fortran interfaces..."
python ./util/maintainers/abilint.py . . 1> abilint.out 2>&1
abilint_exit_code="${?}"
if test "${abilint_exit_code}" = "0"; then
 echo "done (output in abilint.out)."
 rm -f abilint.log
else
 echo "FAILED (output in abilint.[out|log])!"
fi
echo -n " * Generating macros for debugging..."
./config/scripts/make-macros-debug
echo "done."
echo -n " * Generating macros for environment variables..."
./config/scripts/make-macros-env
echo "done."
echo -n " * Generating macros for command-line options..."
./config/scripts/make-macros-options
echo "done."
echo -n " * Generating macros for per-directory optimization..."
./config/scripts/make-macros-optflags
echo "done."
echo -n " * Generating macros for external libraries..."
./config/scripts/make-macros-extlibs
echo "done."
echo -n " * Generating macros for optimized linear algebra libraries..."
./config/scripts/make-macros-linalg
echo "done."
echo -n " * Generating macros for configure output..."
./config/scripts/make-macros-output
echo "done."
echo -n " * Generating build examples..."
./config/scripts/make-build-examples
echo "done."
echo "END"
echo ""

# Generate makefiles
cat <<EOF
Makefiles (for Automake)
------------------------

BEGIN
EOF
echo -n " * Generating makefiles for libraries..."
./config/scripts/make-makefiles-libraries
echo "done."
echo -n " * Generating makefiles for binaries..."
./config/scripts/make-makefiles-binaries
echo "done."
./config/scripts/make-makefiles-tests
echo -n " * Generating makefiles for utilities..."
./config/scripts/make-makefiles-utils
echo "done."
echo -n " * Generating makefiles for vms..."
./config/scripts/make-makefiles-vms
echo "done."
echo -n " * Generating documentation makefiles..."
./config/scripts/make-makefiles-doc
echo "done."
echo -n " * Generating intermediate makefiles..."
./config/scripts/make-makefiles-inter
echo "done."
echo -n " * Generating top makefile..."
./config/scripts/make-makefiles-top
./config/scripts/add-targets-binaries
echo "done."
echo "END"
echo ""

# Build Autotools framework
cat <<EOF
Autotools framework (for Autoconf)
----------------------------------

BEGIN
EOF
./config/scripts/build-autotools-framework
echo "END"
echo ""

if test "${abilint_exit_code}" != "0"; then
 echo " ****************************************************************"
 echo " ***                        WARNING!                          ***"
 echo " ****************************************************************"
 echo " ***                                                          ***"
 echo " *** The abilint script returned an non-zero exit code. As a  ***"
 echo " *** consequence, the Fortran interfaces will likely produce  ***"
 echo " *** build-time errors. The 'abilint.log' file has been left ***"
 echo " *** for your investigations. Its standard output has been    ***" 
 echo " *** also redirected to 'abilint.out'.                       ***"
 echo " ***                                                          ***"
 echo " *** Please have a careful look at abilint's outputs before   ***"
 echo " *** sending a bug report.                                    ***"
 echo " ***                                                          ***"
 echo " ****************************************************************"
 echo ""
fi

end_time=`date '+%s'`

cat <<EOF
-- 
Time elapsed : `awk "END{print ${end_time}-${start_time}}" < /dev/null` s

EOF


syntax highlighted by Code2HTML, v. 0.9.1