1#!/bin/bash 2# Copyright (c) 2021 Huawei Device Co., Ltd. 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14set -e 15SOURCE="${BASH_SOURCE[0]}" 16cd $(dirname ${SOURCE}) 17echo "begin to generate proto based files" 18SOURCE=$(dirname ${SOURCE}) 19proto_dir="." 20services_dir="$proto_dir/services" 21# kernel_version="5.10.79_aarch64" 22kernel_version="." 23ftrace_data_dir="$proto_dir/types/plugins/ftrace_data/$kernel_version" 24memory_data_dir="$proto_dir/types/plugins/memory_data" 25hilog_data_dir="$proto_dir/types/plugins/hilog_data" 26native_hook_dir="$proto_dir/types/plugins/native_hook" 27hidump_data_dir="$proto_dir/types/plugins/hidump_data" 28network_data_dir="$proto_dir/types/plugins/network_data" 29cpu_data_dir="$proto_dir/types/plugins/cpu_data" 30diskio_data_dir="$proto_dir/types/plugins/diskio_data" 31process_data_dir="$proto_dir/types/plugins/process_data" 32hisysevent_data_dir="$proto_dir/types/plugins/hisysevent_data" 33proto_array=("${services_dir}/common_types.proto" 34 "$ftrace_data_dir/trace_plugin_result.proto" 35 "$ftrace_data_dir/ftrace_event.proto" 36 "$ftrace_data_dir/irq.proto" 37 "$ftrace_data_dir/vmscan.proto" 38 "$ftrace_data_dir/workqueue.proto" 39 "$ftrace_data_dir/task.proto" 40 "$ftrace_data_dir/power.proto" 41 "$ftrace_data_dir/sched.proto" 42 "$ftrace_data_dir/filemap.proto" 43 "$ftrace_data_dir/i2c.proto" 44 "$ftrace_data_dir/kmem.proto" 45 "$ftrace_data_dir/block.proto" 46 "$ftrace_data_dir/ipi.proto" 47 "$ftrace_data_dir/ftrace.proto" 48 "$ftrace_data_dir/ext4.proto" 49 "$ftrace_data_dir/oom.proto" 50 "$ftrace_data_dir/compaction.proto" 51 "$ftrace_data_dir/clk.proto" 52 "$ftrace_data_dir/cgroup.proto" 53 "$ftrace_data_dir/binder.proto" 54 "$ftrace_data_dir/signal.proto" 55 "$ftrace_data_dir/sunrpc.proto" 56 "$ftrace_data_dir/net.proto" 57 "$ftrace_data_dir/cpuhp.proto" 58 "$ftrace_data_dir/writeback.proto" 59 "$ftrace_data_dir/v4l2.proto" 60 "$ftrace_data_dir/pagemap.proto" 61 "$ftrace_data_dir/dma_fence.proto" 62 "$ftrace_data_dir/printk.proto" 63 "$ftrace_data_dir/filelock.proto" 64 "$ftrace_data_dir/gpio.proto" 65 "$ftrace_data_dir/timer.proto" 66 "$ftrace_data_dir/raw_syscalls.proto" 67 "$ftrace_data_dir/rcu.proto" 68 # "$ftrace_data_dir/mmc.proto" 69 # "$ftrace_data_dir/f2fs.proto" 70 # "$ftrace_data_dir/gpu_mem.proto" 71 # "$ftrace_data_dir/regulator.proto" 72 "$memory_data_dir/memory_plugin_common.proto" 73 "$memory_data_dir/memory_plugin_config.proto" 74 "$memory_data_dir/memory_plugin_result.proto" 75 "$hilog_data_dir/hilog_plugin_result.proto" 76 "$native_hook_dir/native_hook_result.proto" 77 "$native_hook_dir/native_hook_config.proto" 78 "$hidump_data_dir/hidump_plugin_result.proto" 79 "$network_data_dir/network_plugin_result.proto" 80 "$cpu_data_dir/cpu_plugin_result.proto" 81 "$diskio_data_dir/diskio_plugin_result.proto" 82 "$process_data_dir/process_plugin_result.proto" 83 "$hisysevent_data_dir/hisysevent_plugin_result.proto") 84 85export LD_LIBRARY_PATH=../../out/linux 86for ((i = 0; i < ${#proto_array[@]}; i ++)) 87do 88 newpath=$(dirname ${proto_array[$i]}) 89 newpath=${newpath:2} 90 cppout=../../third_party/protogen/$newpath 91 mkdir -p $cppout 92 ../../out/linux/protoc --proto_path=$memory_data_dir:$native_hook_dir:$hidump_data_dir:$hilog_data_dir:$ftrace_data_dir:$services_dir:$network_data_dir:$cpu_data_dir:$diskio_data_dir:$process_data_dir:$hisysevent_data_dir --cpp_out=$cppout ${proto_array[$i]} 93done 94echo "generate proto based files over"