# Copyright (C) 2019 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.

import("perfetto.gni")

if (perfetto_root_path == "//") {
  template("test") {
    executable(target_name) {
      forward_variables_from(invoker, "*")
      testonly = true
    }
  }
} else if (build_with_chromium) {
  import("//testing/test.gni")
} else {
  assert(perfetto_build_with_embedder)
  template("test") {
    group(target_name) {
      not_needed(invoker, "*")
      testonly = true
    }
  }
}

# This is to avoid that unittest targets get discovered and built in the
# "default" GN target of embedder builds. See notes in the comments of the
# root BUILD.gn.
template("perfetto_unittest_source_set") {
  if (enable_perfetto_unittests) {
    source_set(target_name) {
      forward_variables_from(invoker, "*")
    }
  } else {
    group(target_name) {
      not_needed(invoker, "*")
    }
  }
}
