]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdbserver/configure.ac
MIPS/binutils/testsuite: Correct mips.exp test ABI/emul/endian arrangement
[thirdparty/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"
68070c10
PA
228fi
229
58caa3dc 230if test "${srv_linux_usrregs}" = "yes"; then
f450004a
DJ
231 AC_DEFINE(HAVE_LINUX_USRREGS, 1,
232 [Define if the target supports PTRACE_PEEKUSR for register ]
233 [access.])
58caa3dc
DJ
234fi
235
236if test "${srv_linux_regsets}" = "yes"; then
e9d25b98
DJ
237 AC_DEFINE(HAVE_LINUX_REGSETS, 1,
238 [Define if the target supports register sets.])
239
58caa3dc
DJ
240 AC_MSG_CHECKING(for PTRACE_GETREGS)
241 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getregs,
242 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
243 [PTRACE_GETREGS;],
244 [gdbsrv_cv_have_ptrace_getregs=yes],
245 [gdbsrv_cv_have_ptrace_getregs=no])])
246 AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getregs)
247 if test "${gdbsrv_cv_have_ptrace_getregs}" = "yes"; then
e9d25b98 248 AC_DEFINE(HAVE_PTRACE_GETREGS, 1,
f450004a
DJ
249 [Define if the target supports PTRACE_GETREGS for register ]
250 [access.])
58caa3dc
DJ
251 fi
252
253 AC_MSG_CHECKING(for PTRACE_GETFPXREGS)
254 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getfpxregs,
255 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
256 [PTRACE_GETFPXREGS;],
257 [gdbsrv_cv_have_ptrace_getfpxregs=yes],
258 [gdbsrv_cv_have_ptrace_getfpxregs=no])])
259 AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getfpxregs)
260 if test "${gdbsrv_cv_have_ptrace_getfpxregs}" = "yes"; then
f450004a
DJ
261 AC_DEFINE(HAVE_PTRACE_GETFPXREGS, 1,
262 [Define if the target supports PTRACE_GETFPXREGS for extended ]
263 [register access.])
58caa3dc
DJ
264 fi
265fi
266
9accd112
MM
267if test "${srv_linux_btrace}" = "yes"; then
268 AC_DEFINE(HAVE_LINUX_BTRACE, 1,
269 [Define if the target supports branch tracing.])
270fi
271
18f5fd81
TJB
272dnl Some systems (e.g., Android) have lwpid_t defined in libthread_db.h.
273if test "$bfd_cv_have_sys_procfs_type_lwpid_t" != yes; then
274 GDBSERVER_HAVE_THREAD_DB_TYPE(lwpid_t)
275fi
276
277dnl Some systems (e.g., Android) have psaddr_t defined in libthread_db.h.
278if test "$bfd_cv_have_sys_procfs_type_psaddr_t" != yes; then
279 GDBSERVER_HAVE_THREAD_DB_TYPE(psaddr_t)
280fi
281
193f13e6
MK
282dnl Check for libdl, but do not add it to LIBS as only gdbserver
283dnl needs it (and gdbreplay doesn't).
284old_LIBS="$LIBS"
285AC_CHECK_LIB(dl, dlopen)
286LIBS="$old_LIBS"
287
0d62e5e8
DJ
288srv_thread_depfiles=
289srv_libs=
0d62e5e8
DJ
290
291if test "$srv_linux_thread_db" = "yes"; then
193f13e6
MK
292 if test "$ac_cv_lib_dl_dlopen" = "yes"; then
293 srv_libs="-ldl"
f6528abd 294 AC_MSG_CHECKING(for the dynamic export flag)
193f13e6 295 old_LDFLAGS="$LDFLAGS"
f6528abd
JK
296 # Older GNU ld supports --export-dynamic but --dynamic-list may not be
297 # supported there.
298 RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
299 LDFLAGS="$LDFLAGS $RDYNAMIC"
300 AC_TRY_LINK([], [],
301 [found="-Wl,--dynamic-list"
302 RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'],
303 [RDYNAMIC="-rdynamic"
304 LDFLAGS="$old_LDFLAGS $RDYNAMIC"
305 AC_TRY_LINK([], [],
306 [found="-rdynamic"],
307 [found="no"
308 RDYNAMIC=""])])
193f13e6
MK
309 AC_SUBST(RDYNAMIC)
310 LDFLAGS="$old_LDFLAGS"
f6528abd 311 AC_MSG_RESULT($found)
193f13e6
MK
312 else
313 srv_libs="-lthread_db"
314 fi
0d62e5e8 315
0d62e5e8 316 srv_thread_depfiles="thread-db.o proc-service.o"
7d4e5717 317 AC_DEFINE(USE_THREAD_DB, 1, [Define if we should use libthread_db.])
3db0444b
DJ
318 AC_CACHE_CHECK([for TD_VERSION], gdbsrv_cv_have_td_version,
319 [AC_TRY_COMPILE([#include <thread_db.h>], [TD_VERSION;],
1b3f6016
PA
320 [gdbsrv_cv_have_td_version=yes],
321 [gdbsrv_cv_have_td_version=no])])
0ad6b8ee 322 if test "$gdbsrv_cv_have_td_version" = yes; then
3db0444b
DJ
323 AC_DEFINE(HAVE_TD_VERSION, 1, [Define if TD_VERSION is available.])
324 fi
0d62e5e8
DJ
325fi
326
96f15937
PP
327AC_ARG_WITH(libthread-db,
328AS_HELP_STRING([--with-libthread-db=PATH], [use given libthread_db directly]),
329[srv_libthread_db_path="${withval}"
96f15937
PP
330 srv_libs="$srv_libthread_db_path"
331])
332
193f13e6
MK
333if test "$srv_libs" != "" -a "$srv_libs" != "-ldl"; then
334 AC_DEFINE(USE_LIBTHREAD_DB_DIRECTLY, 1, [Define if we should use libthread_db directly.])
335fi
336
9b4b61c8 337if test "$srv_xmlfiles" != ""; then
fb1e4ffc
DJ
338 srv_xmlbuiltin="xml-builtin.o"
339 AC_DEFINE(USE_XML, 1, [Define if an XML target description is available.])
340
341 tmp_xmlfiles=$srv_xmlfiles
9b4b61c8 342 srv_xmlfiles=""
fb1e4ffc
DJ
343 for f in $tmp_xmlfiles; do
344 srv_xmlfiles="$srv_xmlfiles \$(XML_DIR)/$f"
345 done
346fi
347
4635ff97 348GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles"
0d62e5e8 349GDBSERVER_LIBS="$srv_libs"
c906108c 350
fa593d66
PA
351dnl Check whether the target supports __sync_*_compare_and_swap.
352AC_CACHE_CHECK([whether the target supports __sync_*_compare_and_swap],
353 gdbsrv_cv_have_sync_builtins, [
354AC_TRY_LINK([], [int foo, bar; bar = __sync_val_compare_and_swap(&foo, 0, 1);],
355 gdbsrv_cv_have_sync_builtins=yes,
356 gdbsrv_cv_have_sync_builtins=no)])
0ad6b8ee 357if test "$gdbsrv_cv_have_sync_builtins" = yes; then
fa593d66
PA
358 AC_DEFINE(HAVE_SYNC_BUILTINS, 1,
359 [Define to 1 if the target supports __sync_*_compare_and_swap])
360fi
361
362dnl Check for -fvisibility=hidden support in the compiler.
363saved_cflags="$CFLAGS"
364CFLAGS="$CFLAGS -fvisibility=hidden"
d0ac1c44 365AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
fa593d66
PA
366 [gdbsrv_cv_have_visibility_hidden=yes],
367 [gdbsrv_cv_have_visibility_hidden=no])
368CFLAGS="$saved_cflags"
369
370IPA_DEPFILES=""
c2a66c29 371extra_libraries=""
fa593d66 372
c2a66c29 373# check whether to enable the inprocess agent
fa593d66
PA
374if test "$ipa_obj" != "" \
375 -a "$gdbsrv_cv_have_sync_builtins" = yes \
376 -a "$gdbsrv_cv_have_visibility_hidden" = yes; then
c2a66c29
NS
377 have_ipa=true
378else
379 have_ipa=false
380fi
381
382AC_ARG_ENABLE(inprocess-agent,
383AS_HELP_STRING([--enable-inprocess-agent], [inprocess agent]),
384[case "$enableval" in
385 yes) want_ipa=true ;;
386 no) want_ipa=false ;;
387 *) AC_MSG_ERROR([bad value $enableval for inprocess-agent]) ;;
388esac],
389[want_ipa=$have_ipa])
390
391if $want_ipa ; then
392 if $have_ipa ; then
393 IPA_DEPFILES="$ipa_obj"
394 extra_libraries="$extra_libraries libinproctrace.so"
395 else
396 AC_MSG_ERROR([inprocess agent not supported for this target])
397 fi
fa593d66
PA
398fi
399
7ea81414 400AC_SUBST(GDBSERVER_DEPFILES)
0d62e5e8 401AC_SUBST(GDBSERVER_LIBS)
fb1e4ffc
DJ
402AC_SUBST(srv_xmlbuiltin)
403AC_SUBST(srv_xmlfiles)
fa593d66
PA
404AC_SUBST(IPA_DEPFILES)
405AC_SUBST(extra_libraries)
c906108c 406
1a627e7e 407GNULIB=../gnulib/import
c9a1864a
YQ
408
409GNULIB_STDINT_H=
410if test x"$STDINT_H" != x; then
c971b7fa 411 GNULIB_STDINT_H=$GNULIB/$STDINT_H
c9a1864a
YQ
412fi
413AC_SUBST(GNULIB_STDINT_H)
414
c5adaa19 415AC_CONFIG_FILES([Makefile])
1e94266c
SM
416
417AC_OUTPUT