1# Configure template for strace. 2# 3# Copyright (c) 1999-2001 Wichert Akkerman <wichert@deephackmode.org> 4# Copyright (c) 2002-2009 Roland McGrath <roland@redhat.com> 5# Copyright (c) 2006-2016 Dmitry V. Levin <ldv@altlinux.org> 6# Copyright (c) 2008-2015 Mike Frysinger <vapier@gentoo.org> 7# Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com> 8# All rights reserved. 9# 10# Redistribution and use in source and binary forms, with or without 11# modification, are permitted provided that the following conditions 12# are met: 13# 1. Redistributions of source code must retain the above copyright 14# notice, this list of conditions and the following disclaimer. 15# 2. Redistributions in binary form must reproduce the above copyright 16# notice, this list of conditions and the following disclaimer in the 17# documentation and/or other materials provided with the distribution. 18# 3. The name of the author may not be used to endorse or promote products 19# derived from this software without specific prior written permission. 20# 21# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 22# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 25# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 26# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 32AC_PREREQ(2.57) 33AC_INIT([strace], 34 m4_esyscmd([./git-version-gen .tarball-version]), 35 [strace-devel@lists.sourceforge.net], 36 [strace], 37 [https://strace.io]) 38AC_COPYRIGHT([Copyright (C) 1999-2017 The strace developers.]) 39AC_CONFIG_SRCDIR([strace.c]) 40AC_CONFIG_AUX_DIR([.]) 41AC_CONFIG_HEADERS([config.h]) 42AM_INIT_AUTOMAKE([foreign nostdinc dist-xz silent-rules parallel-tests]) 43AM_EXTRA_RECURSIVE_TARGETS([check-valgrind]) 44AM_MAINTAINER_MODE 45AC_CANONICAL_HOST 46 47RPM_CHANGELOGTIME="$(LC_TIME=C date '+%a %b %d %Y')" 48AC_SUBST(RPM_CHANGELOGTIME) 49DEB_CHANGELOGTIME="$(LC_TIME=C date -R)" 50AC_SUBST(DEB_CHANGELOGTIME) 51 52AC_PROG_CC 53AC_PROG_CPP 54st_WARN_CFLAGS 55AX_PROG_CC_FOR_BUILD 56AC_PROG_INSTALL 57AC_PROG_RANLIB 58 59AC_USE_SYSTEM_EXTENSIONS 60AX_CODE_COVERAGE 61 62AC_MSG_CHECKING([for supported architecture]) 63arch_m32= 64arch_mx32= 65case "$host_cpu" in 66bfin) 67 arch=bfin 68 AC_DEFINE([BFIN], 1, [Define for the Blackfin architecture.]) 69 ;; 70i[[3456]]86|pentium) 71 arch=i386 72 AC_DEFINE([I386], 1, [Define for the i386 architecture.]) 73 ;; 74ia64) 75 arch=ia64 76 AC_DEFINE([IA64], 1, [Define for the IA64 architecture.]) 77 ;; 78m68k) 79 arch=m68k 80 AC_DEFINE([M68K], 1, [Define for the m68k architecture.]) 81 ;; 82sparc64*) 83 arch=sparc64 84 arch_m32=sparc 85 AC_DEFINE([SPARC64], 1, [Define for the SPARC64 architecture.]) 86 ;; 87sparc*) 88 arch=sparc 89 AC_DEFINE([SPARC], 1, [Define for the SPARC architecture.]) 90 ;; 91metag*) 92 arch=metag 93 AC_DEFINE([METAG], 1, [Define for the Meta architecture.]) 94 ;; 95mips*) 96 arch=mips 97 AC_DEFINE([MIPS], 1, [Define for the MIPS architecture.]) 98 ;; 99alpha*) 100 arch=alpha 101 AC_DEFINE([ALPHA], 1, [Define for the Alpha architecture.]) 102 ;; 103powerpc*) 104 AC_DEFINE([POWERPC], 1, [Define for the PowerPC architecture.]) 105 AC_TRY_COMPILE( 106[#ifndef __LP64__ 107# error 32 bit 108#endif], [], arch=powerpc64, arch=powerpc) 109 if test "$arch" = "powerpc64"; then 110 arch_m32=powerpc 111 AC_DEFINE([POWERPC64], 1, [Define for the PowerPC64 architecture.]) 112 fi 113 ;; 114arm*) 115 arch=arm 116 AC_DEFINE([ARM], 1, [Define for the ARM architecture.]) 117 ;; 118aarch64*) 119 arch=aarch64 120 arch_m32=arm 121 AC_DEFINE([AARCH64], 1, [Define for the AArch64 architecture.]) 122 ;; 123avr32*) 124 arch=avr32 125 AC_DEFINE([AVR32], 1, [Define for the AVR32 architecture.]) 126 ;; 127arc*) 128 arch=arc 129 AC_DEFINE([ARC], 1, [Define for the ARC architecture.]) 130 ;; 131s390) 132 arch=s390 133 AC_DEFINE([S390], 1, [Define for the S390 architecture.]) 134 ;; 135s390x) 136 arch=s390x 137 AC_DEFINE([S390X], 1, [Define for the S390x architecture.]) 138 ;; 139hppa*|parisc*) 140 arch=hppa 141 AC_DEFINE([HPPA], 1, [Define for the HPPA architecture.]) 142 ;; 143sh64*) 144 arch=sh64 145 AC_DEFINE([SH64], 1, [Define for the SH64 architecture.]) 146 ;; 147sh*) 148 arch=sh 149 AC_DEFINE([SH], 1, [Define for the SH architecture.]) 150 ;; 151x86?64*) 152 arch_m32=i386 153 AC_TRY_COMPILE( 154[#ifndef __ILP32__ 155# error not x32 156#endif], [], arch=x32, arch=x86_64) 157 if test "$arch" = "x86_64"; then 158 arch_mx32=x32 159 AC_DEFINE([X86_64], 1, [Define for the 64bit AMD x86-64 architecture.]) 160 else 161 AC_DEFINE([X32], 1, [Define for the 32bit AMD x86-64 architecture.]) 162 fi 163 ;; 164cris|crisv10) 165 arch=crisv10 166 AC_DEFINE([CRISV10], 1, [Define for the CRISv10 architecture.]) 167 ;; 168crisv32) 169 arch=crisv32 170 AC_DEFINE([CRISV32], 1, [Define for the CRISv32 architecture.]) 171 ;; 172tile*) 173 arch=tile 174 AC_DEFINE([TILE], 1, [Define for the Tile architecture]) 175 ;; 176microblaze*) 177 arch=microblaze 178 AC_DEFINE([MICROBLAZE], 1, [Define for the MicroBlaze architecture.]) 179 ;; 180nios2*) 181 arch=nios2 182 AC_DEFINE([NIOS2], 1, [Define for the Nios-II architecture.]) 183 ;; 184 185or1k*) 186 arch=or1k 187 AC_DEFINE([OR1K], 1, [Define for the OpenRISC 1000 architecture.]) 188 ;; 189 190xtensa*) 191 arch=xtensa 192 AC_DEFINE([XTENSA], 1, [Define for the Xtensa architecture]) 193 ;; 194 195riscv*) 196 arch=riscv 197 AC_DEFINE([RISCV], 1, [Define for the RISC-V architecture]) 198 ;; 199 200*) 201 AC_MSG_RESULT([NO!]) 202 AC_MSG_ERROR([architecture $host_cpu is not supported by strace]) 203 ;; 204esac 205AC_MSG_RESULT($arch) 206 207test -n "$arch_m32" || 208 arch_m32=$arch 209test -n "$arch_mx32" || 210 arch_mx32=$arch 211AC_SUBST(arch) 212AC_SUBST(arch_m32) 213AC_SUBST(arch_mx32) 214 215MIPS_ABI= 216if test "$arch" = mips; then 217 AC_CACHE_CHECK([for _MIPS_SIM], [st_cv__MIPS_SIM], 218 [AC_COMPUTE_INT([st_cv__MIPS_SIM], [_MIPS_SIM], , 219 [AC_MSG_ERROR([_MIPS_SIM cannot be determined])])]) 220 221 # requires GCC >= 3.4 222 AC_CACHE_CHECK([for MIPS ABI], [st_cv_mips_abi], 223 [AC_COMPILE_IFELSE( 224 [AC_LANG_PROGRAM(, [[int i[_MIPS_SIM == _ABIO32 ? 1 : - 1];]])], 225 [st_cv_mips_abi=o32], 226 [AC_COMPILE_IFELSE( 227 [AC_LANG_PROGRAM(, [[int i[_MIPS_SIM == _ABIN32 ? 1 : - 1];]])], 228 [st_cv_mips_abi=n32], 229 [AC_COMPILE_IFELSE( 230 [AC_LANG_PROGRAM(, [[int i[_MIPS_SIM == _ABI64 ? 1 : - 1];]])], 231 [st_cv_mips_abi=n64], 232 [st_cv_mips_abi=unknown])])])]) 233 234 case "$st_cv_mips_abi" in 235 o32) AC_DEFINE([LINUX_MIPSO32], [1], [Define for _ABIO32.]);; 236 n32) AC_DEFINE([LINUX_MIPSN32], [1], [Define for _ABIN32.]);; 237 n64) AC_DEFINE([LINUX_MIPSN64], [1], [Define for _ABI64.]);; 238 *) AC_MSG_ERROR([Unsupported _MIPS_SIM]);; 239 esac 240 MIPS_ABI="$st_cv_mips_abi" 241fi 242AC_SUBST(MIPS_ABI) 243 244AC_ARG_ENABLE([arm-oabi], 245 [AS_HELP_STRING([--enable-arm-oabi], 246 [enable OABI support on ARM EABI])], 247 [], [enable_arm_oabi=no]) 248case "$enable_arm_oabi" in 249 yes) enable_arm_oabi=1 ;; 250 no) enable_arm_oabi=0 ;; 251 *) AC_MSG_ERROR([bad value $enable_arm_oabi for arm-oabi option]) ;; 252esac 253AC_DEFINE_UNQUOTED([ENABLE_ARM_OABI], [$enable_arm_oabi], 254 [Define to 1 if you want OABI support on ARM EABI.]) 255 256AC_C_BIGENDIAN 257AC_C_TYPEOF 258 259AC_TYPE_UID_T 260 261AC_CHECK_FUNCS(m4_normalize([ 262 accept4 263 fallocate 264 fanotify_mark 265 fopen64 266 fork 267 fputs_unlocked 268 fstatat 269 ftruncate 270 futimens 271 if_indextoname 272 open64 273 prctl 274 preadv 275 process_vm_readv 276 pwritev 277 readahead 278 signalfd 279 stpcpy 280 strerror 281 strsignal 282 sync_file_range 283 utimensat 284])) 285 286AC_CHECK_TYPES([sig_atomic_t, struct sigcontext],,, [#include <signal.h>]) 287 288AC_CHECK_TYPES([struct mmsghdr],,, [#include <sys/socket.h>]) 289 290AC_CHECK_TYPES([__kernel_long_t, __kernel_ulong_t],,, 291[#include <asm/posix_types.h>]) 292 293AC_CHECK_TYPES([struct stat64, struct __old_kernel_stat],,, 294[#include <sys/types.h> 295#include <asm/stat.h>]) 296 297AC_CHECK_TYPES([struct user_desc],,, [#include <asm/ldt.h>]) 298 299AC_CHECK_MEMBERS([struct stat.st_mtime_nsec, struct stat64.st_mtime_nsec],,, 300[#include <sys/types.h> 301#include <asm/stat.h>]) 302 303AC_CHECK_TYPES(m4_normalize([ 304 struct pt_all_user_regs, 305 struct ia64_fpreg, 306 struct ptrace_peeksiginfo_args 307]),,, [#include <sys/ptrace.h>]) 308 309AC_CHECK_TYPES(m4_normalize([ 310 struct flock, 311 struct flock64, 312 struct __kernel_flock, 313 struct __kernel_flock64 314]),,, 315[#include <sys/types.h> 316#include <linux/fcntl.h>]) 317 318AC_CHECK_MEMBERS([struct timex.tai],,, [#include <sys/timex.h>]) 319 320AC_CHECK_MEMBERS([struct utsname.domainname],,, [#include <sys/utsname.h>]) 321 322AC_CHECK_MEMBERS(m4_normalize([ 323 siginfo_t.si_syscall, 324 siginfo_t.si_timerid, 325 siginfo_t.si_overrun 326]),,, [#include <signal.h>]) 327 328AC_CHECK_MEMBERS(m4_normalize([ 329 struct perf_event_attr.precise_ip, 330 struct perf_event_attr.mmap_data, 331 struct perf_event_attr.sample_id_all, 332 struct perf_event_attr.exclude_host, 333 struct perf_event_attr.exclude_guest, 334 struct perf_event_attr.exclude_callchain_kernel, 335 struct perf_event_attr.exclude_callchain_user, 336 struct perf_event_attr.mmap2, 337 struct perf_event_attr.comm_exec, 338 struct perf_event_attr.use_clockid, 339 struct perf_event_attr.context_switch, 340 struct perf_event_attr.write_backward, 341 struct perf_event_attr.bp_type, 342 struct perf_event_attr.config1, 343 struct perf_event_attr.config2, 344 struct perf_event_attr.branch_sample_type, 345 struct perf_event_attr.sample_regs_user, 346 struct perf_event_attr.sample_stack_user, 347 struct perf_event_attr.sample_regs_intr, 348 struct perf_event_attr.aux_watermark, 349 struct perf_event_attr.sample_max_stack 350]),,, [#include <linux/perf_event.h>]) 351 352AC_CHECK_HEADERS(m4_normalize([ 353 asm/cachectl.h 354 asm/sysmips.h 355 bluetooth/bluetooth.h 356 elf.h 357 inttypes.h 358 linux/bsg.h 359 linux/dm-ioctl.h 360 linux/dqblk_xfs.h 361 linux/falloc.h 362 linux/fiemap.h 363 linux/filter.h 364 linux/hiddev.h 365 linux/ip_vs.h 366 linux/ipc.h 367 linux/mmtimer.h 368 linux/msg.h 369 linux/perf_event.h 370 linux/quota.h 371 linux/seccomp.h 372 linux/securebits.h 373 linux/sem.h 374 linux/shm.h 375 linux/userfaultfd.h 376 linux/utsname.h 377 mqueue.h 378 netinet/sctp.h 379 netipx/ipx.h 380 scsi/sg.h 381 stropts.h 382 sys/conf.h 383 sys/eventfd.h 384 sys/fanotify.h 385 sys/ipc.h 386 sys/msg.h 387 sys/quota.h 388 sys/reg.h 389 sys/sem.h 390 sys/shm.h 391 sys/signalfd.h 392 sys/xattr.h 393 ustat.h 394])) 395 396AC_CHECK_HEADERS([asm/sigcontext.h],,, [#include <signal.h>]) 397 398AC_CHECK_HEADERS([netinet/tcp.h netinet/udp.h],,, [#include <netinet/in.h>]) 399 400AC_CHECK_HEADERS([linux/mqueue.h],,, [#include <linux/types.h>]) 401 402AC_CHECK_HEADERS(m4_normalize([ 403 linux/netfilter_arp/arp_tables.h 404 linux/netfilter_bridge/ebtables.h 405 linux/netfilter_ipv4/ip_tables.h 406 linux/netfilter_ipv6/ip6_tables.h 407]),,, [#include <netinet/in.h> 408#include <net/if.h>]) 409 410AC_CHECK_HEADERS([linux/input.h], [ 411 AC_CHECK_MEMBERS([struct input_absinfo.resolution],,, [#include <linux/input.h>]) 412]) 413 414AC_CHECK_HEADERS([linux/bpf.h], [ 415 AC_CACHE_CHECK([whether union bpf_attr.log_buf initialization works], 416 [st_cv_have_union_bpf_attr_log_buf], 417 [AC_COMPILE_IFELSE( 418 [AC_LANG_PROGRAM([[#include <linux/bpf.h>]], 419 [[union bpf_attr a = { .log_buf = 0 };]])], 420 [st_cv_have_union_bpf_attr_log_buf=yes], 421 [st_cv_have_union_bpf_attr_log_buf=no])]) 422 if test $st_cv_have_union_bpf_attr_log_buf = yes; then 423 AC_DEFINE(HAVE_UNION_BPF_ATTR_LOG_BUF, [1], 424 [Define to 1 if union bpf_attr.log_buf initialization works]) 425 fi 426 AC_CACHE_CHECK([whether union bpf_attr.bpf_fd initialization works], 427 [st_cv_have_union_bpf_attr_bpf_fd], 428 [AC_COMPILE_IFELSE( 429 [AC_LANG_PROGRAM([[#include <linux/bpf.h>]], 430 [[union bpf_attr a = { .bpf_fd = 0 };]])], 431 [st_cv_have_union_bpf_attr_bpf_fd=yes], 432 [st_cv_have_union_bpf_attr_bpf_fd=no])]) 433 if test $st_cv_have_union_bpf_attr_bpf_fd = yes; then 434 AC_DEFINE(HAVE_UNION_BPF_ATTR_BPF_FD, [1], 435 [Define to 1 if union bpf_attr.bpf_fd initialization works]) 436 fi 437 AC_CACHE_CHECK([whether union bpf_attr.attach_type initialization works], 438 [st_cv_have_union_bpf_attr_attach_type], 439 [AC_COMPILE_IFELSE( 440 [AC_LANG_PROGRAM([[#include <linux/bpf.h>]], 441 [[union bpf_attr a = { .attach_type = 0 };]])], 442 [st_cv_have_union_bpf_attr_attach_type=yes], 443 [st_cv_have_union_bpf_attr_attach_type=no])]) 444 if test $st_cv_have_union_bpf_attr_attach_type = yes; then 445 AC_DEFINE(HAVE_UNION_BPF_ATTR_ATTACH_TYPE, [1], 446 [Define to 1 if union bpf_attr.attach_type initialization works]) 447 fi 448]) 449 450AC_CHECK_TYPES([struct statfs], [ 451 AC_CHECK_MEMBERS([struct statfs.f_frsize],,, [#include <linux/types.h> 452#include <asm/statfs.h>]) 453 AC_CHECK_MEMBERS([struct statfs.f_flags],,, [#include <linux/types.h> 454#include <asm/statfs.h>]) 455 AC_CHECK_MEMBERS([struct statfs.f_fsid.val],,, [#include <linux/types.h> 456#include <asm/statfs.h>]) 457 AC_CHECK_MEMBERS([struct statfs.f_fsid.__val],,, [#include <linux/types.h> 458#include <asm/statfs.h>]) 459],, [#include <linux/types.h> 460#include <asm/statfs.h>]) 461 462AC_CHECK_TYPES([struct statfs64], [ 463 AC_CHECK_MEMBERS([struct statfs64.f_frsize],,, [#include <linux/types.h> 464#include <asm/statfs.h>]) 465 AC_CHECK_MEMBERS([struct statfs64.f_flags],,, [#include <linux/types.h> 466#include <asm/statfs.h>]) 467 AC_CHECK_MEMBERS([struct statfs64.f_fsid.val],,, [#include <linux/types.h> 468#include <asm/statfs.h>]) 469 AC_CHECK_MEMBERS([struct statfs64.f_fsid.__val],,, [#include <linux/types.h> 470#include <asm/statfs.h>]) 471],, [#include <linux/types.h> 472#include <asm/statfs.h>]) 473 474AC_CHECK_TYPES([struct blk_user_trace_setup],,, [#include <linux/blktrace_api.h>]) 475 476AC_CHECK_HEADERS([linux/btrfs.h], [ 477 AC_CHECK_MEMBERS(m4_normalize([ 478 struct btrfs_ioctl_feature_flags.compat_flags, 479 struct btrfs_ioctl_fs_info_args.nodesize, 480 struct btrfs_ioctl_defrag_range_args.start, 481 struct btrfs_ioctl_search_args_v2.buf_size 482 ]),,, [ #include <stdio.h> 483#include <linux/btrfs.h>]) 484 AC_CHECK_DECLS(m4_normalize([BTRFS_COMPRESS_NONE, BTRFS_COMPRESS_ZLIB, 485 BTRFS_COMPRESS_LZO]),,,[ #include <stdio.h> 486#include <linux/btrfs.h>])]) 487 488AC_CHECK_DECLS([sys_errlist]) 489AC_CHECK_DECLS(m4_normalize([ 490 PTRACE_PEEKUSER, 491 PTRACE_POKEUSER 492]),,, [#include <sys/ptrace.h>]) 493 494AC_CHECK_DECLS(m4_normalize([ 495 P_PID, 496 P_PPID, 497 P_PGID, 498 P_SID, 499 P_CID, 500 P_UID, 501 P_GID, 502 P_ALL, 503 P_LWPID 504]),,, [#include <sys/wait.h>]) 505 506AC_CHECK_DECLS(m4_normalize([ 507 LO_FLAGS_READ_ONLY, 508 LO_FLAGS_USE_AOPS, 509 LO_FLAGS_AUTOCLEAR, 510 LO_FLAGS_PARTSCAN, 511 LO_FLAGS_DIRECT_IO 512]),,, [#include <linux/loop.h>]) 513 514AC_CHECK_DECLS(m4_normalize([ 515 CTL_PROC, 516 CTL_ARLAN, 517 CTL_S390DBF, 518 CTL_SUNRPC, 519 CTL_PM, 520 CTL_FRV, 521 KERN_PRINTK_RATELIMIT, 522 KERN_PRINTK_RATELIMIT_BURST, 523 KERN_PTY, 524 KERN_NGROUPS_MAX, 525 KERN_SPARC_SCONS_PWROFF, 526 KERN_HZ_TIMER, 527 KERN_UNKNOWN_NMI_PANIC, 528 KERN_BOOTLOADER_TYPE, 529 KERN_RANDOMIZE, 530 KERN_SETUID_DUMPABLE, 531 KERN_SPIN_RETRY, 532 KERN_ACPI_VIDEO_FLAGS, 533 KERN_IA64_UNALIGNED, 534 KERN_COMPAT_LOG, 535 KERN_MAX_LOCK_DEPTH, 536 KERN_NMI_WATCHDOG, 537 KERN_PANIC_ON_NMI, 538 NET_LLC, 539 NET_NETFILTER, 540 NET_DCCP, 541 NET_IRDA, 542 NET_CORE_DESTROY_DELAY, 543 NET_CORE_BUDGET, 544 NET_CORE_AEVENT_ETIME, 545 NET_CORE_AEVENT_RSEQTH, 546 NET_CORE_WARNINGS, 547 NET_IPV4_IGMP_MAX_MSF, 548 NET_TCP_NO_METRICS_SAVE, 549 NET_TCP_DEFAULT_WIN_SCALE, 550 NET_TCP_MODERATE_RCVBUF, 551 NET_TCP_TSO_WIN_DIVISOR, 552 NET_TCP_BIC_BETA, 553 NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR, 554 NET_TCP_CONG_CONTROL, 555 NET_TCP_ABC, 556 NET_IPV4_IPFRAG_MAX_DIST, 557 NET_TCP_MTU_PROBING, 558 NET_TCP_BASE_MSS, 559 NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS, 560 NET_TCP_DMA_COPYBREAK, 561 NET_TCP_SLOW_START_AFTER_IDLE, 562 NET_CIPSOV4_CACHE_ENABLE, 563 NET_CIPSOV4_CACHE_BUCKET_SIZE, 564 NET_CIPSOV4_RBM_OPTFMT, 565 NET_CIPSOV4_RBM_STRICTVALID, 566 NET_TCP_AVAIL_CONG_CONTROL, 567 NET_TCP_ALLOWED_CONG_CONTROL, 568 NET_TCP_MAX_SSTHRESH, 569 NET_TCP_FRTO_RESPONSE, 570 NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS, 571 NET_IPV4_CONF_FORCE_IGMP_VERSION, 572 NET_IPV4_CONF_ARP_ANNOUNCE, 573 NET_IPV4_CONF_ARP_IGNORE, 574 NET_IPV4_CONF_PROMOTE_SECONDARIES, 575 NET_IPV4_CONF_ARP_ACCEPT, 576 NET_IPV4_CONF_ARP_NOTIFY, 577 NET_IPV6_MLD_MAX_MSF, 578 NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS, 579 VM_MAX_MAP_COUNT, 580 VM_LAPTOP_MODE, 581 VM_BLOCK_DUMP, 582 VM_HUGETLB_GROUP, 583 VM_VFS_CACHE_PRESSURE, 584 VM_LEGACY_VA_LAYOUT, 585 VM_SWAP_TOKEN_TIMEOUT 586]),,, 587[#include <sys/types.h> 588#include <linux/sysctl.h>]) 589 590AC_CHECK_DECLS(m4_normalize([ 591 V4L2_FIELD_ANY, 592 V4L2_FIELD_NONE, 593 V4L2_FIELD_TOP, 594 V4L2_FIELD_BOTTOM, 595 V4L2_FIELD_INTERLACED, 596 V4L2_FIELD_SEQ_TB, 597 V4L2_FIELD_SEQ_BT, 598 V4L2_FIELD_ALTERNATE, 599 V4L2_FIELD_INTERLACED_TB, 600 V4L2_FIELD_INTERLACED_BT, 601 V4L2_BUF_TYPE_VIDEO_CAPTURE, 602 V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, 603 V4L2_BUF_TYPE_VIDEO_OUTPUT, 604 V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, 605 V4L2_BUF_TYPE_VIDEO_OVERLAY, 606 V4L2_BUF_TYPE_VBI_CAPTURE, 607 V4L2_BUF_TYPE_VBI_OUTPUT, 608 V4L2_BUF_TYPE_SLICED_VBI_CAPTURE, 609 V4L2_BUF_TYPE_SLICED_VBI_OUTPUT, 610 V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY, 611 V4L2_TUNER_RADIO, 612 V4L2_TUNER_ANALOG_TV, 613 V4L2_TUNER_DIGITAL_TV, 614 V4L2_MEMORY_MMAP, 615 V4L2_MEMORY_USERPTR, 616 V4L2_MEMORY_OVERLAY, 617 V4L2_MEMORY_DMABUF, 618 V4L2_COLORSPACE_SMPTE170M, 619 V4L2_COLORSPACE_SMPTE240M, 620 V4L2_COLORSPACE_REC709, 621 V4L2_COLORSPACE_BT878, 622 V4L2_COLORSPACE_470_SYSTEM_M, 623 V4L2_COLORSPACE_470_SYSTEM_BG, 624 V4L2_COLORSPACE_JPEG, 625 V4L2_COLORSPACE_SRGB, 626 V4L2_PRIORITY_UNSET, 627 V4L2_PRIORITY_BACKGROUND, 628 V4L2_PRIORITY_INTERACTIVE, 629 V4L2_PRIORITY_RECORD, 630 V4L2_FRMSIZE_TYPE_DISCRETE, 631 V4L2_FRMSIZE_TYPE_CONTINUOUS, 632 V4L2_FRMSIZE_TYPE_STEPWISE, 633 V4L2_FRMIVAL_TYPE_DISCRETE, 634 V4L2_FRMIVAL_TYPE_CONTINUOUS, 635 V4L2_FRMIVAL_TYPE_STEPWISE, 636 V4L2_CTRL_TYPE_INTEGER, 637 V4L2_CTRL_TYPE_BOOLEAN, 638 V4L2_CTRL_TYPE_MENU, 639 V4L2_CTRL_TYPE_BUTTON, 640 V4L2_CTRL_TYPE_INTEGER64, 641 V4L2_CTRL_TYPE_CTRL_CLASS, 642 V4L2_CTRL_TYPE_STRING, 643 V4L2_CTRL_TYPE_BITMASK, 644 V4L2_CTRL_TYPE_INTEGER_MENU 645]),,, [#include <sys/time.h> 646#include <linux/ioctl.h> 647#include <linux/types.h> 648#include <linux/videodev2.h>]) 649 650AC_CACHE_CHECK([for BLKGETSIZE64], [ac_cv_have_blkgetsize64], 651 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ 652#include <stdlib.h> 653#include <linux/fs.h>], [return !BLKGETSIZE64;])], 654 [ac_cv_have_blkgetsize64=yes], [ac_cv_have_blkgetsize64=no])] 655 if test $ac_cv_have_blkgetsize64 = yes; then 656 AC_DEFINE([HAVE_BLKGETSIZE64], [1], [Define to 1 if you have BLKGETSIZE64.]) 657 fi) 658 659AC_CHECK_SIZEOF([long]) 660AC_CHECK_SIZEOF([long long]) 661AC_CHECK_SIZEOF([off_t],,[#include <sys/types.h>]) 662AC_CHECK_SIZEOF([kernel_long_t],,[#include "$srcdir/kernel_types.h"]) 663AC_CHECK_SIZEOF([struct i64_i32],,[struct i64_i32 {long long i64; int i32;};]) 664 665AC_CACHE_CHECK([for SIGRTMIN], [st_cv_SIGRTMIN], 666 [[st_cv_SIGRTMIN="$(echo SIGRTMIN | 667 $CPP $CPPFLAGS -P -imacros asm/signal.h - | 668 grep '^[0-9]')" 669 test -n "$st_cv_SIGRTMIN" || st_cv_SIGRTMIN=no]]) 670if test "x$st_cv_SIGRTMIN" != xno; then 671 AC_DEFINE_UNQUOTED([ASM_SIGRTMIN], [$st_cv_SIGRTMIN], 672 [SIGRTMIN defined in <asm/signal.h>]) 673fi 674AC_CACHE_CHECK([for SA_RESTORER], [st_cv_SA_RESTORER], 675 [st_cv_SA_RESTORER="$(echo SA_RESTORER | 676 $CPP $CPPFLAGS -P -imacros asm/signal.h - | 677 grep ^0x)" 678 test -n "$st_cv_SA_RESTORER" || st_cv_SA_RESTORER=no]) 679if test "x$st_cv_SA_RESTORER" != xno; then 680 AC_DEFINE_UNQUOTED([ASM_SA_RESTORER], [$st_cv_SA_RESTORER], 681 [SA_RESTORER defined in <asm/signal.h>]) 682fi 683 684AC_CACHE_CHECK([for __builtin_popcount], [st_cv_have___builtin_popcount], 685 [AC_LINK_IFELSE([AC_LANG_PROGRAM([], [__builtin_popcount(0)])], 686 [st_cv_have___builtin_popcount=yes], 687 [st_cv_have___builtin_popcount=no])]) 688if test "x$st_cv_have___builtin_popcount" = xyes; then 689 AC_DEFINE([HAVE___BUILTIN_POPCOUNT], [1], 690 [Define to 1 if the system provides __builtin_popcount function]) 691fi 692 693AC_CHECK_LIB([dl], [dladdr], [dl_LIBS='-ldl'], [dl_LIBS=]) 694if test "x$ac_cv_lib_dl_dladdr" = xyes; then 695 AC_DEFINE([HAVE_DLADDR], [1], [Define to 1 if the system provides dladdr]) 696fi 697AC_SUBST(dl_LIBS) 698 699AC_PATH_PROG([PERL], [perl]) 700 701dnl stack trace with libunwind 702libunwind_CPPFLAGS= 703libunwind_LDFLAGS= 704libunwind_LIBS= 705AC_ARG_WITH([libunwind], 706 [AS_HELP_STRING([--with-libunwind], 707 [use libunwind to implement stack tracing support])], 708 [case "${withval}" in 709 yes|no|check) ;; 710 *) with_libunwind=yes 711 libunwind_CPPFLAGS="-I${withval}/include" 712 libunwind_LDFLAGS="-L${withval}/lib" ;; 713 esac], 714 [with_libunwind=check] 715) 716 717use_libunwind=no 718AS_IF([test "x$with_libunwind" != xno], 719 [saved_CPPFLAGS="$CPPFLAGS" 720 CPPFLAGS="$CPPFLAGS $libunwind_CPPFLAGS" 721 722 AC_CHECK_HEADERS([libunwind-ptrace.h], 723 [saved_LDFLAGS="$LDFLAGS" 724 LDFLAGS="$LDFLAGS $libunwind_LDFLAGS" 725 726 AC_CHECK_LIB([unwind], [backtrace], 727 [libunwind_LIBS="-lunwind $libunwind_LIBS" 728 729 AC_MSG_CHECKING([for unw_create_addr_space in libunwind-generic]) 730 saved_LIBS="$LIBS" 731 LIBS="-lunwind-generic $libunwind_LIBS $LIBS" 732 733 AC_LINK_IFELSE( 734 [AC_LANG_PROGRAM([[#include <libunwind-ptrace.h>]], 735 [[return !unw_create_addr_space(0, 0)]]) 736 ], 737 [AC_MSG_RESULT([yes]) 738 libunwind_LIBS="-lunwind-generic $libunwind_LIBS" 739 740 AC_CHECK_LIB([unwind-ptrace], [_UPT_create], 741 [libunwind_LIBS="-lunwind-ptrace $libunwind_LIBS" 742 use_libunwind=yes 743 ], 744 [if test "x$with_libunwind" != xcheck; then 745 AC_MSG_FAILURE([failed to find _UPT_create in libunwind-ptrace]) 746 fi 747 ], 748 [$libunwind_LIBS] 749 ) 750 ], 751 [AC_MSG_RESULT([no]) 752 if test "x$with_libunwind" != xcheck; then 753 AC_MSG_FAILURE([failed to find unw_create_addr_space in libunwind-generic]) 754 fi 755 ] 756 ) 757 758 LIBS="$saved_LIBS" 759 ], 760 [if test "x$with_libunwind" != xcheck; then 761 AC_MSG_FAILURE([failed to find libunwind]) 762 fi 763 ], 764 [$libunwind_LIBS] 765 ) 766 767 LDFLAGS="$saved_LDFLAGS" 768 ], 769 [if test "x$with_libunwind" != xcheck; then 770 AC_MSG_FAILURE([failed to find libunwind-ptrace.h]) 771 fi 772 ] 773 ) 774 775 CPPFLAGS="$saved_CPPFLAGS" 776 ] 777) 778 779dnl enable libunwind 780AC_MSG_CHECKING([whether to enable stack tracing support using libunwind]) 781if test "x$use_libunwind" = xyes; then 782 AC_DEFINE([USE_LIBUNWIND], 1, [Compile stack tracing functionality]) 783 AC_SUBST(libunwind_LIBS) 784 AC_SUBST(libunwind_LDFLAGS) 785 AC_SUBST(libunwind_CPPFLAGS) 786fi 787AM_CONDITIONAL([USE_LIBUNWIND], [test "x$use_libunwind" = xyes]) 788AC_MSG_RESULT([$use_libunwind]) 789 790if test "$arch" = mips && test "$no_create" != yes; then 791 mkdir -p linux/mips 792 if $srcdir/linux/mips/genstub.sh linux/mips; then 793 AC_MSG_RESULT([Generated MIPS syscallent stubs]) 794 else 795 AC_MSG_FAILURE([Failed to generate syscallent stubs]) 796 fi 797fi 798 799st_MPERS([m32], [aarch64|powerpc64|sparc64|tile|x32|x86_64]) 800st_MPERS([mx32], [x86_64]) 801 802AX_VALGRIND_DFLT([sgcheck], [off]) 803AX_VALGRIND_CHECK 804 805AC_CONFIG_FILES([Makefile 806 tests/Makefile 807 tests-m32/Makefile 808 tests-mx32/Makefile 809 strace.spec 810 debian/changelog]) 811AC_OUTPUT 812