blob: 1c3ed4f73c4caecff3fc1b6ec0f9e2c364a78fd5 [file] [log] [blame]
// 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: "ninja_defaults",
cflags: [
"-Wall",
"-Wextra",
"-Wno-deprecated",
"-Wno-missing-field-initializers",
"-Wno-unused-parameter",
"-fno-exceptions",
"-fvisibility=hidden",
"-DNINJA_PYTHON=\"python\"",
"-DNINJA_HAVE_BROWSE",
"-UNDEBUG",
],
target: {
linux_glibc: {
cflags: ["-DUSE_PPOLL"],
}
}
}
genrule {
name: "ninja_browse_py",
cmd: "$(location src/inline.sh) kBrowsePy <$(in) >$(out)",
tool_files: ["src/inline.sh"],
srcs: ["src/browse.py"],
out: ["build/browse_py.h"],
}
cc_library_host_static {
name: "libninja",
defaults: ["ninja_defaults"],
generated_headers: ["ninja_browse_py"],
srcs: [
"src/build.cc",
"src/build_log.cc",
"src/clean.cc",
"src/clparser.cc",
"src/debug_flags.cc",
"src/depfile_parser.cc",
"src/deps_log.cc",
"src/disk_interface.cc",
"src/edit_distance.cc",
"src/eval_env.cc",
"src/graph.cc",
"src/graphviz.cc",
"src/lexer.cc",
"src/line_printer.cc",
"src/manifest_chunk_parser.cc",
"src/manifest_parser.cc",
"src/metrics.cc",
"src/proto.cc",
"src/state.cc",
"src/status.cc",
"src/thread_pool.cc",
"src/util.cc",
"src/version.cc",
"src/browse.cc",
"src/subprocess-posix.cc",
],
}
cc_binary_host {
name: "ninja",
defaults: ["ninja_defaults"],
srcs: ["src/ninja.cc"],
static_libs: ["libninja"],
// Use jemalloc for better multithreaded allocation performance. e.g. Using
// jemalloc can improve the overall runtime by 10x vs the default allocator.
target: {
linux_glibc: {
shared_libs: ["libjemalloc"],
},
},
}
cc_test_host {
name: "ninja_test",
defaults: ["ninja_defaults"],
static_libs: ["libninja"],
gtest: false,
srcs: [
"src/build_log_test.cc",
"src/build_test.cc",
"src/clean_test.cc",
"src/clparser_test.cc",
"src/depfile_parser_test.cc",
"src/deps_log_test.cc",
"src/disk_interface_test.cc",
"src/edit_distance_test.cc",
"src/graph_test.cc",
"src/lexer_test.cc",
"src/manifest_parser_test.cc",
"src/ninja_test.cc",
"src/state_test.cc",
"src/status_test.cc",
"src/subprocess_test.cc",
"src/test.cc",
"src/util_test.cc",
],
}
cc_test_host {
name: "ninja_tests",
gtest: false,
defaults: ["ninja_defaults"],
test_per_src: true,
static_libs: ["libninja"],
srcs: [
"src/build_log_perftest.cc",
"src/canon_perftest.cc",
"src/depfile_parser_perftest.cc",
"src/hash_collision_bench.cc",
"src/manifest_parser_perftest.cc",
],
}