Move remote_fileio_to_fio_stat to gdb/common
[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)
98
99 GDB_AC_COMMON
100
101 # Check for UST
102 ustlibs=""
103 ustinc=""
104
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])
110
111 case $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 ;;
124 esac
125 if test "x$with_ust_include" != x; then
126 ustinc="-I$with_ust_include "
127 fi
128 if test "x$with_ust_lib" != x; then
129 ustlibs="-L$with_ust_lib -lust"
130 fi
131
132 if 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"
143 fi
144
145 # Flags needed for UST
146 AC_SUBST(ustlibs)
147 AC_SUBST(ustinc)
148
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) ;;
155 esac])
156
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
162 ERROR_ON_WARNING=yes
163 fi
164
165 WERROR_CFLAGS=""
166 if test "${ERROR_ON_WARNING}" = yes ; then
167 WERROR_CFLAGS="-Werror"
168 fi
169
170 build_warnings="-Wall -Wpointer-arith \
171 -Wformat-nonliteral -Wno-char-subscripts -Wempty-body"
172
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 \
176 -Wno-narrowing"
177 else
178 build_warnings="$build_warnings -Wdeclaration-after-statement"
179 fi
180
181 # The set of warnings supported by a C++ compiler is not the same as
182 # of the C compiler.
183 if test "$enable_build_with_cxx" = "yes"; then
184 AC_LANG_PUSH([C++])
185 fi
186
187 WARN_CFLAGS=""
188 if test "x$GCC" = xyes
189 then
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
194 case $w in
195 -Werr*) WERROR_CFLAGS=-Werror ;;
196 *)
197 # Check whether GCC accepts it.
198 saved_CFLAGS="$CFLAGS"
199 CFLAGS="$CFLAGS $w"
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"
205 esac
206 done
207 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
208 fi
209 AC_SUBST(WARN_CFLAGS)
210 AC_SUBST(WERROR_CFLAGS)
211
212 if test "$enable_build_with_cxx" = "yes"; then
213 AC_LANG_POP([C++])
214 fi
215
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
219 dnl augment LIBS.
220 old_LIBS="$LIBS"
221 LIBS="$LIBS -ldl"
222 AC_CHECK_FUNCS(dladdr)
223 LIBS="$old_LIBS"
224
225 libiberty_INIT
226
227 AC_CHECK_DECLS([strerror, perror, vasprintf, vsnprintf])
228
229 AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_blksize])
230
231 AC_CHECK_TYPES(socklen_t, [], [],
232 [#include <sys/types.h>
233 #include <sys/socket.h>
234 ])
235
236 AC_CHECK_TYPES([Elf32_auxv_t, Elf64_auxv_t], [], [],
237 #include <elf.h>
238 )
239
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])
244
245 # Check for various supplementary target information (beyond the
246 # triplet) which might affect the choices in configure.srv.
247 case "${target}" in
248 changequote(,)dnl
249 i[34567]86-*-linux*)
250 changequote([,])dnl
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], [
255 #if __x86_64__
256 got it
257 #endif
258 ], [gdb_cv_i386_is_x86_64=yes],
259 [gdb_cv_i386_is_x86_64=no])
260 CPPFLAGS="$save_CPPFLAGS"])
261 ;;
262 m68k-*-*)
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], [
267 #ifdef __mcoldfire__
268 got it
269 #endif
270 ], [gdb_cv_m68k_is_coldfire=yes],
271 [gdb_cv_m68k_is_coldfire=no])
272 CPPFLAGS="$save_CPPFLAGS"])
273 ;;
274 esac
275
276 . ${srcdir}/configure.srv
277
278 # Add in the common host objects.
279 . ${srcdir}/../common/common.host
280 srv_host_obs="$common_host_obs"
281
282 if test "${srv_mingwce}" = "yes"; then
283 LIBS="$LIBS -lws2"
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"
290 fi
291
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
297 for Cygwin.])
298 fi
299
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 ]
303 [access.])
304 fi
305
306 if test "${srv_linux_regsets}" = "yes"; then
307 AC_DEFINE(HAVE_LINUX_REGSETS, 1,
308 [Define if the target supports register sets.])
309
310 AC_MSG_CHECKING(for PTRACE_GETREGS)
311 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getregs,
312 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
313 [PTRACE_GETREGS;],
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 ]
320 [access.])
321 fi
322
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 ]
333 [register access.])
334 fi
335 fi
336
337 if test "${srv_linux_btrace}" = "yes"; then
338 AC_DEFINE(HAVE_LINUX_BTRACE, 1,
339 [Define if the target supports branch tracing.])
340 fi
341
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)
347 fi
348
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)
352 fi
353
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)
357 fi
358
359 dnl Check for libdl, but do not add it to LIBS as only gdbserver
360 dnl needs it (and gdbreplay doesn't).
361 old_LIBS="$LIBS"
362 AC_CHECK_LIB(dl, dlopen)
363 LIBS="$old_LIBS"
364
365 srv_thread_depfiles=
366 srv_libs=
367
368 if test "$srv_linux_thread_db" = "yes"; then
369 if test "$ac_cv_lib_dl_dlopen" = "yes"; then
370 srv_libs="-ldl"
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
374 # supported there.
375 RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
376 LDFLAGS="$LDFLAGS $RDYNAMIC"
377 AC_TRY_LINK([], [],
378 [found="-Wl,--dynamic-list"
379 RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'],
380 [RDYNAMIC="-rdynamic"
381 LDFLAGS="$old_LDFLAGS $RDYNAMIC"
382 AC_TRY_LINK([], [],
383 [found="-rdynamic"],
384 [found="no"
385 RDYNAMIC=""])])
386 AC_SUBST(RDYNAMIC)
387 LDFLAGS="$old_LDFLAGS"
388 AC_MSG_RESULT($found)
389 else
390 srv_libs="-lthread_db"
391 fi
392
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.])
401 fi
402 fi
403
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"
408 ])
409
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.])
412 fi
413
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.])
417
418 tmp_xmlfiles=$srv_xmlfiles
419 srv_xmlfiles=""
420 for f in $tmp_xmlfiles; do
421 srv_xmlfiles="$srv_xmlfiles \$(XML_DIR)/$f"
422 done
423 fi
424
425 GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles $srv_host_obs"
426 GDBSERVER_LIBS="$srv_libs"
427
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])
437 fi
438
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"
446
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
453 # endif
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))
457 return 1])])
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
465 then
466 AC_DEFINE([HAVE_PERSONALITY], 1,
467 [Define if you support the personality syscall.])
468 fi
469
470
471 IPA_DEPFILES=""
472 extra_libraries=""
473
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
478 have_ipa=true
479 else
480 have_ipa=false
481 fi
482
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]) ;;
489 esac],
490 [want_ipa=$have_ipa])
491
492 if $want_ipa ; then
493 if $have_ipa ; then
494 IPA_DEPFILES="$ipa_obj"
495 extra_libraries="$extra_libraries libinproctrace.so"
496 else
497 AC_MSG_ERROR([inprocess agent not supported for this target])
498 fi
499 fi
500
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)
507
508 GNULIB=build-gnulib-gdbserver/import
509
510 GNULIB_STDINT_H=
511 if test x"$STDINT_H" != x; then
512 GNULIB_STDINT_H=$GNULIB/$STDINT_H
513 fi
514 AC_SUBST(GNULIB_STDINT_H)
515
516 AC_OUTPUT(Makefile,
517 [case x$CONFIG_HEADERS in
518 xconfig.h:config.in)
519 echo > stamp-h ;;
520 esac
521 ])
This page took 0.041164 seconds and 4 git commands to generate.