# Copyright (C) 2020 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("types") {
  sources = [
    "destructible.cc",
    "destructible.h",
    "gfp_flags.cc",
    "gfp_flags.h",
    "softirq_action.h",
    "task_state.cc",
    "task_state.h",
    "tcp_state.h",
    "trace_processor_context.h",
    "variadic.h",
    "version_number.h",
  ]
  deps = [
    "../../../gn:default_deps",
    "../../../include/perfetto/ext/base",
    "../../../include/perfetto/trace_processor",
    "../containers",
  ]
}

source_set("unittests") {
  testonly = true
  sources = [ "task_state_unittests.cc" ]
  deps = [
    ":types",
    "../../../gn:default_deps",
    "../../../gn:gtest_and_gmock",
  ]
}
