// 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",
    ],
    compile_multilib: "64",
    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"],
}
