1# Copyright (C) 2021 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. 13import("//build/test.gni") 14import("//developtools/hdc/hdc.gni") 15hdc_path = "//developtools/hdc/" 16module_output_path = "developtools/hdc/" 17declare_args() { 18 hdc_unit_test = true 19 hdc_fuzz_test = true 20} 21 22hdc_common_sources = [ 23 "${hdc_path}/src/common/async_cmd.cpp", 24 "${hdc_path}/src/common/auth.cpp", 25 "${hdc_path}/src/common/base.cpp", 26 "${hdc_path}/src/common/channel.cpp", 27 "${hdc_path}/src/common/circle_buffer.cpp", 28 "${hdc_path}/src/common/debug.cpp", 29 "${hdc_path}/src/common/file.cpp", 30 "${hdc_path}/src/common/file_descriptor.cpp", 31 "${hdc_path}/src/common/forward.cpp", 32 "${hdc_path}/src/common/session.cpp", 33 "${hdc_path}/src/common/task.cpp", 34 "${hdc_path}/src/common/tcp.cpp", 35 "${hdc_path}/src/common/transfer.cpp", 36 "${hdc_path}/src/common/usb.cpp", 37] 38 39hdc_daemon_sources = [ 40 "${hdc_path}/src/daemon/daemon.cpp", 41 "${hdc_path}/src/daemon/daemon_app.cpp", 42 "${hdc_path}/src/daemon/daemon_forward.cpp", 43 "${hdc_path}/src/daemon/daemon_tcp.cpp", 44 "${hdc_path}/src/daemon/daemon_unity.cpp", 45 "${hdc_path}/src/daemon/daemon_usb.cpp", 46 "${hdc_path}/src/daemon/jdwp.cpp", 47 "${hdc_path}/src/daemon/shell.cpp", 48 "${hdc_path}/src/daemon/system_depend.cpp", 49] 50 51hdc_host_sources = [ 52 "${hdc_path}/src/host/client.cpp", 53 "${hdc_path}/src/host/host_app.cpp", 54 "${hdc_path}/src/host/host_forward.cpp", 55 "${hdc_path}/src/host/host_tcp.cpp", 56 "${hdc_path}/src/host/host_unity.cpp", 57 "${hdc_path}/src/host/host_updater.cpp", 58 "${hdc_path}/src/host/host_usb.cpp", 59 "${hdc_path}/src/host/server.cpp", 60 "${hdc_path}/src/host/server_for_client.cpp", 61 "${hdc_path}/src/host/translate.cpp", 62] 63 64common_external_deps = [ 65 "bounds_checking_function:libsec_static", 66 "libuv:uv", 67 "lz4:liblz4_static", 68 "openssl:libcrypto_static", 69] 70 71config("hdc_ut_code_flag") { 72 cflags = code_check_flag 73} 74 75config("hdc_ut_config") { 76 defines = [ 77 "TEST_HASH", 78 "HDC_MSG_HASH=\"TEST\"", 79 ] 80 include_dirs = [ "${hdc_path}/src/common" ] 81 82 cflags = [ 83 "-std=c++17", 84 "-fno-access-control", 85 "-g", 86 ] 87 ldflags = [] 88 89 if (hdc_test_coverage && is_ohos) { 90 cflags += [ 91 "-fprofile-arcs", 92 "-ftest-coverage", 93 ] 94 ldflags += [ "--coverage" ] 95 } 96} 97 98config("hdc_common_config") { 99 defines = [] 100 include_dirs = [ 101 "${hdc_path}/src/common", 102 "${hdc_path}/src/daemon", 103 "${hdc_path}/src/host", 104 "${hdc_path}/test/unittest/common/include", 105 ] 106 107 if (hdc_support_uart) { 108 defines += [ "HDC_SUPPORT_UART" ] 109 } 110 111 defines += [ "HDC_UT" ] 112} 113 114config("hdc_host_common_config") { 115 defines = [ "HDC_HOST" ] 116 117 # both linux and ohos is same linux syscall 118 defines += [ "HOST_LINUX" ] 119 defines += [ "HARMONY_PROJECT" ] 120} 121 122ohos_source_set("hdc_common") { 123 use_exceptions = true 124 testonly = true 125 sources = hdc_common_sources 126 if (hdc_support_uart) { 127 sources += [ "${hdc_path}/src/common/uart.cpp" ] 128 } 129 public_external_deps = common_external_deps 130 external_deps = [ "init:libbegetutil" ] 131 public_configs = [ 132 ":hdc_common_config", 133 ":hdc_ut_config", 134 ] 135 defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ] 136 if (hdc_fuzz_test) { 137 defines += [ 138 "FUZZ_TEST", 139 "HDC_HILOG", 140 ] 141 external_deps += [ "hilog:libhilog" ] 142 } 143} 144 145ohos_source_set("hdc_daemon") { 146 use_exceptions = true 147 sources = hdc_common_sources 148 sources += hdc_daemon_sources 149 if (hdc_support_uart) { 150 sources += [ "${hdc_path}/src/common/uart.cpp" ] 151 sources += [ "${hdc_path}/src/daemon/daemon_uart.cpp" ] 152 } 153 public_external_deps = common_external_deps 154 external_deps = [ "init:libbegetutil" ] 155 public_configs = [ 156 ":hdc_common_config", 157 ":hdc_ut_config", 158 ] 159 defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ] 160} 161 162ohos_source_set("hdc_host") { 163 use_exceptions = true 164 sources = hdc_common_sources 165 sources += hdc_host_sources 166 if (hdc_support_uart) { 167 sources += [ "${hdc_path}/src/common/uart.cpp" ] 168 sources += [ "${hdc_path}/src/host/host_uart.cpp" ] 169 } 170 public_external_deps = common_external_deps 171 public_external_deps += [ "libusb:libusb" ] 172 public_configs = [ 173 ":hdc_common_config", 174 ":hdc_host_common_config", 175 ":hdc_ut_config", 176 ] 177 defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ] 178} 179 180ohos_source_set("hdc_daemon_platform") { 181 testonly = true 182 public_configs = [ ":hdc_ut_config" ] 183 184 #defines = [ "HARMONY_PROJECT" ] 185 defines = [] 186 if (hdc_test_coverage && is_ohos) { 187 defines += [ "TEST_COVERAGE" ] 188 } 189 190 if (hdc_unit_test) { 191 defines += [ "HDC_UNIT_TEST" ] 192 } 193 if (js_jdwp_connect) { 194 defines += [ "JS_JDWP_CONNECT" ] 195 } 196 197 sources = [ 198 "${hdc_path}/src/daemon/daemon_unity.cpp", 199 "${hdc_path}/src/daemon/jdwp.cpp", 200 ] 201 202 public_external_deps = [ 203 "bounds_checking_function:libsec_static", 204 "googletest:gtest", 205 "libuv:uv", 206 "openssl:libcrypto_static", 207 ] 208 209 external_deps = [ "init:libbegetutil" ] 210 211 include_dirs = [ "${hdc_path}/daemon" ] 212} 213 214ohos_unittest("hdc_jdwp_unittest") { 215 module_out_path = module_output_path 216 public_configs = [ ":hdc_ut_config" ] 217 defines = [ "HARMONY_PROJECT" ] 218 if (hdc_test_coverage && is_ohos) { 219 defines += [ "TEST_COVERAGE" ] 220 } 221 if (hdc_unit_test) { 222 defines += [ "HDC_UNIT_TEST" ] 223 } 224 if (js_jdwp_connect) { 225 defines += [ "JS_JDWP_CONNECT" ] 226 } 227 public_deps = [ ":hdc_daemon_platform" ] 228 229 sources = [ "unittest/common/HdcJdwpTest.cpp" ] 230 deps = [ ":hdc_common" ] 231 232 include_dirs = [ 233 "${hdc_path}/test/unittest/common/include", 234 "${hdc_path}/src/daemon", 235 "${hdc_path}/src/common", 236 ] 237 external_deps = [ "googletest:gmock_main" ] 238 239 if (is_linux) { 240 static_link = false 241 } 242 subsystem_name = "developtools" 243 defines += [ "OPENSSL_SUPPRESS_DEPRECATED" ] 244 external_deps += [ 245 "bounds_checking_function:libsec_static", 246 "libuv:uv", 247 ] 248} 249 250ohos_unittest("hdc_uart_unittest") { 251 use_exceptions = true 252 module_out_path = module_output_path 253 resource_config_file = "unittest/resource/ohos_test.xml" 254 sources = [ 255 "unittest/common/daemon_uart_test.cpp", 256 "unittest/common/uart_test.cpp", 257 ] 258 259 configs = [ ":hdc_common_config" ] 260 configs += [ ":hdc_ut_code_flag" ] 261 deps = [ ":hdc_daemon" ] 262 defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ] 263 264 external_deps = [ "googletest:gmock_main" ] 265} 266 267ohos_unittest("hdc_host_uart_unittest") { 268 use_exceptions = true 269 module_out_path = module_output_path 270 resource_config_file = "unittest/resource/ohos_test.xml" 271 sources = [ 272 "unittest/common/host_uart_test.cpp", 273 "unittest/common/uart_test.cpp", 274 ] 275 276 configs = [ 277 ":hdc_common_config", 278 ":hdc_host_common_config", 279 ":hdc_ut_code_flag", 280 ] 281 282 deps = [ ":hdc_host" ] 283 284 defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ] 285 286 external_deps = [ "googletest:gmock_main" ] 287} 288 289group("HdcJdwpTest") { 290 testonly = true 291 deps = [ ":hdc_jdwp_unittest" ] 292} 293 294group("hdc_unittest") { 295 testonly = true 296 deps = [ 297 ":hdc_host_uart_unittest", 298 ":hdc_host_uart_unittest(${host_toolchain})", 299 ":hdc_jdwp_unittest", 300 ":hdc_register_unittest", 301 ":hdc_uart_unittest", 302 ":hdc_uart_unittest(${host_toolchain})", 303 ] 304} 305 306config("hdc_test_config") { 307 cflags = code_check_flag 308 ldflags = [] 309 defines = [ "HARMONY_PROJECT" ] 310 311 if (hdc_test_coverage && is_ohos) { 312 defines += [ "TEST_COVERAGE" ] 313 cflags += [ 314 "-fprofile-arcs", 315 "-ftest-coverage", 316 ] 317 ldflags += [ "--coverage" ] 318 } 319 if (js_jdwp_connect) { 320 defines += [ "JS_JDWP_CONNECT" ] 321 } 322 include_dirs = [ 323 "${hdc_path}/test/fuzztest/jdwpreadstream_fuzzer", 324 "${hdc_path}/test/fuzztest/forwardreadstream_fuzzer", 325 "${hdc_path}/src/daemon", 326 "${hdc_path}/src/common", 327 ] 328} 329 330config("hdc_register_config") { 331 cflags = code_check_flag 332 ldflags = [] 333 defines = [ "HDC_HILOG" ] 334 335 if (hdc_test_coverage && is_ohos) { 336 defines += [ "TEST_COVERAGE" ] 337 cflags += [ 338 "-fprofile-arcs", 339 "-ftest-coverage", 340 ] 341 ldflags += [ "--coverage" ] 342 } 343 if (js_jdwp_connect) { 344 defines += [ "JS_JDWP_CONNECT" ] 345 } 346} 347 348fuzz_cflags = [ 349 "-O0", 350 "-Wno-unused-variable", 351 "-fno-omit-frame-pointer", 352] 353 354ohos_fuzztest("JdwpReadStreamFuzzTest") { 355 module_out_path = FUZZ_OUTPUT_PATH 356 fuzz_config_file = "${hdc_path}/test/fuzztest/jdwpreadstream_fuzzer" 357 configs = [ ":hdc_test_config" ] 358 cflags = fuzz_cflags 359 sources = [ 360 "${hdc_path}/src/daemon/jdwp.cpp", 361 "${hdc_path}/src/daemon/system_depend.cpp", 362 "fuzztest/jdwpreadstream_fuzzer/JdwpReadStream_fuzzer.cpp", 363 ] 364 deps = [ ":hdc_common" ] 365 external_deps = [ 366 "hilog:libhilog", 367 "init:libbeget_proxy", 368 "init:libbegetutil", 369 ] 370 public_external_deps = [ 371 "bounds_checking_function:libsec_static", 372 "libuv:uv", 373 ] 374} 375 376ohos_fuzztest("ForwardReadStreamFuzzTest") { 377 module_out_path = FUZZ_OUTPUT_PATH 378 fuzz_config_file = "${hdc_path}/test/fuzztest/forwardreadstream_fuzzer" 379 configs = [ ":hdc_test_config" ] 380 cflags = fuzz_cflags 381 sources = [ "fuzztest/forwardreadstream_fuzzer/ForwardReadStream_fuzzer.cpp" ] 382 deps = [ ":hdc_common" ] 383 subsystem_name = "developtools" 384 part_name = "hdc" 385 external_deps = [ 386 "hilog:libhilog", 387 "libuv:uv", 388 ] 389 public_external_deps = [ 390 "bounds_checking_function:libsec_static", 391 "libuv:uv", 392 ] 393} 394 395ohos_fuzztest("DaemonUsbReadFuzzTest") { 396 module_out_path = FUZZ_OUTPUT_PATH 397 fuzz_config_file = "${hdc_path}/test/fuzztest/daemonusbread_fuzzer" 398 configs = [ ":hdc_test_config" ] 399 cflags = fuzz_cflags 400 sources = [ 401 "${hdc_path}/src/daemon/daemon_usb.cpp", 402 "${hdc_path}/src/daemon/system_depend.cpp", 403 "fuzztest/daemonusbread_fuzzer/DaemonUsbRead_fuzzer.cpp", 404 ] 405 deps = [ ":hdc_common" ] 406 external_deps = [ 407 "init:libbeget_proxy", 408 "init:libbegetutil", 409 ] 410 public_external_deps = [ 411 "bounds_checking_function:libsec_static", 412 "libuv:uv", 413 ] 414} 415 416group("hdc_fuzztest") { 417 testonly = true 418 deps = [ 419 ":DaemonUsbReadFuzzTest", 420 ":ForwardReadStreamFuzzTest", 421 ":JdwpReadStreamFuzzTest", 422 ] 423} 424 425ohos_unittest("hdc_register_unittest") { 426 module_out_path = module_output_path 427 resource_config_file = "unittest/resource/ohos_test.xml" 428 429 sources = [ 430 "${hdc_path}/src/register/hdc_connect.cpp", 431 "${hdc_path}/src/register/hdc_jdwp.cpp", 432 "unittest/register/register_test.cpp", 433 ] 434 435 include_dirs = [ "${hdc_path}/src/register/" ] 436 437 configs = [ ":hdc_register_config" ] 438 439 external_deps = [ 440 "c_utils:utils", 441 "googletest:gmock_main", 442 "hilog:libhilog", 443 "init:libbeget_proxy", 444 "init:libbegetutil", 445 "libuv:uv", 446 ] 447 448 subsystem_name = "developtools" 449 part_name = "hdc" 450} 451