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