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

source_set("unittests") {
  testonly = true
  deps = [
    ":ftrace_proto_gen_src",
    "../../gn:default_deps",
    "../../gn:gtest_deps",
    "../../gn:protobuf_full_deps",
  ]
  sources = [
    "ftrace_proto_gen_unittest.cc",
  ]
}

source_set("ftrace_proto_gen_src") {
  testonly = true
  sources = [
    "ftrace_descriptor_gen.cc",
    "ftrace_descriptor_gen.h",
    "ftrace_proto_gen.cc",
    "ftrace_proto_gen.h",
    "proto_gen_utils.cc",
    "proto_gen_utils.h",
  ]
  deps = [
    "../../gn:default_deps",
    "../../gn:protobuf_full_deps",
    "../../src/base",
    "../../src/traced/probes/ftrace:format_parser",
  ]
}

executable("ftrace_proto_gen") {
  testonly = true
  sources = [
    "main.cc",
  ]
  deps = [
    ":ftrace_proto_gen_src",
    "../../gn:default_deps",
    "../../gn:protobuf_full_deps",
    "../../src/base",
    "../../src/traced/probes/ftrace:format_parser",
  ]
}
