ENH: mark some vars as advanced (and resort the list)
[cmake.git] / Templates / cxxconfigure.in
blobf7148431588532a5f3b29557283c3a9a6ac802e5
1 # Process this file with autoconf to produce a configure script.
2 AC_INIT()
6 # check for some programs we use
9 # save the CXXFLAGS specified by the user
10 save_CXXFLAGS=$CXXFLAGS
12 AC_PROG_CXX
14 # Step 1: set the variable "system" to hold the name and version number
15 # for the system.  This can usually be done via the "uname" command, but
16 # there are a few systems, like Next, where this doesn't work.
18 AC_MSG_CHECKING([system version (for dynamic loading)])
19 if test -f /usr/lib/NextStep/software_version; then
20   system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
21 else
22     system=`uname -s`-`uname -r`
23     if test "$?" -ne 0 ; then
24         AC_MSG_RESULT([unknown (can't find uname command)])
25         system=unknown
26     else
27         # Special check for weird MP-RAS system (uname returns weird
28         # results, and the version is kept in special file).
29     
30         if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then
31             system=MP-RAS-`awk '{print $3}' /etc/.relid'`
32         fi
33         AC_MSG_RESULT($system)
34     fi
37 # restore the flags specified by the user and get rid of any flags
38 # found by autoconf (we do not want -02 -g by default)
39 CXXFLAGS=$save_CXXFLAGS
42 CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION=""
43 if test $ac_cv_prog_gxx = no; then
44   CXXFLAGS_ORIG="$CXXFLAGS"
45   CXXFLAGS="$CMAKE_ANSI_CXXFLAGS $CXXFLAGS"
46   AC_MSG_CHECKING([whether ${CXX} supports explicit instantiation])
47   AC_LANG_SAVE
48   AC_LANG_CPLUSPLUS
49   AC_TRY_COMPILE([
50   template<class T>class x{};template class x<int>;
51   ],,[
52   AC_MSG_RESULT(yes)
53   ],[
54   CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION=1
55   AC_MSG_RESULT(no)
56   ])
57   AC_LANG_RESTORE
58   CXXFLAGS="$CXXFLAGS_ORIG"
61 # if running on darwin no explicit template instantiations even though
62 # syntax is supported.
63 case $system in 
64   Darwin*) 
65     CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION="1"
66     ;;
67 esac
68 AC_SUBST(CMAKE_NO_EXPLICIT_TEMPLATE_INSTANTIATION)
70 CMAKE_ANSI_CXXFLAGS=""
71 # on hp use -Aa for ansi
72 if test $ac_cv_prog_gxx = no; then
73 case $system in
74      IRIX-5* | IRIX-6* | IRIX64-6* | IRIX-64-6*)
75         CXXFLAGS_ORIG="$CXXFLAGS"
76         CXXFLAGS="-LANG:std $CXXFLAGS"
77         AC_MSG_CHECKING([whether ${CXX} accepts -LANG:std])
78         AC_LANG_SAVE
79         AC_LANG_CPLUSPLUS
80         AC_TRY_COMPILE([
81         void foo() {}
82         ],,[
83         AC_MSG_RESULT(yes)
84         CMAKE_ANSI_CXXFLAGS="-LANG:std"
85         ],[
86         AC_MSG_RESULT(no)
87         ])
88         AC_LANG_RESTORE
89         CXXFLAGS="$CXXFLAGS_ORIG"
90         ;;      
91      OSF1-*)
93         CXXFLAGS_ORIG="$CXXFLAGS"
94         CXXFLAGS="-std strict_ansi -nopure_cname $CXXFLAGS"
95         AC_MSG_CHECKING([whether ${CXX} accepts -std strict_ansi -nopure_cname])
96         AC_LANG_SAVE
97         AC_LANG_CPLUSPLUS
98         AC_TRY_COMPILE([
99         void foo() {}
100         ],,[
101         AC_MSG_RESULT(yes)
102         CMAKE_ANSI_CXXFLAGS="-std strict_ansi -nopure_cname"
103         ],[
104         AC_MSG_RESULT(no)
105         ])
106         AC_LANG_RESTORE
107         CXXFLAGS="$CXXFLAGS_ORIG"
108         ;;      
109 esac
111 AC_SUBST(CMAKE_ANSI_CXXFLAGS)
113 # if we are not running g++ then we might need some other flags
114 # to get the templates compiled correctly
115 CMAKE_TEMPLATE_FLAGS=""
116 if test $ac_cv_prog_gxx = no; then
117   CXXFLAGS_ORIG="$CXXFLAGS"
118   CXXFLAGS="$CMAKE_ANSI_CXXFLAGS $CXXFLAGS -ptused -no_prelink"
119   AC_MSG_CHECKING([whether ${CXX} accepts -ptused -no_prelink])
120   AC_LANG_SAVE
121   AC_LANG_CPLUSPLUS
122   AC_TRY_COMPILE([
123   void foo() {}
124   ],,[
125   AC_MSG_RESULT(yes)
126   CMAKE_TEMPLATE_FLAGS="-ptused -no_prelink"
127   ],[
128   AC_MSG_RESULT(no)
129   ])
130   AC_LANG_RESTORE
131   CXXFLAGS="$CXXFLAGS_ORIG"
133 AC_SUBST(CMAKE_TEMPLATE_FLAGS)
135 # check compilers to see if they have std::stringstream
136 CXXFLAGS_ORIG="$CXXFLAGS"
137 CXXFLAGS="$CMAKE_ANSI_CXXFLAGS $CXXFLAGS"
138 AC_MSG_CHECKING([for ansi standard C++ stringstream])
139 AC_LANG_SAVE
140 AC_LANG_CPLUSPLUS
141 AC_TRY_COMPILE([
142 #include <sstream>
143 ],,[
144 AC_MSG_RESULT(yes)
146 CMAKE_NO_ANSI_STRING_STREAM=1
147 AC_MSG_RESULT(no)
149 AC_LANG_RESTORE
150 CXXFLAGS="$CXXFLAGS_ORIG"
151 AC_SUBST(CMAKE_NO_ANSI_STRING_STREAM)
153 # check to see if stl is in the std namespace
154 if test $ac_cv_prog_gxx = no; then
155   CXXFLAGS_ORIG="$CXXFLAGS"
156   CXXFLAGS="$CMAKE_ANSI_CXXFLAGS $CXXFLAGS"
157   AC_MSG_CHECKING([whether the std namespace is supported])
158   AC_LANG_SAVE
159   AC_LANG_CPLUSPLUS
160   AC_TRY_COMPILE([
161   #include <list>
162   void foo() { std::list<int>(); }
163   ],,[
164   AC_MSG_RESULT(yes)
165   ],[
166   CMAKE_NO_STD_NAMESPACE=1
167   AC_MSG_RESULT(no)
168   ])
169   AC_LANG_RESTORE
170   CXXFLAGS="$CXXFLAGS_ORIG"
172 AC_SUBST(CMAKE_NO_STD_NAMESPACE)
174 # check to see if for scoping is supported
175 if test $ac_cv_prog_gxx = no; then
176   CXXFLAGS_ORIG="$CXXFLAGS"
177   CXXFLAGS="$CMAKE_ANSI_CXXFLAGS $CXXFLAGS"
178   AC_MSG_CHECKING([ansi for scope support])
179   AC_LANG_SAVE
180   AC_LANG_CPLUSPLUS
181   AC_TRY_COMPILE([
182   void foo() { for(int i;;); for(int i;;); }
183   ],,[
184   AC_MSG_RESULT(yes)
185   ],[
186   CMAKE_NO_ANSI_FOR_SCOPE=1
187   AC_MSG_RESULT(no)
188   ])
189   AC_LANG_RESTORE
190   CXXFLAGS="$CXXFLAGS_ORIG"
192 AC_SUBST(CMAKE_NO_ANSI_FOR_SCOPE)
195 # find make to use to build cmake, prefer gmake
196 AC_PATH_PROGS(CMAKE_AR_TMP, ar)
197 CMAKE_CXX_AR="$CMAKE_AR_TMP"
198 CMAKE_CXX_AR_ARGS="cr"
199 # if on SunOS and not using gXX then use the compiler to make .a libs
200 case $system in 
201    SunOS-5*)
202    if test $ac_cv_prog_gxx = yes; then
203         :
204    else
205       echo "Using $CXX -xar -o for creating .a libraries"
206       CMAKE_CXX_AR="$CXX"
207       CMAKE_CXX_AR_ARGS="-xar -o"
208    fi
209    ;;
210    IRIX*)
211    if test $ac_cv_prog_gxx = yes; then
212         :
213    else
214       echo "Using $CXX -xar -o for creating .a libraries"
215       CMAKE_CXX_AR="$CXX"
216       CMAKE_CXX_AR_ARGS="-ar -o"
217    fi
218    ;;
219 esac
220 AC_SUBST(CMAKE_CXX_AR)
221 AC_SUBST(CMAKE_CXX_AR_ARGS)
223 CMAKE_COMPILER_IS_GNUGXX=0
224 if test $ac_cv_prog_gxx = yes; then
225         CMAKE_COMPILER_IS_GNUCXX=1
229 CMAKE_CXX_LINK_SHARED=${CXX}
230 case $system in
231   HP-UX-*)
232         CMAKE_CXX_SHLIB_CFLAGS="+Z"
233         CMAKE_CXX_SHLIB_SUFFIX=".sl"
234         CMAKE_CXX_MODULE_SUFFIX=".sl"
235         CMAKE_CXX_SHLIB_BUILD_FLAGS='+Z -Wl,-E -b -L/usr/lib'
236         CMAKE_CXX_SHLIB_LINK_FLAGS='-Wl,+s'
237         CMAKE_CXX_MODULE_BUILD_FLAGS='+Z -Wl,-E -b -L/usr/lib'
238         CMAKE_CXX_MODULE_LINK_FLAGS='-Wl,+s'
239         CMAKE_CXX_SHLIB_RUNTIME_FLAG='-Wl,+b,'
240         CMAKE_CXX_SHLIB_RUNTIME_SEP=':'
241 esac
242 # CXX versions of shared flags
243 AC_SUBST(CMAKE_CXX_LINK_SHARED)
244 AC_SUBST(CMAKE_CXX_SHLIB_CFLAGS)
245 AC_SUBST(CMAKE_CXX_SHLIB_BUILD_FLAGS)
246 AC_SUBST(CMAKE_CXX_SHLIB_LINK_FLAGS)
247 AC_SUBST(CMAKE_CXX_MODULE_BUILD_FLAGS)
248 AC_SUBST(CMAKE_CXX_MODULE_LINK_FLAGS)
249 AC_SUBST(CMAKE_CXX_SHLIB_RUNTIME_FLAG)
250 AC_SUBST(CMAKE_CXX_SHLIB_RUNTIME_SEP)
253 AC_SUBST(CMAKE_COMPILER_IS_GNUCXX)
254 # generate output files.
255 # create mkdir files just to make some of the directories
257 AC_OUTPUT( CXXCMakeSystemConfig.cmake )