# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- # vim: set filetype=python: # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # Check for headers defining standard int types. check_header("stdint.h") have_inttypes = check_header("inttypes.h") # Assume we have ansi C header files available. set_define("STDC_HEADERS", True) set_config("HAVE_INTTYPES_H", have_inttypes) building_linux = depends(target)(lambda target: target.kernel == "Linux") have_malloc = check_header("malloc.h") check_header("alloca.h") add_old_configure_assignment("HAVE_MALLOC_H", have_malloc) check_headers( "sys/byteorder.h", "getopt.h", "unistd.h", "nl_types.h", "cpuid.h", "fts.h", ) # These are all the places some variant of statfs can be hiding. check_headers( "sys/statvfs.h", "sys/statfs.h", "sys/vfs.h", "sys/mount.h", ) # Quota support # Check for both the header and quotactl() because Android headers can have the # header but not quotactl(). set_define( "HAVE_SYS_QUOTA_H", try_compile( includes=["sys/quota.h"], body="quotactl(0, nullptr, 0, (caddr_t)nullptr);", check_msg="for sys/quota.h", ), ) check_header("linux/quota.h", includes=["sys/socket.h"], when=building_linux) # SCTP support - needs various network include headers check_headers( "linux/if_addr.h", "linux/rtnetlink.h", includes=["sys/socket.h"], when=building_linux, ) check_header("sys/queue.h") check_headers( "sys/types.h", "netinet/in.h", "byteswap.h", ) # memfd_create(2) -- Note that older versions of the Linux man-pages # project incorrectly cite , which doesn't exist; this # was fixed in the man-pages-5.00 release. set_define( "HAVE_MEMFD_CREATE", try_compile( includes=["sys/mman.h"], body='memfd_create("", 0);', check_msg="for memfd_create in sys/mman.h", ), ) # TODO: Move these checks to file specific to --enable-project=js. have_perf_event_h = check_header("linux/perf_event.h", when=building_linux) option( "--with-linux-headers", help="location where the Linux kernel headers can be found", nargs=1, ) passed_linux_header_flags = depends_if("--with-linux-headers")( lambda v: ["-I%s" % v[0]] ) @depends( try_compile( includes=["asm/unistd.h"], body="return sizeof(__NR_perf_event_open);", flags=passed_linux_header_flags, check_msg="for perf_event_open system call", ), when=have_perf_event_h, ) def have_perf_event_open(have_perf_event_open): if have_perf_event_open: return True set_config("HAVE_LINUX_PERF_EVENT_H", have_perf_event_open) @depends(passed_linux_header_flags, have_perf_event_open) def linux_headers_includes(passed_linux_header_flags, have_perf_event_open): if have_perf_event_open and passed_linux_header_flags: return passed_linux_header_flags[0] set_config("LINUX_HEADERS_INCLUDES", linux_headers_includes)