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