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

cc_library_headers {
    name: "nos_headers",
    defaults: ["nos_cc_host_supported_defaults"],
    export_include_dirs: ["nugget/include"],
}

cc_defaults {
    name: "nos_proto_defaults",
    cflags: [
        "-Wno-extended-offsetof",
        "-Wno-unused-parameter",
    ],
}

cc_defaults {
    name: "nos_app_defaults",
    defaults: ["nos_proto_defaults"],
    header_libs: ["nos_headers"],
    shared_libs: [
        "libnos",
        "libprotobuf-cpp-full",
    ],
}

cc_defaults {
    name: "nos_app_service_defaults",
    defaults: [
        "nos_app_defaults",
        "nos_cc_defaults",
    ],
    shared_libs: ["libnosprotos"],
    export_shared_lib_headers: ["libnosprotos"],
}

// Soong doesn't allow adding plugins to a protobuf compilation so we need to
// invoke it directly. If we could pass a plugin, it could use insertion points
// in the .pb.{cc,h} files rather than needing to generate new .client.{cpp,h}
// files for each service.
GEN_SERVICE = "$(location aprotoc) --plugin=protoc-gen-nos-client-cpp=$(location protoc-gen-nos-client-cpp) $(in) -Iexternal/protobuf/src -Iexternal/nos/host/generic/nugget/proto"

GEN_SERVICE_SOURCE = GEN_SERVICE + " --nos-client-cpp_out=source:$(genDir) "
GEN_SERVICE_HEADER = GEN_SERVICE + " --nos-client-cpp_out=header:$(genDir) "
GEN_SERVICE_MOCK = GEN_SERVICE + " --nos-client-cpp_out=mock:$(genDir) "
