]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/gdbserver/configure.ac
bfd/
[thirdparty/binutils-gdb.git] / gdb / gdbserver / configure.ac
CommitLineData
d6e9fb05 1dnl Autoconf configure script for GDB server.
28e7fd62 2dnl Copyright (C) 2000-2013 Free Software Foundation, Inc.
d6e9fb05
JK
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
5a0e3bd0 8dnl the Free Software Foundation; either version 3 of the License, or
d6e9fb05
JK
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
5a0e3bd0 17dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
d6e9fb05
JK
18
19dnl Process this file with autoconf to produce a configure script.
20
bec39cab
AC
21AC_PREREQ(2.59)dnl
22
d6e9fb05 23AC_INIT(server.c)
84563040 24AC_CONFIG_HEADER(config.h:config.in)
c9a1864a
YQ
25
26AM_MAINTAINER_MODE
84563040
DJ
27
28AC_PROG_CC
fd462a61 29AC_GNU_SOURCE
d6e9fb05
JK
30
31AC_CANONICAL_SYSTEM
84563040 32
d6e9fb05 33AC_PROG_INSTALL
c971b7fa 34AC_PROG_RANLIB
c906108c 35
dcdb98d2
DJ
36AC_ARG_PROGRAM
37
ee6e2b82 38AC_HEADER_STDC
d26e3629 39AC_HEADER_DIRENT
84563040 40
a1723c35 41AC_FUNC_ALLOCA
c9a1864a 42
61c125b9
TT
43# Dependency checking.
44ZW_CREATE_DEPDIR
45ZW_PROG_COMPILER_DEPENDENCIES([CC])
46
c9a1864a
YQ
47# Check for the 'make' the user wants to use.
48AC_CHECK_PROGS(MAKE, make)
61c125b9
TT
49MAKE_IS_GNU=
50case "`$MAKE --version 2>&1 | sed 1q`" in
51 *GNU*)
52 MAKE_IS_GNU=yes
53 ;;
54esac
55AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes)
56AC_PROG_MAKE_SET
c9a1864a 57
c971b7fa
PA
58# Configure gnulib. We can't use AC_CONFIG_SUBDIRS as that'd expect
59# to find the the source subdir to be configured directly under
60# gdbserver/. We need to build gnulib under some other directory not
61# "gnulib", to avoid the problem of both GDB and GDBserver wanting to
62# build it in the same directory, when building in the source dir.
63ACX_CONFIGURE_DIR(["../gnulib"], ["build-gnulib-gdbserver"])
64
0d62e5e8 65AC_CHECK_HEADERS(sgtty.h termio.h termios.h sys/reg.h string.h dnl
94e10508 66 proc_service.h sys/procfs.h thread_db.h linux/elf.h dnl
b80864fb 67 stdlib.h unistd.h dnl
1b3f6016 68 errno.h fcntl.h signal.h sys/file.h malloc.h dnl
61ff6e04 69 sys/ioctl.h netinet/in.h sys/socket.h netdb.h dnl
945bf713
MM
70 netinet/tcp.h arpa/inet.h sys/wait.h wait.h sys/un.h dnl
71 linux/perf_event.h)
f8255c2a 72AC_CHECK_FUNCS(pread pwrite pread64 readlink)
c9a1864a 73AC_REPLACE_FUNCS(vasprintf vsnprintf)
84563040 74
0fb4aa4b
PA
75# Check for UST
76ustlibs=""
77ustinc=""
78
79AC_ARG_WITH(ust, [ --with-ust=PATH Specify prefix directory for the installed UST package
80 Equivalent to --with-ust-include=PATH/include
81 plus --with-ust-lib=PATH/lib])
82AC_ARG_WITH(ust_include, [ --with-ust-include=PATH Specify directory for installed UST include files])
83AC_ARG_WITH(ust_lib, [ --with-ust-lib=PATH Specify the directory for the installed UST library])
84
85case $with_ust in
86 no)
87 ustlibs=
88 ustinc=
89 ;;
90 "" | yes)
91 ustlibs=" -lust "
92 ustinc=""
93 ;;
94 *)
95 ustlibs="-L$with_ust/lib -lust"
96 ustinc="-I$with_ust/include "
97 ;;
98esac
99if test "x$with_ust_include" != x; then
100 ustinc="-I$with_ust_include "
101fi
102if test "x$with_ust_lib" != x; then
103 ustlibs="-L$with_ust_lib -lust"
104fi
105
106if test "x$with_ust" != "xno"; then
107 saved_CFLAGS="$CFLAGS"
108 CFLAGS="$CFLAGS $ustinc"
109 AC_MSG_CHECKING([for ust])
110 AC_TRY_COMPILE([
111#define CONFIG_UST_GDB_INTEGRATION
112#include <ust/ust.h>
113 ],[],
114 [AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_UST, 1, [Define if UST is available])],
115 [AC_MSG_RESULT([no]); ustlibs= ; ustinc= ])
116 CFLAGS="$saved_CFLAGS"
117fi
118
119# Flags needed for UST
120AC_SUBST(ustlibs)
121AC_SUBST(ustinc)
122
d4596a3d
PA
123AC_ARG_ENABLE(werror,
124 AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]),
125 [case "${enableval}" in
126 yes | y) ERROR_ON_WARNING="yes" ;;
127 no | n) ERROR_ON_WARNING="no" ;;
128 *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;;
129 esac])
130
131# Enable -Werror by default when using gcc
132if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
133 ERROR_ON_WARNING=yes
134fi
135
136WERROR_CFLAGS=""
137if test "${ERROR_ON_WARNING}" = yes ; then
138 WERROR_CFLAGS="-Werror"
139fi
140
141build_warnings="-Wall -Wdeclaration-after-statement -Wpointer-arith \
8c29b58e 142-Wformat-nonliteral -Wno-char-subscripts -Wempty-body"
d4596a3d
PA
143
144WARN_CFLAGS=""
145if test "x$GCC" = xyes
146then
147 AC_MSG_CHECKING(compiler warning flags)
148 # Separate out the -Werror flag as some files just cannot be
149 # compiled with it enabled.
150 for w in ${build_warnings}; do
151 case $w in
152 -Werr*) WERROR_CFLAGS=-Werror ;;
153 *) # Check that GCC accepts it
154 saved_CFLAGS="$CFLAGS"
155 CFLAGS="$CFLAGS $w"
156 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
157 CFLAGS="$saved_CFLAGS"
158 esac
159 done
160 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
161fi
162AC_SUBST(WARN_CFLAGS)
163AC_SUBST(WERROR_CFLAGS)
164
10e86dd7
DE
165dnl dladdr is glibc-specific. It is used by thread-db.c but only for
166dnl debugging messages. It lives in -ldl which is handled below so we don't
167dnl use AC_CHECK_LIB (or AC_SEARCH_LIBS) here. Instead we just temporarily
168dnl augment LIBS.
169old_LIBS="$LIBS"
170LIBS="$LIBS -ldl"
171AC_CHECK_FUNCS(dladdr)
172LIBS="$old_LIBS"
173
68070c10
PA
174have_errno=no
175AC_MSG_CHECKING(for errno)
176AC_TRY_LINK([
177#if HAVE_ERRNO_H
178#include <errno.h>
179#endif], [static int x; x = errno;],
180 [AC_MSG_RESULT(yes - in errno.h); AC_DEFINE(HAVE_ERRNO, 1, [Define if errno is available]) have_errno=yes])
181if test $have_errno = no; then
182AC_TRY_LINK([
183#if HAVE_ERRNO_H
184#include <errno.h>
185#endif], [extern int errno; static int x; x = errno;],
186 [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])],
187 [AC_MSG_RESULT(no)])
188fi
189
e6712ff1 190AC_CHECK_DECLS([strerror, strstr, perror, vasprintf, vsnprintf])
43d5792c 191
ccbd4912
MK
192AC_CHECK_TYPES(socklen_t, [], [],
193[#include <sys/types.h>
194#include <sys/socket.h>
195])
fb1e4ffc 196
8365dcf5
TJB
197AC_CHECK_TYPES([Elf32_auxv_t, Elf64_auxv_t], [], [],
198#include <elf.h>
199)
200
c16158bc
JM
201ACX_PKGVERSION([GDB])
202ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
203AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
204AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
205
8838b45e
NS
206# Check for various supplementary target information (beyond the
207# triplet) which might affect the choices in configure.srv.
208case "${target}" in
209changequote(,)dnl
210 i[34567]86-*-linux*)
211changequote([,])dnl
212 AC_CACHE_CHECK([if building for x86-64], [gdb_cv_i386_is_x86_64],
213 [save_CPPFLAGS="$CPPFLAGS"
214 CPPFLAGS="$CPPFLAGS $CFLAGS"
215 AC_EGREP_CPP([got it], [
216#if __x86_64__
217got it
218#endif
219 ], [gdb_cv_i386_is_x86_64=yes],
220 [gdb_cv_i386_is_x86_64=no])
221 CPPFLAGS="$save_CPPFLAGS"])
222 ;;
9ac544ce
MK
223 m68k-*-*)
224 AC_CACHE_CHECK([if building for Coldfire], [gdb_cv_m68k_is_coldfire],
225 [save_CPPFLAGS="$CPPFLAGS"
226 CPPFLAGS="$CPPFLAGS $CFLAGS"
227 AC_EGREP_CPP([got it], [
228#ifdef __mcoldfire__
229got it
230#endif
231 ], [gdb_cv_m68k_is_coldfire=yes],
232 [gdb_cv_m68k_is_coldfire=no])
233 CPPFLAGS="$save_CPPFLAGS"])
234 ;;
8838b45e
NS
235esac
236
7ea81414 237. ${srcdir}/configure.srv
c906108c 238
68070c10
PA
239if test "${srv_mingwce}" = "yes"; then
240 LIBS="$LIBS -lws2"
241elif test "${srv_mingw}" = "yes"; then
12ea4b69 242 LIBS="$LIBS -lws2_32"
ac8c974e
AR
243elif test "${srv_qnx}" = "yes"; then
244 LIBS="$LIBS -lsocket"
8ed54b31
JB
245elif test "${srv_lynxos}" = "yes"; then
246 LIBS="$LIBS -lnetinet"
68070c10
PA
247fi
248
249if test "${srv_mingw}" = "yes"; then
b80864fb
DJ
250 AC_DEFINE(USE_WIN32API, 1,
251 [Define if we should use the Windows API, instead of the
252 POSIX API. On Windows, we use the Windows API when
253 building for MinGW, but the POSIX API when building
254 for Cygwin.])
255fi
256
58caa3dc 257if test "${srv_linux_usrregs}" = "yes"; then
f450004a
DJ
258 AC_DEFINE(HAVE_LINUX_USRREGS, 1,
259 [Define if the target supports PTRACE_PEEKUSR for register ]
260 [access.])
58caa3dc
DJ
261fi
262
263if test "${srv_linux_regsets}" = "yes"; then
e9d25b98
DJ
264 AC_DEFINE(HAVE_LINUX_REGSETS, 1,
265 [Define if the target supports register sets.])
266
58caa3dc
DJ
267 AC_MSG_CHECKING(for PTRACE_GETREGS)
268 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getregs,
269 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
270 [PTRACE_GETREGS;],
271 [gdbsrv_cv_have_ptrace_getregs=yes],
272 [gdbsrv_cv_have_ptrace_getregs=no])])
273 AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getregs)
274 if test "${gdbsrv_cv_have_ptrace_getregs}" = "yes"; then
e9d25b98 275 AC_DEFINE(HAVE_PTRACE_GETREGS, 1,
f450004a
DJ
276 [Define if the target supports PTRACE_GETREGS for register ]
277 [access.])
58caa3dc
DJ
278 fi
279
280 AC_MSG_CHECKING(for PTRACE_GETFPXREGS)
281 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getfpxregs,
282 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
283 [PTRACE_GETFPXREGS;],
284 [gdbsrv_cv_have_ptrace_getfpxregs=yes],
285 [gdbsrv_cv_have_ptrace_getfpxregs=no])])
286 AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getfpxregs)
287 if test "${gdbsrv_cv_have_ptrace_getfpxregs}" = "yes"; then
f450004a
DJ
288 AC_DEFINE(HAVE_PTRACE_GETFPXREGS, 1,
289 [Define if the target supports PTRACE_GETFPXREGS for extended ]
290 [register access.])
58caa3dc
DJ
291 fi
292fi
293
0d62e5e8
DJ
294if test "$ac_cv_header_sys_procfs_h" = yes; then
295 BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
296 BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
297 BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
0d62e5e8
DJ
298 BFD_HAVE_SYS_PROCFS_TYPE(elf_fpregset_t)
299fi
300
18f5fd81
TJB
301dnl Some systems (e.g., Android) have lwpid_t defined in libthread_db.h.
302if test "$bfd_cv_have_sys_procfs_type_lwpid_t" != yes; then
303 GDBSERVER_HAVE_THREAD_DB_TYPE(lwpid_t)
304fi
305
306dnl Some systems (e.g., Android) have psaddr_t defined in libthread_db.h.
307if test "$bfd_cv_have_sys_procfs_type_psaddr_t" != yes; then
308 GDBSERVER_HAVE_THREAD_DB_TYPE(psaddr_t)
309fi
310
193f13e6
MK
311dnl Check for libdl, but do not add it to LIBS as only gdbserver
312dnl needs it (and gdbreplay doesn't).
313old_LIBS="$LIBS"
314AC_CHECK_LIB(dl, dlopen)
315LIBS="$old_LIBS"
316
0d62e5e8
DJ
317srv_thread_depfiles=
318srv_libs=
319USE_THREAD_DB=
320
321if test "$srv_linux_thread_db" = "yes"; then
193f13e6
MK
322 if test "$ac_cv_lib_dl_dlopen" = "yes"; then
323 srv_libs="-ldl"
f6528abd 324 AC_MSG_CHECKING(for the dynamic export flag)
193f13e6 325 old_LDFLAGS="$LDFLAGS"
f6528abd
JK
326 # Older GNU ld supports --export-dynamic but --dynamic-list may not be
327 # supported there.
328 RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
329 LDFLAGS="$LDFLAGS $RDYNAMIC"
330 AC_TRY_LINK([], [],
331 [found="-Wl,--dynamic-list"
332 RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'],
333 [RDYNAMIC="-rdynamic"
334 LDFLAGS="$old_LDFLAGS $RDYNAMIC"
335 AC_TRY_LINK([], [],
336 [found="-rdynamic"],
337 [found="no"
338 RDYNAMIC=""])])
193f13e6
MK
339 AC_SUBST(RDYNAMIC)
340 LDFLAGS="$old_LDFLAGS"
f6528abd 341 AC_MSG_RESULT($found)
193f13e6
MK
342 else
343 srv_libs="-lthread_db"
344 fi
0d62e5e8 345
0d62e5e8
DJ
346 srv_thread_depfiles="thread-db.o proc-service.o"
347 USE_THREAD_DB="-DUSE_THREAD_DB"
3db0444b
DJ
348 AC_CACHE_CHECK([for TD_VERSION], gdbsrv_cv_have_td_version,
349 [AC_TRY_COMPILE([#include <thread_db.h>], [TD_VERSION;],
1b3f6016
PA
350 [gdbsrv_cv_have_td_version=yes],
351 [gdbsrv_cv_have_td_version=no])])
3db0444b
DJ
352 if test $gdbsrv_cv_have_td_version = yes; then
353 AC_DEFINE(HAVE_TD_VERSION, 1, [Define if TD_VERSION is available.])
354 fi
0d62e5e8
DJ
355fi
356
96f15937
PP
357AC_ARG_WITH(libthread-db,
358AS_HELP_STRING([--with-libthread-db=PATH], [use given libthread_db directly]),
359[srv_libthread_db_path="${withval}"
96f15937
PP
360 srv_libs="$srv_libthread_db_path"
361])
362
193f13e6
MK
363if test "$srv_libs" != "" -a "$srv_libs" != "-ldl"; then
364 AC_DEFINE(USE_LIBTHREAD_DB_DIRECTLY, 1, [Define if we should use libthread_db directly.])
365fi
366
9b4b61c8 367if test "$srv_xmlfiles" != ""; then
fb1e4ffc
DJ
368 srv_xmlbuiltin="xml-builtin.o"
369 AC_DEFINE(USE_XML, 1, [Define if an XML target description is available.])
370
371 tmp_xmlfiles=$srv_xmlfiles
9b4b61c8 372 srv_xmlfiles=""
fb1e4ffc
DJ
373 for f in $tmp_xmlfiles; do
374 srv_xmlfiles="$srv_xmlfiles \$(XML_DIR)/$f"
375 done
376fi
377
59a016f0 378GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles"
0d62e5e8 379GDBSERVER_LIBS="$srv_libs"
c906108c 380
fa593d66
PA
381dnl Check whether the target supports __sync_*_compare_and_swap.
382AC_CACHE_CHECK([whether the target supports __sync_*_compare_and_swap],
383 gdbsrv_cv_have_sync_builtins, [
384AC_TRY_LINK([], [int foo, bar; bar = __sync_val_compare_and_swap(&foo, 0, 1);],
385 gdbsrv_cv_have_sync_builtins=yes,
386 gdbsrv_cv_have_sync_builtins=no)])
387if test $gdbsrv_cv_have_sync_builtins = yes; then
388 AC_DEFINE(HAVE_SYNC_BUILTINS, 1,
389 [Define to 1 if the target supports __sync_*_compare_and_swap])
390fi
391
392dnl Check for -fvisibility=hidden support in the compiler.
393saved_cflags="$CFLAGS"
394CFLAGS="$CFLAGS -fvisibility=hidden"
395AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),
396 [gdbsrv_cv_have_visibility_hidden=yes],
397 [gdbsrv_cv_have_visibility_hidden=no])
398CFLAGS="$saved_cflags"
399
03583c20
UW
400dnl Check if we can disable the virtual address space randomization.
401dnl The functionality of setarch -R.
402AC_CHECK_DECLS([ADDR_NO_RANDOMIZE],,, [#include <sys/personality.h>])
403define([PERSONALITY_TEST], [AC_LANG_PROGRAM([#include <sys/personality.h>], [
404# if !HAVE_DECL_ADDR_NO_RANDOMIZE
405# define ADDR_NO_RANDOMIZE 0x0040000
406# endif
407 /* Test the flag could be set and stays set. */
408 personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
409 if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
410 return 1])])
411AC_RUN_IFELSE([PERSONALITY_TEST],
412 [gdbsrv_cv_have_personality=true],
413 [gdbsrv_cv_have_personality=false],
414 [AC_LINK_IFELSE([PERSONALITY_TEST],
415 [gdbsrv_cv_have_personality=true],
416 [gdbsrv_cv_have_personality=false])])
417if $gdbsrv_cv_have_personality
418then
419 AC_DEFINE([HAVE_PERSONALITY], 1,
420 [Define if you support the personality syscall.])
421fi
422
c2a66c29 423
fa593d66 424IPA_DEPFILES=""
c2a66c29 425extra_libraries=""
fa593d66 426
c2a66c29 427# check whether to enable the inprocess agent
fa593d66
PA
428if test "$ipa_obj" != "" \
429 -a "$gdbsrv_cv_have_sync_builtins" = yes \
430 -a "$gdbsrv_cv_have_visibility_hidden" = yes; then
c2a66c29
NS
431 have_ipa=true
432else
433 have_ipa=false
434fi
435
436AC_ARG_ENABLE(inprocess-agent,
437AS_HELP_STRING([--enable-inprocess-agent], [inprocess agent]),
438[case "$enableval" in
439 yes) want_ipa=true ;;
440 no) want_ipa=false ;;
441 *) AC_MSG_ERROR([bad value $enableval for inprocess-agent]) ;;
442esac],
443[want_ipa=$have_ipa])
444
445if $want_ipa ; then
446 if $have_ipa ; then
447 IPA_DEPFILES="$ipa_obj"
448 extra_libraries="$extra_libraries libinproctrace.so"
449 else
450 AC_MSG_ERROR([inprocess agent not supported for this target])
451 fi
fa593d66
PA
452fi
453
7ea81414 454AC_SUBST(GDBSERVER_DEPFILES)
0d62e5e8
DJ
455AC_SUBST(GDBSERVER_LIBS)
456AC_SUBST(USE_THREAD_DB)
fb1e4ffc
DJ
457AC_SUBST(srv_xmlbuiltin)
458AC_SUBST(srv_xmlfiles)
fa593d66
PA
459AC_SUBST(IPA_DEPFILES)
460AC_SUBST(extra_libraries)
c906108c 461
c971b7fa 462GNULIB=build-gnulib-gdbserver/import
c9a1864a
YQ
463
464GNULIB_STDINT_H=
465if test x"$STDINT_H" != x; then
c971b7fa 466 GNULIB_STDINT_H=$GNULIB/$STDINT_H
c9a1864a
YQ
467fi
468AC_SUBST(GNULIB_STDINT_H)
469
c971b7fa 470AC_OUTPUT(Makefile,
c3a3ccc7
DJ
471[case x$CONFIG_HEADERS in
472xconfig.h:config.in)
473echo > stamp-h ;;
474esac
475])