CMake/Templates/cxxconfigure.in

238 lines
6.5 KiB
Plaintext

# Process this file with autoconf to produce a configure script.
AC_INIT()
#
# check for some programs we use
#
# save the CXXFLAGS specified by the user
save_CXXFLAGS=$CXXFLAGS
AC_PROG_CXX
# 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
# restore the flags specified by the user and get rid of any flags
# found by autoconf (we do not want -02 -g by default)
CXXFLAGS=$save_CXXFLAGS
CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION=""
if test $ac_cv_prog_gxx = no; then
echo $ac_n "checking whether ${CXX} supports explicit instantiation""... $ac_c" 1>&6
echo 'template<class T>class x{};template class x<int>;' > conftest.cc
if test -z "`${CXX} -c conftest.cc 2>&1`"; then
echo "$ac_t""yes" 1>&6
else
echo "$ac_t""no" 1>&6
CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION="1"
fi
rm -f conftest*
fi
# if running on darwin no explicit template instantiations even though
# syntax is supported.
case $system in
Darwin*)
CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION="1"
;;
esac
AC_SUBST(CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION)
CMAKE_ANSI_CXXFLAGS=""
# on hp use -Aa for ansi
if test $ac_cv_prog_gxx = no; then
case $system in
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*
;;
OSF1-*)
echo $ac_n "checking whether ${CXX} accepts -std strict_ansi""... $ac_c" 1>&6
echo 'void f(){}' > conftest.c
if test -z "`${CXX} -std strict_ansi -c conftest.c 2>&1`"; then
echo "$ac_t""yes" 1>&6
CMAKE_ANSI_CXXFLAGS="-std strict_ansi"
else
echo "$ac_t""no" 1>&6
fi
rm -f conftest*
;;
esac
fi
AC_SUBST(CMAKE_ANSI_CXXFLAGS)
# if we are not running g++ then we might need some other flags
# to get the templates compiled correctly
CMAKE_TEMPLATE_FLAGS=""
if test $ac_cv_prog_gxx = no; then
echo $ac_n "checking whether ${CXX} accepts -ptused -no_prelink""... $ac_c" 1>&6
echo 'void f(){}' > conftest.cc
if test -z "`${CXX} -ptused -no_prelink -c conftest.cc 2>&1`"; then
echo "$ac_t""yes" 1>&6
CMAKE_TEMPLATE_FLAGS="-ptused -no_prelink"
else
echo "$ac_t""no" 1>&6
fi
rm -f conftest*
fi
AC_SUBST(CMAKE_TEMPLATE_FLAGS)
# 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
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
CMAKE_NO_ANSI_STREAM_HEADERS="1"
echo "$ac_t""no" 1>&6
fi
fi
AC_SUBST(CMAKE_NO_ANSI_STREAM_HEADERS)
# check compilers to see if they have std::stringstream
AC_MSG_CHECKING( for ansi standard C++ stringstream )
rm -rf conftest.*
cat > conftest.cc <<!
#include <sstream>
!
if test -z "`${CXX} ${CMAKE_ANSI_CXXFLAGS} $CXXFLAGS $CPPFLAGS -c conftest.cc 2>&1`"; then
echo "$ac_t""yes" 1>&6
else
CMAKE_NO_ANSI_STRING_STREAM="1"
echo "$ac_t""no" 1>&6
fi
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
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
CMAKE_NO_STD_NAMESPACE="1"
echo "$ac_t""no" 1>&6
fi
fi
AC_SUBST(CMAKE_NO_STD_NAMESPACE)
# 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
CMAKE_NO_ANSI_FOR_SCOPE="1"
echo "$ac_t""no" 1>&6
fi
fi
AC_SUBST(CMAKE_NO_ANSI_FOR_SCOPE)
# find make to use to build cmake, prefer gmake
AC_PATH_PROGS(CMAKE_AR_TMP, ar)
CMAKE_CXX_AR="$CMAKE_AR_TMP"
CMAKE_CXX_AR_ARGS="cr"
# if on SunOS and not using gXX then use the compiler to make .a libs
case $system in
SunOS-5*)
if test $ac_cv_prog_gxx = yes; then
:
else
echo "Using $CXX -xar -o for creating .a libraries"
CMAKE_CXX_AR="$CXX"
CMAKE_CXX_AR_ARGS="-xar -o"
fi
;;
IRIX*)
if test $ac_cv_prog_gxx = yes; then
:
else
echo "Using $CXX -xar -o for creating .a libraries"
CMAKE_CXX_AR="$CXX"
CMAKE_CXX_AR_ARGS="-ar -o"
fi
;;
esac
AC_SUBST(CMAKE_CXX_AR)
AC_SUBST(CMAKE_CXX_AR_ARGS)
CMAKE_COMPILER_IS_GNUGXX=0
if test $ac_cv_prog_gxx = yes; then
CMAKE_COMPILER_IS_GNUCXX=1
fi
CMAKE_CXX_LINK_SHARED=${CXX}
case $system in
HP-UX-*)
CMAKE_CXX_SHLIB_CFLAGS="+Z"
CMAKE_CXX_SHLIB_SUFFIX=".sl"
CMAKE_CXX_MODULE_SUFFIX=".sl"
CMAKE_CXX_SHLIB_BUILD_FLAGS='+Z -Wl,-E -b -L/usr/lib'
CMAKE_CXX_SHLIB_LINK_FLAGS='-Wl,+s'
CMAKE_CXX_MODULE_BUILD_FLAGS='+Z -Wl,-E -b -L/usr/lib'
CMAKE_CXX_MODULE_LINK_FLAGS='-Wl,+s'
CMAKE_CXX_SHLIB_RUNTIME_FLAG='-Wl,+b,'
CMAKE_CXX_SHLIB_RUNTIME_SEP=':'
esac
# CXX versions of shared flags
AC_SUBST(CMAKE_CXX_LINK_SHARED)
AC_SUBST(CMAKE_CXX_SHLIB_CFLAGS)
AC_SUBST(CMAKE_CXX_SHLIB_BUILD_FLAGS)
AC_SUBST(CMAKE_CXX_SHLIB_LINK_FLAGS)
AC_SUBST(CMAKE_CXX_MODULE_BUILD_FLAGS)
AC_SUBST(CMAKE_CXX_MODULE_LINK_FLAGS)
AC_SUBST(CMAKE_CXX_SHLIB_RUNTIME_FLAG)
AC_SUBST(CMAKE_CXX_SHLIB_RUNTIME_SEP)
AC_SUBST(CMAKE_COMPILER_IS_GNUCXX)
# generate output files.
# create mkdir files just to make some of the directories
AC_OUTPUT( CXXCMakeSystemConfig.cmake )