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