[C++] Default to -Werror in C++ mode too
[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. Turn it off for releases.
161 if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" \
162 && test x"$enable_build_with_cxx" != x"yes" \
163 && $development; then
164 ERROR_ON_WARNING=yes
165 fi
166
167 WERROR_CFLAGS=""
168 if test "${ERROR_ON_WARNING}" = yes ; then
169 WERROR_CFLAGS="-Werror"
170 fi
171
172 build_warnings="-Wall -Wpointer-arith \
173 -Wformat-nonliteral -Wno-char-subscripts -Wempty-body"
174
175 # Now add in C and C++ specific options, depending on mode.
176 if test "$enable_build_with_cxx" = "yes"; then
177 build_warnings="$build_warnings -Wno-sign-compare -Wno-write-strings \
178 -Wno-narrowing"
179 else
180 build_warnings="$build_warnings -Wdeclaration-after-statement"
181 fi
182
183 # The set of warnings supported by a C++ compiler is not the same as
184 # of the C compiler.
185 if test "$enable_build_with_cxx" = "yes"; then
186 AC_LANG_PUSH([C++])
187 fi
188
189 WARN_CFLAGS=""
190 if test "x$GCC" = xyes
191 then
192 AC_MSG_CHECKING(compiler warning flags)
193 # Separate out the -Werror flag as some files just cannot be
194 # compiled with it enabled.
195 for w in ${build_warnings}; do
196 case $w in
197 -Werr*) WERROR_CFLAGS=-Werror ;;
198 *)
199 # Check whether GCC accepts it.
200 saved_CFLAGS="$CFLAGS"
201 CFLAGS="$CFLAGS $w"
202 saved_CXXFLAGS="$CXXFLAGS"
203 CXXFLAGS="$CXXFLAGS $w"
204 AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
205 CFLAGS="$saved_CFLAGS"
206 CXXFLAGS="$saved_CXXFLAGS"
207 esac
208 done
209 AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
210 fi
211 AC_SUBST(WARN_CFLAGS)
212 AC_SUBST(WERROR_CFLAGS)
213
214 if test "$enable_build_with_cxx" = "yes"; then
215 AC_LANG_POP([C++])
216 fi
217
218 dnl dladdr is glibc-specific. It is used by thread-db.c but only for
219 dnl debugging messages. It lives in -ldl which is handled below so we don't
220 dnl use AC_CHECK_LIB (or AC_SEARCH_LIBS) here. Instead we just temporarily
221 dnl augment LIBS.
222 old_LIBS="$LIBS"
223 LIBS="$LIBS -ldl"
224 AC_CHECK_FUNCS(dladdr)
225 LIBS="$old_LIBS"
226
227 libiberty_INIT
228
229 AC_CHECK_DECLS([strerror, perror, vasprintf, vsnprintf])
230
231 AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_blksize])
232
233 AC_CHECK_TYPES(socklen_t, [], [],
234 [#include <sys/types.h>
235 #include <sys/socket.h>
236 ])
237
238 AC_CHECK_TYPES([Elf32_auxv_t, Elf64_auxv_t], [], [],
239 #include <elf.h>
240 )
241
242 ACX_PKGVERSION([GDB])
243 ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
244 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
245 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
246
247 # Check for various supplementary target information (beyond the
248 # triplet) which might affect the choices in configure.srv.
249 case "${target}" in
250 changequote(,)dnl
251 i[34567]86-*-linux*)
252 changequote([,])dnl
253 AC_CACHE_CHECK([if building for x86-64], [gdb_cv_i386_is_x86_64],
254 [save_CPPFLAGS="$CPPFLAGS"
255 CPPFLAGS="$CPPFLAGS $CFLAGS"
256 AC_EGREP_CPP([got it], [
257 #if __x86_64__
258 got it
259 #endif
260 ], [gdb_cv_i386_is_x86_64=yes],
261 [gdb_cv_i386_is_x86_64=no])
262 CPPFLAGS="$save_CPPFLAGS"])
263 ;;
264 m68k-*-*)
265 AC_CACHE_CHECK([if building for Coldfire], [gdb_cv_m68k_is_coldfire],
266 [save_CPPFLAGS="$CPPFLAGS"
267 CPPFLAGS="$CPPFLAGS $CFLAGS"
268 AC_EGREP_CPP([got it], [
269 #ifdef __mcoldfire__
270 got it
271 #endif
272 ], [gdb_cv_m68k_is_coldfire=yes],
273 [gdb_cv_m68k_is_coldfire=no])
274 CPPFLAGS="$save_CPPFLAGS"])
275 ;;
276 esac
277
278 . ${srcdir}/configure.srv
279
280 # Add in the common host objects.
281 . ${srcdir}/../common/common.host
282 srv_host_obs="$common_host_obs"
283
284 if test "${srv_mingwce}" = "yes"; then
285 LIBS="$LIBS -lws2"
286 elif test "${srv_mingw}" = "yes"; then
287 LIBS="$LIBS -lws2_32"
288 elif test "${srv_qnx}" = "yes"; then
289 LIBS="$LIBS -lsocket"
290 elif test "${srv_lynxos}" = "yes"; then
291 LIBS="$LIBS -lnetinet"
292 fi
293
294 if test "${srv_mingw}" = "yes"; then
295 AC_DEFINE(USE_WIN32API, 1,
296 [Define if we should use the Windows API, instead of the
297 POSIX API. On Windows, we use the Windows API when
298 building for MinGW, but the POSIX API when building
299 for Cygwin.])
300 fi
301
302 if test "${srv_linux_usrregs}" = "yes"; then
303 AC_DEFINE(HAVE_LINUX_USRREGS, 1,
304 [Define if the target supports PTRACE_PEEKUSR for register ]
305 [access.])
306 fi
307
308 if test "${srv_linux_regsets}" = "yes"; then
309 AC_DEFINE(HAVE_LINUX_REGSETS, 1,
310 [Define if the target supports register sets.])
311
312 AC_MSG_CHECKING(for PTRACE_GETREGS)
313 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getregs,
314 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
315 [PTRACE_GETREGS;],
316 [gdbsrv_cv_have_ptrace_getregs=yes],
317 [gdbsrv_cv_have_ptrace_getregs=no])])
318 AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getregs)
319 if test "${gdbsrv_cv_have_ptrace_getregs}" = "yes"; then
320 AC_DEFINE(HAVE_PTRACE_GETREGS, 1,
321 [Define if the target supports PTRACE_GETREGS for register ]
322 [access.])
323 fi
324
325 AC_MSG_CHECKING(for PTRACE_GETFPXREGS)
326 AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getfpxregs,
327 [AC_TRY_COMPILE([#include <sys/ptrace.h>],
328 [PTRACE_GETFPXREGS;],
329 [gdbsrv_cv_have_ptrace_getfpxregs=yes],
330 [gdbsrv_cv_have_ptrace_getfpxregs=no])])
331 AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getfpxregs)
332 if test "${gdbsrv_cv_have_ptrace_getfpxregs}" = "yes"; then
333 AC_DEFINE(HAVE_PTRACE_GETFPXREGS, 1,
334 [Define if the target supports PTRACE_GETFPXREGS for extended ]
335 [register access.])
336 fi
337 fi
338
339 if test "${srv_linux_btrace}" = "yes"; then
340 AC_DEFINE(HAVE_LINUX_BTRACE, 1,
341 [Define if the target supports branch tracing.])
342 fi
343
344 if test "$ac_cv_header_sys_procfs_h" = yes; then
345 BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
346 BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
347 BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
348 BFD_HAVE_SYS_PROCFS_TYPE(prfpregset_t)
349 BFD_HAVE_SYS_PROCFS_TYPE(elf_fpregset_t)
350 fi
351
352 dnl Some systems (e.g., Android) have lwpid_t defined in libthread_db.h.
353 if test "$bfd_cv_have_sys_procfs_type_lwpid_t" != yes; then
354 GDBSERVER_HAVE_THREAD_DB_TYPE(lwpid_t)
355 fi
356
357 dnl Some systems (e.g., Android) have psaddr_t defined in libthread_db.h.
358 if test "$bfd_cv_have_sys_procfs_type_psaddr_t" != yes; then
359 GDBSERVER_HAVE_THREAD_DB_TYPE(psaddr_t)
360 fi
361
362 dnl Check for libdl, but do not add it to LIBS as only gdbserver
363 dnl needs it (and gdbreplay doesn't).
364 old_LIBS="$LIBS"
365 AC_CHECK_LIB(dl, dlopen)
366 LIBS="$old_LIBS"
367
368 srv_thread_depfiles=
369 srv_libs=
370
371 if test "$srv_linux_thread_db" = "yes"; then
372 if test "$ac_cv_lib_dl_dlopen" = "yes"; then
373 srv_libs="-ldl"
374 AC_MSG_CHECKING(for the dynamic export flag)
375 old_LDFLAGS="$LDFLAGS"
376 # Older GNU ld supports --export-dynamic but --dynamic-list may not be
377 # supported there.
378 RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
379 LDFLAGS="$LDFLAGS $RDYNAMIC"
380 AC_TRY_LINK([], [],
381 [found="-Wl,--dynamic-list"
382 RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'],
383 [RDYNAMIC="-rdynamic"
384 LDFLAGS="$old_LDFLAGS $RDYNAMIC"
385 AC_TRY_LINK([], [],
386 [found="-rdynamic"],
387 [found="no"
388 RDYNAMIC=""])])
389 AC_SUBST(RDYNAMIC)
390 LDFLAGS="$old_LDFLAGS"
391 AC_MSG_RESULT($found)
392 else
393 srv_libs="-lthread_db"
394 fi
395
396 srv_thread_depfiles="thread-db.o proc-service.o"
397 AC_DEFINE(USE_THREAD_DB, 1, [Define if we should use libthread_db.])
398 AC_CACHE_CHECK([for TD_VERSION], gdbsrv_cv_have_td_version,
399 [AC_TRY_COMPILE([#include <thread_db.h>], [TD_VERSION;],
400 [gdbsrv_cv_have_td_version=yes],
401 [gdbsrv_cv_have_td_version=no])])
402 if test $gdbsrv_cv_have_td_version = yes; then
403 AC_DEFINE(HAVE_TD_VERSION, 1, [Define if TD_VERSION is available.])
404 fi
405 fi
406
407 AC_ARG_WITH(libthread-db,
408 AS_HELP_STRING([--with-libthread-db=PATH], [use given libthread_db directly]),
409 [srv_libthread_db_path="${withval}"
410 srv_libs="$srv_libthread_db_path"
411 ])
412
413 if test "$srv_libs" != "" -a "$srv_libs" != "-ldl"; then
414 AC_DEFINE(USE_LIBTHREAD_DB_DIRECTLY, 1, [Define if we should use libthread_db directly.])
415 fi
416
417 if test "$srv_xmlfiles" != ""; then
418 srv_xmlbuiltin="xml-builtin.o"
419 AC_DEFINE(USE_XML, 1, [Define if an XML target description is available.])
420
421 tmp_xmlfiles=$srv_xmlfiles
422 srv_xmlfiles=""
423 for f in $tmp_xmlfiles; do
424 srv_xmlfiles="$srv_xmlfiles \$(XML_DIR)/$f"
425 done
426 fi
427
428 GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles $srv_host_obs"
429 GDBSERVER_LIBS="$srv_libs"
430
431 dnl Check whether the target supports __sync_*_compare_and_swap.
432 AC_CACHE_CHECK([whether the target supports __sync_*_compare_and_swap],
433 gdbsrv_cv_have_sync_builtins, [
434 AC_TRY_LINK([], [int foo, bar; bar = __sync_val_compare_and_swap(&foo, 0, 1);],
435 gdbsrv_cv_have_sync_builtins=yes,
436 gdbsrv_cv_have_sync_builtins=no)])
437 if test $gdbsrv_cv_have_sync_builtins = yes; then
438 AC_DEFINE(HAVE_SYNC_BUILTINS, 1,
439 [Define to 1 if the target supports __sync_*_compare_and_swap])
440 fi
441
442 dnl Check for -fvisibility=hidden support in the compiler.
443 saved_cflags="$CFLAGS"
444 CFLAGS="$CFLAGS -fvisibility=hidden"
445 AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),
446 [gdbsrv_cv_have_visibility_hidden=yes],
447 [gdbsrv_cv_have_visibility_hidden=no])
448 CFLAGS="$saved_cflags"
449
450 dnl Check if we can disable the virtual address space randomization.
451 dnl The functionality of setarch -R.
452 AC_CHECK_DECLS([ADDR_NO_RANDOMIZE],,, [#include <sys/personality.h>])
453 define([PERSONALITY_TEST], [AC_LANG_PROGRAM([#include <sys/personality.h>], [
454 # if !HAVE_DECL_ADDR_NO_RANDOMIZE
455 # define ADDR_NO_RANDOMIZE 0x0040000
456 # endif
457 /* Test the flag could be set and stays set. */
458 personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
459 if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
460 return 1])])
461 AC_RUN_IFELSE([PERSONALITY_TEST],
462 [gdbsrv_cv_have_personality=true],
463 [gdbsrv_cv_have_personality=false],
464 [AC_LINK_IFELSE([PERSONALITY_TEST],
465 [gdbsrv_cv_have_personality=true],
466 [gdbsrv_cv_have_personality=false])])
467 if $gdbsrv_cv_have_personality
468 then
469 AC_DEFINE([HAVE_PERSONALITY], 1,
470 [Define if you support the personality syscall.])
471 fi
472
473
474 IPA_DEPFILES=""
475 extra_libraries=""
476
477 # check whether to enable the inprocess agent
478 if test "$ipa_obj" != "" \
479 -a "$gdbsrv_cv_have_sync_builtins" = yes \
480 -a "$gdbsrv_cv_have_visibility_hidden" = yes; then
481 have_ipa=true
482 else
483 have_ipa=false
484 fi
485
486 AC_ARG_ENABLE(inprocess-agent,
487 AS_HELP_STRING([--enable-inprocess-agent], [inprocess agent]),
488 [case "$enableval" in
489 yes) want_ipa=true ;;
490 no) want_ipa=false ;;
491 *) AC_MSG_ERROR([bad value $enableval for inprocess-agent]) ;;
492 esac],
493 [want_ipa=$have_ipa])
494
495 if $want_ipa ; then
496 if $have_ipa ; then
497 IPA_DEPFILES="$ipa_obj"
498 extra_libraries="$extra_libraries libinproctrace.so"
499 else
500 AC_MSG_ERROR([inprocess agent not supported for this target])
501 fi
502 fi
503
504 AC_SUBST(GDBSERVER_DEPFILES)
505 AC_SUBST(GDBSERVER_LIBS)
506 AC_SUBST(srv_xmlbuiltin)
507 AC_SUBST(srv_xmlfiles)
508 AC_SUBST(IPA_DEPFILES)
509 AC_SUBST(extra_libraries)
510
511 GNULIB=build-gnulib-gdbserver/import
512
513 GNULIB_STDINT_H=
514 if test x"$STDINT_H" != x; then
515 GNULIB_STDINT_H=$GNULIB/$STDINT_H
516 fi
517 AC_SUBST(GNULIB_STDINT_H)
518
519 AC_OUTPUT(Makefile,
520 [case x$CONFIG_HEADERS in
521 xconfig.h:config.in)
522 echo > stamp-h ;;
523 esac
524 ])
This page took 0.041293 seconds and 4 git commands to generate.