123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- dnl Autoconf configure snippets for common.
- dnl Copyright (C) 1995-2022 Free Software Foundation, Inc.
- dnl
- dnl This file is part of GDB.
- dnl
- dnl This program is free software; you can redistribute it and/or modify
- dnl it under the terms of the GNU General Public License as published by
- dnl the Free Software Foundation; either version 3 of the License, or
- dnl (at your option) any later version.
- dnl
- dnl This program is distributed in the hope that it will be useful,
- dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
- dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- dnl GNU General Public License for more details.
- dnl
- dnl You should have received a copy of the GNU General Public License
- dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
- dnl Invoke configury needed by the files in 'common'.
- AC_DEFUN([GDB_AC_COMMON], [
- # Set the 'development' global.
- . $srcdir/../bfd/development.sh
- AC_HEADER_STDC
- AC_FUNC_ALLOCA
- WIN32APILIBS=
- case ${host} in
- *mingw32*)
- AC_DEFINE(USE_WIN32API, 1,
- [Define if we should use the Windows API, instead of the
- POSIX API. On Windows, we use the Windows API when
- building for MinGW, but the POSIX API when building
- for Cygwin.])
- WIN32APILIBS="-lws2_32"
- ;;
- esac
- dnl Note that this requires codeset.m4, which is included
- dnl by the users of common.m4.
- AM_LANGINFO_CODESET
- AC_CHECK_HEADERS(linux/perf_event.h locale.h memory.h signal.h dnl
- sys/resource.h sys/socket.h dnl
- sys/un.h sys/wait.h dnl
- thread_db.h wait.h dnl
- termios.h dnl
- dlfcn.h dnl
- linux/elf.h proc_service.h dnl
- poll.h sys/poll.h sys/select.h)
- AC_FUNC_MMAP
- AC_FUNC_FORK
- AC_CHECK_FUNCS([fdwalk getrlimit pipe pipe2 poll socketpair sigaction \
- ptrace64 sbrk setns sigaltstack sigprocmask \
- setpgid setpgrp getrusage getauxval sigtimedwait])
- # This is needed for RHEL 5 and uclibc-ng < 1.0.39.
- # These did not define ADDR_NO_RANDOMIZE in sys/personality.h,
- # only in linux/personality.h.
- AC_CHECK_DECLS([ADDR_NO_RANDOMIZE],,, [#include <sys/personality.h>])
- AC_CHECK_DECLS([strstr])
- # ----------------------- #
- # Checks for structures. #
- # ----------------------- #
- AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_blksize])
- # On FreeBSD we need libutil for the kinfo_get* functions. On
- # GNU/kFreeBSD systems, FreeBSD libutil is renamed to libutil-freebsd.
- # Figure out which one to use.
- AC_SEARCH_LIBS(kinfo_getfile, util util-freebsd)
- # Define HAVE_KINFO_GETFILE if kinfo_getfile is available.
- AC_CHECK_FUNCS(kinfo_getfile)
- # ----------------------- #
- # Check for threading. #
- # ----------------------- #
- AC_ARG_ENABLE(threading,
- AS_HELP_STRING([--enable-threading], [include support for parallel processing of data (yes/no)]),
- [case "$enableval" in
- yes) want_threading=yes ;;
- no) want_threading=no ;;
- *) AC_MSG_ERROR([bad value $enableval for threading]) ;;
- esac],
- [want_threading=yes])
- # Check for std::thread. This does not work on some platforms, like
- # mingw and DJGPP.
- AC_LANG_PUSH([C++])
- AX_PTHREAD([threads=yes], [threads=no])
- if test "$threads" = "yes"; then
- save_LIBS="$LIBS"
- LIBS="$PTHREAD_LIBS $LIBS"
- save_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS="$PTHREAD_CFLAGS $save_CXXFLAGS"
- AC_CACHE_CHECK([for std::thread],
- gdb_cv_cxx_std_thread,
- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
- [[#include <thread>
- void callback() { }]],
- [[std::thread t(callback);]])],
- gdb_cv_cxx_std_thread=yes,
- gdb_cv_cxx_std_thread=no)])
- # This check must be here, while LIBS includes any necessary
- # threading library.
- AC_CHECK_FUNCS([pthread_sigmask pthread_setname_np])
- LIBS="$save_LIBS"
- CXXFLAGS="$save_CXXFLAGS"
- fi
- if test "$want_threading" = "yes"; then
- if test "$gdb_cv_cxx_std_thread" = "yes"; then
- AC_DEFINE(CXX_STD_THREAD, 1,
- [Define to 1 if std::thread works.])
- fi
- fi
- AC_LANG_POP
- dnl Check if sigsetjmp is available. Using AC_CHECK_FUNCS won't
- dnl do since sigsetjmp might only be defined as a macro.
- AC_CACHE_CHECK(
- [for sigsetjmp],
- [gdb_cv_func_sigsetjmp],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [#include <setjmp.h>],
- [sigjmp_buf env;
- while (! sigsetjmp (env, 1))
- siglongjmp (env, 1);]
- )],
- [gdb_cv_func_sigsetjmp=yes],
- [gdb_cv_func_sigsetjmp=no]
- )]
- )
- if test "$gdb_cv_func_sigsetjmp" = "yes"; then
- AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])
- fi
- AC_ARG_WITH(intel_pt,
- AS_HELP_STRING([--with-intel-pt], [include Intel Processor Trace support (auto/yes/no)]),
- [], [with_intel_pt=auto])
- AC_MSG_CHECKING([whether to use intel pt])
- AC_MSG_RESULT([$with_intel_pt])
- if test "${with_intel_pt}" = no; then
- AC_MSG_WARN([Intel Processor Trace support disabled; some features may be unavailable.])
- HAVE_LIBIPT=no
- else
- AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
- #include <linux/perf_event.h>
- #ifndef PERF_ATTR_SIZE_VER5
- # error
- #endif
- ]])], [perf_event=yes], [perf_event=no])
- if test "$perf_event" != yes; then
- if test "$with_intel_pt" = yes; then
- AC_MSG_ERROR([linux/perf_event.h missing or too old])
- else
- AC_MSG_WARN([linux/perf_event.h missing or too old; some features may be unavailable.])
- fi
- fi
- AC_LIB_HAVE_LINKFLAGS([ipt], [], [#include "intel-pt.h"], [pt_insn_alloc_decoder (0);])
- if test "$HAVE_LIBIPT" != yes; then
- if test "$with_intel_pt" = yes; then
- AC_MSG_ERROR([libipt is missing or unusable])
- else
- AC_MSG_WARN([libipt is missing or unusable; some features may be unavailable.])
- fi
- else
- save_LIBS=$LIBS
- LIBS="$LIBS $LIBIPT"
- AC_CHECK_FUNCS(pt_insn_event)
- AC_CHECK_MEMBERS([struct pt_insn.enabled, struct pt_insn.resynced], [], [],
- [#include <intel-pt.h>])
- LIBS=$save_LIBS
- fi
- fi
- # Check if the compiler and runtime support printing long longs.
- AC_CACHE_CHECK([for long long support in printf],
- gdb_cv_printf_has_long_long,
- [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
- [[char buf[32];
- long long l = 0;
- l = (l << 16) + 0x0123;
- l = (l << 16) + 0x4567;
- l = (l << 16) + 0x89ab;
- l = (l << 16) + 0xcdef;
- sprintf (buf, "0x%016llx", l);
- return (strcmp ("0x0123456789abcdef", buf));]])],
- gdb_cv_printf_has_long_long=yes,
- gdb_cv_printf_has_long_long=no,
- gdb_cv_printf_has_long_long=no)])
- if test "$gdb_cv_printf_has_long_long" = yes; then
- AC_DEFINE(PRINTF_HAS_LONG_LONG, 1,
- [Define to 1 if the "%ll" format works to print long longs.])
- fi
- BFD_SYS_PROCFS_H
- if test "$ac_cv_header_sys_procfs_h" = yes; then
- BFD_HAVE_SYS_PROCFS_TYPE(gregset_t)
- BFD_HAVE_SYS_PROCFS_TYPE(fpregset_t)
- BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
- BFD_HAVE_SYS_PROCFS_TYPE(prfpregset_t)
- BFD_HAVE_SYS_PROCFS_TYPE(prgregset32_t)
- BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
- BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
- BFD_HAVE_SYS_PROCFS_TYPE(elf_fpregset_t)
- fi
- ])
|