* Makefile.in (LIBGNU, INCGNU): Define.
[external/binutils.git] / gdb / gdbserver / configure.ac
1 dnl Autoconf configure script for GDB server.
2 dnl Copyright (C) 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008
3 dnl Free Software Foundation, Inc.
4 dnl
5 dnl This file is part of GDB.
6 dnl
7 dnl This program is free software; you can redistribute it and/or modify
8 dnl it under the terms of the GNU General Public License as published by
9 dnl the Free Software Foundation; either version 3 of the License, or
10 dnl (at your option) any later version.
11 dnl
12 dnl This program is distributed in the hope that it will be useful,
13 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
14 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 dnl GNU General Public License for more details.
16 dnl
17 dnl You should have received a copy of the GNU General Public License
18 dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
20 dnl Process this file with autoconf to produce a configure script.
21
22 AC_PREREQ(2.59)dnl
23
24 AC_INIT(server.c)
25 AC_CONFIG_HEADER(config.h:config.in)
26 AC_CONFIG_LIBOBJ_DIR(../gnulib)
27
28 AC_PROG_CC
29 AC_GNU_SOURCE
30
31 AC_CANONICAL_SYSTEM
32
33 AC_PROG_INSTALL
34
35 AC_ARG_PROGRAM
36
37 AC_HEADER_STDC
38
39 AC_CHECK_HEADERS(sgtty.h termio.h termios.h sys/reg.h string.h dnl
40                  proc_service.h sys/procfs.h thread_db.h linux/elf.h dnl
41                  stdlib.h unistd.h dnl
42                  errno.h fcntl.h signal.h sys/file.h malloc.h dnl
43                  sys/ioctl.h netinet/in.h sys/socket.h netdb.h dnl
44                  netinet/tcp.h arpa/inet.h sys/wait.h)
45 AC_CHECK_FUNCS(pread pwrite pread64)
46 AC_REPLACE_FUNCS(memmem)
47
48 have_errno=no
49 AC_MSG_CHECKING(for errno)
50 AC_TRY_LINK([
51 #if HAVE_ERRNO_H
52 #include <errno.h>
53 #endif], [static int x; x = errno;],
54   [AC_MSG_RESULT(yes - in errno.h); AC_DEFINE(HAVE_ERRNO, 1, [Define if errno is available]) have_errno=yes])
55 if test $have_errno = no; then
56 AC_TRY_LINK([
57 #if HAVE_ERRNO_H
58 #include <errno.h>
59 #endif], [extern int errno; static int x; x = errno;],
60   [AC_MSG_RESULT(yes - must define); AC_DEFINE(HAVE_ERRNO, 1, [Define if errno is available]) AC_DEFINE(MUST_DEFINE_ERRNO, 1, [Checking if errno must be defined])],
61   [AC_MSG_RESULT(no)])
62 fi
63
64 AC_CHECK_DECLS([strerror, perror])
65
66 AC_CHECK_TYPES(socklen_t, [], [],
67 [#include <sys/types.h>
68 #include <sys/socket.h>
69 ])
70
71 . ${srcdir}/configure.srv
72
73 if test "${srv_mingwce}" = "yes"; then
74   LIBS="$LIBS -lws2"
75 elif test "${srv_mingw}" = "yes"; then
76   LIBS="$LIBS -lwsock32"
77 fi
78
79 if test "${srv_mingw}" = "yes"; then
80   AC_DEFINE(USE_WIN32API, 1,
81             [Define if we should use the Windows API, instead of the
82              POSIX API.  On Windows, we use the Windows API when
83              building for MinGW, but the POSIX API when building
84              for Cygwin.])
85 fi
86
87 if test "${srv_linux_usrregs}" = "yes"; then
88   AC_DEFINE(HAVE_LINUX_USRREGS, 1,
89             [Define if the target supports PTRACE_PEEKUSR for register ]
90             [access.])
91 fi
92
93 if test "${srv_linux_regsets}" = "yes"; then
94   AC_DEFINE(HAVE_LINUX_REGSETS, 1,
95             [Define if the target supports register sets.])
96
97   AC_MSG_CHECKING(for PTRACE_GETREGS)
98   AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getregs,
99   [AC_TRY_COMPILE([#include <sys/ptrace.h>],
100                   [PTRACE_GETREGS;],
101                   [gdbsrv_cv_have_ptrace_getregs=yes],
102                   [gdbsrv_cv_have_ptrace_getregs=no])])
103   AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getregs)
104   if test "${gdbsrv_cv_have_ptrace_getregs}" = "yes"; then
105     AC_DEFINE(HAVE_PTRACE_GETREGS, 1,
106               [Define if the target supports PTRACE_GETREGS for register ]
107               [access.])
108   fi
109
110   AC_MSG_CHECKING(for PTRACE_GETFPXREGS)
111   AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getfpxregs,
112   [AC_TRY_COMPILE([#include <sys/ptrace.h>],
113                   [PTRACE_GETFPXREGS;],
114                   [gdbsrv_cv_have_ptrace_getfpxregs=yes],
115                   [gdbsrv_cv_have_ptrace_getfpxregs=no])])
116   AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getfpxregs)
117   if test "${gdbsrv_cv_have_ptrace_getfpxregs}" = "yes"; then
118     AC_DEFINE(HAVE_PTRACE_GETFPXREGS, 1,
119               [Define if the target supports PTRACE_GETFPXREGS for extended ]
120               [register access.])
121   fi
122 fi
123
124 if test "$ac_cv_header_sys_procfs_h" = yes; then
125   BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
126   BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
127   BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
128   BFD_HAVE_SYS_PROCFS_TYPE(elf_fpregset_t)
129 fi
130
131 srv_thread_depfiles=
132 srv_libs=
133 USE_THREAD_DB=
134
135 if test "$srv_linux_thread_db" = "yes"; then
136   SRV_CHECK_THREAD_DB
137   if test "$srv_cv_thread_db" = no; then
138     AC_WARN([Could not find libthread_db.])
139     AC_WARN([Disabling thread support in gdbserver.])
140     srv_linux_thread_db=no
141   else
142     srv_libs="$srv_cv_thread_db"
143     SRV_CHECK_TLS_GET_ADDR
144   fi
145   old_LDFLAGS="$LDFLAGS"
146   LDFLAGS="$LDFLAGS -rdynamic"
147   AC_TRY_LINK([], [], [RDYNAMIC=-rdynamic], [RDYNAMIC=])
148   AC_SUBST(RDYNAMIC)
149   LDFLAGS="$old_LDFLAGS"
150 fi
151
152 if test "$srv_linux_thread_db" = "yes"; then
153   srv_thread_depfiles="thread-db.o proc-service.o"
154   USE_THREAD_DB="-DUSE_THREAD_DB"
155   AC_CACHE_CHECK([for TD_VERSION], gdbsrv_cv_have_td_version,
156   [AC_TRY_COMPILE([#include <thread_db.h>], [TD_VERSION;],
157                   [gdbsrv_cv_have_td_version=yes],
158                   [gdbsrv_cv_have_td_version=no])])
159   if test $gdbsrv_cv_have_td_version = yes; then
160     AC_DEFINE(HAVE_TD_VERSION, 1, [Define if TD_VERSION is available.])
161   fi
162
163   if test "$srv_cv_tls_get_addr" = yes; then
164     AC_DEFINE(HAVE_TD_THR_TLS_GET_ADDR, 1, [Define if td_thr_tls_get_addr is available.])
165   fi
166 fi
167
168 if test "$srv_xmlfiles" != ""; then
169   srv_xmlbuiltin="xml-builtin.o"
170   AC_DEFINE(USE_XML, 1, [Define if an XML target description is available.])
171
172   tmp_xmlfiles=$srv_xmlfiles
173   srv_xmlfiles=""
174   for f in $tmp_xmlfiles; do
175     srv_xmlfiles="$srv_xmlfiles \$(XML_DIR)/$f"
176   done
177 fi
178
179 GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles"
180 GDBSERVER_LIBS="$srv_libs"
181
182 AC_SUBST(GDBSERVER_DEPFILES)
183 AC_SUBST(GDBSERVER_LIBS)
184 AC_SUBST(USE_THREAD_DB)
185 AC_SUBST(srv_xmlbuiltin)
186 AC_SUBST(srv_xmlfiles)
187
188 AC_OUTPUT(Makefile,
189 [case x$CONFIG_HEADERS in
190 xconfig.h:config.in)
191 echo > stamp-h ;;
192 esac
193 ])