[gdbserver] Rename supports_conditional_breakpoints to supports_hardware_single_step
[deliverable/binutils-gdb.git] / gdb / gdbserver / configure.ac
1 dnl Autoconf configure script for GDB server.
2 dnl Copyright (C) 2000-2015 Free Software Foundation, Inc.
3 dnl
4 dnl This file is part of GDB.
5 dnl
6 dnl This program is free software; you can redistribute it and/or modify
7 dnl it under the terms of the GNU General Public License as published by
8 dnl the Free Software Foundation; either version 3 of the License, or
9 dnl (at your option) any later version.
10 dnl
11 dnl This program is distributed in the hope that it will be useful,
12 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 dnl GNU General Public License for more details.
15 dnl
16 dnl You should have received a copy of the GNU General Public License
17 dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
18
19 dnl Process this file with autoconf to produce a configure script.
20
21 AC_PREREQ(2.59)dnl
22
23 AC_INIT(server.c)
24 AC_CONFIG_HEADER(config.h:config.in)
25
26 AM_MAINTAINER_MODE
27
28 AC_PROG_CC
29 AC_PROG_CXX
30 AC_GNU_SOURCE
31 AC_SYS_LARGEFILE
32
33 AC_CANONICAL_SYSTEM
34
35 AC_PROG_INSTALL
36 AC_CHECK_TOOL(AR, ar)
37 AC_PROG_RANLIB
38
39 AC_ARG_PROGRAM
40
41 AC_HEADER_STDC
42
43 # See if we are building with C++, and substitute COMPILER.
44 GDB_AC_BUILD_WITH_CXX
45
46 # Set the 'development' global.
47 . $srcdir/../../bfd/development.sh
48
49 # Enable -lmcheck by default (it provides cheap-enough memory
50 # mangling), but turn it off for releases.
51 if $development; then
52 libmcheck_default=yes
53 else
54 libmcheck_default=no
55 fi
56 GDB_AC_LIBMCHECK(${libmcheck_default})
57
58 ACX_NONCANONICAL_TARGET
59 ACX_NONCANONICAL_HOST
60
61 # Dependency checking.
62 ZW_CREATE_DEPDIR
63 ZW_PROG_COMPILER_DEPENDENCIES([CC])
64
65 # Check for the 'make' the user wants to use.
66 AC_CHECK_PROGS(MAKE, make)
67 MAKE_IS_GNU=
68 case "`$MAKE --version 2>&1 | sed 1q`" in
69 *GNU*)
70 MAKE_IS_GNU=yes
71 ;;
72 esac
73 AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes)
74 AC_PROG_MAKE_SET
75
76 gnulib_extra_configure_args=
77 # If large-file support is disabled, make sure gnulib does the same.
78 if test "$enable_largefile" = no; then
79 gnulib_extra_configure_args="$gnulib_extra_configure_args --disable-largefile"
80 fi
81
82 # Configure gnulib. We can't use AC_CONFIG_SUBDIRS as that'd expect
83 # to find the the source subdir to be configured directly under
84 # gdbserver/. We need to build gnulib under some other directory not
85 # "gnulib", to avoid the problem of both GDB and GDBserver wanting to
86 # build it in the same directory, when building in the source dir.
87 ACX_CONFIGURE_DIR(["../gnulib"], ["build-gnulib-gdbserver"],
88 ["$gnulib_extra_configure_args"])
89
90 ACX_CONFIGURE_DIR(["../../libiberty"], ["build-libiberty-gdbserver"])
91
92 AC_CHECK_HEADERS(sgtty.h termio.h termios.h sys/reg.h string.h dnl
93 proc_service.h sys/procfs.h linux/elf.h dnl
94 fcntl.h signal.h sys/file.h dnl
95 sys/ioctl.h netinet/in.h sys/socket.h netdb.h dnl
96 netinet/tcp.h arpa/inet.h)
97 AC_CHECK_FUNCS(getauxval pread pwrite pread64 setns)
98
99 GDB_AC_COMMON
100
101 # Check the return and argument types of ptrace.
102 GDB_AC_PTRACE
103
104 # Check for UST
105 ustlibs=""
106 ustinc=""
107
108 AC_ARG_WITH(ust, [ --with-ust=PATH Specify prefix directory for the installed UST package
109 Equivalent to --with-ust-include=PATH/include
110 plus --with-ust-lib=PATH/lib])
111 AC_ARG_WITH(ust_include, [ --with-ust-include=PATH Specify directory for installed UST include files])
112 AC_ARG_WITH(ust_lib, [ --with-ust-lib=PATH Specify the directory for the installed UST library])
113
114 case $with_ust in
115 no)
116 ustlibs=
117 ustinc=
118 ;;
119 "" | yes)
120 ustlibs=" -lust "
121 ustinc=""
122 ;;
123 *)
124 ustlibs="-L$with_ust/lib -lust"
125 ustinc="-I$with_ust/include "
126 ;;
127 esac
128 if test "x$with_ust_include" != x; then
129 ustinc="-I$with_ust_include "
130 fi
131 if test "x$with_ust_lib" != x; then
132 ustlibs="-L$with_ust_lib -lust"
133 fi
134
135 if test "x$with_ust" != "xno"; then
136 saved_CFLAGS="$CFLAGS"
137 CFLAGS="$CFLAGS $ustinc"
138 AC_MSG_CHECKING([for ust])
139 AC_TRY_COMPILE([
140 #define CONFIG_UST_GDB_INTEGRATION
141 #include <ust/ust.h>
142 ],[],
143 [AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_UST, 1, [Define if UST is available])],
144 [AC_MSG_RESULT([no]); ustlibs= ; ustinc= ])
145 CFLAGS="$saved_CFLAGS"
146 fi
147
148 # Flags needed for UST
149 AC_SUBST(ustlibs)
150 AC_SUBST(ustinc)
151
152 AC_ARG_ENABLE(werror,
153 AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]),
154 [case "${enableval}" in
155 yes | y) ERROR_ON_WARNING="yes" ;;
156 no | n) ERROR_ON_WARNING="no" ;;
157 *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;;
158 esac])
159
160 # Enable -Werror by default when using gcc in C mode. Leave it off
161 # for C++ until we're warning clean. Turn it off for releases.
162 if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" \
163 && test x"$enable_build_with_cxx" != x"yes" \
164 && $development; then
165 ERROR_ON_WARNING=yes
166 fi
167
168 WERROR_CFLAGS=""
169 if test "${ERROR_ON_WARNING}" = yes ; then
170 WERROR_CFLAGS="-Werror"
171 fi
172
173 build_warnings="-Wall -Wpointer-arith \
174 -Wformat-nonliteral -Wno-char-subscripts -Wempty-body"
175
176 # Now add in C and C++ specific options, depending on mode.
177 if test "$enable_build_with_cxx" = "yes"; then
178 build_warnings="$build_warnings -Wno-sign-compare -Wno-write-strings \
179 -Wno-narrowing"
180 else
181 build_warnings="$build_warnings -Wdeclaration-after-statement"
182 fi
183
184 # The set of warnings supported by a C++ compiler is not the same as
185 # of the C compiler.
186 if test "$enable_build_with_cxx" = "yes"; then
187 AC_LANG_PUSH([C++])
188 fi
189
190 WARN_CFLAGS=""
191 if test "x$GCC" = xyes
192 then
193 AC_MSG_CHECKING(compiler warning flags)
194 # Separate out the -Werror flag as some files just cannot be
195 # compiled with it enabled.
196 for w in ${build_warnings}; do
197 case $w in
198 -Werr*) WERROR_CFLAGS=-Werror ;;
199 *)
200 # Check whether GCC accepts it.
201 saved_CFLAGS="$CFLAGS"
202 CFLAGS="$CFLAGS $w"
203 saved_CXXFLAGS="$CXXFLAGS"
204 CXXFLAGS="$CXXFLAGS $w"
205 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
206 CFLAGS="$saved_CFLAGS"
207 CXXFLAGS="$saved_CXXFLAGS"
208 esac
209 done
210 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
211 fi
212 AC_SUBST(WARN_CFLAGS)
213 AC_SUBST(WERROR_CFLAGS)
214
215 if test "$enable_build_with_cxx" = "yes"; then
216 AC_LANG_POP([C++])
217 fi
218
219 dnl dladdr is glibc-specific. It is used by thread-db.c but only for
220 dnl debugging messages. It lives in -ldl which is handled below so we don't
221 dnl use AC_CHECK_LIB (or AC_SEARCH_LIBS) here. Instead we just temporarily
222 dnl augment LIBS.
223 old_LIBS="$LIBS"
224 LIBS="$LIBS -ldl"
225 AC_CHECK_FUNCS(dladdr)
226 LIBS="$old_LIBS"
227
228 libiberty_INIT
229
230 AC_CHECK_DECLS([strerror, perror, vasprintf, vsnprintf])
231
232 AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_blksize])
233
234 AC_CHECK_TYPES(socklen_t, [], [],
235 [#include <sys/types.h>
236 #include <sys/socket.h>
237 ])
238
239 AC_CHECK_TYPES([Elf32_auxv_t, Elf64_auxv_t], [], [],
240 #include <elf.h>
241 )
242
243 ACX_PKGVERSION([GDB])
244 ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
245 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
246 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
247
248 # Check for various supplementary target information (beyond the
249 # triplet) which might affect the choices in configure.srv.
250 case "${target}" in
251 changequote(,)dnl
252 i[34567]86-*-linux*)
253 changequote([,])dnl
254 AC_CACHE_CHECK([if building for x86-64], [gdb_cv_i386_is_x86_64],
255 [save_CPPFLAGS="$CPPFLAGS"
256 CPPFLAGS="$CPPFLAGS $CFLAGS"
257 AC_EGREP_CPP([got it], [
258 #if __x86_64__
259 got it
260 #endif
261 ], [gdb_cv_i386_is_x86_64=yes],
262 [gdb_cv_i386_is_x86_64=no])
263 CPPFLAGS="$save_CPPFLAGS"])
264 ;;
265 m68k-*-*)
266 AC_CACHE_CHECK([if building for Coldfire], [gdb_cv_m68k_is_coldfire],
267 [save_CPPFLAGS="$CPPFLAGS"
268 CPPFLAGS="$CPPFLAGS $CFLAGS"
269 AC_EGREP_CPP([got it], [
270 #ifdef __mcoldfire__
271 got it
272 #endif
273 ], [gdb_cv_m68k_is_coldfire=yes],
274 [gdb_cv_m68k_is_coldfire=no])
275 CPPFLAGS="$save_CPPFLAGS"])
276 ;;
277 esac
278
279 . ${srcdir}/configure.srv
280
281 # Add in the common host objects.
282 . ${srcdir}/../common/common.host
283 srv_host_obs="$common_host_obs"
284
285 if test "${srv_mingwce}" = "yes"; then
286 LIBS="$LIBS -lws2"
287 elif test "${srv_mingw}" = "yes"; then
288 LIBS="$LIBS -lws2_32"
289 elif test "${srv_qnx}" = "yes"; then
290 LIBS="$LIBS -lsocket"
291 elif test "${srv_lynxos}" = "yes"; then
292 LIBS="$LIBS -lnetinet"
293 fi
294
295 if test "${srv_mingw}" = "yes"; then
296 AC_DEFINE(USE_WIN32API, 1,
297 [Define if we should use the Windows API, instead of the
298 POSIX API. On Windows, we use the Windows API when
299 building for MinGW, but the POSIX API when building
300 for Cygwin.])
301 fi
302
303 if test "${srv_linux_usrregs}" = "yes"; then
304 AC_DEFINE(HAVE_LINUX_USRREGS, 1,
305 [Define if the target supports PTRACE_PEEKUSR for register ]
306 [access.])
307 fi
308
309 if test "${srv_linux_regsets}" = "yes"; then
310 AC_DEFINE(HAVE_LINUX_REGSETS, 1,
311 [Define if the target supports register sets.])
312
313 AC_MSG_CHECKING(for PTRACE_GETREGS)
314 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getregs,
315 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
316 [PTRACE_GETREGS;],
317 [gdbsrv_cv_have_ptrace_getregs=yes],
318 [gdbsrv_cv_have_ptrace_getregs=no])])
319 AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getregs)
320 if test "${gdbsrv_cv_have_ptrace_getregs}" = "yes"; then
321 AC_DEFINE(HAVE_PTRACE_GETREGS, 1,
322 [Define if the target supports PTRACE_GETREGS for register ]
323 [access.])
324 fi
325
326 AC_MSG_CHECKING(for PTRACE_GETFPXREGS)
327 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getfpxregs,
328 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
329 [PTRACE_GETFPXREGS;],
330 [gdbsrv_cv_have_ptrace_getfpxregs=yes],
331 [gdbsrv_cv_have_ptrace_getfpxregs=no])])
332 AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getfpxregs)
333 if test "${gdbsrv_cv_have_ptrace_getfpxregs}" = "yes"; then
334 AC_DEFINE(HAVE_PTRACE_GETFPXREGS, 1,
335 [Define if the target supports PTRACE_GETFPXREGS for extended ]
336 [register access.])
337 fi
338 fi
339
340 if test "${srv_linux_btrace}" = "yes"; then
341 AC_DEFINE(HAVE_LINUX_BTRACE, 1,
342 [Define if the target supports branch tracing.])
343 fi
344
345 if test "$ac_cv_header_sys_procfs_h" = yes; then
346 BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
347 BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
348 BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
349 BFD_HAVE_SYS_PROCFS_TYPE(prfpregset_t)
350 BFD_HAVE_SYS_PROCFS_TYPE(elf_fpregset_t)
351 fi
352
353 dnl Some systems (e.g., Android) have lwpid_t defined in libthread_db.h.
354 if test "$bfd_cv_have_sys_procfs_type_lwpid_t" != yes; then
355 GDBSERVER_HAVE_THREAD_DB_TYPE(lwpid_t)
356 fi
357
358 dnl Some systems (e.g., Android) have psaddr_t defined in libthread_db.h.
359 if test "$bfd_cv_have_sys_procfs_type_psaddr_t" != yes; then
360 GDBSERVER_HAVE_THREAD_DB_TYPE(psaddr_t)
361 fi
362
363 dnl Check for libdl, but do not add it to LIBS as only gdbserver
364 dnl needs it (and gdbreplay doesn't).
365 old_LIBS="$LIBS"
366 AC_CHECK_LIB(dl, dlopen)
367 LIBS="$old_LIBS"
368
369 srv_thread_depfiles=
370 srv_libs=
371
372 if test "$srv_linux_thread_db" = "yes"; then
373 if test "$ac_cv_lib_dl_dlopen" = "yes"; then
374 srv_libs="-ldl"
375 AC_MSG_CHECKING(for the dynamic export flag)
376 old_LDFLAGS="$LDFLAGS"
377 # Older GNU ld supports --export-dynamic but --dynamic-list may not be
378 # supported there.
379 RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
380 LDFLAGS="$LDFLAGS $RDYNAMIC"
381 AC_TRY_LINK([], [],
382 [found="-Wl,--dynamic-list"
383 RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'],
384 [RDYNAMIC="-rdynamic"
385 LDFLAGS="$old_LDFLAGS $RDYNAMIC"
386 AC_TRY_LINK([], [],
387 [found="-rdynamic"],
388 [found="no"
389 RDYNAMIC=""])])
390 AC_SUBST(RDYNAMIC)
391 LDFLAGS="$old_LDFLAGS"
392 AC_MSG_RESULT($found)
393 else
394 srv_libs="-lthread_db"
395 fi
396
397 srv_thread_depfiles="thread-db.o proc-service.o"
398 AC_DEFINE(USE_THREAD_DB, 1, [Define if we should use libthread_db.])
399 AC_CACHE_CHECK([for TD_VERSION], gdbsrv_cv_have_td_version,
400 [AC_TRY_COMPILE([#include <thread_db.h>], [TD_VERSION;],
401 [gdbsrv_cv_have_td_version=yes],
402 [gdbsrv_cv_have_td_version=no])])
403 if test $gdbsrv_cv_have_td_version = yes; then
404 AC_DEFINE(HAVE_TD_VERSION, 1, [Define if TD_VERSION is available.])
405 fi
406 fi
407
408 AC_ARG_WITH(libthread-db,
409 AS_HELP_STRING([--with-libthread-db=PATH], [use given libthread_db directly]),
410 [srv_libthread_db_path="${withval}"
411 srv_libs="$srv_libthread_db_path"
412 ])
413
414 if test "$srv_libs" != "" -a "$srv_libs" != "-ldl"; then
415 AC_DEFINE(USE_LIBTHREAD_DB_DIRECTLY, 1, [Define if we should use libthread_db directly.])
416 fi
417
418 if test "$srv_xmlfiles" != ""; then
419 srv_xmlbuiltin="xml-builtin.o"
420 AC_DEFINE(USE_XML, 1, [Define if an XML target description is available.])
421
422 tmp_xmlfiles=$srv_xmlfiles
423 srv_xmlfiles=""
424 for f in $tmp_xmlfiles; do
425 srv_xmlfiles="$srv_xmlfiles \$(XML_DIR)/$f"
426 done
427 fi
428
429 GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles $srv_host_obs"
430 GDBSERVER_LIBS="$srv_libs"
431
432 dnl Check whether the target supports __sync_*_compare_and_swap.
433 AC_CACHE_CHECK([whether the target supports __sync_*_compare_and_swap],
434 gdbsrv_cv_have_sync_builtins, [
435 AC_TRY_LINK([], [int foo, bar; bar = __sync_val_compare_and_swap(&foo, 0, 1);],
436 gdbsrv_cv_have_sync_builtins=yes,
437 gdbsrv_cv_have_sync_builtins=no)])
438 if test $gdbsrv_cv_have_sync_builtins = yes; then
439 AC_DEFINE(HAVE_SYNC_BUILTINS, 1,
440 [Define to 1 if the target supports __sync_*_compare_and_swap])
441 fi
442
443 dnl Check for -fvisibility=hidden support in the compiler.
444 saved_cflags="$CFLAGS"
445 CFLAGS="$CFLAGS -fvisibility=hidden"
446 AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),
447 [gdbsrv_cv_have_visibility_hidden=yes],
448 [gdbsrv_cv_have_visibility_hidden=no])
449 CFLAGS="$saved_cflags"
450
451 dnl Check if we can disable the virtual address space randomization.
452 dnl The functionality of setarch -R.
453 AC_CHECK_DECLS([ADDR_NO_RANDOMIZE],,, [#include <sys/personality.h>])
454 define([PERSONALITY_TEST], [AC_LANG_PROGRAM([#include <sys/personality.h>], [
455 # if !HAVE_DECL_ADDR_NO_RANDOMIZE
456 # define ADDR_NO_RANDOMIZE 0x0040000
457 # endif
458 /* Test the flag could be set and stays set. */
459 personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
460 if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
461 return 1])])
462 AC_RUN_IFELSE([PERSONALITY_TEST],
463 [gdbsrv_cv_have_personality=true],
464 [gdbsrv_cv_have_personality=false],
465 [AC_LINK_IFELSE([PERSONALITY_TEST],
466 [gdbsrv_cv_have_personality=true],
467 [gdbsrv_cv_have_personality=false])])
468 if $gdbsrv_cv_have_personality
469 then
470 AC_DEFINE([HAVE_PERSONALITY], 1,
471 [Define if you support the personality syscall.])
472 fi
473
474
475 IPA_DEPFILES=""
476 extra_libraries=""
477
478 # check whether to enable the inprocess agent
479 if test "$ipa_obj" != "" \
480 -a "$gdbsrv_cv_have_sync_builtins" = yes \
481 -a "$gdbsrv_cv_have_visibility_hidden" = yes; then
482 have_ipa=true
483 else
484 have_ipa=false
485 fi
486
487 AC_ARG_ENABLE(inprocess-agent,
488 AS_HELP_STRING([--enable-inprocess-agent], [inprocess agent]),
489 [case "$enableval" in
490 yes) want_ipa=true ;;
491 no) want_ipa=false ;;
492 *) AC_MSG_ERROR([bad value $enableval for inprocess-agent]) ;;
493 esac],
494 [want_ipa=$have_ipa])
495
496 if $want_ipa ; then
497 if $have_ipa ; then
498 IPA_DEPFILES="$ipa_obj"
499 extra_libraries="$extra_libraries libinproctrace.so"
500 else
501 AC_MSG_ERROR([inprocess agent not supported for this target])
502 fi
503 fi
504
505 AC_SUBST(GDBSERVER_DEPFILES)
506 AC_SUBST(GDBSERVER_LIBS)
507 AC_SUBST(srv_xmlbuiltin)
508 AC_SUBST(srv_xmlfiles)
509 AC_SUBST(IPA_DEPFILES)
510 AC_SUBST(extra_libraries)
511
512 GNULIB=build-gnulib-gdbserver/import
513
514 GNULIB_STDINT_H=
515 if test x"$STDINT_H" != x; then
516 GNULIB_STDINT_H=$GNULIB/$STDINT_H
517 fi
518 AC_SUBST(GNULIB_STDINT_H)
519
520 AC_OUTPUT(Makefile,
521 [case x$CONFIG_HEADERS in
522 xconfig.h:config.in)
523 echo > stamp-h ;;
524 esac
525 ])
This page took 0.041379 seconds and 4 git commands to generate.