1 dnl Autoconf configure script for GDB server.
2 dnl Copyright (C) 2000-2015 Free Software Foundation, Inc.
4 dnl This file is part of GDB.
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.
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.
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/>.
19 dnl Process this file with autoconf to produce a configure script.
24 AC_CONFIG_HEADER(config.h:config.in)
43 # See if we are building with C++, and substitute COMPILER.
46 # Set the 'development' global.
47 . $srcdir/../../bfd/development.sh
49 # Enable -lmcheck by default (it provides cheap-enough memory
50 # mangling), but turn it off for releases.
56 GDB_AC_LIBMCHECK(${libmcheck_default})
58 ACX_NONCANONICAL_TARGET
61 # Dependency checking.
63 ZW_PROG_COMPILER_DEPENDENCIES([CC])
65 # Check for the 'make' the user wants to use.
66 AC_CHECK_PROGS(MAKE, make)
68 case "`$MAKE --version 2>&1 | sed 1q`" in
73 AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes)
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"
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"])
90 ACX_CONFIGURE_DIR(["../../libiberty"], ["build-libiberty-gdbserver"])
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)
105 AC_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])
108 AC_ARG_WITH(ust_include, [ --with-ust-include=PATH Specify directory for installed UST include files])
109 AC_ARG_WITH(ust_lib, [ --with-ust-lib=PATH Specify the directory for the installed UST library])
121 ustlibs="-L$with_ust/lib -lust"
122 ustinc="-I$with_ust/include "
125 if test "x$with_ust_include" != x; then
126 ustinc="-I$with_ust_include "
128 if test "x$with_ust_lib" != x; then
129 ustlibs="-L$with_ust_lib -lust"
132 if test "x$with_ust" != "xno"; then
133 saved_CFLAGS="$CFLAGS"
134 CFLAGS="$CFLAGS $ustinc"
135 AC_MSG_CHECKING([for ust])
137 #define CONFIG_UST_GDB_INTEGRATION
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"
145 # Flags needed for UST
149 AC_ARG_ENABLE(werror,
150 AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]),
151 [case "${enableval}" in
152 yes | y) ERROR_ON_WARNING="yes" ;;
153 no | n) ERROR_ON_WARNING="no" ;;
154 *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;;
157 # Enable -Werror by default when using gcc in C mode. Leave it off
158 # for C++ until we're warning clean. Turn it off for releases.
159 if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" \
160 && test x"$enable_build_with_cxx" != x"yes" \
161 && $development; then
166 if test "${ERROR_ON_WARNING}" = yes ; then
167 WERROR_CFLAGS="-Werror"
170 build_warnings="-Wall -Wpointer-arith \
171 -Wformat-nonliteral -Wno-char-subscripts -Wempty-body"
173 # Now add in C and C++ specific options, depending on mode.
174 if test "$enable_build_with_cxx" = "yes"; then
175 build_warnings="$build_warnings -Wno-sign-compare -Wno-write-strings \
178 build_warnings="$build_warnings -Wdeclaration-after-statement"
181 # The set of warnings supported by a C++ compiler is not the same as
183 if test "$enable_build_with_cxx" = "yes"; then
188 if test "x$GCC" = xyes
190 AC_MSG_CHECKING(compiler warning flags)
191 # Separate out the -Werror flag as some files just cannot be
192 # compiled with it enabled.
193 for w in ${build_warnings}; do
195 -Werr*) WERROR_CFLAGS=-Werror ;;
197 # Check whether GCC accepts it.
198 saved_CFLAGS="$CFLAGS"
200 saved_CXXFLAGS="$CXXFLAGS"
201 CXXFLAGS="$CXXFLAGS $w"
202 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
203 CFLAGS="$saved_CFLAGS"
204 CXXFLAGS="$saved_CXXFLAGS"
207 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
209 AC_SUBST(WARN_CFLAGS)
210 AC_SUBST(WERROR_CFLAGS)
212 if test "$enable_build_with_cxx" = "yes"; then
216 dnl dladdr is glibc-specific. It is used by thread-db.c but only for
217 dnl debugging messages. It lives in -ldl which is handled below so we don't
218 dnl use AC_CHECK_LIB (or AC_SEARCH_LIBS) here. Instead we just temporarily
222 AC_CHECK_FUNCS(dladdr)
227 AC_CHECK_DECLS([strerror, perror, vasprintf, vsnprintf])
229 AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_blksize])
231 AC_CHECK_TYPES(socklen_t, [], [],
232 [#include <sys/types.h>
233 #include <sys/socket.h>
236 AC_CHECK_TYPES([Elf32_auxv_t, Elf64_auxv_t], [], [],
240 ACX_PKGVERSION([GDB])
241 ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
242 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
243 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
245 # Check for various supplementary target information (beyond the
246 # triplet) which might affect the choices in configure.srv.
251 AC_CACHE_CHECK([if building for x86-64], [gdb_cv_i386_is_x86_64],
252 [save_CPPFLAGS="$CPPFLAGS"
253 CPPFLAGS="$CPPFLAGS $CFLAGS"
254 AC_EGREP_CPP([got it], [
258 ], [gdb_cv_i386_is_x86_64=yes],
259 [gdb_cv_i386_is_x86_64=no])
260 CPPFLAGS="$save_CPPFLAGS"])
263 AC_CACHE_CHECK([if building for Coldfire], [gdb_cv_m68k_is_coldfire],
264 [save_CPPFLAGS="$CPPFLAGS"
265 CPPFLAGS="$CPPFLAGS $CFLAGS"
266 AC_EGREP_CPP([got it], [
270 ], [gdb_cv_m68k_is_coldfire=yes],
271 [gdb_cv_m68k_is_coldfire=no])
272 CPPFLAGS="$save_CPPFLAGS"])
276 . ${srcdir}/configure.srv
278 # Add in the common host objects.
279 . ${srcdir}/../common/common.host
280 srv_host_obs="$common_host_obs"
282 if test "${srv_mingwce}" = "yes"; then
284 elif test "${srv_mingw}" = "yes"; then
285 LIBS="$LIBS -lws2_32"
286 elif test "${srv_qnx}" = "yes"; then
287 LIBS="$LIBS -lsocket"
288 elif test "${srv_lynxos}" = "yes"; then
289 LIBS="$LIBS -lnetinet"
292 if test "${srv_mingw}" = "yes"; then
293 AC_DEFINE(USE_WIN32API, 1,
294 [Define if we should use the Windows API, instead of the
295 POSIX API. On Windows, we use the Windows API when
296 building for MinGW, but the POSIX API when building
300 if test "${srv_linux_usrregs}" = "yes"; then
301 AC_DEFINE(HAVE_LINUX_USRREGS, 1,
302 [Define if the target supports PTRACE_PEEKUSR for register ]
306 if test "${srv_linux_regsets}" = "yes"; then
307 AC_DEFINE(HAVE_LINUX_REGSETS, 1,
308 [Define if the target supports register sets.])
310 AC_MSG_CHECKING(for PTRACE_GETREGS)
311 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getregs,
312 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
314 [gdbsrv_cv_have_ptrace_getregs=yes],
315 [gdbsrv_cv_have_ptrace_getregs=no])])
316 AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getregs)
317 if test "${gdbsrv_cv_have_ptrace_getregs}" = "yes"; then
318 AC_DEFINE(HAVE_PTRACE_GETREGS, 1,
319 [Define if the target supports PTRACE_GETREGS for register ]
323 AC_MSG_CHECKING(for PTRACE_GETFPXREGS)
324 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getfpxregs,
325 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
326 [PTRACE_GETFPXREGS;],
327 [gdbsrv_cv_have_ptrace_getfpxregs=yes],
328 [gdbsrv_cv_have_ptrace_getfpxregs=no])])
329 AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getfpxregs)
330 if test "${gdbsrv_cv_have_ptrace_getfpxregs}" = "yes"; then
331 AC_DEFINE(HAVE_PTRACE_GETFPXREGS, 1,
332 [Define if the target supports PTRACE_GETFPXREGS for extended ]
337 if test "${srv_linux_btrace}" = "yes"; then
338 AC_DEFINE(HAVE_LINUX_BTRACE, 1,
339 [Define if the target supports branch tracing.])
342 if test "$ac_cv_header_sys_procfs_h" = yes; then
343 BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
344 BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
345 BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
346 BFD_HAVE_SYS_PROCFS_TYPE(elf_fpregset_t)
349 dnl Some systems (e.g., Android) have lwpid_t defined in libthread_db.h.
350 if test "$bfd_cv_have_sys_procfs_type_lwpid_t" != yes; then
351 GDBSERVER_HAVE_THREAD_DB_TYPE(lwpid_t)
354 dnl Some systems (e.g., Android) have psaddr_t defined in libthread_db.h.
355 if test "$bfd_cv_have_sys_procfs_type_psaddr_t" != yes; then
356 GDBSERVER_HAVE_THREAD_DB_TYPE(psaddr_t)
359 dnl Check for libdl, but do not add it to LIBS as only gdbserver
360 dnl needs it (and gdbreplay doesn't).
362 AC_CHECK_LIB(dl, dlopen)
368 if test "$srv_linux_thread_db" = "yes"; then
369 if test "$ac_cv_lib_dl_dlopen" = "yes"; then
371 AC_MSG_CHECKING(for the dynamic export flag)
372 old_LDFLAGS="$LDFLAGS"
373 # Older GNU ld supports --export-dynamic but --dynamic-list may not be
375 RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
376 LDFLAGS="$LDFLAGS $RDYNAMIC"
378 [found="-Wl,--dynamic-list"
379 RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'],
380 [RDYNAMIC="-rdynamic"
381 LDFLAGS="$old_LDFLAGS $RDYNAMIC"
387 LDFLAGS="$old_LDFLAGS"
388 AC_MSG_RESULT($found)
390 srv_libs="-lthread_db"
393 srv_thread_depfiles="thread-db.o proc-service.o"
394 AC_DEFINE(USE_THREAD_DB, 1, [Define if we should use libthread_db.])
395 AC_CACHE_CHECK([for TD_VERSION], gdbsrv_cv_have_td_version,
396 [AC_TRY_COMPILE([#include <thread_db.h>], [TD_VERSION;],
397 [gdbsrv_cv_have_td_version=yes],
398 [gdbsrv_cv_have_td_version=no])])
399 if test $gdbsrv_cv_have_td_version = yes; then
400 AC_DEFINE(HAVE_TD_VERSION, 1, [Define if TD_VERSION is available.])
404 AC_ARG_WITH(libthread-db,
405 AS_HELP_STRING([--with-libthread-db=PATH], [use given libthread_db directly]),
406 [srv_libthread_db_path="${withval}"
407 srv_libs="$srv_libthread_db_path"
410 if test "$srv_libs" != "" -a "$srv_libs" != "-ldl"; then
411 AC_DEFINE(USE_LIBTHREAD_DB_DIRECTLY, 1, [Define if we should use libthread_db directly.])
414 if test "$srv_xmlfiles" != ""; then
415 srv_xmlbuiltin="xml-builtin.o"
416 AC_DEFINE(USE_XML, 1, [Define if an XML target description is available.])
418 tmp_xmlfiles=$srv_xmlfiles
420 for f in $tmp_xmlfiles; do
421 srv_xmlfiles="$srv_xmlfiles \$(XML_DIR)/$f"
425 GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles $srv_host_obs"
426 GDBSERVER_LIBS="$srv_libs"
428 dnl Check whether the target supports __sync_*_compare_and_swap.
429 AC_CACHE_CHECK([whether the target supports __sync_*_compare_and_swap],
430 gdbsrv_cv_have_sync_builtins, [
431 AC_TRY_LINK([], [int foo, bar; bar = __sync_val_compare_and_swap(&foo, 0, 1);],
432 gdbsrv_cv_have_sync_builtins=yes,
433 gdbsrv_cv_have_sync_builtins=no)])
434 if test $gdbsrv_cv_have_sync_builtins = yes; then
435 AC_DEFINE(HAVE_SYNC_BUILTINS, 1,
436 [Define to 1 if the target supports __sync_*_compare_and_swap])
439 dnl Check for -fvisibility=hidden support in the compiler.
440 saved_cflags="$CFLAGS"
441 CFLAGS="$CFLAGS -fvisibility=hidden"
442 AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),
443 [gdbsrv_cv_have_visibility_hidden=yes],
444 [gdbsrv_cv_have_visibility_hidden=no])
445 CFLAGS="$saved_cflags"
447 dnl Check if we can disable the virtual address space randomization.
448 dnl The functionality of setarch -R.
449 AC_CHECK_DECLS([ADDR_NO_RANDOMIZE],,, [#include <sys/personality.h>])
450 define([PERSONALITY_TEST], [AC_LANG_PROGRAM([#include <sys/personality.h>], [
451 # if !HAVE_DECL_ADDR_NO_RANDOMIZE
452 # define ADDR_NO_RANDOMIZE 0x0040000
454 /* Test the flag could be set and stays set. */
455 personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
456 if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
458 AC_RUN_IFELSE([PERSONALITY_TEST],
459 [gdbsrv_cv_have_personality=true],
460 [gdbsrv_cv_have_personality=false],
461 [AC_LINK_IFELSE([PERSONALITY_TEST],
462 [gdbsrv_cv_have_personality=true],
463 [gdbsrv_cv_have_personality=false])])
464 if $gdbsrv_cv_have_personality
466 AC_DEFINE([HAVE_PERSONALITY], 1,
467 [Define if you support the personality syscall.])
474 # check whether to enable the inprocess agent
475 if test "$ipa_obj" != "" \
476 -a "$gdbsrv_cv_have_sync_builtins" = yes \
477 -a "$gdbsrv_cv_have_visibility_hidden" = yes; then
483 AC_ARG_ENABLE(inprocess-agent,
484 AS_HELP_STRING([--enable-inprocess-agent], [inprocess agent]),
485 [case "$enableval" in
486 yes) want_ipa=true ;;
487 no) want_ipa=false ;;
488 *) AC_MSG_ERROR([bad value $enableval for inprocess-agent]) ;;
490 [want_ipa=$have_ipa])
494 IPA_DEPFILES="$ipa_obj"
495 extra_libraries="$extra_libraries libinproctrace.so"
497 AC_MSG_ERROR([inprocess agent not supported for this target])
501 AC_SUBST(GDBSERVER_DEPFILES)
502 AC_SUBST(GDBSERVER_LIBS)
503 AC_SUBST(srv_xmlbuiltin)
504 AC_SUBST(srv_xmlfiles)
505 AC_SUBST(IPA_DEPFILES)
506 AC_SUBST(extra_libraries)
508 GNULIB=build-gnulib-gdbserver/import
511 if test x"$STDINT_H" != x; then
512 GNULIB_STDINT_H=$GNULIB/$STDINT_H
514 AC_SUBST(GNULIB_STDINT_H)
517 [case x$CONFIG_HEADERS in