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
16faultloggerd_sources = [
17  "fault_logger_config.cpp",
18  "fault_logger_daemon.cpp",
19  "fault_logger_pipe.cpp",
20  "main.cpp",
21]
22
23if (defined(ohos_lite)) {
24  copy("faultlogger.cfg") {
25    sources = [ "$faultloggerd_path/services/config/faultloggerd.cfg" ]
26    outputs = [ "$root_out_dir/etc/init/faultloggerd.cfg" ]
27  }
28
29  copy("faultlogger.conf") {
30    sources = [ "$faultloggerd_path/services/config/faultlogger.conf" ]
31    outputs = [ "$root_out_dir/etc/faultlogger.conf" ]
32  }
33
34  executable("faultloggerd") {
35    visibility = [ "*:*" ]
36
37    include_dirs = [
38      ".",
39      "$c_utils_include_path",
40      "$faultloggerd_interfaces_path/common",
41      "$faultloggerd_path/common/dfxlog",
42      "$faultloggerd_path/common/dfxutil",
43      "$faultloggerd_path/tools/process_dump",
44      "$hilog_lite_include_path",
45      "$faultloggerd_path/interfaces/innerkits/faultloggerd_client/include",
46      "$faultloggerd_path/interfaces/innerkits/faultloggerd_client",
47    ]
48
49    sources = faultloggerd_sources
50    sources += [ "$c_utils_src_path/directory_ex.cpp" ]
51
52    cflags = [ "-fstack-protector-strong" ]
53
54    deps = [
55      ":faultlogger.conf",
56      "$faultloggerd_common_path/trace:dfx_trace",
57      "$faultloggerd_path/common/dfxlog:dfx_hilog",
58      "$faultloggerd_path/common/dfxutil:dfx_util",
59      "$faultloggerd_path/interfaces/innerkits/faultloggerd_client:libfaultloggerd",
60    ]
61
62    external_deps = [ "hilog_lite:hilog_shared" ]
63
64    defines = [ "is_ohos_lite" ]
65    if (faultloggerd_hisysevent_enable) {
66      deps += [ "hisysevent:libhisysevent" ]
67    } else {
68      defines += [ "HISYSEVENT_DISABLE" ]
69    }
70  }
71} else {
72  config("faultloggerd_config") {
73    visibility = [ ":*" ]
74
75    include_dirs = [
76      ".",
77      "$faultloggerd_interfaces_path/common",
78      "$faultloggerd_path/common/dfxlog",
79      "$faultloggerd_path/common/dfxutil",
80      "$faultloggerd_path/tools/process_dump",
81      "$faultloggerd_path/interfaces/innerkits/faultloggerd_client",
82      "$faultloggerd_path/interfaces/innerkits/signal_handler",
83    ]
84  }
85
86  ohos_prebuilt_etc("faultloggerd.cfg") {
87    if (use_musl) {
88      source = "config/faultloggerd.cfg"
89    } else {
90      source = "config/bionic/faultloggerd.cfg"
91    }
92
93    relative_install_dir = "init"
94    part_name = "faultloggerd"
95    subsystem_name = "hiviewdfx"
96  }
97
98  ohos_prebuilt_etc("faultloggerd.para") {
99    source = "config/faultloggerd.para"
100    relative_install_dir = "param"
101    part_name = "faultloggerd"
102    subsystem_name = "hiviewdfx"
103  }
104
105  ohos_prebuilt_etc("faultloggerd.para.dac") {
106    source = "config/faultloggerd.para.dac"
107    relative_install_dir = "param"
108    part_name = "faultloggerd"
109    subsystem_name = "hiviewdfx"
110  }
111
112  ohos_prebuilt_etc("faultlogger.conf") {
113    source = "config/faultlogger.conf"
114    part_name = "faultloggerd"
115    subsystem_name = "hiviewdfx"
116  }
117
118  ohos_executable("faultloggerd") {
119    install_enable = true
120    configs = [
121      ":faultloggerd_config",
122      "$faultloggerd_path/common/build:coverage_flags",
123    ]
124    sources = faultloggerd_sources
125
126    cflags = [ "-fstack-protector-strong" ]
127    cflags_cc = [ "-DDEBUG_CRASH_LOCAL_HANDLER" ]
128    defines = [
129      "DFX_LOG_HILOG_BASE",
130      "DFX_ENABLE_TRACE",
131    ]
132
133    deps = [
134      ":faultlogger.conf",
135      ":faultloggerd.para",
136      ":faultloggerd.para.dac",
137      "$faultloggerd_frameworks_path/localhandler:dfx_local_handler_src",
138      "$faultloggerd_path/common/dfxlog:dfx_hilog_base",
139      "$faultloggerd_path/common/dfxutil:dfx_util",
140      "$faultloggerd_path/common/trace:dfx_trace",
141      "$faultloggerd_path/interfaces/innerkits/faultloggerd_client:libfaultloggerd",
142    ]
143
144    if (!is_asan) {
145      deps += [ ":faultloggerd.cfg" ]
146    }
147
148    external_deps = [
149      "bounds_checking_function:libsec_shared",
150      "c_utils:utils",
151      "hilog:libhilog_base",
152      "hisysevent:libhisysevent",
153      "hitrace:hitrace_meter",
154      "init:libbegetutil",
155    ]
156    version_script = "faultloggerd.map"
157    install_images = [
158      "system",
159      "updater",
160    ]
161    part_name = "faultloggerd"
162    subsystem_name = "hiviewdfx"
163  }
164
165  ohos_source_set("faultloggerd_fuzzer_src") {
166    configs = [ ":faultloggerd_config" ]
167    defines = [
168      "FAULTLOGGERD_FUZZER",
169      "DFX_ENABLE_TRACE",
170    ]
171    sources = [
172      "fault_logger_config.cpp",
173      "fault_logger_daemon.cpp",
174      "fault_logger_pipe.cpp",
175    ]
176
177    deps = [
178      "$faultloggerd_common_path/dfxlog:dfx_hilog",
179      "$faultloggerd_common_path/dfxutil:dfx_util",
180      "$faultloggerd_path/common/trace:dfx_trace",
181      "$faultloggerd_path/interfaces/innerkits/faultloggerd_client:libfaultloggerd",
182    ]
183    external_deps = [
184      "c_utils:utils",
185      "hilog:libhilog_base",
186      "hisysevent:libhisysevent",
187      "hitrace:hitrace_meter",
188      "init:libbegetutil",
189    ]
190    part_name = "faultloggerd"
191    subsystem_name = "hiviewdfx"
192  }
193}
194