0
|
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 ])
|