# Copyright (C) 2017 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("//build/proto_library.gni")
import("ipc_library.gni")

config("config") {
  include_dirs = [ "include" ]
}

source_set("ipc") {
  public_configs = [ ":config" ]
  deps += [
    ":wire_protocol",
    "//base",
  ]
  sources = [
    "include/ipc/async_result.h",
    "include/ipc/basic_types.h",
    "include/ipc/client.h",
    "include/ipc/client_info.h",
    "include/ipc/codegen_helpers.h",
    "include/ipc/deferred.h",
    "include/ipc/host.h",
    "include/ipc/service.h",
    "include/ipc/service_descriptor.h",
    "include/ipc/service_proxy.h",
    "src/buffered_frame_deserializer.cc",
    "src/client_impl.cc",
    "src/deferred.cc",
    "src/host_impl.cc",
    "src/host_impl.h",
    "src/service_proxy.cc",
    "src/unix_socket.cc",
    "src/unix_socket.h",
  ]
}

executable("ipc_unittests") {
  testonly = true
  deps += [
    ":ipc",
    ":test_messages",
    ":wire_protocol",
    "//base",
    "//base:test_support",
    "//buildtools:gmock",
    "//buildtools:gtest",
    "//buildtools:gtest_main",
  ]
  sources = [
    "src/buffered_frame_deserializer_unittest.cc",
    "src/client_impl_unittest.cc",
    "src/deferred_unittest.cc",
    "src/host_impl_unittest.cc",
    "src/test/ipc_integrationtest.cc",
    "src/unix_socket_unittest.cc",
  ]
}

proto_library("wire_protocol") {
  sources = [
    "src/wire_protocol.proto",
  ]
  include_dirs = [ "include" ]
  proto_out_dir = "protos_lite"
}

ipc_library("test_messages") {
  sources = [
    "src/test/client_unittest_messages.proto",
    "src/test/deferred_unittest_messages.proto",
    "src/test/greeter_service.proto",
  ]
  include_dirs = [ "include" ]
}
