Commit | Line | Data |
---|---|---|
252b5132 RH |
1 | dnl This file is included into all any other acinclude file that needs |
2 | dnl to use these macros. | |
3 | ||
4 | dnl This is copied from autoconf 2.12, but does calls our own AC_PROG_CC_WORKS, | |
5 | dnl and doesn't call AC_PROG_CXX_GNU, cause we test for that in AC_PROG_CC_WORKS. | |
6 | dnl We are probably using a cross compiler, which will not be able to fully | |
7 | dnl link an executable. This should really be fixed in autoconf itself. | |
8 | dnl Find a working G++ cross compiler. This only works for the GNU C++ compiler. | |
f8b73030 | 9 | AC_DEFUN([CYG_AC_PROG_CXX_CROSS], |
252b5132 RH |
10 | [AC_BEFORE([$0], [AC_PROG_CXXCPP]) |
11 | AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++, gcc) | |
12 | ||
13 | CYG_AC_PROG_GXX_WORKS | |
14 | ||
15 | if test $ac_cv_prog_gxx = yes; then | |
16 | GXX=yes | |
17 | dnl Check whether -g works, even if CXXFLAGS is set, in case the package | |
18 | dnl plays around with CXXFLAGS (such as to build both debugging and | |
19 | dnl normal versions of a library), tasteless as that idea is. | |
20 | ac_test_CXXFLAGS="${CXXFLAGS+set}" | |
21 | ac_save_CXXFLAGS="$CXXFLAGS" | |
22 | CXXFLAGS= | |
23 | AC_PROG_CXX_G | |
24 | if test "$ac_test_CXXFLAGS" = set; then | |
25 | CXXFLAGS="$ac_save_CXXFLAGS" | |
26 | elif test $ac_cv_prog_cxx_g = yes; then | |
27 | CXXFLAGS="-g -O2" | |
28 | else | |
29 | CXXFLAGS="-O2" | |
30 | fi | |
31 | else | |
32 | GXX= | |
33 | test "${CXXFLAGS+set}" = set || CXXFLAGS="-g" | |
34 | fi | |
35 | ]) | |
36 | ||
37 | dnl See if the G++ compiler we found works. | |
f8b73030 | 38 | AC_DEFUN([CYG_AC_PROG_GXX_WORKS], |
252b5132 RH |
39 | [AC_MSG_CHECKING([whether the G++ compiler ($CXX $CXXFLAGS $LDFLAGS) actually works]) |
40 | AC_LANG_SAVE | |
41 | AC_LANG_CPLUSPLUS | |
42 | dnl Try a test case. We only compile, because it's close to impossible | |
43 | dnl to get a correct fully linked executable with a cross compiler. For | |
44 | dnl most cross compilers, this test is bogus. For G++, we can use various | |
45 | dnl other compile line options to get a decent idea that the cross compiler | |
46 | dnl actually does work, even though we can't produce an executable without | |
47 | dnl more info about the target it's being compiled for. This only works | |
48 | dnl for the GNU C++ compiler. | |
49 | ||
50 | dnl Transform the name of the compiler to it's cross variant, unless | |
51 | dnl CXX is set. This is also what CXX gets set to in the generated | |
52 | dnl Makefile. | |
53 | if test x"${CXX}" = xc++ ; then | |
54 | CXX=`echo gcc | sed -e "${program_transform_name}"` | |
55 | fi | |
56 | ||
57 | dnl Get G++'s full path to libgcc.a | |
58 | libgccpath=`${CXX} --print-libgcc` | |
59 | ||
60 | dnl If we don't have a path with libgcc.a on the end, this isn't G++. | |
61 | if test `echo $libgccpath | sed -e 's:/.*/::'` = libgcc.a ; then | |
62 | ac_cv_prog_gxx=yes | |
63 | else | |
64 | ac_cv_prog_gxx=no | |
65 | fi | |
66 | ||
67 | dnl If we are using G++, look for the files that need to exist if this | |
68 | dnl compiler works. | |
69 | if test x"${ac_cv_prog_gxx}" = xyes ; then | |
70 | gccfiles=`echo $libgccpath | sed -e 's:/libgcc.a::'` | |
71 | if test -f ${gccfiles}/specs -a -f ${gccfiles}/cpp -a -f ${gccfiles}/cc1plus; then | |
72 | gccfiles=yes | |
73 | else | |
74 | gccfiles=no | |
75 | fi | |
76 | gcclibs=`echo $libgccpath | sed -e 's:lib/gcc-lib/::' -e 's:/libgcc.a::' -e 's,\(.*\)/.*,\1,g'`/lib | |
77 | if test -d ${gcclibs}/ldscripts -a -f ${gcclibs}/libc.a -a -f ${gcclibs}/libstdc++.a ; then | |
78 | gcclibs=yes | |
79 | else | |
80 | gcclibs=no | |
81 | fi | |
82 | fi | |
83 | ||
84 | dnl If everything is OK, then we can safely assume the compiler works. | |
85 | if test x"${gccfiles}" = xno -o x"${gcclibs}" = xno; then | |
86 | ac_cv_prog_cxx_works=no | |
87 | AC_MSG_ERROR(${CXX} is a non-working cross compiler) | |
88 | else | |
89 | ac_cv_prog_cxx_works=yes | |
90 | fi | |
91 | ||
92 | AC_LANG_RESTORE | |
93 | AC_MSG_RESULT($ac_cv_prog_cxx_works) | |
94 | if test x"$ac_cv_prog_cxx_works" = xno; then | |
95 | AC_MSG_ERROR([installation or configuration problem: C++ compiler cannot create executables.]) | |
96 | fi | |
97 | AC_MSG_CHECKING([whether the G++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler]) | |
98 | AC_MSG_RESULT($ac_cv_prog_cxx_cross) | |
99 | cross_compiling=$ac_cv_prog_cxx_cross | |
100 | AC_SUBST(CXX) | |
101 | ]) | |
102 | ||
103 | dnl ==================================================================== | |
104 | dnl Find a working GCC cross compiler. This only works for the GNU gcc compiler. | |
105 | dnl This is based on the macros above for G++. | |
f8b73030 | 106 | AC_DEFUN([CYG_AC_PROG_CC_CROSS], |
252b5132 RH |
107 | [AC_BEFORE([$0], [AC_PROG_CCPP]) |
108 | AC_CHECK_PROGS(CC, cc, gcc) | |
109 | ||
110 | CYG_AC_PROG_GCC_WORKS | |
111 | ||
112 | if test $ac_cv_prog_gcc = yes; then | |
113 | GCC=yes | |
114 | dnl Check whether -g works, even if CFLAGS is set, in case the package | |
115 | dnl plays around with CFLAGS (such as to build both debugging and | |
116 | dnl normal versions of a library), tasteless as that idea is. | |
117 | ac_test_CFLAGS="${CFLAGS+set}" | |
118 | ac_save_CFLAGS="$CFLAGS" | |
119 | CFLAGS= | |
120 | AC_PROG_CC_G | |
121 | if test "$ac_test_CFLAGS" = set; then | |
122 | CFLAGS="$ac_save_CFLAGS" | |
123 | elif test $ac_cv_prog_cc_g = yes; then | |
124 | CFLAGS="-g -O2" | |
125 | else | |
126 | CFLAGS="-O2" | |
127 | fi | |
128 | else | |
129 | GXX= | |
130 | test "${CFLAGS+set}" = set || CFLAGS="-g" | |
131 | fi | |
132 | ]) | |
133 | ||
134 | dnl See if the GCC compiler we found works. | |
f8b73030 | 135 | AC_DEFUN([CYG_AC_PROG_GCC_WORKS], |
252b5132 RH |
136 | [AC_MSG_CHECKING([whether the Gcc compiler ($CC $CFLAGS $LDFLAGS) actually works]) |
137 | AC_LANG_SAVE | |
138 | AC_LANG_C | |
139 | dnl Try a test case. We only compile, because it's close to impossible | |
140 | dnl to get a correct fully linked executable with a cross | |
141 | dnl compiler. For most cross compilers, this test is bogus. For G++, | |
142 | dnl we can use various other compile line options to get a decent idea | |
143 | dnl that the cross compiler actually does work, even though we can't | |
144 | dnl produce an executable without more info about the target it's | |
145 | dnl being compiled for. This only works for the GNU C++ compiler. | |
146 | ||
147 | dnl Transform the name of the compiler to it's cross variant, unless | |
148 | dnl CXX is set. This is also what CC gets set to in the generated Makefile. | |
149 | if test x"${CC}" = xcc ; then | |
150 | CC=`echo gcc | sed -e "${program_transform_name}"` | |
151 | fi | |
152 | ||
153 | dnl Get Gcc's full path to libgcc.a | |
154 | libgccpath=`${CC} --print-libgcc` | |
155 | ||
156 | dnl If we don't have a path with libgcc.a on the end, this isn't G++. | |
157 | if test `echo $libgccpath | sed -e 's:/.*/::'` = libgcc.a ; then | |
158 | ac_cv_prog_gcc=yes | |
159 | else | |
160 | ac_cv_prog_gcc=no | |
161 | fi | |
162 | ||
163 | dnl If we are using Gcc, look for the files that need to exist if this | |
164 | dnl compiler works. | |
165 | if test x"${ac_cv_prog_gcc}" = xyes ; then | |
166 | gccfiles=`echo $libgccpath | sed -e 's:/libgcc.a::'` | |
167 | if test -f ${gccfiles}/specs -a -f ${gccfiles}/cpp -a -f ${gccfiles}/cc1plus; then | |
168 | gccfiles=yes | |
169 | else | |
170 | gccfiles=no | |
171 | fi | |
172 | gcclibs=`echo $libgccpath | sed -e 's:lib/gcc-lib/::' -e 's:/libgcc.a::' -e 's,\(.*\)/.*,\1,g'`/lib | |
173 | if test -d ${gcclibs}/ldscripts -a -f ${gcclibs}/libc.a -a -f ${gcclibs}/libstdc++.a ; then | |
174 | gcclibs=yes | |
175 | else | |
176 | gcclibs=no | |
177 | fi | |
178 | fi | |
179 | ||
180 | dnl If everything is OK, then we can safely assume the compiler works. | |
181 | if test x"${gccfiles}" = xno -o x"${gcclibs}" = xno; then | |
182 | ac_cv_prog_cc_works=no | |
183 | AC_MSG_ERROR(${CC} is a non-working cross compiler) | |
184 | else | |
185 | ac_cv_prog_cc_works=yes | |
186 | fi | |
187 | ||
188 | AC_LANG_RESTORE | |
189 | AC_MSG_RESULT($ac_cv_prog_cc_works) | |
190 | if test x"$ac_cv_prog_cc_works" = xno; then | |
191 | AC_MSG_ERROR([installation or configuration problem: C++ compiler cannot create executables.]) | |
192 | fi | |
193 | AC_MSG_CHECKING([whether the Gcc compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler]) | |
194 | AC_MSG_RESULT($ac_cv_prog_cc_cross) | |
195 | cross_compiling=$ac_cv_prog_cc_cross | |
196 | AC_SUBST(CC) | |
197 | ]) | |
198 | ||
199 | dnl ==================================================================== | |
200 | dnl Find the BFD library in the build tree. This is used to access and | |
201 | dnl manipulate object or executable files. | |
f8b73030 | 202 | AC_DEFUN([CYG_AC_PATH_BFD], [ |
252b5132 RH |
203 | AC_MSG_CHECKING(for the bfd header in the build tree) |
204 | dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.." | |
205 | dnl Look for the header file | |
206 | AC_CACHE_VAL(ac_cv_c_bfdh,[ | |
207 | for i in $dirlist; do | |
208 | if test -f "$i/bfd/bfd.h" ; then | |
d5de0a84 | 209 | ac_cv_c_bfdh=`(cd $i/bfd; ${PWDCMD-pwd})` |
252b5132 RH |
210 | break |
211 | fi | |
212 | done | |
213 | ]) | |
214 | if test x"${ac_cv_c_bfdh}" != x; then | |
215 | BFDHDIR="-I${ac_cv_c_bfdh}" | |
216 | AC_MSG_RESULT(${ac_cv_c_bfdh}) | |
217 | else | |
218 | AC_MSG_RESULT(none) | |
219 | fi | |
220 | AC_SUBST(BFDHDIR) | |
221 | ||
222 | dnl Look for the library | |
223 | AC_MSG_CHECKING(for the bfd library in the build tree) | |
224 | AC_CACHE_VAL(ac_cv_c_bfdlib,[ | |
225 | for i in $dirlist; do | |
226 | if test -f "$i/bfd/Makefile" ; then | |
d5de0a84 | 227 | ac_cv_c_bfdlib=`(cd $i/bfd; ${PWDCMD-pwd})` |
252b5132 RH |
228 | fi |
229 | done | |
230 | ]) | |
231 | dnl We list two directories cause bfd now uses libtool | |
232 | if test x"${ac_cv_c_bfdlib}" != x; then | |
233 | BFDLIB="-L${ac_cv_c_bfdlib} -L${ac_cv_c_bfdlib}/.libs" | |
234 | AC_MSG_RESULT(${ac_cv_c_bfdlib}) | |
235 | else | |
236 | AC_MSG_RESULT(none) | |
237 | fi | |
238 | AC_SUBST(BFDLIB) | |
239 | ]) | |
240 | ||
241 | dnl ==================================================================== | |
242 | dnl Find the libiberty library. This defines many commonly used C | |
243 | dnl functions that exists in various states based on the underlying OS. | |
f8b73030 | 244 | AC_DEFUN([CYG_AC_PATH_LIBERTY], [ |
252b5132 RH |
245 | AC_MSG_CHECKING(for the liberty library in the build tree) |
246 | dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.." | |
247 | AC_CACHE_VAL(ac_cv_c_liberty,[ | |
248 | for i in $dirlist; do | |
249 | if test -f "$i/libiberty/Makefile" ; then | |
d5de0a84 | 250 | ac_cv_c_liberty=`(cd $i/libiberty; ${PWDCMD-pwd})` |
252b5132 RH |
251 | fi |
252 | done | |
253 | ]) | |
254 | if test x"${ac_cv_c_liberty}" != x; then | |
255 | LIBERTY="-L${ac_cv_c_liberty}" | |
256 | AC_MSG_RESULT(${ac_cv_c_liberty}) | |
257 | else | |
258 | AC_MSG_RESULT(none) | |
259 | fi | |
260 | AC_SUBST(LIBERTY) | |
261 | ]) | |
262 | ||
263 | dnl ==================================================================== | |
264 | dnl Find the opcodes library. This is used to do dissasemblies. | |
f8b73030 | 265 | AC_DEFUN([CYG_AC_PATH_OPCODES], [ |
252b5132 RH |
266 | AC_MSG_CHECKING(for the opcodes library in the build tree) |
267 | dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.." | |
268 | AC_CACHE_VAL(ac_cv_c_opc,[ | |
269 | for i in $dirlist; do | |
270 | if test -f "$i/opcodes/Makefile" ; then | |
d5de0a84 | 271 | ac_cv_c_opc=`(cd $i/opcodes; ${PWDCMD-pwd})` |
252b5132 RH |
272 | fi |
273 | done | |
274 | ]) | |
275 | if test x"${ac_cv_c_opc}" != x; then | |
276 | OPCODESLIB="-L${ac_cv_c_opc}" | |
277 | AC_MSG_RESULT(${ac_cv_c_opc}) | |
278 | else | |
279 | AC_MSG_RESULT(none) | |
280 | fi | |
281 | AC_SUBST(OPCODESLIB) | |
282 | ]) | |
283 | ||
284 | dnl ==================================================================== | |
285 | dnl Look for the DejaGnu header file in the source tree. This file | |
286 | dnl defines the functions used to testing support. | |
f8b73030 | 287 | AC_DEFUN([CYG_AC_PATH_DEJAGNU], [ |
252b5132 RH |
288 | AC_MSG_CHECKING(for the testing support files in the source tree) |
289 | dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.." | |
290 | AC_CACHE_VAL(ac_cv_c_dejagnu,[ | |
291 | for i in $dirlist; do | |
292 | if test -f "$srcdir/$i/ecc/ecc/infra/testlib/current/include/dejagnu.h" ; then | |
d5de0a84 | 293 | ac_cv_c_dejagnu=`(cd $srcdir/$i/ecc/ecc/infra/testlib/current/include; ${PWDCMD-pwd})` |
252b5132 RH |
294 | fi |
295 | done | |
296 | ]) | |
297 | if test x"${ac_cv_c_dejagnu}" != x; then | |
298 | DEJAGNUHDIR="-I${ac_cv_c_dejagnu}" | |
299 | AC_MSG_RESULT(${ac_cv_c_dejagnu}) | |
300 | else | |
301 | AC_MSG_RESULT(none) | |
302 | fi | |
303 | AC_CACHE_VAL(ac_cv_c_dejagnulib,[ | |
304 | for i in $dirlist; do | |
305 | if test -f "$srcdir/$i/infra/testlib/current/lib/hostutil.exp" ; then | |
d5de0a84 | 306 | ac_cv_c_dejagnulib=`(cd $srcdir/$i/infra/testlib/current/lib; ${PWDCMD-pwd})` |
252b5132 RH |
307 | fi |
308 | done | |
309 | ]) | |
310 | if test x"${ac_cv_c_dejagnulib}" != x; then | |
311 | DEJAGNULIB="${ac_cv_c_dejagnulib}" | |
312 | else | |
313 | DEJAGNULIB="" | |
314 | fi | |
315 | AC_MSG_CHECKING(for runtest in the source tree) | |
316 | AC_CACHE_VAL(ac_cv_c_runtest,[ | |
317 | for i in $dirlist; do | |
318 | if test -f "$srcdir/$i/dejagnu/runtest" ; then | |
d5de0a84 | 319 | ac_cv_c_runtest=`(cd $srcdir/$i/dejagnu; ${PWDCMD-pwd})` |
252b5132 RH |
320 | fi |
321 | done | |
322 | ]) | |
323 | if test x"${ac_cv_c_runtest}" != x; then | |
324 | RUNTESTDIR="${ac_cv_c_runtest}" | |
325 | AC_MSG_RESULT(${ac_cv_c_runtest}) | |
326 | else | |
327 | RUNTESTDIR="" | |
328 | AC_MSG_RESULT(none) | |
329 | fi | |
330 | AC_SUBST(RUNTESTDIR) | |
331 | AC_SUBST(DEJAGNULIB) | |
332 | AC_SUBST(DEJAGNUHDIR) | |
333 | ]) | |
334 | ||
335 | dnl ==================================================================== | |
336 | dnl Find the libintl library in the build tree. This is for | |
337 | dnl internationalization support. | |
f8b73030 | 338 | AC_DEFUN([CYG_AC_PATH_INTL], [ |
252b5132 RH |
339 | AC_MSG_CHECKING(for the intl header in the build tree) |
340 | dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.." | |
341 | dnl Look for the header file | |
342 | AC_CACHE_VAL(ac_cv_c_intlh,[ | |
343 | for i in $dirlist; do | |
344 | if test -f "$i/intl/libintl.h" ; then | |
d5de0a84 | 345 | ac_cv_c_intlh=`(cd $i/intl; ${PWDCMD-pwd})` |
252b5132 RH |
346 | break |
347 | fi | |
348 | done | |
349 | ]) | |
350 | if test x"${ac_cv_c_intlh}" != x; then | |
351 | INTLHDIR="-I${ac_cv_c_intlh}" | |
352 | AC_MSG_RESULT(${ac_cv_c_intlh}) | |
353 | else | |
354 | AC_MSG_RESULT(none) | |
355 | fi | |
356 | AC_SUBST(INTLHDIR) | |
357 | ||
358 | dnl Look for the library | |
359 | AC_MSG_CHECKING(for the libintl library in the build tree) | |
360 | AC_CACHE_VAL(ac_cv_c_intllib,[ | |
361 | for i in $dirlist; do | |
362 | if test -f "$i/intl/Makefile" ; then | |
d5de0a84 | 363 | ac_cv_c_intllib=`(cd $i/intl; ${PWDCMD-pwd})` |
252b5132 RH |
364 | fi |
365 | done | |
366 | ]) | |
367 | if test x"${ac_cv_c_intllib}" != x; then | |
368 | INTLLIB="-L${ac_cv_c_intllib} -lintl" | |
369 | AC_MSG_RESULT(${ac_cv_c_intllib}) | |
370 | else | |
371 | AC_MSG_RESULT(none) | |
372 | fi | |
373 | AC_SUBST(INTLLIB) | |
374 | ]) | |
375 | ||
376 | dnl ==================================================================== | |
377 | dnl Find the simulator library. | |
f8b73030 | 378 | AC_DEFUN([CYG_AC_PATH_SIM], [ |
252b5132 RH |
379 | dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.. ../../../../../../../../../.." |
380 | case "$target_cpu" in | |
381 | powerpc) target_dir=ppc ;; | |
382 | sparc*) target_dir=erc32 ;; | |
383 | mips*) target_dir=mips ;; | |
384 | *) target_dir=$target_cpu ;; | |
385 | esac | |
386 | dnl First look for the header file | |
387 | AC_MSG_CHECKING(for the simulator header file) | |
388 | AC_CACHE_VAL(ac_cv_c_simh,[ | |
389 | for i in $dirlist; do | |
390 | if test -f "${srcdir}/$i/include/remote-sim.h" ; then | |
d5de0a84 | 391 | ac_cv_c_simh=`(cd ${srcdir}/$i/include; ${PWDCMD-pwd})` |
252b5132 RH |
392 | break |
393 | fi | |
394 | done | |
395 | ]) | |
396 | if test x"${ac_cv_c_simh}" != x; then | |
397 | SIMHDIR="-I${ac_cv_c_simh}" | |
398 | AC_MSG_RESULT(${ac_cv_c_simh}) | |
399 | else | |
400 | AC_MSG_RESULT(none) | |
401 | fi | |
402 | AC_SUBST(SIMHDIR) | |
403 | ||
404 | dnl See whether it's a devo or Foundry branch simulator | |
405 | AC_MSG_CHECKING(Whether this is a devo simulator ) | |
406 | AC_CACHE_VAL(ac_cv_c_simdevo,[ | |
407 | CPPFLAGS="$CPPFLAGS $SIMHDIR" | |
408 | AC_EGREP_HEADER([SIM_DESC sim_open.*struct _bfd], remote-sim.h, | |
409 | ac_cv_c_simdevo=yes, | |
410 | ac_cv_c_simdevo=no) | |
411 | ]) | |
412 | if test x"$ac_cv_c_simdevo" = x"yes" ; then | |
413 | AC_DEFINE(HAVE_DEVO_SIM) | |
414 | fi | |
415 | AC_MSG_RESULT(${ac_cv_c_simdevo}) | |
416 | AC_SUBST(HAVE_DEVO_SIM) | |
417 | ||
418 | dnl Next look for the library | |
419 | AC_MSG_CHECKING(for the simulator library) | |
420 | AC_CACHE_VAL(ac_cv_c_simlib,[ | |
421 | for i in $dirlist; do | |
422 | if test -f "$i/sim/$target_dir/Makefile" ; then | |
d5de0a84 | 423 | ac_cv_c_simlib=`(cd $i/sim/$target_dir; ${PWDCMD-pwd})` |
252b5132 RH |
424 | fi |
425 | done | |
426 | ]) | |
427 | if test x"${ac_cv_c_simlib}" != x; then | |
428 | SIMLIB="-L${ac_cv_c_simlib}" | |
429 | else | |
430 | AC_MSG_RESULT(none) | |
431 | dnl FIXME: this is kinda bogus, cause umtimately the TM will build | |
432 | dnl all the libraries for several architectures. But for now, this | |
433 | dnl will work till then. | |
434 | dnl AC_MSG_CHECKING(for the simulator installed with the compiler libraries) | |
435 | dnl Transform the name of the compiler to it's cross variant, unless | |
436 | dnl CXX is set. This is also what CXX gets set to in the generated | |
437 | dnl Makefile. | |
438 | CROSS_GCC=`echo gcc | sed -e "s/^/$target/"` | |
439 | ||
440 | dnl Get G++'s full path to libgcc.a | |
441 | changequote(,) | |
442 | gccpath=`${CROSS_GCC} --print-libgcc | sed -e 's:[a-z0-9A-Z\.\-]*/libgcc.a::' -e 's:lib/gcc-lib/::'`lib | |
443 | changequote([,]) | |
444 | if test -f $gccpath/libsim.a -o -f $gccpath/libsim.so ; then | |
445 | ac_cv_c_simlib="$gccpath/" | |
446 | SIMLIB="-L${ac_cv_c_simlib}" | |
447 | AC_MSG_RESULT(${ac_cv_c_simlib}) | |
448 | else | |
449 | AM_CONDITIONAL(PSIM, test x$psim = xno) | |
450 | SIMLIB="" | |
451 | AC_MSG_RESULT(none) | |
452 | dnl ac_cv_c_simlib=none | |
453 | fi | |
454 | fi | |
455 | AC_SUBST(SIMLIB) | |
456 | ]) | |
457 | ||
458 | dnl ==================================================================== | |
459 | dnl Find the libiberty library. | |
f8b73030 | 460 | AC_DEFUN([CYG_AC_PATH_LIBIBERTY], [ |
252b5132 RH |
461 | AC_MSG_CHECKING(for the libiberty library in the build tree) |
462 | dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.." | |
463 | AC_CACHE_VAL(ac_cv_c_libib,[ | |
464 | for i in $dirlist; do | |
465 | if test -f "$i/libiberty/Makefile" ; then | |
d5de0a84 | 466 | ac_cv_c_libib=`(cd $i/libiberty/; ${PWDCMD-pwd})` |
252b5132 RH |
467 | fi |
468 | done | |
469 | ]) | |
470 | if test x"${ac_cv_c_libib}" != x; then | |
471 | LIBIBERTY="-L${ac_cv_c_libib}" | |
472 | AC_MSG_RESULT(${ac_cv_c_libib}) | |
473 | else | |
474 | AC_MSG_RESULT(none) | |
475 | fi | |
476 | AC_SUBST(LIBIBERTY) | |
477 | ]) | |
478 | ||
479 | dnl ==================================================================== | |
f8b73030 | 480 | AC_DEFUN([CYG_AC_PATH_DEVO], [ |
252b5132 RH |
481 | AC_MSG_CHECKING(for devo headers in the source tree) |
482 | dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.." | |
483 | AC_CACHE_VAL(ac_cv_c_devoh,[ | |
484 | for i in $dirlist; do | |
485 | if test -f "${srcdir}/$i/include/remote-sim.h" ; then | |
d5de0a84 | 486 | ac_cv_c_devoh=`(cd ${srcdir}/$i/include; ${PWDCMD-pwd})` |
252b5132 RH |
487 | fi |
488 | done | |
489 | ]) | |
490 | if test x"${ac_cv_c_devoh}" != x; then | |
491 | DEVOHDIR="-I${ac_cv_c_devoh}" | |
492 | AC_MSG_RESULT(${ac_cv_c_devoh}) | |
493 | else | |
494 | AC_MSG_RESULT(none) | |
495 | fi | |
496 | AC_SUBST(DEVOHDIR) | |
497 | ]) | |
498 | ||
252b5132 RH |
499 | dnl ==================================================================== |
500 | dnl Find all the ILU headers and libraries | |
f8b73030 | 501 | AC_DEFUN([CYG_AC_PATH_ILU], [ |
252b5132 RH |
502 | AC_MSG_CHECKING(for ILU kernel headers in the source tree) |
503 | dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.." | |
504 | AC_CACHE_VAL(ac_cv_c_iluh,[ | |
505 | for i in $dirlist; do | |
506 | if test -f "${srcdir}/$i/ilu/runtime/kernel/method.h" ; then | |
d5de0a84 | 507 | ac_cv_c_iluh=`(cd ${srcdir}/$i/ilu/runtime/kernel; ${PWDCMD-pwd})` |
252b5132 RH |
508 | fi |
509 | done | |
510 | ]) | |
511 | if test x"${ac_cv_c_iluh}" != x; then | |
512 | ILUHDIR="-I${ac_cv_c_iluh}" | |
513 | AC_MSG_RESULT(${ac_cv_c_iluh}) | |
514 | else | |
515 | AC_MSG_RESULT(none) | |
516 | fi | |
517 | ||
518 | AC_MSG_CHECKING(for ILU kernel headers in the build tree) | |
519 | dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.." | |
520 | AC_CACHE_VAL(ac_cv_c_iluh5,[ | |
521 | for i in $dirlist; do | |
522 | if test -f "$i/ilu/runtime/kernel/iluconf.h" ; then | |
d5de0a84 | 523 | ac_cv_c_iluh5=`(cd $i/ilu/runtime/kernel; ${PWDCMD-pwd})` |
252b5132 RH |
524 | fi |
525 | done | |
526 | ]) | |
527 | if test x"${ac_cv_c_iluh5}" != x; then | |
528 | ILUHDIR="${ILUHDIR} -I${ac_cv_c_iluh5}" | |
529 | AC_MSG_RESULT(${ac_cv_c_iluh5}) | |
530 | else | |
531 | AC_MSG_RESULT(none) | |
532 | fi | |
533 | ||
534 | AC_MSG_CHECKING(for ILU C++ headers in the source tree) | |
535 | AC_CACHE_VAL(ac_cv_c_iluh2,[ | |
536 | for i in $dirlist; do | |
537 | if test -f "${srcdir}/$i/ilu/stubbers/cpp/resource.h" ; then | |
d5de0a84 | 538 | ac_cv_c_iluh2=`(cd ${srcdir}/$i/ilu/stubbers/cpp; ${PWDCMD-pwd})` |
252b5132 RH |
539 | fi |
540 | done | |
541 | ]) | |
542 | if test x"${ac_cv_c_iluh2}" != x; then | |
543 | ILUHDIR="${ILUHDIR} -I${ac_cv_c_iluh2}" | |
544 | AC_MSG_RESULT(${ac_cv_c_iluh2}) | |
545 | else | |
546 | AC_MSG_RESULT(none) | |
547 | fi | |
548 | ||
549 | AC_MSG_CHECKING(for ILU C headers) | |
550 | AC_CACHE_VAL(ac_cv_c_iluh3,[ | |
551 | for i in $dirlist; do | |
552 | if test -f "${srcdir}/$i/ilu/stubbers/c/resource.h" ; then | |
d5de0a84 | 553 | ac_cv_c_iluh3=`(cd ${srcdir}/$i/ilu/stubbers/c ; ${PWDCMD-pwd})` |
252b5132 RH |
554 | fi |
555 | done | |
556 | ]) | |
557 | if test x"${ac_cv_c_iluh3}" != x; then | |
558 | ILUHDIR="${ILUHDIR} -I${ac_cv_c_iluh3}" | |
559 | AC_MSG_RESULT(${ac_cv_c_iluh3}) | |
560 | else | |
561 | AC_MSG_RESULT(none) | |
562 | fi | |
563 | ||
564 | AC_MSG_CHECKING(for ILU C runtime headers) | |
565 | AC_CACHE_VAL(ac_cv_c_iluh4,[ | |
566 | for i in $dirlist; do | |
567 | if test -f "${srcdir}/$i/ilu/runtime/c/ilucstub.h" ; then | |
d5de0a84 | 568 | ac_cv_c_iluh4=`(cd ${srcdir}/$i/ilu/runtime/c ; ${PWDCMD-pwd})` |
252b5132 RH |
569 | fi |
570 | done | |
571 | ]) | |
572 | if test x"${ac_cv_c_iluh4}" != x; then | |
573 | ILUHDIR="${ILUHDIR} -I${ac_cv_c_iluh4}" | |
574 | AC_MSG_RESULT(${ac_cv_c_iluh4}) | |
575 | else | |
576 | AC_MSG_RESULT(none) | |
577 | fi | |
578 | ||
579 | AC_CACHE_VAL(ac_cv_c_ilupath,[ | |
580 | for i in $dirlist; do | |
581 | if test -f "$i/ilu/Makefile" ; then | |
d5de0a84 | 582 | ac_cv_c_ilupath=`(cd $i/ilu; ${PWDCMD-pwd})` |
252b5132 RH |
583 | break |
584 | fi | |
585 | done | |
586 | ]) | |
587 | ILUTOP=${ac_cv_c_ilupath} | |
588 | ||
589 | AC_MSG_CHECKING(for the ILU library in the build tree) | |
590 | AC_CACHE_VAL(ac_cv_c_ilulib,[ | |
591 | if test -f "$ac_cv_c_ilupath/runtime/kernel/Makefile" ; then | |
d5de0a84 | 592 | ac_cv_c_ilulib=`(cd $ac_cv_c_ilupath/runtime/kernel; ${PWDCMD-pwd})` |
252b5132 RH |
593 | AC_MSG_RESULT(found ${ac_cv_c_ilulib}/libilu.a) |
594 | else | |
595 | AC_MSG_RESULT(no) | |
596 | fi]) | |
597 | ||
598 | AC_MSG_CHECKING(for the ILU C++ bindings library in the build tree) | |
599 | AC_CACHE_VAL(ac_cv_c_ilulib2,[ | |
600 | if test -f "$ac_cv_c_ilupath/runtime/cpp/Makefile" ; then | |
d5de0a84 | 601 | ac_cv_c_ilulib2=`(cd $ac_cv_c_ilupath/runtime/cpp; ${PWDCMD-pwd})` |
252b5132 RH |
602 | AC_MSG_RESULT(found ${ac_cv_c_ilulib2}/libilu-c++.a) |
603 | else | |
604 | AC_MSG_RESULT(no) | |
605 | fi]) | |
606 | ||
607 | AC_MSG_CHECKING(for the ILU C bindings library in the build tree) | |
608 | AC_CACHE_VAL(ac_cv_c_ilulib3,[ | |
609 | if test -f "$ac_cv_c_ilupath/runtime/c/Makefile" ; then | |
d5de0a84 | 610 | ac_cv_c_ilulib3=`(cd $ac_cv_c_ilupath/runtime/c; ${PWDCMD-pwd})` |
252b5132 RH |
611 | AC_MSG_RESULT(found ${ac_cv_c_ilulib3}/libilu-c.a) |
612 | else | |
613 | AC_MSG_RESULT(no) | |
614 | fi]) | |
615 | ||
616 | AC_MSG_CHECKING(for the ILU Tk bindings library in the build tree) | |
617 | AC_CACHE_VAL(ac_cv_c_ilulib4,[ | |
618 | if test -f "$ac_cv_c_ilupath/runtime/mainloop/Makefile" ; then | |
d5de0a84 | 619 | ac_cv_c_ilulib4=`(cd $ac_cv_c_ilupath/runtime/mainloop; ${PWDCMD-pwd})` |
252b5132 RH |
620 | AC_MSG_RESULT(found ${ac_cv_c_ilulib4}/libilu-tk.a) |
621 | else | |
622 | AC_MSG_RESULT(no) | |
623 | fi]) | |
624 | ||
625 | if test x"${ac_cv_c_ilulib}" = x -a x"${ac_cv_c_ilulib2}" = x; then | |
626 | ILUHDIR="" | |
627 | fi | |
628 | ||
629 | if test x"${ac_cv_c_ilulib}" != x -a x"${ac_cv_c_ilulib2}" != x; then | |
630 | ILULIB="-L${ac_cv_c_ilulib} -L${ac_cv_c_ilulib2} -L${ac_cv_c_ilulib3} -L${ac_cv_c_ilulib4}" | |
631 | else | |
632 | ILULIB="" | |
633 | fi | |
634 | ||
635 | if test x"${ILULIB}" = x; then | |
636 | AC_MSG_CHECKING(for ILU libraries installed with the compiler) | |
637 | AC_CACHE_VAL(ac_cv_c_ilulib5,[ | |
638 | NATIVE_GCC=`echo gcc | sed -e "${program_transform_name}"` | |
639 | ||
640 | dnl Get G++'s full path to it's libraries | |
641 | ac_cv_c_ilulib5=`${NATIVE_GCC} --print-libgcc | sed -e 's:lib/gcc-lib/.*::'`lib | |
642 | if test -f $ac_cv_c_ilulib5/libilu-c.a -o -f $ac_cv_c_ilulib5/libilu-c.so ; then | |
643 | if test x"${ILUHDIR}" = x; then | |
644 | ILUHDIR="-I${ac_cv_c_ilulib5}/../include" | |
645 | fi | |
646 | ILULIB="-L${ac_cv_c_ilulib5}" | |
647 | AC_MSG_RESULT(${ac_cv_c_ilulib5}) | |
648 | else | |
649 | ac_cv_c_ilulib=none | |
650 | AC_MSG_RESULT(none) | |
651 | fi | |
652 | fi]) | |
653 | AC_SUBST(ILUHDIR) | |
654 | AC_SUBST(ILULIB) | |
655 | AC_SUBST(ILUTOP) | |
656 | ]) | |
657 | ||
658 | dnl ==================================================================== | |
659 | dnl This defines the byte order for the host. We can't use | |
660 | dnl AC_C_BIGENDIAN, cause we want to create a config file and | |
661 | dnl substitue the real value, so the header files work right | |
f8b73030 | 662 | AC_DEFUN([CYG_AC_C_ENDIAN], [ |
252b5132 RH |
663 | AC_MSG_CHECKING(to see if this is a little endian host) |
664 | AC_CACHE_VAL(ac_cv_c_little_endian, [ | |
665 | ac_cv_c_little_endian=unknown | |
666 | # See if sys/param.h defines the BYTE_ORDER macro. | |
667 | AC_TRY_COMPILE([#include <sys/types.h> | |
668 | #include <sys/param.h>], [ | |
669 | #if !BYTE_ORDER || !_BIG_ENDIAN || !_LITTLE_ENDIAN | |
670 | bogus endian macros | |
671 | #endif], [# It does; now see whether it defined to _LITTLE_ENDIAN or not. | |
672 | AC_TRY_COMPILE([#include <sys/types.h> | |
673 | #include <sys/param.h>], [ | |
674 | #if BYTE_ORDER != _LITTLE_ENDIAN | |
675 | not big endian | |
676 | #endif], ac_cv_c_little_endian=yes, ac_cv_c_little_endian=no) | |
677 | ]) | |
678 | if test ${ac_cv_c_little_endian} = unknown; then | |
679 | old_cflags=$CFLAGS | |
680 | CFLAGS=-g | |
681 | AC_TRY_RUN([ | |
682 | main () { | |
683 | /* Are we little or big endian? From Harbison&Steele. */ | |
684 | union | |
685 | { | |
686 | long l; | |
687 | char c[sizeof (long)]; | |
688 | } u; | |
689 | u.l = 1; | |
690 | exit (u.c[0] == 1); | |
691 | }], | |
692 | ac_cv_c_little_endian=no, | |
693 | ac_cv_c_little_endian=yes,[ | |
694 | dnl Yes, this is ugly, and only used for a canadian cross anyway. This | |
695 | dnl is just to keep configure from stopping here. | |
696 | case "${host}" in | |
697 | changequote(,) | |
6ab9c4b2 | 698 | i[3456789]86-*-*) ac_cv_c_little_endian=yes ;; |
252b5132 RH |
699 | sparc*-*-*) ac_cv_c_little_endian=no ;; |
700 | changequote([,]) | |
701 | *) AC_MSG_WARN(Can't cross compile this test) ;; | |
702 | esac]) | |
703 | CFLAGS=$old_cflags | |
704 | fi]) | |
705 | ||
706 | if test x"${ac_cv_c_little_endian}" = xyes; then | |
707 | AC_DEFINE(LITTLE_ENDIAN_HOST) | |
708 | ENDIAN="CYG_LSBFIRST"; | |
709 | else | |
710 | ENDIAN="CYG_MSBFIRST"; | |
711 | fi | |
712 | AC_MSG_RESULT(${ac_cv_c_little_endian}) | |
713 | AC_SUBST(ENDIAN) | |
714 | ]) | |
715 | ||
716 | dnl ==================================================================== | |
717 | dnl Look for the path to libgcc, so we can use it to directly link | |
718 | dnl in libgcc.a with LD. | |
f8b73030 | 719 | AC_DEFUN([CYG_AC_PATH_LIBGCC], |
252b5132 RH |
720 | [AC_MSG_CHECKING([Looking for the path to libgcc.a]) |
721 | AC_LANG_SAVE | |
722 | AC_LANG_C | |
723 | ||
724 | dnl Get Gcc's full path to libgcc.a | |
725 | libgccpath=`${CC} --print-libgcc` | |
726 | ||
727 | dnl If we don't have a path with libgcc.a on the end, this isn't G++. | |
728 | if test `echo $libgccpath | sed -e 's:/.*/::'` = libgcc.a ; then | |
729 | ac_cv_prog_gcc=yes | |
730 | else | |
731 | ac_cv_prog_gcc=no | |
732 | fi | |
733 | ||
734 | dnl | |
735 | if test x"${ac_cv_prog_gcc}" = xyes ; then | |
736 | gccpath=`echo $libgccpath | sed -e 's:/libgcc.a::'` | |
737 | LIBGCC="-L${gccpath}" | |
738 | AC_MSG_RESULT(${gccpath}) | |
739 | else | |
740 | LIBGCC="" | |
741 | AC_MSG_ERROR(Not using gcc) | |
742 | fi | |
743 | ||
744 | AC_LANG_RESTORE | |
745 | AC_SUBST(LIBGCC) | |
746 | ]) |