CMake/configure.in

213 lines
5.1 KiB
Plaintext

# Process this file with autoconf to produce a configure script.
AC_INIT()
AC_CONFIG_HEADER(Source/cmConfigure.h)
#
# 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_CONFIG_DIR=`pwd`
AC_SUBST(CMAKE_CONFIG_DIR)
case $system in
CYGWIN_NT*)
CMAKE_CONFIG_DIR=`pwd`
CMAKE_CONFIG_DIR="\"$CMAKE_CONFIG_DIR\""
;;
esac
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.*)
CFLAGS_ORIG="$FLAGS"
CFLAGS="-Aa $CFLAGS"
AC_MSG_CHECKING([whether ${CC} accepts -Aa])
AC_TRY_COMPILE([
void foo() {}
],,[
AC_MSG_RESULT(yes)
CMAKE_ANSI_CFLAGS="$CMAKE_ANSI_CFLAGS -Aa"
],[
AC_MSG_RESULT(no)
])
CFLAGS="$CFLAGS_ORIG"
;;
IRIX-5* | IRIX-6* | IRIX64-6* | IRIX-64-6*)
CXXFLAGS_ORIG="$CXXFLAGS"
CXXFLAGS="-LANG:std $CXXFLAGS"
AC_MSG_CHECKING([whether ${CXX} accepts -LANG:std])
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([
void foo() {}
],,[
AC_MSG_RESULT(yes)
CMAKE_ANSI_CXXFLAGS="-LANG:std"
],[
AC_MSG_RESULT(no)
])
AC_LANG_RESTORE
CXXFLAGS="$CXXFLAGS_ORIG"
;;
OSF1-*)
CXXFLAGS_ORIG="$CXXFLAGS"
CXXFLAGS="-std strict_ansi -nopure_cname $CXXFLAGS"
AC_MSG_CHECKING([whether ${CXX} accepts -std strict_ansi -nopure_cname])
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([
void foo() {}
],,[
AC_MSG_RESULT(yes)
CMAKE_ANSI_CXXFLAGS="-std strict_ansi -nopure_cname"
],[
AC_MSG_RESULT(no)
])
AC_LANG_RESTORE
CXXFLAGS="$CXXFLAGS_ORIG"
;;
esac
fi
AC_SUBST(CMAKE_ANSI_CFLAGS)
AC_SUBST(CMAKE_ANSI_CXXFLAGS)
# check non-g++ compilers to see if they have the standard
# ansi stream files (without the .h)
if test $ac_cv_prog_gxx = no; then
CXXFLAGS_ORIG="$CXXFLAGS"
CXXFLAGS="$CMAKE_ANSI_CXXFLAGS $CXXFLAGS"
AC_MSG_CHECKING( ansi standard C++ stream headers )
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([
#include <iostream>
],,[
AC_MSG_RESULT(yes)
],[
CMAKE_NO_ANSI_STREAM_HEADERS=1
AC_MSG_RESULT(no)
])
AC_LANG_RESTORE
CXXFLAGS="$CXXFLAGS_ORIG"
fi
AC_SUBST(CMAKE_NO_ANSI_STREAM_HEADERS)
# check non-g++ compilers to see if they have std::stringstream
CXXFLAGS_ORIG="$CXXFLAGS"
CXXFLAGS="$CMAKE_ANSI_CXXFLAGS $CXXFLAGS"
AC_MSG_CHECKING([for ansi standard C++ stringstream])
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([
#include <sstream>
],,[
AC_MSG_RESULT(yes)
],[
CMAKE_NO_ANSI_STRING_STREAM=1
AC_MSG_RESULT(no)
])
AC_LANG_RESTORE
CXXFLAGS="$CXXFLAGS_ORIG"
AC_SUBST(CMAKE_NO_ANSI_STRING_STREAM)
# check to see if stl is in the std namespace
if test $ac_cv_prog_gxx = no; then
CXXFLAGS_ORIG="$CXXFLAGS"
CXXFLAGS="$CMAKE_ANSI_CXXFLAGS $CXXFLAGS"
AC_MSG_CHECKING([whether the std namespace is supported])
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([
#include <list>
void foo() { std::list<int>(); }
],,[
AC_MSG_RESULT(yes)
],[
CMAKE_NO_STD_NAMESPACE=1
AC_MSG_RESULT(no)
])
AC_LANG_RESTORE
CXXFLAGS="$CXXFLAGS_ORIG"
fi
AC_SUBST(CMAKE_NO_STD_NAMESPACE)
# check to see if for scoping is supported
if test $ac_cv_prog_gxx = no; then
CXXFLAGS_ORIG="$CXXFLAGS"
CXXFLAGS="$CMAKE_ANSI_CXXFLAGS $CXXFLAGS"
AC_MSG_CHECKING([ansi for scope support])
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([
void foo() { for(int i;;); for(int i;;); }
],,[
AC_MSG_RESULT(yes)
],[
CMAKE_NO_ANSI_FOR_SCOPE=1
AC_MSG_RESULT(no)
])
AC_LANG_RESTORE
CXXFLAGS="$CXXFLAGS_ORIG"
fi
AC_SUBST(CMAKE_NO_ANSI_FOR_SCOPE)
# 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