1# Copyright (c) 2021-2024 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6#     http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14import("//base/hiviewdfx/faultloggerd/faultloggerd.gni")
15
16processdump_sources = [
17  "dfx_fault_stack.cpp",
18  "dfx_logger.cpp",
19  "dfx_process.cpp",
20  "dfx_ring_buffer_wrapper.cpp",
21  "dfx_stack_info_formatter.cpp",
22  "dfx_thread.cpp",
23  "dfx_unwind_async_thread.cpp",
24  "dfx_unwind_remote.cpp",
25  "printer.cpp",
26  "process_dumper.cpp",
27]
28
29if (defined(ohos_lite)) {
30  config("processdump_config") {
31    visibility = [ "*:*" ]
32    cflags = []
33
34    defines = [
35      "HAVE_CONFIG_H",
36      "HAVE_ELF_H",
37      "HAVE_LINK_H",
38      "HISYSEVENT_DISABLE",
39      "is_ohos_lite",
40    ]
41
42    include_dirs = [
43      ".",
44      "$c_utils_include_path",
45      "$faultloggerd_common_path/dfxlog",
46      "$faultloggerd_common_path/dfxutil",
47      "$faultloggerd_interfaces_path/common",
48      "$faultloggerd_interfaces_path/innerkits/async_stack/include",
49      "$faultloggerd_interfaces_path/innerkits/backtrace/include",
50      "$faultloggerd_interfaces_path/innerkits/crash_exception",
51      "$faultloggerd_interfaces_path/innerkits/faultloggerd_client/include",
52      "$faultloggerd_interfaces_path/innerkits/procinfo/include",
53      "$faultloggerd_interfaces_path/innerkits/unwinder/include",
54      "$hilog_lite_include_path",
55    ]
56  }
57
58  source_set("process_info_src") {
59    sources = processdump_sources
60    public_configs = [ ":processdump_config" ]
61
62    deps = [
63      "$faultloggerd_common_path/dfxlog:dfx_hilog",
64      "$faultloggerd_common_path/dfxutil:dfx_util",
65      "$faultloggerd_common_path/trace:dfx_trace",
66      "$faultloggerd_interfaces_path/innerkits/async_stack:libasync_stack",
67      "$faultloggerd_interfaces_path/innerkits/backtrace:libbacktrace_local",
68      "$faultloggerd_interfaces_path/innerkits/crash_exception",
69      "$faultloggerd_interfaces_path/innerkits/faultloggerd_client:libfaultloggerd",
70      "$faultloggerd_interfaces_path/innerkits/procinfo:libdfx_procinfo",
71      "$faultloggerd_interfaces_path/innerkits/unwinder:libunwinder",
72    ]
73    external_deps = [ "hilog_lite:hilog_shared" ]
74  }
75
76  executable("processdump") {
77    sources = processdump_sources
78    sources += [
79      "cppcrash_reporter.cpp",
80      "main.cpp",
81    ]
82    public_configs = [ ":processdump_config" ]
83
84    deps = [
85      "$faultloggerd_common_path/dfxlog:dfx_hilog",
86      "$faultloggerd_common_path/dfxutil:dfx_util",
87      "$faultloggerd_common_path/trace:dfx_trace",
88      "$faultloggerd_interfaces_path/innerkits/async_stack:libasync_stack",
89      "$faultloggerd_interfaces_path/innerkits/backtrace:libbacktrace_local",
90      "$faultloggerd_interfaces_path/innerkits/crash_exception",
91      "$faultloggerd_interfaces_path/innerkits/faultloggerd_client:libfaultloggerd",
92      "$faultloggerd_interfaces_path/innerkits/procinfo:libdfx_procinfo",
93      "$faultloggerd_interfaces_path/innerkits/unwinder:libunwinder",
94    ]
95
96    external_deps = [ "hilog_lite:hilog_shared" ]
97  }
98} else {
99  config("processdump_config") {
100    visibility = [ ":*" ]
101
102    include_dirs = [
103      ".",
104      "$faultloggerd_interfaces_path/common",
105      "$faultloggerd_interfaces_path/innerkits/backtrace/include",
106      "$faultloggerd_interfaces_path/innerkits/crash_exception",
107      "$faultloggerd_interfaces_path/innerkits/procinfo/include",
108      "$faultloggerd_interfaces_path/innerkits/signal_handler",
109      "$faultloggerd_interfaces_path/innerkits/unwinder/include",
110      "$faultloggerd_path/common",
111    ]
112
113    cflags_cc = [ "-DRUSTC_DEMANGLE" ]
114
115    if (processdump_minidebuginfo_enable) {
116      defines = [ "PROCESSDUMP_MINIDEBUGINFO" ]
117    }
118
119    if (processdump_parse_lock_owner_enable) {
120      defines += [ "PARSE_LOCK_OWNER" ]
121    }
122  }
123
124  ohos_source_set("process_info_src") {
125    sources = processdump_sources
126    configs = [
127      ":processdump_config",
128      "$faultloggerd_common_path/build:coverage_flags",
129    ]
130
131    deps = [
132      "$faultloggerd_common_path/dfxlog:dfx_hilog",
133      "$faultloggerd_common_path/dfxutil:dfx_util",
134      "$faultloggerd_common_path/trace:dfx_trace",
135      "$faultloggerd_interfaces_path/innerkits/async_stack:libasync_stack",
136      "$faultloggerd_interfaces_path/innerkits/backtrace:libbacktrace_local",
137      "$faultloggerd_interfaces_path/innerkits/crash_exception",
138      "$faultloggerd_interfaces_path/innerkits/faultloggerd_client:libfaultloggerd",
139      "$faultloggerd_interfaces_path/innerkits/procinfo:libdfx_procinfo",
140      "$faultloggerd_interfaces_path/innerkits/unwinder:libunwinder",
141    ]
142
143    external_deps = [
144      "c_utils:utils",
145      "hilog:libhilog",
146      "init:libbegetutil",
147      "jsoncpp:jsoncpp",
148    ]
149
150    part_name = "faultloggerd"
151    subsystem_name = "hiviewdfx"
152  }
153
154  ohos_executable("processdump") {
155    install_enable = true
156    configs = [
157      ":processdump_config",
158      "$faultloggerd_path/common/build:coverage_flags",
159    ]
160    sources = processdump_sources
161    sources += [
162      "cppcrash_reporter.cpp",
163      "main.cpp",
164    ]
165    if (processdump_parse_lock_owner_enable) {
166      sources += [ "lock_parser.cpp" ]
167    }
168    cflags_cc = [ "-DDEBUG_CRASH_LOCAL_HANDLER" ]
169    defines = [
170      "DFX_LOG_HILOG_BASE",
171      "DFX_ENABLE_TRACE",
172    ]
173    if (use_clang_coverage) {
174      defines += [ "CLANG_COVERAGE" ]
175    }
176
177    deps = [
178      "$faultloggerd_common_path/dfxlog:dfx_hilog_base",
179      "$faultloggerd_common_path/dfxutil:dfx_util",
180      "$faultloggerd_common_path/trace:dfx_trace",
181      "$faultloggerd_frameworks_path/localhandler:dfx_local_handler_src",
182      "$faultloggerd_interfaces_path/innerkits/async_stack:libasync_stack",
183      "$faultloggerd_interfaces_path/innerkits/backtrace:libbacktrace_local",
184      "$faultloggerd_interfaces_path/innerkits/crash_exception",
185      "$faultloggerd_interfaces_path/innerkits/faultloggerd_client:libfaultloggerd",
186      "$faultloggerd_interfaces_path/innerkits/procinfo:libdfx_procinfo",
187      "$faultloggerd_interfaces_path/innerkits/unwinder:libunwinder",
188    ]
189
190    external_deps = [
191      "c_utils:utils",
192      "hilog:libhilog_base",
193      "hisysevent:libhisysevent",
194      "hitrace:hitrace_meter",
195      "init:libbegetutil",
196      "jsoncpp:jsoncpp",
197    ]
198    version_script = "processdump.map"
199    install_images = [
200      "system",
201      "updater",
202    ]
203
204    part_name = "faultloggerd"
205    subsystem_name = "hiviewdfx"
206  }
207}
208