]> git.saurik.com Git - wxWidgets.git/blob - build/aclocal/bakefile-lang.m4
added support for using Sun CC to link shared libraries under Linux too
[wxWidgets.git] / build / aclocal / bakefile-lang.m4
1 dnl
2 dnl This file is part of Bakefile (http://www.bakefile.org)
3 dnl
4 dnl Copyright (C) 2003-2007 Vaclav Slavik, David Elliott and others
5 dnl
6 dnl Permission is hereby granted, free of charge, to any person obtaining a
7 dnl copy of this software and associated documentation files (the "Software"),
8 dnl to deal in the Software without restriction, including without limitation
9 dnl the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 dnl and/or sell copies of the Software, and to permit persons to whom the
11 dnl Software is furnished to do so, subject to the following conditions:
12 dnl
13 dnl The above copyright notice and this permission notice shall be included in
14 dnl all copies or substantial portions of the Software.
15 dnl
16 dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 dnl DEALINGS IN THE SOFTWARE.
23 dnl
24 dnl $Id$
25 dnl
26 dnl Compiler detection macros by David Elliott
27 dnl
28
29
30 dnl ===========================================================================
31 dnl Macros to detect non-GNU compilers (MetroWerks, XLC)
32 dnl ===========================================================================
33
34 dnl Based on autoconf _AC_LANG_COMPILER_GNU
35 AC_DEFUN([_AC_BAKEFILE_LANG_COMPILER_MWERKS],
36 [AC_CACHE_CHECK([whether we are using the Metrowerks _AC_LANG compiler],
37 [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_mwerks],
38 [AC_TRY_COMPILE([],[#ifndef __MWERKS__
39 choke me
40 #endif
41 ],
42 [bakefile_compiler_mwerks=yes],
43 [bakefile_compiler_mwerks=no])
44 bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_mwerks=$bakefile_compiler_mwerks
45 ])
46 ])
47
48 dnl Loosely based on autoconf AC_PROG_CC
49 dnl TODO: Maybe this should wrap the call to AC_PROG_CC and be used instead.
50 AC_DEFUN([AC_BAKEFILE_PROG_MWCC],
51 [AC_LANG_PUSH(C)
52 _AC_BAKEFILE_LANG_COMPILER_MWERKS
53 MWCC=`test $bakefile_cv_c_compiler_mwerks = yes && echo yes`
54 AC_LANG_POP(C)
55 ])
56
57 dnl Loosely based on autoconf AC_PROG_CXX
58 dnl TODO: Maybe this should wrap the call to AC_PROG_CXX and be used instead.
59 AC_DEFUN([AC_BAKEFILE_PROG_MWCXX],
60 [AC_LANG_PUSH(C++)
61 _AC_BAKEFILE_LANG_COMPILER_MWERKS
62 MWCXX=`test $bakefile_cv_cxx_compiler_mwerks = yes && echo yes`
63 AC_LANG_POP(C++)
64 ])
65
66 dnl Based on autoconf _AC_LANG_COMPILER_GNU
67 AC_DEFUN([_AC_BAKEFILE_LANG_COMPILER_XLC],
68 [AC_CACHE_CHECK([whether we are using the IBM xlC _AC_LANG compiler],
69 [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_xlc],
70 [AC_TRY_COMPILE([],[#ifndef __xlC__
71 choke me
72 #endif
73 ],
74 [bakefile_compiler_xlc=yes],
75 [bakefile_compiler_xlc=no])
76 bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_xlc=$bakefile_compiler_xlc
77 ])
78 ])
79
80 dnl Loosely based on autoconf AC_PROG_CC
81 AC_DEFUN([AC_BAKEFILE_PROG_XLCC],
82 [AC_LANG_PUSH(C)
83 _AC_BAKEFILE_LANG_COMPILER_XLC
84 XLCC=`test $bakefile_cv_c_compiler_xlc = yes && echo yes`
85 AC_LANG_POP(C)
86 ])
87
88 dnl Loosely based on autoconf AC_PROG_CXX
89 AC_DEFUN([AC_BAKEFILE_PROG_XLCXX],
90 [AC_LANG_PUSH(C++)
91 _AC_BAKEFILE_LANG_COMPILER_XLC
92 XLCXX=`test $bakefile_cv_cxx_compiler_xlc = yes && echo yes`
93 AC_LANG_POP(C++)
94 ])
95
96 dnl Based on autoconf _AC_LANG_COMPILER_GNU
97 dnl _AC_BAKEFILE_LANG_COMPILER(NAME, LANG, SYMBOL, IF-YES, IF-NO)
98 AC_DEFUN([_AC_BAKEFILE_LANG_COMPILER],
99 [
100 AC_LANG_PUSH($2)
101 AC_CACHE_CHECK(
102 [whether we are using the $1 $2 compiler],
103 [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3],
104 [AC_TRY_COMPILE(
105 [],
106 [
107 #ifndef $3
108 choke me
109 #endif
110 ],
111 [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3=yes],
112 [bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3=no]
113 )
114 ]
115 )
116 AC_LANG_POP($2)
117 if test "x$bakefile_cv_[]_AC_LANG_ABBREV[]_compiler_[]$3" = "xyes"; then
118 :; $4
119 else
120 :; $5
121 fi
122 ])
123
124 dnl recent versions of SGI mipsPro compiler define _SGI_COMPILER_VERSION
125 dnl
126 dnl NB: old versions define _COMPILER_VERSION but this could probably be
127 dnl defined by other compilers too so don't test for it to be safe
128 AC_DEFUN([AC_BAKEFILE_PROG_SGICC],
129 [
130 _AC_BAKEFILE_LANG_COMPILER(SGI, C, _SGI_COMPILER_VERSION, SGICC=yes)
131 ])
132
133 AC_DEFUN([AC_BAKEFILE_PROG_SGICXX],
134 [
135 _AC_BAKEFILE_LANG_COMPILER(SGI, C++, _SGI_COMPILER_VERSION, SGICXX=yes)
136 ])
137
138 dnl Sun compiler defines __SUNPRO_C/__SUNPRO_CC
139 AC_DEFUN([AC_BAKEFILE_PROG_SUNCC],
140 [
141 _AC_BAKEFILE_LANG_COMPILER(Sun, C, __SUNPRO_C, SUNCC=yes)
142 ])
143
144 AC_DEFUN([AC_BAKEFILE_PROG_SUNCXX],
145 [
146 _AC_BAKEFILE_LANG_COMPILER(Sun, C++, __SUNPRO_CC, SUNCXX=yes)
147 ])
148
149 dnl Intel icc compiler defines __INTEL_COMPILER for both C and C++
150 AC_DEFUN([AC_BAKEFILE_PROG_INTELCC],
151 [
152 _AC_BAKEFILE_LANG_COMPILER(Intel, C, __INTEL_COMPILER, INTELCC=yes)
153 ])
154
155 AC_DEFUN([AC_BAKEFILE_PROG_INTELCXX],
156 [
157 _AC_BAKEFILE_LANG_COMPILER(Intel, C++, __INTEL_COMPILER, INTELCXX=yes)
158 ])
159
160 dnl HP-UX aCC: see http://docs.hp.com/en/6162/preprocess.htm#macropredef
161 AC_DEFUN([AC_BAKEFILE_PROG_HPCC],
162 [
163 _AC_BAKEFILE_LANG_COMPILER(HP, C, __HP_cc, HPCC=yes)
164 ])
165
166 AC_DEFUN([AC_BAKEFILE_PROG_HPCXX],
167 [
168 _AC_BAKEFILE_LANG_COMPILER(HP, C++, __HP_aCC, HPCXX=yes)
169 ])
170
171 dnl Tru64 cc and cxx
172 AC_DEFUN([AC_BAKEFILE_PROG_COMPAQCC],
173 [
174 _AC_BAKEFILE_LANG_COMPILER(Compaq, C, __DECC, COMPAQCC=yes)
175 ])
176
177 AC_DEFUN([AC_BAKEFILE_PROG_COMPAQCXX],
178 [
179 _AC_BAKEFILE_LANG_COMPILER(Compaq, C++, __DECCXX, COMPAQCXX=yes)
180 ])
181
182 dnl ===========================================================================
183 dnl macros to detect specialty compiler options
184 dnl ===========================================================================
185
186 dnl Figure out if we need to pass -ext o to compiler (MetroWerks)
187 AC_DEFUN([AC_BAKEFILE_METROWERKS_EXTO],
188 [AC_CACHE_CHECK([if the _AC_LANG compiler requires -ext o], bakefile_cv_[]_AC_LANG_ABBREV[]_exto,
189 dnl First create an empty conf test
190 [AC_LANG_CONFTEST([AC_LANG_PROGRAM()])
191 dnl Now remove .o and .c.o or .cc.o
192 rm -f conftest.$ac_objext conftest.$ac_ext.o
193 dnl Now compile the test
194 AS_IF([AC_TRY_EVAL(ac_compile)],
195 dnl If the test succeeded look for conftest.c.o or conftest.cc.o
196 [for ac_file in `(ls conftest.* 2>/dev/null)`; do
197 case $ac_file in
198 conftest.$ac_ext.o)
199 bakefile_cv_[]_AC_LANG_ABBREV[]_exto="-ext o"
200 ;;
201 *)
202 ;;
203 esac
204 done],
205 [AC_MSG_FAILURE([cannot figure out if compiler needs -ext o: cannot compile])
206 ]) dnl AS_IF
207
208 rm -f conftest.$ac_ext.o conftest.$ac_objext conftest.$ac_ext
209 ]) dnl AC_CACHE_CHECK
210
211 if test "x$bakefile_cv_[]_AC_LANG_ABBREV[]_exto" '!=' "x"; then
212 if test "[]_AC_LANG_ABBREV[]" = "c"; then
213 CFLAGS="$bakefile_cv_[]_AC_LANG_ABBREV[]_exto $CFLAGS"
214 fi
215 if test "[]_AC_LANG_ABBREV[]" = "cxx"; then
216 CXXFLAGS="$bakefile_cv_[]_AC_LANG_ABBREV[]_exto $CXXFLAGS"
217 fi
218 fi
219 ]) dnl AC_DEFUN
220
221
222 dnl ===========================================================================
223 dnl Macros to do all of the compiler detections as one macro
224 dnl ===========================================================================
225
226 dnl check for different proprietary compilers depending on target platform
227 dnl _AC_BAKEFILE_PROG_COMPILER(LANG)
228 AC_DEFUN([_AC_BAKEFILE_PROG_COMPILER],
229 [
230 AC_PROG_$1
231
232 dnl Intel compiler can be used under several different OS and even
233 dnl different architectures (x86, amd64 and Itanium) so it's easier to just
234 dnl always test for it
235 AC_BAKEFILE_PROG_INTEL$1
236
237 dnl if we're using gcc, we can't be using any of incompatible compilers
238 if test "x$G$1" != "xyes"; then
239 if test "x$1" = "xC"; then
240 AC_BAKEFILE_METROWERKS_EXTO
241 if test "x$bakefile_cv_c_exto" '!=' "x"; then
242 unset ac_cv_prog_cc_g
243 _AC_PROG_CC_G
244 fi
245 fi
246
247 dnl most of these compilers are only used under well-defined OS so
248 dnl don't waste time checking for them on other ones
249 case `uname -s` in
250 AIX*)
251 AC_BAKEFILE_PROG_XL$1
252 ;;
253
254 Darwin)
255 AC_BAKEFILE_PROG_MW$1
256 AC_BAKEFILE_PROG_XL$1
257 ;;
258
259 IRIX*)
260 AC_BAKEFILE_PROG_SGI$1
261 ;;
262
263 Linux*)
264 dnl Sun CC is now available under Linux too
265 AC_BAKEFILE_PROG_SUN$1
266 ;;
267
268 HP-UX*)
269 AC_BAKEFILE_PROG_HP$1
270 ;;
271
272 OSF1)
273 AC_BAKEFILE_PROG_COMPAQ$1
274 ;;
275
276 SunOS)
277 AC_BAKEFILE_PROG_SUN$1
278 ;;
279 esac
280 fi
281 ])
282
283 AC_DEFUN([AC_BAKEFILE_PROG_CC],
284 [
285 _AC_BAKEFILE_PROG_COMPILER(CC)
286 ])
287
288 AC_DEFUN([AC_BAKEFILE_PROG_CXX],
289 [
290 _AC_BAKEFILE_PROG_COMPILER(CXX)
291 ])
292