gecko-dev/build/moz.configure/headers.configure
Michael Forney 477f5c111e Bug 1157850 - Use portable add_dir_entries() implementation when fts.h is missing r=mhowell
fts.h is also missing on musl. Since the Solaris fallback implementation
does not use any non-standard functions, use that as the fallback when
the FTS interface is not available.

Also, fix an issue with the readdir implementation. Previously, the
absolute directory path was passed to the recursive add_dir_entries()
call, which would then prepend install path again.

Differential Revision: https://phabricator.services.mozilla.com/D61407

--HG--
extra : moz-landing-system : lando
2020-02-07 05:17:12 +00:00

100 lines
2.8 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',
)
# TODO: Move these checks to file specific to --enable-project=js.
have_perf_event_h = check_header('linux/perf_event.h',
when=building_linux)
js_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)