// Copyright 2016 Google Inc. All rights reserved
//
// 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_defaults {
    name: "ckati_defaults",
    cflags: [
        "-W",
        "-Wall",
        "-Werror",
        "-DNOLOG",
    ],
    tidy_checks: [
        "-google-global-names-in-headers",
        "-google-build-using-namespace",
        "-google-explicit-constructor",
    ],
}

cc_library_host_static {
    name: "libckati",
    defaults: ["ckati_defaults"],
    srcs: [
        "affinity.cc",
        "command.cc",
        "dep.cc",
        "eval.cc",
        "exec.cc",
        "expr.cc",
        "file.cc",
        "file_cache.cc",
        "fileutil.cc",
        "find.cc",
        "flags.cc",
        "func.cc",
        "io.cc",
        "log.cc",
        "ninja.cc",
        "parser.cc",
        "regen.cc",
        "rule.cc",
        "stats.cc",
        "stmt.cc",
        "string_piece.cc",
        "stringprintf.cc",
        "strutil.cc",
        "symtab.cc",
        "thread_pool.cc",
        "timeutil.cc",
        "var.cc",
        "version_unknown.cc",
    ],
}

cc_binary_host {
    name: "ckati",
    defaults: ["ckati_defaults"],
    srcs: ["main.cc"],
    whole_static_libs: ["libckati"],
    target: {
        linux_glibc: {
            shared_libs: ["libjemalloc"],
        },
    },
}

cc_binary_host {
    name: "ckati_stamp_dump",
    defaults: ["ckati_defaults"],
    srcs: ["regen_dump.cc"],
    static_libs: ["libckati"],
}

cc_test_host {
    name: "ckati_test",
    defaults: ["ckati_defaults"],
    test_per_src: true,
    srcs: [
        "find_test.cc",
        "ninja_test.cc",
        "string_piece_test.cc",
        "strutil_bench.cc",
        "strutil_test.cc",
    ],
    gtest: false,
    static_libs: ["libckati"],
}

cc_benchmark_host {
    name: "ckati_fileutil_bench",
    defaults: ["ckati_defaults"],
    srcs: [
        "fileutil_bench.cc",
    ],
    static_libs: ["libckati"],
}
