gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gdbserver / configure.ac
CommitLineData
d6e9fb05 1dnl Autoconf configure script for GDB server.
b811d2c2 2dnl Copyright (C) 2000-2020 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
feacfcac 21AC_INIT(server.cc)
c5adaa19 22AC_CONFIG_HEADERS(config.h:config.in, [echo > stamp-h])
c9a1864a
YQ
23
24AM_MAINTAINER_MODE
84563040
DJ
25
26AC_PROG_CC
3bc3d82a 27AC_PROG_CXX
fd462a61 28AC_GNU_SOURCE
589bc927 29AC_SYS_LARGEFILE
bdaed379 30AM_PROG_INSTALL_STRIP
d6e9fb05
JK
31
32AC_CANONICAL_SYSTEM
84563040 33
d6e9fb05 34AC_PROG_INSTALL
e1d2394b 35AC_CHECK_TOOL(AR, ar)
c971b7fa 36AC_PROG_RANLIB
c906108c 37
dcdb98d2
DJ
38AC_ARG_PROGRAM
39
0bcda685
PA
40# We require a C++11 compiler. Check if one is available, and if
41# necessary, set CXX_DIALECT to some -std=xxx switch.
42AX_CXX_COMPILE_STDCXX(11, , mandatory)
43
ee6e2b82 44AC_HEADER_STDC
84563040 45
db6878ac 46GDB_AC_COMMON
4635ff97
TT
47# This is set by GDB_AC_COMMON.
48AC_SUBST(WIN32APILIBS)
17ef446e 49
4635ff97 50GDB_AC_SELFTEST
6d580b63 51
bd885420
YQ
52ACX_NONCANONICAL_TARGET
53ACX_NONCANONICAL_HOST
54
61c125b9
TT
55# Dependency checking.
56ZW_CREATE_DEPDIR
60d6cfc9 57
9a665d62
TT
58dnl Set up for gettext.
59ZW_GNU_GETTEXT_SISTER_DIR
60
60d6cfc9 61# Create sub-directories for objects and dependencies.
42cd72aa 62CONFIG_SRC_SUBDIR="arch gdbsupport nat target"
60d6cfc9
YQ
63AC_SUBST(CONFIG_SRC_SUBDIR)
64
65AC_CONFIG_COMMANDS([gdbdepdir],[
66 for subdir in ${CONFIG_SRC_SUBDIR}
67 do
68 $SHELL $ac_aux_dir/mkinstalldirs $subdir/$DEPDIR
69 done],
70 [ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR CONFIG_SRC_SUBDIR="$CONFIG_SRC_SUBDIR"])
71
61c125b9
TT
72ZW_PROG_COMPILER_DEPENDENCIES([CC])
73
726e1356 74AC_CHECK_HEADERS(termios.h sys/reg.h string.h dnl
05ea2a05 75 sys/procfs.h linux/elf.h dnl
9c232dda 76 fcntl.h signal.h sys/file.h dnl
80e24d09 77 sys/ioctl.h netinet/in.h sys/socket.h netdb.h dnl
1bd2f0ba 78 netinet/tcp.h arpa/inet.h)
eb0edac8 79AC_FUNC_FORK
05ea2a05 80AC_CHECK_FUNCS(pread pwrite pread64)
84563040 81
eb7aa561
PA
82# Check the return and argument types of ptrace.
83GDB_AC_PTRACE
84
0fb4aa4b
PA
85# Check for UST
86ustlibs=""
87ustinc=""
88
89AC_ARG_WITH(ust, [ --with-ust=PATH Specify prefix directory for the installed UST package
90 Equivalent to --with-ust-include=PATH/include
91 plus --with-ust-lib=PATH/lib])
92AC_ARG_WITH(ust_include, [ --with-ust-include=PATH Specify directory for installed UST include files])
93AC_ARG_WITH(ust_lib, [ --with-ust-lib=PATH Specify the directory for the installed UST library])
94
95case $with_ust in
96 no)
97 ustlibs=
98 ustinc=
99 ;;
100 "" | yes)
101 ustlibs=" -lust "
102 ustinc=""
103 ;;
104 *)
105 ustlibs="-L$with_ust/lib -lust"
106 ustinc="-I$with_ust/include "
107 ;;
108esac
109if test "x$with_ust_include" != x; then
110 ustinc="-I$with_ust_include "
111fi
112if test "x$with_ust_lib" != x; then
113 ustlibs="-L$with_ust_lib -lust"
114fi
115
116if test "x$with_ust" != "xno"; then
117 saved_CFLAGS="$CFLAGS"
118 CFLAGS="$CFLAGS $ustinc"
119 AC_MSG_CHECKING([for ust])
120 AC_TRY_COMPILE([
121#define CONFIG_UST_GDB_INTEGRATION
122#include <ust/ust.h>
123 ],[],
124 [AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_UST, 1, [Define if UST is available])],
125 [AC_MSG_RESULT([no]); ustlibs= ; ustinc= ])
126 CFLAGS="$saved_CFLAGS"
127fi
128
129# Flags needed for UST
130AC_SUBST(ustlibs)
131AC_SUBST(ustinc)
132
8f13a3ce 133AM_GDB_WARNINGS
3bc3d82a 134
10e86dd7
DE
135dnl dladdr is glibc-specific. It is used by thread-db.c but only for
136dnl debugging messages. It lives in -ldl which is handled below so we don't
137dnl use AC_CHECK_LIB (or AC_SEARCH_LIBS) here. Instead we just temporarily
138dnl augment LIBS.
139old_LIBS="$LIBS"
140LIBS="$LIBS -ldl"
141AC_CHECK_FUNCS(dladdr)
142LIBS="$old_LIBS"
143
07697489
PA
144libiberty_INIT
145
ab7d13f0 146AC_CHECK_DECLS([perror, vasprintf, vsnprintf])
43d5792c 147
ccbd4912
MK
148AC_CHECK_TYPES(socklen_t, [], [],
149[#include <sys/types.h>
150#include <sys/socket.h>
151])
fb1e4ffc 152
64da5dd5
JB
153case "${target}" in
154 *-android*)
155 # Starting with NDK version 9, <elf.h> actually includes definitions
156 # of Elf32_auxv_t and Elf64_auxv_t. But sadly, <elf.h> includes
157 # <sys/exec_elf.h> which defines some of the ELF types incorrectly,
158 # leading to conflicts with the defintions from <linux/elf.h>.
159 # This makes it impossible for us to include both <elf.h> and
160 # <linux/elf.h>, which means that, in practice, we do not have
161 # access to Elf32_auxv_t and Elf64_auxv_t on this platform.
162 # Therefore, do not try to auto-detect availability, as it would
163 # get it wrong on this platform.
164 ;;
165 *)
166 AC_CHECK_TYPES([Elf32_auxv_t, Elf64_auxv_t], [], [],
167 #include <elf.h>
168 )
169esac
8365dcf5 170
c16158bc
JM
171ACX_PKGVERSION([GDB])
172ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
173AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
174AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
175
8838b45e
NS
176# Check for various supplementary target information (beyond the
177# triplet) which might affect the choices in configure.srv.
178case "${target}" in
179changequote(,)dnl
180 i[34567]86-*-linux*)
181changequote([,])dnl
182 AC_CACHE_CHECK([if building for x86-64], [gdb_cv_i386_is_x86_64],
183 [save_CPPFLAGS="$CPPFLAGS"
184 CPPFLAGS="$CPPFLAGS $CFLAGS"
185 AC_EGREP_CPP([got it], [
186#if __x86_64__
187got it
188#endif
189 ], [gdb_cv_i386_is_x86_64=yes],
190 [gdb_cv_i386_is_x86_64=no])
191 CPPFLAGS="$save_CPPFLAGS"])
192 ;;
201506da
PA
193
194 x86_64-*-linux*)
195 AC_CACHE_CHECK([if building for x32], [gdb_cv_x86_is_x32],
196 [save_CPPFLAGS="$CPPFLAGS"
197 CPPFLAGS="$CPPFLAGS $CFLAGS"
198 AC_EGREP_CPP([got it], [
199#if __x86_64__ && __ILP32__
200got it
201#endif
202 ], [gdb_cv_x86_is_x32=yes],
203 [gdb_cv_x86_is_x32=no])
204 CPPFLAGS="$save_CPPFLAGS"])
205 ;;
206
9ac544ce
MK
207 m68k-*-*)
208 AC_CACHE_CHECK([if building for Coldfire], [gdb_cv_m68k_is_coldfire],
209 [save_CPPFLAGS="$CPPFLAGS"
210 CPPFLAGS="$CPPFLAGS $CFLAGS"
211 AC_EGREP_CPP([got it], [
212#ifdef __mcoldfire__
213got it
214#endif
215 ], [gdb_cv_m68k_is_coldfire=yes],
216 [gdb_cv_m68k_is_coldfire=no])
217 CPPFLAGS="$save_CPPFLAGS"])
218 ;;
8838b45e
NS
219esac
220
7ea81414 221. ${srcdir}/configure.srv
c906108c 222
68070c10
PA
223if test "${srv_mingwce}" = "yes"; then
224 LIBS="$LIBS -lws2"
225elif test "${srv_mingw}" = "yes"; then
b2ceabe8
TT
226 # WIN32APILIBS is set by GDB_AC_COMMON.
227 LIBS="$LIBS $WIN32APILIBS"
ac8c974e
AR
228elif test "${srv_qnx}" = "yes"; then
229 LIBS="$LIBS -lsocket"
8ed54b31
JB
230elif test "${srv_lynxos}" = "yes"; then
231 LIBS="$LIBS -lnetinet"
68070c10
PA
232fi
233
58caa3dc 234if test "${srv_linux_usrregs}" = "yes"; then
f450004a
DJ
235 AC_DEFINE(HAVE_LINUX_USRREGS, 1,
236 [Define if the target supports PTRACE_PEEKUSR for register ]
237 [access.])
58caa3dc
DJ
238fi
239
240if test "${srv_linux_regsets}" = "yes"; then
e9d25b98
DJ
241 AC_DEFINE(HAVE_LINUX_REGSETS, 1,
242 [Define if the target supports register sets.])
243
58caa3dc
DJ
244 AC_MSG_CHECKING(for PTRACE_GETREGS)
245 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getregs,
246 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
247 [PTRACE_GETREGS;],
248 [gdbsrv_cv_have_ptrace_getregs=yes],
249 [gdbsrv_cv_have_ptrace_getregs=no])])
250 AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getregs)
251 if test "${gdbsrv_cv_have_ptrace_getregs}" = "yes"; then
e9d25b98 252 AC_DEFINE(HAVE_PTRACE_GETREGS, 1,
f450004a
DJ
253 [Define if the target supports PTRACE_GETREGS for register ]
254 [access.])
58caa3dc
DJ
255 fi
256
257 AC_MSG_CHECKING(for PTRACE_GETFPXREGS)
258 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getfpxregs,
259 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
260 [PTRACE_GETFPXREGS;],
261 [gdbsrv_cv_have_ptrace_getfpxregs=yes],
262 [gdbsrv_cv_have_ptrace_getfpxregs=no])])
263 AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getfpxregs)
264 if test "${gdbsrv_cv_have_ptrace_getfpxregs}" = "yes"; then
f450004a
DJ
265 AC_DEFINE(HAVE_PTRACE_GETFPXREGS, 1,
266 [Define if the target supports PTRACE_GETFPXREGS for extended ]
267 [register access.])
58caa3dc
DJ
268 fi
269fi
270
9accd112
MM
271if test "${srv_linux_btrace}" = "yes"; then
272 AC_DEFINE(HAVE_LINUX_BTRACE, 1,
273 [Define if the target supports branch tracing.])
274fi
275
18f5fd81
TJB
276dnl Some systems (e.g., Android) have lwpid_t defined in libthread_db.h.
277if test "$bfd_cv_have_sys_procfs_type_lwpid_t" != yes; then
278 GDBSERVER_HAVE_THREAD_DB_TYPE(lwpid_t)
279fi
280
281dnl Some systems (e.g., Android) have psaddr_t defined in libthread_db.h.
282if test "$bfd_cv_have_sys_procfs_type_psaddr_t" != yes; then
283 GDBSERVER_HAVE_THREAD_DB_TYPE(psaddr_t)
284fi
285
193f13e6
MK
286dnl Check for libdl, but do not add it to LIBS as only gdbserver
287dnl needs it (and gdbreplay doesn't).
288old_LIBS="$LIBS"
289AC_CHECK_LIB(dl, dlopen)
290LIBS="$old_LIBS"
291
0d62e5e8
DJ
292srv_thread_depfiles=
293srv_libs=
0d62e5e8
DJ
294
295if test "$srv_linux_thread_db" = "yes"; then
193f13e6
MK
296 if test "$ac_cv_lib_dl_dlopen" = "yes"; then
297 srv_libs="-ldl"
f6528abd 298 AC_MSG_CHECKING(for the dynamic export flag)
193f13e6 299 old_LDFLAGS="$LDFLAGS"
f6528abd
JK
300 # Older GNU ld supports --export-dynamic but --dynamic-list may not be
301 # supported there.
302 RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
303 LDFLAGS="$LDFLAGS $RDYNAMIC"
304 AC_TRY_LINK([], [],
305 [found="-Wl,--dynamic-list"
306 RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'],
307 [RDYNAMIC="-rdynamic"
308 LDFLAGS="$old_LDFLAGS $RDYNAMIC"
309 AC_TRY_LINK([], [],
310 [found="-rdynamic"],
311 [found="no"
312 RDYNAMIC=""])])
193f13e6
MK
313 AC_SUBST(RDYNAMIC)
314 LDFLAGS="$old_LDFLAGS"
f6528abd 315 AC_MSG_RESULT($found)
193f13e6
MK
316 else
317 srv_libs="-lthread_db"
318 fi
0d62e5e8 319
0d62e5e8 320 srv_thread_depfiles="thread-db.o proc-service.o"
7d4e5717 321 AC_DEFINE(USE_THREAD_DB, 1, [Define if we should use libthread_db.])
3db0444b
DJ
322 AC_CACHE_CHECK([for TD_VERSION], gdbsrv_cv_have_td_version,
323 [AC_TRY_COMPILE([#include <thread_db.h>], [TD_VERSION;],
1b3f6016
PA
324 [gdbsrv_cv_have_td_version=yes],
325 [gdbsrv_cv_have_td_version=no])])
0ad6b8ee 326 if test "$gdbsrv_cv_have_td_version" = yes; then
3db0444b
DJ
327 AC_DEFINE(HAVE_TD_VERSION, 1, [Define if TD_VERSION is available.])
328 fi
0d62e5e8
DJ
329fi
330
96f15937
PP
331AC_ARG_WITH(libthread-db,
332AS_HELP_STRING([--with-libthread-db=PATH], [use given libthread_db directly]),
333[srv_libthread_db_path="${withval}"
96f15937
PP
334 srv_libs="$srv_libthread_db_path"
335])
336
193f13e6
MK
337if test "$srv_libs" != "" -a "$srv_libs" != "-ldl"; then
338 AC_DEFINE(USE_LIBTHREAD_DB_DIRECTLY, 1, [Define if we should use libthread_db directly.])
339fi
340
9b4b61c8 341if test "$srv_xmlfiles" != ""; then
fb1e4ffc
DJ
342 srv_xmlbuiltin="xml-builtin.o"
343 AC_DEFINE(USE_XML, 1, [Define if an XML target description is available.])
344
345 tmp_xmlfiles=$srv_xmlfiles
9b4b61c8 346 srv_xmlfiles=""
fb1e4ffc
DJ
347 for f in $tmp_xmlfiles; do
348 srv_xmlfiles="$srv_xmlfiles \$(XML_DIR)/$f"
349 done
350fi
351
4635ff97 352GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles"
0d62e5e8 353GDBSERVER_LIBS="$srv_libs"
c906108c 354
fa593d66
PA
355dnl Check whether the target supports __sync_*_compare_and_swap.
356AC_CACHE_CHECK([whether the target supports __sync_*_compare_and_swap],
357 gdbsrv_cv_have_sync_builtins, [
358AC_TRY_LINK([], [int foo, bar; bar = __sync_val_compare_and_swap(&foo, 0, 1);],
359 gdbsrv_cv_have_sync_builtins=yes,
360 gdbsrv_cv_have_sync_builtins=no)])
0ad6b8ee 361if test "$gdbsrv_cv_have_sync_builtins" = yes; then
fa593d66
PA
362 AC_DEFINE(HAVE_SYNC_BUILTINS, 1,
363 [Define to 1 if the target supports __sync_*_compare_and_swap])
364fi
365
366dnl Check for -fvisibility=hidden support in the compiler.
367saved_cflags="$CFLAGS"
368CFLAGS="$CFLAGS -fvisibility=hidden"
d0ac1c44 369AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
fa593d66
PA
370 [gdbsrv_cv_have_visibility_hidden=yes],
371 [gdbsrv_cv_have_visibility_hidden=no])
372CFLAGS="$saved_cflags"
373
374IPA_DEPFILES=""
c2a66c29 375extra_libraries=""
fa593d66 376
c2a66c29 377# check whether to enable the inprocess agent
fa593d66
PA
378if test "$ipa_obj" != "" \
379 -a "$gdbsrv_cv_have_sync_builtins" = yes \
380 -a "$gdbsrv_cv_have_visibility_hidden" = yes; then
c2a66c29
NS
381 have_ipa=true
382else
383 have_ipa=false
384fi
385
386AC_ARG_ENABLE(inprocess-agent,
387AS_HELP_STRING([--enable-inprocess-agent], [inprocess agent]),
388[case "$enableval" in
389 yes) want_ipa=true ;;
390 no) want_ipa=false ;;
391 *) AC_MSG_ERROR([bad value $enableval for inprocess-agent]) ;;
392esac],
393[want_ipa=$have_ipa])
394
395if $want_ipa ; then
396 if $have_ipa ; then
397 IPA_DEPFILES="$ipa_obj"
398 extra_libraries="$extra_libraries libinproctrace.so"
399 else
400 AC_MSG_ERROR([inprocess agent not supported for this target])
401 fi
fa593d66
PA
402fi
403
7ea81414 404AC_SUBST(GDBSERVER_DEPFILES)
0d62e5e8 405AC_SUBST(GDBSERVER_LIBS)
fb1e4ffc
DJ
406AC_SUBST(srv_xmlbuiltin)
407AC_SUBST(srv_xmlfiles)
fa593d66
PA
408AC_SUBST(IPA_DEPFILES)
409AC_SUBST(extra_libraries)
c906108c 410
1a627e7e 411GNULIB=../gnulib/import
c9a1864a
YQ
412
413GNULIB_STDINT_H=
414if test x"$STDINT_H" != x; then
c971b7fa 415 GNULIB_STDINT_H=$GNULIB/$STDINT_H
c9a1864a
YQ
416fi
417AC_SUBST(GNULIB_STDINT_H)
418
c5adaa19 419AC_CONFIG_FILES([Makefile])
1e94266c
SM
420
421AC_OUTPUT
This page took 1.514251 seconds and 4 git commands to generate.