# Copyright (C) 2022 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("../../../../../gn/perfetto.gni")
import("../../../../../gn/perfetto_sql.gni")

assert(enable_perfetto_trace_processor_sqlite)

perfetto_sql_source_set("android") {
  sources = [
    "android_batt.sql",
    "android_binder.sql",
    "android_blocking_calls_cuj_metric.sql",
    "android_camera.sql",
    "android_camera_unagg.sql",
    "android_cpu.sql",
    "android_cpu_agg.sql",
    "android_cpu_raw_metrics_per_core.sql",
    "android_dma_heap.sql",
    "android_dvfs.sql",
    "android_fastrpc.sql",
    "android_frame_timeline_metric.sql",
    "android_gpu.sql",
    "android_hwcomposer.sql",
    "android_hwui_metric.sql",
    "android_hwui_threads.sql",
    "android_ion.sql",
    "android_irq_runtime.sql",
    "android_jank_cuj.sql",
    "android_lmk.sql",
    "android_lmk_reason.sql",
    "android_mem.sql",
    "android_mem_unagg.sql",
    "android_multiuser.sql",
    "android_multiuser_populator.sql",
    "android_netperf.sql",
    "android_other_traces.sql",
    "android_package_list.sql",
    "android_powrails.sql",
    "android_proxy_power.sql",
    "android_rt_runtime.sql",
    "android_simpleperf.sql",
    "android_startup.sql",
    "android_surfaceflinger.sql",
    "android_task_names.sql",
    "android_trace_quality.sql",
    "android_trusty_workqueues.sql",
    "composer_execution.sql",
    "composition_layers.sql",
    "counter_span_view_merged.sql",
    "cpu_info.sql",
    "display_metrics.sql",
    "frame_missed.sql",
    "g2d.sql",
    "g2d_duration.sql",
    "global_counter_span_view.sql",
    "gpu_counter_span_view.sql",
    "jank/cujs.sql",
    "jank/cujs_boundaries.sql",
    "jank/frames.sql",
    "jank/internal/counters.sql",
    "jank/internal/derived_events.sql",
    "jank/internal/query_base.sql",
    "jank/internal/query_frame_slice.sql",
    "jank/params.sql",
    "jank/query_functions.sql",
    "jank/relevant_slices.sql",
    "jank/relevant_threads.sql",
    "jank/slices.sql",
    "java_heap_histogram.sql",
    "java_heap_stats.sql",
    "mem_stats_priority_breakdown.sql",
    "p_state.sql",
    "power_drain_in_watts.sql",
    "power_profile_data.sql",
    "power_profile_data/barbet.sql",
    "power_profile_data/bluejay.sql",
    "power_profile_data/blueline.sql",
    "power_profile_data/bonito.sql",
    "power_profile_data/bramble.sql",
    "power_profile_data/coral.sql",
    "power_profile_data/crosshatch.sql",
    "power_profile_data/flame.sql",
    "power_profile_data/marlin.sql",
    "power_profile_data/oriole.sql",
    "power_profile_data/raven.sql",
    "power_profile_data/redfin.sql",
    "power_profile_data/sargo.sql",
    "power_profile_data/sunfish.sql",
    "power_profile_data/taimen.sql",
    "power_profile_data/walleye.sql",
    "process_counter_span_view.sql",
    "process_counter_span_view.sql",
    "process_mem.sql",
    "process_metadata.sql",
    "process_oom_score.sql",
    "process_unagg_mem_view.sql",
    "profiler_smaps.sql",
    "span_view_stats.sql",
    "startup/gc_slices.sql",
    "startup/hsc.sql",
    "startup/launches.sql",
    "startup/launches_maxsdk28.sql",
    "startup/launches_minsdk29.sql",
    "startup/launches_minsdk33.sql",
    "startup/mcycles_per_launch.sql",
    "startup/slice_functions.sql",
    "startup/system_state.sql",
    "startup/thread_state_breakdown.sql",
    "unsymbolized_frames.sql",
  ]
}
