# Process this file with autoconf to produce a configure script.
AC_INIT()

AC_CONFIG_HEADER(Source/cmConfigure.h)

CMAKE_CONFIG_DIR=`pwd`
AC_SUBST(CMAKE_CONFIG_DIR)

#
# check for some programs we use
#

# save the CFLAGS and CXXFLAGS specified by the user
save_CFLAGS=$CFLAGS
save_CXXFLAGS=$CXXFLAGS

# let autoconf find cc and CC, it will try to add -g -O2 to CFLAGS and CXXFLAGS
AC_PROG_CC
AC_PROG_CXX

# restore the flags specified by the user and get rid of any flags
# found by autoconf (we do not want -02 -g by default)
CFLAGS=$save_CFLAGS
CXXFLAGS=$save_CXXFLAGS

fullSrcDir=`cd $srcdir; pwd`
CMAKE_ROOT_DIR=$fullSrcDir
AC_SUBST(CMAKE_ROOT_DIR)


# Step 1: set the variable "system" to hold the name and version number
# for the system.  This can usually be done via the "uname" command, but
# there are a few systems, like Next, where this doesn't work.

AC_MSG_CHECKING([system version (for dynamic loading)])
if test -f /usr/lib/NextStep/software_version; then
  system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
else
    system=`uname -s`-`uname -r`
    if test "$?" -ne 0 ; then
	AC_MSG_RESULT([unknown (can't find uname command)])
	system=unknown
    else
	# Special check for weird MP-RAS system (uname returns weird
	# results, and the version is kept in special file).
    
	if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then
	    system=MP-RAS-`awk '{print $3}' /etc/.relid'`
	fi
	AC_MSG_RESULT($system)
    fi
fi

CMAKE_ANSI_CFLAGS=""
CMAKE_ANSI_CXXFLAGS=""
# on hp use -Aa for ansi
if test $ac_cv_prog_gxx = no; then
case $system in
    HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
        echo $ac_n "checking whether ${CC} accepts -Aa""... $ac_c" 1>&6
        echo 'void f(){}' > conftest.c
        if test -z "`${CC} -Aa -c conftest.c 2>&1`"; then
          echo "$ac_t""yes" 1>&6
          CMAKE_ANSI_CFLAGS="-Aa"
        else
          echo "$ac_t""no" 1>&6
        fi
        rm -f conftest*
	;;  
    IRIX-5* | IRIX-6* | IRIX64-6* | IRIX-64-6*)
        echo $ac_n "checking whether ${CXX} accepts -LANG:std""... $ac_c" 1>&6
        echo 'void f(){}' > conftest.c
        if test -z "`${CXX} -LANG:std -c conftest.c 2>&1`"; then
          echo "$ac_t""yes" 1>&6
	  CMAKE_ANSI_CXXFLAGS="-LANG:std"
        else
          echo "$ac_t""no" 1>&6
        fi
        rm -f conftest*
	;;  
esac
fi
AC_SUBST(CMAKE_ANSI_CFLAGS)
AC_SUBST(CMAKE_ANSI_CXXFLAGS)

# check no g++ compilers to see if they have the standard 
# ansi stream files (without the .h)
if test $ac_cv_prog_gxx = no; then
  AC_MSG_CHECKING( ansi standard C++ stream headers ) 
  rm -rf conftest.*
  cat > conftest.cc <<!
#include <iostream>
!
  if test -z "`${CXX} $CMAKE_ANSI_CXXFLAGS $CXXFLAGS $CPPFLAGS  -c conftest.cc 2>&1`"; then
    echo "$ac_t""yes" 1>&6
  else
    AC_DEFINE(CMAKE_NO_ANSI_STREAM_HEADERS)
    echo "$ac_t""no" 1>&6
  fi
fi

# check to see if stl is in the std namespace
if test $ac_cv_prog_gxx = no; then
  AC_MSG_CHECKING( ansi standard namespace support ) 
  rm -rf conftest.*
  cat > conftest.cc <<!
#include <list>
void foo() { std::list<int> l; }
!
  if test -z "`${CXX} $CMAKE_ANSI_CXXFLAGS $CXXFLAGS $CPPFLAGS -c conftest.cc 2>&1`"; then
    echo "$ac_t""yes" 1>&6
  else
    AC_DEFINE(CMAKE_NO_STD_NAMESPACE)
    echo "$ac_t""no" 1>&6
  fi
fi

# check to see if for scoping is supported
if test $ac_cv_prog_gxx = no; then
  AC_MSG_CHECKING( ansi for scope support ) 
  rm -rf conftest.*
  cat > conftest.cc <<!
void foo() { for(int i;;); for(int i;;); }
!
  if test -z "`${CXX} $CMAKE_ANSI_CXXFLAGS $CXXFLAGS $CPPFLAGS -c conftest.cc 2>&1`"; then
    echo "$ac_t""yes" 1>&6
  else
    AC_DEFINE(CMAKE_NO_ANSI_FOR_SCOPE)
    echo "$ac_t""no" 1>&6
  fi
fi

# find make to use to build cmake, prefer gmake
AC_PATH_PROGS(RUNMAKE, gmake make)

AC_OUTPUT(Source/InitialConfigureFlags.cmake Makefile Source/Makefile)
# build cmake
$RUNMAKE 
# run cmake 
./Source/cmake $fullSrcDir
# run cmake depends
$RUNMAKE depend