note that the fix for --enable-shared is not the real way it needs to
[deliverable/binutils-gdb.git] / gdb / configure.in
... / ...
CommitLineData
1dnl Autoconf configure script for GDB, the GNU debugger.
2dnl Copyright 1995, 1996 Free Software Foundation, Inc.
3dnl
4dnl This file is part of GDB.
5dnl
6dnl This program is free software; you can redistribute it and/or modify
7dnl it under the terms of the GNU General Public License as published by
8dnl the Free Software Foundation; either version 2 of the License, or
9dnl (at your option) any later version.
10dnl
11dnl This program is distributed in the hope that it will be useful,
12dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
13dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14dnl GNU General Public License for more details.
15dnl
16dnl You should have received a copy of the GNU General Public License
17dnl along with this program; if not, write to the Free Software
18dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19
20dnl Process this file with autoconf to produce a configure script.
21
22AC_PREREQ(2.5)dnl
23AC_INIT(main.c)
24AC_CONFIG_HEADER(config.h:config.in)
25
26AC_PROG_CC
27AC_AIX
28AC_MINIX
29AC_ISC_POSIX
30
31DLLTOOL=${DLLTOOL-dlltool}
32AC_SUBST(DLLTOOL)
33
34AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
35AC_CANONICAL_SYSTEM
36
37dnl List of object files added by configure.
38
39CONFIG_OBS=
40CONFIG_DEPS=
41
42configdirs="doc testsuite"
43
44dnl
45changequote(,)dnl
46
47. ${srcdir}/configure.host
48
49. ${srcdir}/configure.tgt
50
51dnl
52changequote([,])dnl
53
54AC_PROG_INSTALL
55AC_CHECK_TOOL(AR, ar)
56AC_CHECK_TOOL(RANLIB, ranlib, :)
57AC_PROG_YACC
58AC_PROG_AWK
59
60AC_ARG_PROGRAM
61
62AC_TYPE_SIGNAL
63
64AC_HEADER_STDC
65AC_CHECK_HEADERS(limits.h memory.h string.h strings.h unistd.h termios.h termio.h sgtty.h stddef.h stdlib.h sys/procfs.h link.h endian.h objlist.h)
66AC_HEADER_STAT
67
68AC_C_CONST
69
70AC_CHECK_FUNCS(setpgid sbrk select poll sigaction)
71
72# If we are configured native on Linux, work around problems with sys/procfs.h
73if test "${target}" = "${host}"; then
74 case "${host}" in
75 i[3456]86-*-linux*)
76 AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,"2")
77 AC_DEFINE(sys_quotactl)
78 ;;
79 esac
80fi
81
82AC_MSG_CHECKING([for gregset_t type])
83AC_CACHE_VAL(gdb_cv_have_gregset_t,
84[AC_TRY_LINK([#include <sys/procfs.h>],[gregset_t *gregsetp = 0],
85gdb_cv_have_gregset_t=yes, gdb_cv_have_gregset_t=no)])
86AC_MSG_RESULT($gdb_cv_have_gregset_t)
87if test $gdb_cv_have_gregset_t = yes; then
88 AC_DEFINE(HAVE_GREGSET_T)
89fi
90
91AC_MSG_CHECKING([for fpregset_t type])
92AC_CACHE_VAL(gdb_cv_have_fpregset_t,
93[AC_TRY_LINK([#include <sys/procfs.h>],[fpregset_t *fpregsetp = 0],
94gdb_cv_have_fpregset_t=yes, gdb_cv_have_fpregset_t=no)])
95AC_MSG_RESULT($gdb_cv_have_fpregset_t)
96if test $gdb_cv_have_fpregset_t = yes; then
97 AC_DEFINE(HAVE_FPREGSET_T)
98fi
99
100dnl See if host has libm. This is usually needed by simulators.
101AC_CHECK_LIB(m, main)
102
103dnl See if compiler supports "long long" type.
104
105AC_MSG_CHECKING(for long long support in compiler)
106AC_CACHE_VAL(gdb_cv_c_long_long,
107[AC_TRY_COMPILE(, [
108 extern long long foo;
109 switch (foo & 2) { case 0: return 1; }
110],
111gdb_cv_c_long_long=yes, gdb_cv_c_long_long=no)])
112AC_MSG_RESULT($gdb_cv_c_long_long)
113if test $gdb_cv_c_long_long = yes; then
114 AC_DEFINE(CC_HAS_LONG_LONG)
115fi
116
117dnl See if the compiler and runtime support printing long long
118
119AC_MSG_CHECKING(for long long support in printf)
120AC_CACHE_VAL(gdb_cv_printf_has_long_long,
121[AC_TRY_RUN([
122int main () {
123 char buf[32];
124 long long l = 0;
125 l = (l << 16) + 0x0123;
126 l = (l << 16) + 0x4567;
127 l = (l << 16) + 0x89ab;
128 l = (l << 16) + 0xcdef;
129 sprintf (buf, "0x%016llx", l);
130 return (strcmp ("0x0123456789abcdef", buf));
131}],
132gdb_cv_printf_has_long_long=yes,
133gdb_cv_printf_has_long_long=no,
134gdb_cv_printf_has_long_long=no)])
135if test $gdb_cv_printf_has_long_long = yes; then
136 AC_DEFINE(PRINTF_HAS_LONG_LONG)
137fi
138AC_MSG_RESULT($gdb_cv_printf_has_long_long)
139
140dnl See if compiler supports "long double" type. Can't use AC_C_LONG_DOUBLE
141dnl because autoconf complains about cross-compilation issues. However, this
142dnl code uses the same variables as the macro for compatibility.
143
144AC_MSG_CHECKING(for long double support in compiler)
145AC_CACHE_VAL(ac_cv_c_long_double,
146[AC_TRY_COMPILE(, [long double foo;],
147ac_cv_c_long_double=yes, ac_cv_c_long_double=no)])
148AC_MSG_RESULT($ac_cv_c_long_double)
149if test $ac_cv_c_long_double = yes; then
150 AC_DEFINE(HAVE_LONG_DOUBLE)
151fi
152
153dnl See if the compiler and runtime support printing long doubles
154
155AC_MSG_CHECKING(for long double support in printf)
156AC_CACHE_VAL(gdb_cv_printf_has_long_double,
157[AC_TRY_RUN([
158int main () {
159 char buf[16];
160 long double f = 3.141592653;
161 sprintf (buf, "%Lg", f);
162 return (strncmp ("3.14159", buf, 7));
163}],
164gdb_cv_printf_has_long_double=yes,
165gdb_cv_printf_has_long_double=no,
166gdb_cv_printf_has_long_double=no)])
167if test $gdb_cv_printf_has_long_double = yes; then
168 AC_DEFINE(PRINTF_HAS_LONG_DOUBLE)
169fi
170AC_MSG_RESULT($gdb_cv_printf_has_long_double)
171
172dnl See if the compiler and runtime support scanning long doubles
173
174AC_MSG_CHECKING(for long double support in scanf)
175AC_CACHE_VAL(gdb_cv_scanf_has_long_double,
176[AC_TRY_RUN([
177int main () {
178 char *buf = "3.141592653";
179 long double f = 0;
180 sscanf (buf, "%Lg", &f);
181 return !(f > 3.14159 && f < 3.14160);
182}],
183gdb_cv_scanf_has_long_double=yes,
184gdb_cv_scanf_has_long_double=no,
185gdb_cv_scanf_has_long_double=no)])
186if test $gdb_cv_scanf_has_long_double = yes; then
187 AC_DEFINE(SCANF_HAS_LONG_DOUBLE)
188fi
189AC_MSG_RESULT($gdb_cv_scanf_has_long_double)
190
191AC_FUNC_MMAP
192
193BFD_NEED_DECLARATION(malloc)
194BFD_NEED_DECLARATION(realloc)
195BFD_NEED_DECLARATION(free)
196
197dnl See if thread_db library is around for Solaris thread debugging. Note that
198dnl we must explicitly test for version 1 of the library because version 0
199dnl (present on Solaris 2.4 or earlier) doesn't have the same API.
200
201dnl Note that we only want this if we are both native (host == target), and
202dnl not doing a canadian cross build (build == host).
203
204if test ${build} = ${host} -a ${host} = ${target} ; then
205 case ${host_os} in
206 hpux*)
207 AC_MSG_CHECKING(for HPUX/OSF thread support)
208 if test -f /usr/include/dce/cma_config.h ; then
209 if test "$GCC" = "yes" ; then
210 AC_MSG_RESULT(yes)
211 AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
212 CONFIG_OBS="${CONFIG_OJS} hpux-thread.o"
213 else
214 AC_MSG_RESULT(no (suppressed because you are not using GCC))
215 fi
216 else
217 AC_MSG_RESULT(no)
218 fi
219 ;;
220 solaris*)
221 AC_MSG_CHECKING(for Solaris thread debugging library)
222 if test -f /usr/lib/libthread_db.so.1 ; then
223 AC_MSG_RESULT(yes)
224 AC_DEFINE(HAVE_THREAD_DB_LIB)
225 CONFIG_OBS="${CONFIG_OBS} sol-thread.o"
226 AC_CHECK_LIB(dl, dlopen)
227 if test "$GCC" = "yes" ; then
228 CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Xlinker -export-dynamic"
229 fi
230 else
231 AC_MSG_RESULT(no)
232 fi
233 ;;
234 esac
235 AC_SUBST(CONFIG_LDFLAGS)
236fi
237
238dnl Handle optional features that can be enabled.
239ENABLE_CFLAGS=
240
241AC_ARG_ENABLE(netrom,
242[ --enable-netrom ],
243[case "${enableval}" in
244yes) enable_netrom=yes ;;
245no) enable_netrom=no ;;
246*) AC_MSG_ERROR(bad value ${enableval} given for netrom option) ;;
247esac])
248
249if test "${enable_netrom}" = "yes"; then
250 CONFIG_OBS="${CONFIG_OBS} remote-nrom.o"
251fi
252
253# start-sanitize-gdbtk
254ENABLE_IDE=
255AC_ARG_ENABLE(ide, [ --enable-ide Enable IDE support])
256if test "$enable_ide" = yes; then
257 enable_ide=yes
258 ENABLE_IDE=1
259else
260 enable_ide=no
261fi
262AC_SUBST(ENABLE_IDE)
263
264ENABLE_GDBTK=
265
266AC_ARG_ENABLE(gdbtk,
267[ --enable-gdbtk ],
268[case "${enableval}" in
269 yes)
270 case "$host" in
271 *go32*)
272 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
273 enable_gdbtk=no ;;
274 *windows*)
275 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
276 enable_gdbtk=no ;;
277 *)
278 enable_gdbtk=yes ;;
279 esac ;;
280 no)
281 enable_gdbtk=no ;;
282 *)
283 AC_MSG_ERROR(bad value ${enableval} given for gdbtk option) ;;
284esac],
285[
286# Default is on for everything but go32 and cygwin32
287case "$host" in
288 *go32* | *windows*)
289 ;;
290 *)
291 enable_gdbtk=yes ;;
292 esac
293])
294
295# In the cygwin32 environment, we need some additional flags.
296AC_CACHE_CHECK([for cygwin32], gdb_cv_os_cygwin32,
297[AC_EGREP_CPP(lose, [
298#ifdef __CYGWIN32__
299lose
300#endif],[gdb_cv_os_cygwin32=yes],[gdb_cv_os_cygwin32=no])])
301
302WIN32LIBS=
303WIN32LDAPP=
304AC_SUBST(WIN32LIBS)
305AC_SUBST(WIN32LDAPP)
306
307if test x$gdb_cv_os_cygwin32 = xyes; then
308 if test x$enable_ide = xyes; then
309 WIN32LIBS="-ladvapi32"
310 fi
311fi
312
313configdir="unix"
314
315if test "${enable_gdbtk}" = "yes"; then
316
317 CY_AC_PATH_TCLCONFIG
318 if test -z "${no_tcl}"; then
319 CY_AC_LOAD_TCLCONFIG
320 CY_AC_PATH_TKCONFIG
321
322 # If $no_tk is nonempty, then we can't do Tk, and there is no
323 # point to doing Tcl.
324 if test -z "${no_tk}"; then
325 CY_AC_LOAD_TKCONFIG
326 CY_AC_PATH_TCLH
327 CY_AC_PATH_TKH
328 CY_AC_PATH_ITCLH
329 CY_AC_PATH_TIX
330
331 # now look for tix library stuff
332 TIXVERSION=4.1.8.0
333 . ${ac_cv_c_tclconfig}/tclConfig.sh
334 case "${host}" in
335 *-*-cygwin32*)
336 tixdir=../tix/win/tcl8.0
337 ;;
338 *)
339 tixdir=../tix/unix/tk8.0
340 ;;
341 esac
342 if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
343 TIXLIB="-L${tixdir} -ltix${TIXVERSION}"
344 TIX_DEPS="${tixdir}/libtix${TIXVERSION}.a"
345 else
346 TIXLIB="-L${tixdir} -ltix`echo ${TIXVERSION} | tr -d .`"
347 TIX_DEPS="${tixdir}/libtix`echo ${TIXVERSION} | tr -d .`.a"
348 fi
349
350 ENABLE_GDBTK=1
351
352 # Include some libraries that Tcl and Tk want.
353 if test "${enable_ide}" = "yes"; then
354 TCL_LIBS='$(LIBIDE) $(IDE) $(ITCL) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
355 CONFIG_DEPS='$(LIBIDE) $(IDE_DEPS) $(ITCL_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
356 else
357 TCL_LIBS='$(LIBIDE) $(ITCL) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
358 CONFIG_DEPS='$(LIBIDE) $(ITCL_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
359 fi
360 # Yes, the ordering seems wrong here. But it isn't.
361 # TK_LIBS is the list of libraries that need to be linked
362 # after Tcl/Tk.
363 LIBS="${LIBS} ${TCL_LIBS} ${TK_LIBS}"
364 CONFIG_OBS="${CONFIG_OBS} gdbtk.o"
365
366 if test x$gdb_cv_os_cygwin32 = xyes; then
367 WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32 -luser32"
368 WIN32LDAPP="-Wl,--subsystem,windows"
369 fi
370 fi
371 fi
372fi
373
374AC_SUBST(ENABLE_GDBTK)
375AC_SUBST(X_CFLAGS)
376AC_SUBST(X_LDFLAGS)
377AC_SUBST(X_LIBS)
378AC_SUBST(TIXLIB)
379AC_SUBST(TIX_DEPS)
380# end-sanitize-gdbtk
381
382AC_SUBST(ENABLE_CFLAGS)
383
384AC_SUBST(CONFIG_OBS)
385AC_SUBST(CONFIG_DEPS)
386
387# Begin stuff to support --enable-shared
388AC_ARG_ENABLE(shared,
389[ --enable-shared use shared libraries],
390[case "${enableval}" in
391 yes) shared=true ;;
392 no) shared=false ;;
393 *) shared=true ;;
394esac])dnl
395
396HLDFLAGS=
397HLDENV=
398# If we have shared libraries, try to set rpath reasonably.
399if test "${shared}" = "true"; then
400 case "${host}" in
401 *-*-hpux*)
402 HLDFLAGS='-Wl,+s,+b,$(libdir)'
403 ;;
404 *-*-irix5* | *-*-irix6*)
405 HLDFLAGS='-Wl,-rpath,$(libdir)'
406 ;;
407 *-*-linux*aout*)
408 ;;
409 *-*-linux* | *-pc-linux-gnu)
410 HLDFLAGS='-Wl,-rpath,$(libdir)'
411 ;;
412 *-*-solaris*)
413 HLDFLAGS='-R $(libdir)'
414 ;;
415 *-*-sysv4*)
416 HLDENV='if test -z "$${LD_RUN_PATH}"; then LD_RUN_PATH=$(libdir); else LD_RUN_PATH=$${LD_RUN_PATH}:$(libdir); fi; export LD_RUN_PATH;'
417 ;;
418 esac
419fi
420
421# On SunOS, if the linker supports the -rpath option, use it to
422# prevent ../bfd and ../opcodes from being included in the run time
423# search path.
424case "${host}" in
425 *-*-sunos*)
426 echo 'main () { }' > conftest.c
427 ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
428 if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
429 :
430 elif grep 'No such file' conftest.t >/dev/null 2>&1; then
431 :
432 elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
433 :
434 elif grep 'some text already loaded' conftest.t >/dev/null 2>&1; then
435 :
436 elif test "${shared}" = "true"; then
437 HLDFLAGS='-Wl,-rpath=$(libdir)'
438 else
439 HLDFLAGS='-Wl,-rpath='
440 fi
441 rm -f conftest.t conftest.c conftest
442 ;;
443esac
444AC_SUBST(HLDFLAGS)
445AC_SUBST(HLDENV)
446# End stuff to support --enable-shared
447
448# target_subdir is used by the testsuite to find the target libraries.
449target_subdir=
450if test "${host}" != "${target}"; then
451 target_subdir="${target_alias}/"
452fi
453AC_SUBST(target_subdir)
454
455frags=
456host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
457if test ! -f ${host_makefile_frag}; then
458AC_MSG_ERROR("*** Gdb does not support host ${host}")
459fi
460frags="$frags $host_makefile_frag"
461
462target_makefile_frag=${srcdir}/config/${gdb_target_cpu}/${gdb_target}.mt
463if test ! -f ${target_makefile_frag}; then
464AC_MSG_ERROR("*** Gdb does not support target ${target}")
465fi
466frags="$frags $target_makefile_frag"
467
468AC_SUBST_FILE(host_makefile_frag)
469AC_SUBST_FILE(target_makefile_frag)
470AC_SUBST(frags)
471
472changequote(,)dnl
473hostfile=`sed -n '
474s/XM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
475' ${host_makefile_frag}`
476
477targetfile=`sed -n '
478s/TM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
479' ${target_makefile_frag}`
480
481# these really aren't orthogonal true/false values of the same condition,
482# but shells are slow enough that I like to reuse the test conditions
483# whenever possible
484if test "${target}" = "${host}"; then
485nativefile=`sed -n '
486s/NAT_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
487' ${host_makefile_frag}`
488# else
489# GDBserver is only useful in a "native" enviroment
490# configdirs=`echo $configdirs | sed 's/gdbserver//'`
491fi
492changequote([,])
493
494# If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
495# (NAT_FILE) is not set in config/*/*.m[ht] files, we don't make the
496# corresponding links. But we have to remove the xm.h files and tm.h
497# files anyway, e.g. when switching from "configure host" to
498# "configure none".
499
500files=
501links=
502rm -f xm.h
503if test "${hostfile}" != ""; then
504files="${files} config/${gdb_host_cpu}/${hostfile}"
505links="${links} xm.h"
506fi
507rm -f tm.h
508if test "${targetfile}" != ""; then
509files="${files} config/${gdb_target_cpu}/${targetfile}"
510links="${links} tm.h"
511fi
512rm -f nm.h
513if test "${nativefile}" != ""; then
514files="${files} config/${gdb_host_cpu}/${nativefile}"
515links="${links} nm.h"
516else
517# A cross-only configuration.
518files="${files} config/nm-empty.h"
519links="${links} nm.h"
520fi
521# start-sanitize-gdbtk
522AC_PROG_LN_S
523# Make it possible to use the GUI without doing a full install
524if test "${enable_gdbtk}" = "yes" -a ! -d gdbtcl ; then
525 if test "$LN_S" = "ln -s" -a ! -f gdbtcl ; then
526 echo linking $srcdir/gdbtcl to gdbtcl
527 $LN_S $srcdir/gdbtcl gdbtcl
528 else
529 echo Warning: Unable to link $srcdir/gdbtcl to gdbtcl. You will need to do a
530 echo " " make install before you are able to run the GUI.
531 fi
532fi
533# end-sanitize-gdbtk
534
535AC_LINK_FILES($files, $links)
536
537dnl Check for exe extension set on certain hosts (e.g. Win32)
538AM_EXEEXT
539
540AC_CONFIG_SUBDIRS($configdirs)
541AC_OUTPUT(Makefile .gdbinit:gdbinit.in,
542[
543dnl Autoconf doesn't provide a mechanism for modifying definitions
544dnl provided by makefile fragments.
545dnl
546if test "${nativefile}" = ""; then
547sed -e '/^NATDEPFILES[[ ]]*=[[ ]]*/s//# NATDEPFILES=/' \
548 < Makefile > Makefile.tem
549mv -f Makefile.tem Makefile
550fi
551
552changequote(,)dnl
553sed -e '/^TM_FILE[ ]*=/s,^TM_FILE[ ]*=[ ]*,&config/'"${gdb_target_cpu}"'/,
554/^XM_FILE[ ]*=/s,^XM_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,
555/^NAT_FILE[ ]*=/s,^NAT_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,' <Makefile >Makefile.tmp
556mv -f Makefile.tmp Makefile
557changequote([,])dnl
558
559case x$CONFIG_HEADERS in
560xconfig.h:config.in)
561echo > stamp-h ;;
562esac
563],
564[
565gdb_host_cpu=$gdb_host_cpu
566gdb_target_cpu=$gdb_target_cpu
567nativefile=$nativefile
568])
569
570exit 0
571
This page took 0.023985 seconds and 4 git commands to generate.