mirror of
https://github.com/reactos/CMake.git
synced 2024-11-26 13:00:25 +00:00
258 lines
6.4 KiB
Plaintext
258 lines
6.4 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
|
|
CXXFLAGS_ORIG="$CXXFLAGS"
|
|
CXXFLAGS="$CMAKE_ANSI_CXXFLAGS $CXXFLAGS"
|
|
AC_MSG_CHECKING([whether ${CXX} supports explicit instantiation])
|
|
AC_LANG_SAVE
|
|
AC_LANG_CPLUSPLUS
|
|
AC_TRY_COMPILE([
|
|
template<class T>class x{};template class x<int>;
|
|
],,[
|
|
AC_MSG_RESULT(yes)
|
|
],[
|
|
CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION=1
|
|
AC_MSG_RESULT(no)
|
|
])
|
|
AC_LANG_RESTORE
|
|
CXXFLAGS="$CXXFLAGS_ORIG"
|
|
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*)
|
|
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_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
|
|
CXXFLAGS_ORIG="$CXXFLAGS"
|
|
CXXFLAGS="$CMAKE_ANSI_CXXFLAGS $CXXFLAGS -ptused -no_prelink"
|
|
AC_MSG_CHECKING([whether ${CXX} accepts -ptused -no_prelink])
|
|
AC_LANG_SAVE
|
|
AC_LANG_CPLUSPLUS
|
|
AC_TRY_COMPILE([
|
|
void foo() {}
|
|
],,[
|
|
AC_MSG_RESULT(yes)
|
|
CMAKE_TEMPLATE_FLAGS="-ptused -no_prelink"
|
|
],[
|
|
AC_MSG_RESULT(no)
|
|
])
|
|
AC_LANG_RESTORE
|
|
CXXFLAGS="$CXXFLAGS_ORIG"
|
|
fi
|
|
AC_SUBST(CMAKE_TEMPLATE_FLAGS)
|
|
|
|
# check 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(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 )
|