зеркало из https://github.com/mozilla/gecko-dev.git
120 строки
3.1 KiB
Python
120 строки
3.1 KiB
Python
# -*- 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 <sys/memfd.h>, 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)
|