Clang module map files for zircon, fdio and musl
These are needed to enable the use of Clang modules.
Change-Id: I90848d9abf7b8a4e6858e63785bd61979a18c57a
diff --git a/system/public/zircon/module.modulemap b/system/public/zircon/module.modulemap
new file mode 100644
index 0000000..b170477
--- /dev/null
+++ b/system/public/zircon/module.modulemap
@@ -0,0 +1,283 @@
+// Copyright 2017 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Unlike the Libc module map, this one does not explictly "export *" any
+// symbols up the parent module requiring that you explictly import what
+// modules you are using. For that reason module names in this file can break
+// imports in langauges that can refernece them directly.
+module Zircon [system] [extern_c] {
+ use Libc
+
+ textual header "assert.h"
+ textual header "compiler.h"
+
+ module crashlogger [extern_c] {
+ header "crashlogger.h"
+ }
+
+ module errors [extern_c] {
+ header "errors.h"
+ }
+
+ module ktrace [extern_c] {
+ textual header "ktrace-def.h"
+ header "ktrace.h"
+ }
+
+ module listnode [extern_c] {
+ header "listnode.h"
+ }
+
+ module mtrace [extern_c] {
+ header "mtrace.h"
+ }
+
+ module pixelformat [extern_c] {
+ header "pixelformat.h"
+ }
+
+ module processargs [extern_c] {
+ header "processargs.h"
+ }
+
+ module process [extern_c] {
+ header "process.h"
+ }
+
+ module rights [extern_c] {
+ header "rights.h"
+ }
+
+ module syscalls [extern_c] {
+ // This module refers to both the "syscalls.h" in the root and all of the
+ // headers in the "syscalls" folder.
+
+ module debug {
+ header "syscalls/debug.h"
+ // explictly require you include this if you use it.
+ }
+ module exception {
+ header "syscalls/exception.h"
+ export *
+ }
+ module hypervisor {
+ header "syscalls/hypervisor.h"
+ export *
+ }
+ module log {
+ header "syscalls/log.h"
+ export *
+ }
+ module object {
+ header "syscalls/object.h"
+ export *
+ }
+ module pci {
+ header "syscalls/pci.h"
+ export *
+ }
+ module policy {
+ header "syscalls/policy.h"
+ export *
+ }
+ module port {
+ header "syscalls/port.h"
+ export *
+ }
+ module resource {
+ header "syscalls/resource.h"
+ export *
+ }
+ module profile {
+ header "syscalls/profile.h"
+ export *
+ }
+ module smc {
+ header "syscalls/smc.h"
+ export *
+ }
+ module system {
+ header "syscalls/system.h"
+ export *
+ }
+ module types {
+ header "syscalls/types.h"
+ export *
+ }
+
+ header "syscalls.h"
+ }
+
+ module tls [extern_c] {
+ header "tls.h"
+ }
+
+ module types [extern_c] {
+ header "types.h"
+ }
+
+ module boot [extern_c] {
+ module bootdata {
+ header "boot/bootdata.h"
+ }
+ module multiboot {
+ header "boot/multiboot.h"
+ }
+ module netboot {
+ header "boot/netboot.h"
+ }
+ }
+
+ module device [extern_c] {
+ umbrella "device"
+
+ module audio {
+ header "device/audio.h"
+ export *
+ }
+ module block {
+ header "device/block.h"
+ export *
+ }
+ module bt_hci {
+ header "device/bt-hci.h"
+ export *
+ }
+ module camera_proto {
+ requires cplusplus
+ header "device/camera-proto.h"
+ export *
+ }
+ module camera {
+ header "device/camera.h"
+ export *
+ }
+ module device {
+ header "device/device.h"
+ export *
+ }
+ module display {
+ header "device/display.h"
+ export *
+ }
+ module dmctl {
+ header "device/dmctl.h"
+ export *
+ }
+ module ethernet {
+ header "device/ethernet.h"
+ export *
+ }
+ module ethertap {
+ header "device/ethertap.h"
+ export *
+ }
+ module hidctl {
+ header "device/hidctl.h"
+ export *
+ }
+ module i2c {
+ header "device/i2c.h"
+ export *
+ }
+ module input {
+ header "device/input.h"
+ export *
+ }
+ module intel_hda {
+ header "device/intel-hda.h"
+ export *
+ }
+ module ioctl {
+ header "device/ioctl.h"
+ export *
+ }
+ module ioctl_wrapper {
+ header "device/ioctl-wrapper.h"
+ export *
+ }
+ module ktrace {
+ header "device/ktrace.h"
+ export *
+ }
+ module media_codec {
+ header "device/media-codec.h"
+ export *
+ }
+ module midi {
+ header "device/midi.h"
+ export *
+ }
+ module power {
+ header "device/power.h"
+ export *
+ }
+ module pty {
+ header "device/pty.h"
+ export *
+ }
+ module ramdisk {
+ header "device/ramdisk.h"
+ export *
+ }
+ module rtc {
+ header "device/rtc.h"
+ export *
+ }
+ module sysinfo {
+ header "device/sysinfo.h"
+ export *
+ }
+ module test {
+ header "device/test.h"
+ export *
+ }
+ module thermal {
+ header "device/thermal.h"
+ export *
+ }
+ module tpm {
+ header "device/tpm.h"
+ export *
+ }
+ module usb_device {
+ header "device/usb-device.h"
+ export *
+ }
+ module usb {
+ header "device/usb.h"
+ export *
+ }
+ module vfs {
+ header "device/vfs.h"
+ export *
+ }
+
+ export *
+ }
+
+ module driver [extern_c] {
+ // glob each header into it's own module decl
+ umbrella "driver"
+ explicit module * {
+ export *
+ }
+ }
+
+ module hw [extern_c] {
+ // glob each header into it's own module decl
+ umbrella "hw"
+ explicit module * {
+ export *
+ }
+ }
+
+ module misc [extern_c] {
+ // glob each header into it's own module decl
+ umbrella "misc"
+ explicit module * {
+ export *
+ }
+ }
+}
diff --git a/system/ulib/fdio/include/lib/fdio/module.modulemap b/system/ulib/fdio/include/lib/fdio/module.modulemap
new file mode 100644
index 0000000..4fbbd62
--- /dev/null
+++ b/system/ulib/fdio/include/lib/fdio/module.modulemap
@@ -0,0 +1,55 @@
+// Copyright 2018 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+module Fdio [system] [extern_c] {
+ use Libc
+ use Zircon
+
+ link "fdio"
+
+ textual header "debug.h"
+
+ module io {
+ header "io.h"
+ export *
+ }
+ module limits {
+ header "limits.h"
+ export *
+ }
+ module "private" {
+ header "private.h"
+ export *
+ }
+ module "namespace" {
+ header "namespace.h"
+ export *
+ }
+ module remoteio {
+ header "remoteio.h"
+ export *
+ }
+ module spawn {
+ header "spawn.h"
+ export *
+ }
+ module socket {
+ header "socket.h"
+ export *
+ }
+ module util {
+ header "util.h"
+ export *
+ }
+ module vfs {
+ header "vfs.h"
+ export *
+ }
+ module watcher {
+ header "watcher.h"
+ export *
+ }
+
+ export *
+}
diff --git a/third_party/ulib/musl/include/module.modulemap b/third_party/ulib/musl/include/module.modulemap
new file mode 100644
index 0000000..8cbd298
--- /dev/null
+++ b/third_party/ulib/musl/include/module.modulemap
@@ -0,0 +1,525 @@
+module Libc [system] {
+ link "c"
+ config_macros _ALL_SOURCE,_BSD_SOURCE,_GNU_SOURCE,_KERNEL,_POSIX_C_SOURCE,_POSIX_SOURCE,_XOPEN_SOURCE
+
+ module C [extern_c] {
+ textual header "assert.h" // POSIX/C89
+
+ module alloca { // POSIX
+ header "alloca.h"
+ export *
+ }
+ module byteswap { // GNU extension
+ header "byteswap.h"
+ export *
+ }
+ module complex { // C99
+ header "complex.h"
+ export *
+ }
+ module ctype { // C89
+ header "ctype.h"
+ export *
+ }
+ module err { // BSD extension
+ header "err.h"
+ export *
+ }
+ module errno { // POSIX/C89
+ header "errno.h"
+ export *
+ }
+ module features { // POSIX?
+ textual header "features.h"
+ export *
+ }
+ module fenv { // C99
+ header "fenv.h"
+ export *
+ }
+ module float { // C/POSIX
+ header "float.h"
+ export *
+ }
+ module inttypes { // C99
+ header "inttypes.h"
+ export *
+ }
+ module iso646 { // C95
+ header "iso646.h"
+ export *
+ }
+ module limits { // C99
+ header "limits.h"
+ export *
+ }
+ module locale { // C90?
+ header "locale.h"
+ export *
+ }
+ module malloc { // C89
+ header "malloc.h"
+ export *
+ }
+ module math { // C89
+ header "math.h"
+ export *
+ }
+ module memory { // Legacy header
+ export string
+ }
+ module setjmp { // C89/POSIX
+ header "setjmp.h"
+ export *
+ }
+ module signal { // C89/POSIX
+ header "signal.h"
+ export *
+ }
+ // defined in clang
+ // module stdatomic { // C11
+ // header "stdatomic.h"
+ // export *
+ // }
+ module stdalign { // C11
+ header "stdalign.h"
+ export *
+ }
+ module stdarg { // C89
+ header "stdarg.h"
+ export *
+ }
+ module stdbool { // C99
+ header "stdbool.h"
+ export *
+ }
+ module stdint { // C99
+ header "stdint.h" // This might be deleted in favor of clang provided version
+ export *
+ }
+ module stdio { // C89
+ header "stdio.h"
+ export *
+ }
+ module stdlib { // C89
+ header "stddef.h"
+ header "stdlib.h"
+ export malloc // HACK: Our stdlib re-defines some other functions from other headers
+ export *
+ }
+ module stdnoreturn { // C11
+ header "stdnoreturn.h"
+ export *
+ }
+ module string { // C89
+ header "string.h"
+ export *
+ }
+ module threads { // C11
+ header "threads.h"
+ export *
+ }
+ module time {
+ header "time.h"
+ export *
+ }
+ module uchar { // C11
+ header "uchar.h"
+ export *
+ }
+ module wchar { // C89
+ header "wchar.h"
+ export *
+ }
+ module wctype { // C89
+ header "wctype.h"
+ export *
+ }
+ export *
+ }
+ module POSIX [extern_c] {
+ module ar { // GNU?
+ header "ar.h"
+ export *
+ }
+ module cpio { // POSIX?
+ header "cpio.h"
+ export *
+ }
+ module dirent { // POSIX
+ header "dirent.h"
+ export *
+ }
+ module dlfcn { // POSIX
+ header "dlfcn.h"
+ export *
+ }
+ module elf { // BSD/Linux
+ header "elf.h"
+ export *
+ }
+ module endian { // POSIX
+ header "endian.h"
+ export *
+ }
+ module fcntl { // POSIX
+ header "fcntl.h"
+ export *
+ }
+ module fmtmsg { // POSIX
+ header "fmtmsg.h"
+ export *
+ }
+ module fnmatch { // POSIX
+ header "fnmatch.h"
+ export *
+ }
+ module getopt { // POSIX
+ header "getopt.h"
+ export *
+ }
+ module glob { // POSIX
+ header "glob.h"
+ export *
+ }
+ module iconv { // POSIX
+ header "iconv.h"
+ export *
+ }
+ module ifaddrs { // POSIX
+ header "ifaddrs.h"
+ export *
+ }
+ module langinfo { // POSIX
+ header "langinfo.h"
+ export *
+ }
+ module libgen { // POSIX
+ header "libgen.h"
+ export *
+ }
+ module "link" { // POSIX (quoted because `link` is a reserved keyword)
+ header "link.h"
+ export *
+ }
+ module monetary { // POSIX
+ header "monetary.h"
+ export *
+ }
+ module netdb { // POSIX
+ header "netdb.h"
+ export *
+ }
+ module nl_types { // POSIX
+ header "nl_types.h" // Unimplemented in Fuchsia
+ export *
+ }
+ module poll { // POSIX
+ header "poll.h"
+ export *
+ }
+ module pthread { // POSIX
+ header "pthread.h"
+ export *
+ }
+ module regex { // POSIX
+ header "regex.h"
+ export *
+ }
+ module resolv { // POSIX
+ header "resolv.h"
+ export *
+ }
+ module sched { // POSIX
+ header "sched.h"
+ export Libc.C.string // HACK: redefines some functions from string.h with _GNU_SOURCE
+ export *
+ }
+ module search { // POSIX
+ header "search.h"
+ export *
+ }
+ module semaphore { // POSIX
+ header "semaphore.h" // sem_open is unimplemented on Fuchisa
+ export *
+ }
+ module strings { // POSIX
+ header "strings.h"
+ export *
+ }
+ module stropts { // POSIX
+ header "stropts.h"
+ export *
+ }
+ module sysexits { // POSIX
+ header "sysexits.h"
+ export *
+ }
+ module tar { // POSIX
+ header "tar.h"
+ export *
+ }
+ module unistd { // POSIX
+ header "unistd.h"
+ export *
+ export C.stdio // HACK: both stdio and unistd define ssize_t (depending on _GNU_SOURCE)
+ }
+ module utime { // POSIX
+ header "utime.h"
+ export *
+ }
+ module values {
+ header "values.h"
+ export *
+ }
+ module wait { // Legacy
+ export sys.wait
+ }
+ module wordexp { // POSIX
+ header "wordexp.h"
+ export *
+ }
+
+ // Folders
+ module arpa {
+ module ftp {
+ header "arpa/ftp.h"
+ export *
+ }
+ module inet {
+ header "arpa/inet.h"
+ export *
+ }
+ module nameser {
+ header "arpa/nameser.h"
+ export *
+ }
+ module nameser_compat {
+ header "arpa/nameser_compat.h"
+ export *
+ }
+ module telnet {
+ header "arpa/telnet.h"
+ export *
+ }
+ module tftp {
+ header "arpa/tftp.h"
+ export *
+ }
+ export *
+ }
+ module net {
+ module ethernet {
+ header "net/ethernet.h"
+ export *
+ }
+ module if_arp {
+ header "net/if_arp.h"
+ export *
+ }
+ module if {
+ header "net/if.h"
+ export *
+ }
+ module route {
+ header "net/if.h"
+ export *
+ }
+ export *
+ }
+ module netinet {
+ module ether {
+ header "netinet/ether.h"
+ export *
+ }
+ module icmp6 {
+ header "netinet/icmp6.h"
+ export *
+ }
+ module if_ether {
+ header "netinet/if_ether.h"
+ export *
+ }
+ module igmp {
+ header "netinet/igmp.h"
+ export *
+ }
+ module in {
+ header "netinet/in.h"
+ export *
+ }
+ module in_systm {
+ header "netinet/in_systm.h"
+ export *
+ }
+ module ip {
+ header "netinet/ip.h"
+ export *
+ }
+ module ip6 {
+ header "netinet/ip6.h"
+ export *
+ }
+ module ip_icmp {
+ header "netinet/ip_icmp.h"
+ export *
+ }
+ module tcp {
+ header "netinet/tcp.h"
+ export *
+ }
+ module udp {
+ header "netinet/udp.h"
+ export *
+ }
+ export *
+ }
+ module netpacket {
+ module packet {
+ header "netpacket/packet.h"
+ export *
+ }
+ export *
+ }
+ module sys { // TODO(zbowling): this incomplete
+ module file {
+ header "sys/file.h"
+ export *
+ }
+ module ioctl {
+ header "sys/ioctl.h"
+ export *
+ }
+ module ipc {
+ header "sys/ipc.h"
+ export *
+ }
+ module mman {
+ header "sys/mman.h"
+ export *
+ }
+ module msg {
+ header "sys/msg.h"
+ export *
+ }
+ module select {
+ header "sys/select.h"
+ export *
+ }
+ module socket {
+ header "sys/socket.h"
+ export *
+ }
+ module sem {
+ header "sys/sem.h"
+ export *
+ }
+ module sendfile {
+ header "sys/sendfile.h"
+ export *
+ }
+ module shm {
+ header "sys/shm.h"
+ export *
+ }
+ module stat {
+ header "sys/stat.h"
+ export *
+ }
+ module statfs {
+ header "sys/statfs.h"
+ export *
+ }
+ module statvfs {
+ header "sys/statvfs.h"
+ export *
+ }
+ module time {
+ header "sys/time.h"
+ export *
+ }
+ module times {
+ header "sys/times.h"
+ export *
+ }
+ module types {
+ header "sys/types.h"
+ export *
+ }
+ module uio {
+ header "sys/uio.h"
+ export *
+ }
+ module un {
+ header "sys/un.h"
+ export *
+ }
+ module utsname {
+ header "sys/utsname.h"
+ export *
+ }
+ module wait {
+ header "sys/wait.h"
+ export *
+ }
+ export *
+ }
+ export *
+ }
+ export *
+}
+
+// Headers that exist that are part of POSIX, C, or GNU that are not functional on Fuchsia
+module NonLibc [extern_c] {
+ use Libc
+
+ module crypt { // POSIX
+ header "crypt.h"
+ export *
+ }
+ module ftw { // POSIX
+ header "ftw.h"
+ export *
+ }
+ module grp { // POSIX
+ header "grp.h" // Non-functional in Fuchsia
+ export *
+ }
+ module mntent { // Unimplemented - common header
+ header "mntent.h" // Unimplemented in Fuchsia
+ export *
+ }
+ module paths { // GNU extension
+ header "paths.h" // Defines paths are not correct for Fuchsia
+ export *
+ }
+ module pty { // BSD defined (also GLIBC).
+ header "pty.h" // Non-functional on Fuchsia
+ export *
+ }
+ module pwd { // POSIX
+ header "pwd.h" // Non-functional in Fuchsia
+ export *
+ }
+ module shadown { // POSIX
+ header "shadow.h"
+ export *
+ }
+ module spawn { // POSIX
+ header "spawn.h" // Process management - use launchpad instead
+ export *
+ }
+ module syslog { // POSIX
+ header "syslog.h"
+ export *
+ }
+ module termios { // POSIX
+ header "termios.h"
+ export *
+ }
+ module ucontext { // POSIX
+ header "ucontext.h"
+ export *
+ }
+ export *
+}