# 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.

import("//mojo/public/mojo_application.gni")

# TODO(vtl): Disabled for Android (in particular), since we need a C++11
# standard library (e.g., std::unique_ptr and std::move).
if (is_linux) {
  source_set("mojio") {
    sources = [
      "lib/directory_wrapper.cc",
      "lib/directory_wrapper.h",
      "lib/errno_impl.h",
      "lib/fd_impl.h",
      "lib/fd_table.cc",
      "lib/fd_table.h",
      "lib/file_fd_impl.cc",
      "lib/file_fd_impl.h",
      "lib/mojio_fcntl.cc",
      "lib/mojio_sys_stat.cc",
      "lib/mojio_unistd.cc",
      "lib/real_errno_impl.cc",
      "lib/real_errno_impl.h",
      "lib/singletons.cc",
      "lib/singletons.h",
      "lib/template_util.h",
      "lib/util.cc",
      "lib/util.h",
      "mojio_config.h",
      "mojio_fcntl.h",
      "mojio_stdio.h",
      "mojio_sys_stat.h",
      "mojio_sys_types.h",
      "mojio_time.h",
      "mojio_unistd.h",
    ]

    deps = [
      "//mojo/public/cpp/bindings",
      "//mojo/public/cpp/environment",
      "//mojo/public/cpp/system",
      "//mojo/services/files/public/interfaces",
    ]
  }

  mojo_native_application("apptests") {
    output_name = "mojio_apptests"

    testonly = true

    sources = [
      "tests/directory_wrapper_unittest.cc",
      "tests/errno_impl_unittest.cc",
      "tests/fd_table_unittest.cc",
      "tests/file_fd_impl_unittest.cc",
      "tests/mock_errno_impl.cc",
      "tests/mock_errno_impl.h",
      "tests/mojio_impl_test_base.cc",
      "tests/mojio_impl_test_base.h",
      "tests/mojio_sys_stat_unittest.cc",
      "tests/mojio_test_base.cc",
      "tests/mojio_test_base.h",
      "tests/mojio_unistd_unittest.cc",
      "tests/real_errno_impl_unittest.cc",
      "tests/test_utils.cc",
      "tests/test_utils.h",
      "tests/test_utils_unittest.cc",
      "tests/util_unittest.cc",
    ]

    deps = [
      ":mojio",
      "//mojo/public/cpp/application:standalone",
      "//mojo/public/cpp/application:test_support_standalone",
      "//mojo/public/cpp/bindings",
      "//mojo/public/cpp/environment",
      "//mojo/public/cpp/system",
      "//mojo/services/files/public/interfaces",
      "//testing/gtest",
    ]

    data_deps = [ "..:files" ]
  }
}
