summaryrefslogtreecommitdiffstats
path: root/build/moz.configure/headers.configure
diff options
context:
space:
mode:
Diffstat (limited to 'build/moz.configure/headers.configure')
-rw-r--r--build/moz.configure/headers.configure93
1 files changed, 93 insertions, 0 deletions
diff --git a/build/moz.configure/headers.configure b/build/moz.configure/headers.configure
new file mode 100644
index 000000000..52ffa2f89
--- /dev/null
+++ b/build/moz.configure/headers.configure
@@ -0,0 +1,93 @@
+# -*- 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',
+ when=non_msvc_compiler,
+)
+
+# 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',
+ when=non_msvc_compiler,
+)
+
+# Quota support
+check_header('sys/quota.h',
+ when=non_msvc_compiler)
+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',
+ when=non_msvc_compiler)
+
+check_headers(
+ 'sys/types.h',
+ 'netinet/in.h',
+ 'byteswap.h',
+ when=non_msvc_compiler,
+)
+
+# 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_when(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)