xref: /aosp_15_r20/external/perfetto/gn/perfetto_sql.gni (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1*6dbdd20aSAndroid Build Coastguard Worker# Copyright (C) 2022 The Android Open Source Project
2*6dbdd20aSAndroid Build Coastguard Worker#
3*6dbdd20aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
4*6dbdd20aSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
5*6dbdd20aSAndroid Build Coastguard Worker# You may obtain a copy of the License at
6*6dbdd20aSAndroid Build Coastguard Worker#
7*6dbdd20aSAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
8*6dbdd20aSAndroid Build Coastguard Worker#
9*6dbdd20aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*6dbdd20aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
11*6dbdd20aSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*6dbdd20aSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
13*6dbdd20aSAndroid Build Coastguard Worker# limitations under the License.
14*6dbdd20aSAndroid Build Coastguard Worker
15*6dbdd20aSAndroid Build Coastguard Workerimport("perfetto.gni")
16*6dbdd20aSAndroid Build Coastguard Worker
17*6dbdd20aSAndroid Build Coastguard Workertemplate("perfetto_sql_source_set") {
18*6dbdd20aSAndroid Build Coastguard Worker  action("${target_name}") {
19*6dbdd20aSAndroid Build Coastguard Worker    forward_variables_from(invoker, [ "deps" ])
20*6dbdd20aSAndroid Build Coastguard Worker
21*6dbdd20aSAndroid Build Coastguard Worker    out_path = "$target_gen_dir/" + target_name
22*6dbdd20aSAndroid Build Coastguard Worker    rebased_out_path =
23*6dbdd20aSAndroid Build Coastguard Worker        rebase_path(target_gen_dir, root_build_dir) + "/" + target_name
24*6dbdd20aSAndroid Build Coastguard Worker
25*6dbdd20aSAndroid Build Coastguard Worker    script = "$perfetto_root_path/tools/touch_file.py"
26*6dbdd20aSAndroid Build Coastguard Worker    args = [
27*6dbdd20aSAndroid Build Coastguard Worker      "--output",
28*6dbdd20aSAndroid Build Coastguard Worker      rebased_out_path,
29*6dbdd20aSAndroid Build Coastguard Worker    ]
30*6dbdd20aSAndroid Build Coastguard Worker    inputs = invoker.sources
31*6dbdd20aSAndroid Build Coastguard Worker    outputs = [ out_path ]
32*6dbdd20aSAndroid Build Coastguard Worker    metadata = {
33*6dbdd20aSAndroid Build Coastguard Worker      perfetto_sql_source_files = inputs
34*6dbdd20aSAndroid Build Coastguard Worker      perfetto_action_type_for_generator = [ "sql_source_set" ]
35*6dbdd20aSAndroid Build Coastguard Worker    }
36*6dbdd20aSAndroid Build Coastguard Worker  }
37*6dbdd20aSAndroid Build Coastguard Worker}
38*6dbdd20aSAndroid Build Coastguard Worker
39*6dbdd20aSAndroid Build Coastguard Workertemplate("perfetto_amalgamated_sql_header") {
40*6dbdd20aSAndroid Build Coastguard Worker  invoker_target = target_name
41*6dbdd20aSAndroid Build Coastguard Worker  gen_txt_file = "$target_gen_dir/${target_name}.txt"
42*6dbdd20aSAndroid Build Coastguard Worker
43*6dbdd20aSAndroid Build Coastguard Worker  generated_file("${invoker_target}_generated_file") {
44*6dbdd20aSAndroid Build Coastguard Worker    forward_variables_from(invoker, [ "deps" ])
45*6dbdd20aSAndroid Build Coastguard Worker    outputs = [ gen_txt_file ]
46*6dbdd20aSAndroid Build Coastguard Worker    data_keys = [ "perfetto_sql_source_files" ]
47*6dbdd20aSAndroid Build Coastguard Worker    rebase = root_build_dir
48*6dbdd20aSAndroid Build Coastguard Worker  }
49*6dbdd20aSAndroid Build Coastguard Worker
50*6dbdd20aSAndroid Build Coastguard Worker  config("${invoker_target}_config") {
51*6dbdd20aSAndroid Build Coastguard Worker    include_dirs = [ "${root_gen_dir}/${perfetto_root_path}" ]
52*6dbdd20aSAndroid Build Coastguard Worker  }
53*6dbdd20aSAndroid Build Coastguard Worker
54*6dbdd20aSAndroid Build Coastguard Worker  action(invoker_target) {
55*6dbdd20aSAndroid Build Coastguard Worker    deps = [ ":${invoker_target}_generated_file" ]
56*6dbdd20aSAndroid Build Coastguard Worker    deps += invoker.deps
57*6dbdd20aSAndroid Build Coastguard Worker
58*6dbdd20aSAndroid Build Coastguard Worker    script = "$perfetto_root_path/tools/gen_amalgamated_sql.py"
59*6dbdd20aSAndroid Build Coastguard Worker    generated_file = "${target_gen_dir}/" + invoker.generated_header
60*6dbdd20aSAndroid Build Coastguard Worker    args = [
61*6dbdd20aSAndroid Build Coastguard Worker      "--namespace",
62*6dbdd20aSAndroid Build Coastguard Worker      invoker.namespace,
63*6dbdd20aSAndroid Build Coastguard Worker      "--cpp-out",
64*6dbdd20aSAndroid Build Coastguard Worker      rebase_path(generated_file, root_build_dir),
65*6dbdd20aSAndroid Build Coastguard Worker      "--input-list-file",
66*6dbdd20aSAndroid Build Coastguard Worker      rebase_path(gen_txt_file, root_build_dir),
67*6dbdd20aSAndroid Build Coastguard Worker    ]
68*6dbdd20aSAndroid Build Coastguard Worker    inputs = [ gen_txt_file ]
69*6dbdd20aSAndroid Build Coastguard Worker    outputs = [ generated_file ]
70*6dbdd20aSAndroid Build Coastguard Worker    public_configs = [ ":${invoker_target}_config" ]
71*6dbdd20aSAndroid Build Coastguard Worker    metadata = {
72*6dbdd20aSAndroid Build Coastguard Worker      perfetto_action_type_for_generator = [ "sql_amalgamation" ]
73*6dbdd20aSAndroid Build Coastguard Worker    }
74*6dbdd20aSAndroid Build Coastguard Worker  }
75*6dbdd20aSAndroid Build Coastguard Worker
76*6dbdd20aSAndroid Build Coastguard Worker  if (defined(invoker.generate_docs) && invoker.generate_docs &&
77*6dbdd20aSAndroid Build Coastguard Worker      perfetto_build_standalone) {
78*6dbdd20aSAndroid Build Coastguard Worker    action("${invoker_target}_json_docs") {
79*6dbdd20aSAndroid Build Coastguard Worker      deps = [ ":${invoker_target}_generated_file" ]
80*6dbdd20aSAndroid Build Coastguard Worker      deps += invoker.deps
81*6dbdd20aSAndroid Build Coastguard Worker
82*6dbdd20aSAndroid Build Coastguard Worker      script = "$perfetto_root_path/tools/gen_stdlib_docs_json.py"
83*6dbdd20aSAndroid Build Coastguard Worker      generated_file = "${target_gen_dir}/stdlib_docs.json"
84*6dbdd20aSAndroid Build Coastguard Worker
85*6dbdd20aSAndroid Build Coastguard Worker      args = [
86*6dbdd20aSAndroid Build Coastguard Worker        "--json-out",
87*6dbdd20aSAndroid Build Coastguard Worker        rebase_path(generated_file, root_build_dir),
88*6dbdd20aSAndroid Build Coastguard Worker        "--input-list-file",
89*6dbdd20aSAndroid Build Coastguard Worker        rebase_path(gen_txt_file, root_build_dir),
90*6dbdd20aSAndroid Build Coastguard Worker      ]
91*6dbdd20aSAndroid Build Coastguard Worker      public_configs = [ ":${invoker_target}_config" ]
92*6dbdd20aSAndroid Build Coastguard Worker      inputs = [ gen_txt_file ]
93*6dbdd20aSAndroid Build Coastguard Worker      outputs = [ generated_file ]
94*6dbdd20aSAndroid Build Coastguard Worker    }
95*6dbdd20aSAndroid Build Coastguard Worker  }
96*6dbdd20aSAndroid Build Coastguard Worker}
97