• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
15protoc='protoc'
16proto_dir='.'
17protoreader_plugin='protoreader_plugin'
18# case "$OSTYPE" in
19#   msys*)    out='../../out/windows' protoreader_plugin='protoreader_plugin.exe' protoc='protoc.exe' proto_dir=$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) ;;
20#   darwin*)  out='../../out/macx' proto_dir=$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) ;;
21#   linux*)   out='../../out/linux'  proto_dir=$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) ;;
22#   *)        echo "other: $OSTYPE" ;;
23# esac
24case "$OSTYPE" in
25  msys*)    out='../out/windows' protoreader_plugin='protoreader_plugin.exe' protoc='protoc.exe' proto_dir=$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) ;;
26  darwin*)  out='../out/macx' proto_dir=$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) ;;
27  linux*)   out='../out/linux'  proto_dir=$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) ;;
28  *)        echo "other: $OSTYPE" ;;
29esac
30echo $proto_dir
31SOURCE="${BASH_SOURCE[0]}"
32cd $(dirname ${SOURCE})
33if [ ! -f "$out/$protoc" ];then
34    echo "no $out/$protoc found, you need to run \"./build.sh protoc\" at root folder, and copy protoc.exe to $out/$protoc"
35    exit
36fi
37echo "begin to generate proto based files"
38SOURCE=$(dirname ${SOURCE})
39services_dir="$proto_dir/services"
40# kernel_version="5.10.79_aarch64"
41kernel_version="."
42ftrace_data_dir="$proto_dir/types/plugins/ftrace_data/$kernel_version"
43memory_data_dir="$proto_dir/types/plugins/memory_data"
44hilog_data_dir="$proto_dir/types/plugins/hilog_data"
45native_hook_dir="$proto_dir/types/plugins/native_hook"
46hidump_data_dir="$proto_dir/types/plugins/hidump_data"
47network_data_dir="$proto_dir/types/plugins/network_data"
48cpu_data_dir="$proto_dir/types/plugins/cpu_data"
49diskio_data_dir="$proto_dir/types/plugins/diskio_data"
50process_data_dir="$proto_dir/types/plugins/process_data"
51hisysevent_data_dir="$proto_dir/types/plugins/hisysevent_data"
52test_data_dir="$proto_dir/types/plugins/test_data"
53js_memory_dir="$proto_dir/types/plugins/js_memory"
54proto_array=("${services_dir}/common_types.proto"
55    "$ftrace_data_dir/trace_plugin_result.proto"
56    "$ftrace_data_dir/ftrace_event.proto"
57    "$ftrace_data_dir/irq.proto"
58    "$ftrace_data_dir/vmscan.proto"
59    "$ftrace_data_dir/workqueue.proto"
60    "$ftrace_data_dir/task.proto"
61    "$ftrace_data_dir/power.proto"
62    "$ftrace_data_dir/sched.proto"
63    "$ftrace_data_dir/filemap.proto"
64    "$ftrace_data_dir/i2c.proto"
65    "$ftrace_data_dir/kmem.proto"
66    "$ftrace_data_dir/block.proto"
67    "$ftrace_data_dir/ipi.proto"
68    "$ftrace_data_dir/ftrace.proto"
69    "$ftrace_data_dir/ext4.proto"
70    "$ftrace_data_dir/oom.proto"
71    "$ftrace_data_dir/compaction.proto"
72    "$ftrace_data_dir/clk.proto"
73    "$ftrace_data_dir/cgroup.proto"
74    "$ftrace_data_dir/binder.proto"
75    "$ftrace_data_dir/signal.proto"
76    "$ftrace_data_dir/sunrpc.proto"
77    "$ftrace_data_dir/net.proto"
78    "$ftrace_data_dir/cpuhp.proto"
79    "$ftrace_data_dir/writeback.proto"
80    "$ftrace_data_dir/v4l2.proto"
81    "$ftrace_data_dir/pagemap.proto"
82    "$ftrace_data_dir/dma_fence.proto"
83    "$ftrace_data_dir/printk.proto"
84    "$ftrace_data_dir/filelock.proto"
85    "$ftrace_data_dir/gpio.proto"
86    "$ftrace_data_dir/timer.proto"
87    "$ftrace_data_dir/raw_syscalls.proto"
88    "$ftrace_data_dir/rcu.proto"
89    "$memory_data_dir/memory_plugin_common.proto"
90    "$memory_data_dir/memory_plugin_config.proto"
91    "$memory_data_dir/memory_plugin_result.proto"
92    "$hilog_data_dir/hilog_plugin_result.proto"
93    "$native_hook_dir/native_hook_result.proto"
94    "$native_hook_dir/native_hook_config.proto"
95    "$hidump_data_dir/hidump_plugin_result.proto"
96    "$network_data_dir/network_plugin_result.proto"
97    "$cpu_data_dir/cpu_plugin_result.proto"
98    "$diskio_data_dir/diskio_plugin_result.proto"
99    "$hisysevent_data_dir/hisysevent_plugin_config.proto"
100    "$process_data_dir/process_plugin_result.proto"
101    "$hisysevent_data_dir/hisysevent_plugin_result.proto"
102    "$js_memory_dir/js_heap_result.proto"
103    "$js_memory_dir/js_heap_config.proto"
104    "$test_data_dir/test.proto")
105
106export LD_LIBRARY_PATH=$out
107for ((i = 0; i < ${#proto_array[@]}; i ++))
108do
109   newpath=$(dirname ${proto_array[$i]})
110   tailpath='\'${newpath#$proto_dir}
111   newpath=${tailpath:2}
112   cppout=../../third_party/protogen/$newpath
113   mkdir -p $cppout
114   $out/$protoc --proto_path=$memory_data_dir:$native_hook_dir:$hidump_data_dir:$hilog_data_dir:$ftrace_data_dir:$js_memory_dir:$services_dir:$network_data_dir:$cpu_data_dir:$diskio_data_dir:$process_data_dir:$hisysevent_data_dir:$test_data_dir --cpp_out=$cppout ${proto_array[$i]}
115   echo "----$out/$protoc --proto_path=$memory_data_dir:$native_hook_dir:$hidump_data_dir:$hilog_data_dir:$ftrace_data_dir:$js_memory_dir:$services_dir:$network_data_dir:$cpu_data_dir:$diskio_data_dir:$process_data_dir:$hisysevent_data_dir:$test_data_dir --plugin=protoc-gen-plugin=$out/$protoreader_plugin --plugin_out=wrapper_namespace=ProtoReader:$cppout ${proto_array[$i]}---"
116  #  $out/$protoc --proto_path=$memory_data_dir:$native_hook_dir:$hidump_data_dir:$hilog_data_dir:$ftrace_data_dir:$js_memory_dir:$services_dir:$network_data_dir:$cpu_data_dir:$diskio_data_dir:$process_data_dir:$hisysevent_data_dir:$test_data_dir --plugin=protoc-gen-plugin=$out/$protoreader_plugin --plugin_out=wrapper_namespace=ProtoReader:$cppout ${proto_array[$i]}
117   $out/$protoc --proto_path=$memory_data_dir:$native_hook_dir:$hidump_data_dir:$hilog_data_dir:$ftrace_data_dir:$js_memory_dir:$services_dir:$network_data_dir:$cpu_data_dir:$diskio_data_dir:$process_data_dir:$hisysevent_data_dir:$test_data_dir --plugin=protoc-gen-plugin=$out/$protoreader_plugin --plugin_out=wrapper_namespace=ProtoReader:$cppout ${proto_array[$i]}
118done
119echo "generate proto based files over"
120