# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

assert(is_nacl,
       "These targets must only be built using the untrusted NaCl toolchains.")

config("nacl_io_config") {
  cflags = [ "-Wno-sign-compare" ]
}

config("nacl_io_include_dirs") {
  include_dirs = [
    "..",
    "include",
    "../third_party/newlib-extras",
  ]
}

source_set("nacl_io") {
  sources = [
    "devfs/dev_fs.cc",
    "devfs/dev_fs.h",
    "devfs/jspipe_event_emitter.cc",
    "devfs/jspipe_event_emitter.h",
    "devfs/jspipe_node.cc",
    "devfs/jspipe_node.h",
    "devfs/tty_node.cc",
    "devfs/tty_node.h",
    "dir_node.cc",
    "dir_node.h",
    "event_emitter.cc",
    "event_emitter.h",
    "event_listener.cc",
    "event_listener.h",
    "fifo_char.cc",
    "fifo_char.h",
    "filesystem.cc",
    "filesystem.h",
    "fusefs/fuse_fs.cc",
    "fusefs/fuse_fs.h",
    "fusefs/fuse_fs_factory.cc",
    "fusefs/fuse_fs_factory.h",
    "getdents_helper.cc",
    "getdents_helper.h",
    "googledrivefs/googledrivefs.cc",
    "googledrivefs/googledrivefs.h",
    "googledrivefs/googledrivefs_node.cc",
    "googledrivefs/googledrivefs_node.h",
    "h_errno.c",
    "hash.cc",
    "host_resolver.cc",
    "host_resolver.h",
    "html5fs/html5_fs.cc",
    "html5fs/html5_fs.h",
    "html5fs/html5_fs_node.cc",
    "html5fs/html5_fs_node.h",
    "httpfs/http_fs.cc",
    "httpfs/http_fs.h",
    "httpfs/http_fs_node.cc",
    "httpfs/http_fs_node.h",
    "in6_addr.c",
    "jsfs/js_fs.cc",
    "jsfs/js_fs.h",
    "jsfs/js_fs_node.cc",
    "jsfs/js_fs_node.h",
    "kernel_handle.cc",
    "kernel_handle.h",
    "kernel_intercept.cc",
    "kernel_intercept.h",
    "kernel_object.cc",
    "kernel_object.h",
    "kernel_proxy.cc",
    "kernel_proxy.h",
    "kernel_wrap_dummy.cc",
    "kernel_wrap_glibc.cc",
    "kernel_wrap_irt_ext.c",
    "kernel_wrap_newlib.cc",
    "kernel_wrap_win.cc",
    "log.c",
    "memfs/mem_fs.cc",
    "memfs/mem_fs.h",
    "memfs/mem_fs_node.cc",
    "memfs/mem_fs_node.h",
    "nacl_io.cc",
    "nacl_io.h",
    "node.cc",
    "node.h",
    "passthroughfs/passthrough_fs.cc",
    "passthroughfs/passthrough_fs.h",
    "passthroughfs/real_node.cc",
    "passthroughfs/real_node.h",
    "path.cc",
    "pepper_interface.cc",
    "pepper_interface.h",
    "pepper_interface_delegate.cc",
    "pepper_interface_delegate.h",
    "pipe/pipe_event_emitter.cc",
    "pipe/pipe_event_emitter.h",
    "pipe/pipe_node.cc",
    "pipe/pipe_node.h",
    "real_pepper_interface.cc",
    "real_pepper_interface.h",
    "socket/fifo_packet.cc",
    "socket/fifo_packet.h",
    "socket/packet.cc",
    "socket/packet.h",
    "socket/socket_node.cc",
    "socket/socket_node.h",
    "socket/tcp_event_emitter.cc",
    "socket/tcp_event_emitter.h",
    "socket/tcp_node.cc",
    "socket/tcp_node.h",
    "socket/udp_event_emitter.cc",
    "socket/udp_event_emitter.h",
    "socket/udp_node.cc",
    "socket/udp_node.h",
    "socket/unix_event_emitter.cc",
    "socket/unix_event_emitter.h",
    "socket/unix_node.cc",
    "socket/unix_node.h",
    "stream/stream_event_emitter.cc",
    "stream/stream_event_emitter.h",
    "stream/stream_fs.cc",
    "stream/stream_fs.h",
    "stream/stream_node.cc",
    "stream/stream_node.h",
    "syscalls/access.c",
    "syscalls/chown.c",
    "syscalls/fchown.c",
    "syscalls/fcntl.c",
    "syscalls/ftruncate.c",
    "syscalls/futimes.c",
    "syscalls/getwd.c",
    "syscalls/ioctl.c",
    "syscalls/isatty.c",
    "syscalls/kill.c",
    "syscalls/killpg.c",
    "syscalls/lchown.c",
    "syscalls/mount.c",
    "syscalls/pipe.c",
    "syscalls/poll.c",
    "syscalls/realpath.c",
    "syscalls/select.c",
    "syscalls/sigaction.c",
    "syscalls/signal.c",
    "syscalls/sigpause.c",
    "syscalls/sigpending.c",
    "syscalls/sigset.c",
    "syscalls/sigsuspend.c",
    "syscalls/socket/accept.c",
    "syscalls/socket/bind.c",
    "syscalls/socket/connect.c",
    "syscalls/socket/freeaddrinfo.c",
    "syscalls/socket/gai_strerror.c",
    "syscalls/socket/getaddrinfo.c",
    "syscalls/socket/gethostbyname.c",
    "syscalls/socket/getnameinfo.c",
    "syscalls/socket/getpeername.c",
    "syscalls/socket/getsockname.c",
    "syscalls/socket/getsockopt.c",
    "syscalls/socket/herror.c",
    "syscalls/socket/hstrerror.c",
    "syscalls/socket/htonl.c",
    "syscalls/socket/htons.c",
    "syscalls/socket/inet_addr.c",
    "syscalls/socket/inet_aton.c",
    "syscalls/socket/inet_ntoa.c",
    "syscalls/socket/inet_ntop.cc",
    "syscalls/socket/inet_pton.c",
    "syscalls/socket/listen.c",
    "syscalls/socket/ntohl.c",
    "syscalls/socket/ntohs.c",
    "syscalls/socket/recv.c",
    "syscalls/socket/recvfrom.c",
    "syscalls/socket/recvmsg.c",
    "syscalls/socket/send.c",
    "syscalls/socket/sendmsg.c",
    "syscalls/socket/sendto.c",
    "syscalls/socket/setsockopt.c",
    "syscalls/socket/shutdown.c",
    "syscalls/socket/socket.c",
    "syscalls/socket/socketpair.c",
    "syscalls/symlink.c",
    "syscalls/termios/cfgetispeed.c",
    "syscalls/termios/cfgetospeed.c",
    "syscalls/termios/cfsetispeed.c",
    "syscalls/termios/cfsetospeed.c",
    "syscalls/termios/cfsetspeed.c",
    "syscalls/termios/tcdrain.c",
    "syscalls/termios/tcflow.c",
    "syscalls/termios/tcflush.c",
    "syscalls/termios/tcgetattr.c",
    "syscalls/termios/tcsendbreak.c",
    "syscalls/termios/tcsetattr.c",
    "syscalls/truncate.c",
    "syscalls/umask.c",
    "syscalls/umount.c",
    "syscalls/uname.c",
    "syscalls/utime.c",
  ]

  include_dirs = [ ".." ]
  configs += [ ":nacl_io_config" ]

  public_configs = [ ":nacl_io_include_dirs" ]
}
