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. |
---|
9 | AC_DEFUN([CYG_AC_PROG_CXX_CROSS], |
---|
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. |
---|
38 | AC_DEFUN([CYG_AC_PROG_GXX_WORKS], |
---|
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++. |
---|
106 | AC_DEFUN([CYG_AC_PROG_CC_CROSS], |
---|
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. |
---|
135 | AC_DEFUN([CYG_AC_PROG_GCC_WORKS], |
---|
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. |
---|
202 | AC_DEFUN([CYG_AC_PATH_BFD], [ |
---|
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 |
---|
209 | ac_cv_c_bfdh=`(cd $i/bfd; ${PWDCMD-pwd})` |
---|
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 |
---|
227 | ac_cv_c_bfdlib=`(cd $i/bfd; ${PWDCMD-pwd})` |
---|
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. |
---|
244 | AC_DEFUN([CYG_AC_PATH_LIBERTY], [ |
---|
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 |
---|
250 | ac_cv_c_liberty=`(cd $i/libiberty; ${PWDCMD-pwd})` |
---|
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. |
---|
265 | AC_DEFUN([CYG_AC_PATH_OPCODES], [ |
---|
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 |
---|
271 | ac_cv_c_opc=`(cd $i/opcodes; ${PWDCMD-pwd})` |
---|
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. |
---|
287 | AC_DEFUN([CYG_AC_PATH_DEJAGNU], [ |
---|
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 |
---|
293 | ac_cv_c_dejagnu=`(cd $srcdir/$i/ecc/ecc/infra/testlib/current/include; ${PWDCMD-pwd})` |
---|
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 |
---|
306 | ac_cv_c_dejagnulib=`(cd $srcdir/$i/infra/testlib/current/lib; ${PWDCMD-pwd})` |
---|
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 |
---|
319 | ac_cv_c_runtest=`(cd $srcdir/$i/dejagnu; ${PWDCMD-pwd})` |
---|
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. |
---|
338 | AC_DEFUN([CYG_AC_PATH_INTL], [ |
---|
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 |
---|
345 | ac_cv_c_intlh=`(cd $i/intl; ${PWDCMD-pwd})` |
---|
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 |
---|
363 | ac_cv_c_intllib=`(cd $i/intl; ${PWDCMD-pwd})` |
---|
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. |
---|
378 | AC_DEFUN([CYG_AC_PATH_SIM], [ |
---|
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 |
---|
391 | ac_cv_c_simh=`(cd ${srcdir}/$i/include; ${PWDCMD-pwd})` |
---|
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 |
---|
423 | ac_cv_c_simlib=`(cd $i/sim/$target_dir; ${PWDCMD-pwd})` |
---|
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. |
---|
460 | AC_DEFUN([CYG_AC_PATH_LIBIBERTY], [ |
---|
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 |
---|
466 | ac_cv_c_libib=`(cd $i/libiberty/; ${PWDCMD-pwd})` |
---|
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 ==================================================================== |
---|
480 | AC_DEFUN([CYG_AC_PATH_DEVO], [ |
---|
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 |
---|
486 | ac_cv_c_devoh=`(cd ${srcdir}/$i/include; ${PWDCMD-pwd})` |
---|
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 | |
---|
499 | dnl ==================================================================== |
---|
500 | dnl Find all the ILU headers and libraries |
---|
501 | AC_DEFUN([CYG_AC_PATH_ILU], [ |
---|
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 |
---|
507 | ac_cv_c_iluh=`(cd ${srcdir}/$i/ilu/runtime/kernel; ${PWDCMD-pwd})` |
---|
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 |
---|
523 | ac_cv_c_iluh5=`(cd $i/ilu/runtime/kernel; ${PWDCMD-pwd})` |
---|
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 |
---|
538 | ac_cv_c_iluh2=`(cd ${srcdir}/$i/ilu/stubbers/cpp; ${PWDCMD-pwd})` |
---|
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 |
---|
553 | ac_cv_c_iluh3=`(cd ${srcdir}/$i/ilu/stubbers/c ; ${PWDCMD-pwd})` |
---|
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 |
---|
568 | ac_cv_c_iluh4=`(cd ${srcdir}/$i/ilu/runtime/c ; ${PWDCMD-pwd})` |
---|
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 |
---|
582 | ac_cv_c_ilupath=`(cd $i/ilu; ${PWDCMD-pwd})` |
---|
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 |
---|
592 | ac_cv_c_ilulib=`(cd $ac_cv_c_ilupath/runtime/kernel; ${PWDCMD-pwd})` |
---|
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 |
---|
601 | ac_cv_c_ilulib2=`(cd $ac_cv_c_ilupath/runtime/cpp; ${PWDCMD-pwd})` |
---|
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 |
---|
610 | ac_cv_c_ilulib3=`(cd $ac_cv_c_ilupath/runtime/c; ${PWDCMD-pwd})` |
---|
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 |
---|
619 | ac_cv_c_ilulib4=`(cd $ac_cv_c_ilupath/runtime/mainloop; ${PWDCMD-pwd})` |
---|
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 |
---|
662 | AC_DEFUN([CYG_AC_C_ENDIAN], [ |
---|
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(,) |
---|
698 | i[3456789]86-*-*) ac_cv_c_little_endian=yes ;; |
---|
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. |
---|
719 | AC_DEFUN([CYG_AC_PATH_LIBGCC], |
---|
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 | ]) |
---|