106f6ba60Sopenharmony_ci# Copyright (c) Huawei Technologies Co., Ltd. 2021. All rights reserved.
206f6ba60Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
306f6ba60Sopenharmony_ci# you may not use this file except in compliance with the License.
406f6ba60Sopenharmony_ci# You may obtain a copy of the License at
506f6ba60Sopenharmony_ci#
606f6ba60Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
706f6ba60Sopenharmony_ci#
806f6ba60Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
906f6ba60Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
1006f6ba60Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1106f6ba60Sopenharmony_ci# See the License for the specific language governing permissions and
1206f6ba60Sopenharmony_ci# limitations under the License.
1306f6ba60Sopenharmony_ci
1406f6ba60Sopenharmony_ciimport("//build/ohos.gni")
1506f6ba60Sopenharmony_ciimport("../../base/config.gni")
1606f6ba60Sopenharmony_ci
1706f6ba60Sopenharmony_ciconfig("hook_config") {
1806f6ba60Sopenharmony_ci  defines = [
1906f6ba60Sopenharmony_ci    "HAVE_LIBUNWIND=0",
2006f6ba60Sopenharmony_ci    "HAVE_LIBUNWINDER=1",
2106f6ba60Sopenharmony_ci    "HIPERF_DEBUG",
2206f6ba60Sopenharmony_ci    "CONFIG_NO_HILOG",
2306f6ba60Sopenharmony_ci  ]
2406f6ba60Sopenharmony_ci  defines += [ "target_cpu_${target_cpu}" ]
2506f6ba60Sopenharmony_ci  if (!is_asan) {
2606f6ba60Sopenharmony_ci    defines += [ "HOOK_ENABLE" ]
2706f6ba60Sopenharmony_ci  }
2806f6ba60Sopenharmony_ci}
2906f6ba60Sopenharmony_ci
3006f6ba60Sopenharmony_ciohos_source_set("native_hook_source") {
3106f6ba60Sopenharmony_ci  use_exceptions = true
3206f6ba60Sopenharmony_ci  sources = [
3306f6ba60Sopenharmony_ci    "../../services/ipc/src/socket_context.cpp",
3406f6ba60Sopenharmony_ci    "../../services/ipc/src/unix_socket_client.cpp",
3506f6ba60Sopenharmony_ci    "../native_daemon/src/debug_logger.cpp",
3606f6ba60Sopenharmony_ci    "../native_daemon/src/get_thread_id.cpp",
3706f6ba60Sopenharmony_ci    "../native_daemon/src/register.cpp",
3806f6ba60Sopenharmony_ci    "../native_daemon/src/utilities.cpp",
3906f6ba60Sopenharmony_ci    "src/hook_client.cpp",
4006f6ba60Sopenharmony_ci    "src/hook_socket_client.cpp",
4106f6ba60Sopenharmony_ci    "src/runtime_stack_range.cpp",
4206f6ba60Sopenharmony_ci    "src/sampling.cpp",
4306f6ba60Sopenharmony_ci    "src/stack_writer.cpp",
4406f6ba60Sopenharmony_ci  ]
4506f6ba60Sopenharmony_ci  include_dirs = [
4606f6ba60Sopenharmony_ci    "./include",
4706f6ba60Sopenharmony_ci    "../api/include",
4806f6ba60Sopenharmony_ci    "../api/src",
4906f6ba60Sopenharmony_ci    "../../base/include/",
5006f6ba60Sopenharmony_ci    "../native_daemon/include",
5106f6ba60Sopenharmony_ci    "${OHOS_PROFILER_DIR}/interfaces/kits",
5206f6ba60Sopenharmony_ci    "${OHOS_PROFILER_DIR}/device/services/ipc/include",
5306f6ba60Sopenharmony_ci    "${OHOS_PROFILER_DIR}/device/services/shared_memory/include",
5406f6ba60Sopenharmony_ci  ]
5506f6ba60Sopenharmony_ci  public_configs = [
5606f6ba60Sopenharmony_ci    ":hook_config",
5706f6ba60Sopenharmony_ci    "${OHOS_PROFILER_DIR}/device/base:hiprofiler_test_config",
5806f6ba60Sopenharmony_ci  ]
5906f6ba60Sopenharmony_ci  deps = [
6006f6ba60Sopenharmony_ci    "${OHOS_PROFILER_DIR}/device/services/shared_memory:shared_memory_lite",
6106f6ba60Sopenharmony_ci    "../../base:hiprofiler_base",
6206f6ba60Sopenharmony_ci  ]
6306f6ba60Sopenharmony_ci  if (hiprofiler_use_libunwind) {
6406f6ba60Sopenharmony_ci    public_deps = [ "//third_party/libunwind:unwind_source_${target_cpu}" ]
6506f6ba60Sopenharmony_ci  }
6606f6ba60Sopenharmony_ci  external_deps = [
6706f6ba60Sopenharmony_ci    "bounds_checking_function:libsec_shared",
6806f6ba60Sopenharmony_ci    "ffrt:libffrt",
6906f6ba60Sopenharmony_ci    "hitrace:libhitracechain",
7006f6ba60Sopenharmony_ci    "init:libbegetutil",
7106f6ba60Sopenharmony_ci    "zlib:libz",
7206f6ba60Sopenharmony_ci  ]
7306f6ba60Sopenharmony_ci  if (hiprofiler_use_libunwinder) {
7406f6ba60Sopenharmony_ci    external_deps += [ "faultloggerd:libunwinder" ]
7506f6ba60Sopenharmony_ci  }
7606f6ba60Sopenharmony_ci
7706f6ba60Sopenharmony_ci  if (current_toolchain != host_toolchain) {
7806f6ba60Sopenharmony_ci    defines = [ "HAVE_HILOG" ]
7906f6ba60Sopenharmony_ci    external_deps += [ "hilog:libhilog_base" ]
8006f6ba60Sopenharmony_ci  }
8106f6ba60Sopenharmony_ci  subsystem_name = "${OHOS_PROFILER_SUBSYS_NAME}"
8206f6ba60Sopenharmony_ci  part_name = "${OHOS_PROFILER_PART_NAME}"
8306f6ba60Sopenharmony_ci  defines += [ "NO_PROTOBUF" ]
8406f6ba60Sopenharmony_ci  cflags = [
8506f6ba60Sopenharmony_ci    "-Wno-error=inline-asm",
8606f6ba60Sopenharmony_ci    "-DPERF_TEST_DATA",
8706f6ba60Sopenharmony_ci    "-O3",
8806f6ba60Sopenharmony_ci  ]
8906f6ba60Sopenharmony_ci}
9006f6ba60Sopenharmony_ci
9106f6ba60Sopenharmony_ciohos_shared_library("native_hook") {
9206f6ba60Sopenharmony_ci  output_name = "native_hook"
9306f6ba60Sopenharmony_ci  deps = [ ":native_hook_source" ]
9406f6ba60Sopenharmony_ci  if (current_toolchain != host_toolchain) {
9506f6ba60Sopenharmony_ci    defines = [ "HAVE_HILOG" ]
9606f6ba60Sopenharmony_ci    external_deps = [ "hilog:libhilog_base" ]
9706f6ba60Sopenharmony_ci  }
9806f6ba60Sopenharmony_ci  version_script = "libnative_hook.map"
9906f6ba60Sopenharmony_ci  install_enable = true
10006f6ba60Sopenharmony_ci  subsystem_name = "${OHOS_PROFILER_SUBSYS_NAME}"
10106f6ba60Sopenharmony_ci  part_name = "${OHOS_PROFILER_PART_NAME}"
10206f6ba60Sopenharmony_ci}
10306f6ba60Sopenharmony_ci
10406f6ba60Sopenharmony_ciohos_executable("nativetest_c") {
10506f6ba60Sopenharmony_ci  output_name = "nativetest_c"
10606f6ba60Sopenharmony_ci  sources = [ "test/hook_test.c" ]
10706f6ba60Sopenharmony_ci
10806f6ba60Sopenharmony_ci  if (current_toolchain != host_toolchain) {
10906f6ba60Sopenharmony_ci    defines = [ "HAVE_HILOG" ]
11006f6ba60Sopenharmony_ci    if (use_musl && !is_asan) {
11106f6ba60Sopenharmony_ci      defines += [ "HOOK_ENABLE" ]
11206f6ba60Sopenharmony_ci    }
11306f6ba60Sopenharmony_ci    external_deps = [ "hilog:libhilog_base" ]
11406f6ba60Sopenharmony_ci  }
11506f6ba60Sopenharmony_ci  cflags = [
11606f6ba60Sopenharmony_ci    "-Wno-error=inline-asm",
11706f6ba60Sopenharmony_ci    "-O3",
11806f6ba60Sopenharmony_ci  ]
11906f6ba60Sopenharmony_ci  external_deps += [ "bounds_checking_function:libsec_shared" ]
12006f6ba60Sopenharmony_ci  ldflags = [ "-rdynamic" ]
12106f6ba60Sopenharmony_ci  install_enable = false
12206f6ba60Sopenharmony_ci  subsystem_name = "${OHOS_PROFILER_SUBSYS_NAME}"
12306f6ba60Sopenharmony_ci  part_name = "${OHOS_PROFILER_PART_NAME}"
12406f6ba60Sopenharmony_ci}
12506f6ba60Sopenharmony_ci
12606f6ba60Sopenharmony_ciohos_executable("nativetest_cpp") {
12706f6ba60Sopenharmony_ci  output_name = "nativetest_cpp"
12806f6ba60Sopenharmony_ci  sources = [ "test/hook_test.cpp" ]
12906f6ba60Sopenharmony_ci
13006f6ba60Sopenharmony_ci  if (current_toolchain != host_toolchain) {
13106f6ba60Sopenharmony_ci    defines = [ "HAVE_HILOG" ]
13206f6ba60Sopenharmony_ci    external_deps = [ "hilog:libhilog_base" ]
13306f6ba60Sopenharmony_ci  }
13406f6ba60Sopenharmony_ci
13506f6ba60Sopenharmony_ci  cflags = [
13606f6ba60Sopenharmony_ci    "-Wno-error=inline-asm",
13706f6ba60Sopenharmony_ci    "-O3",
13806f6ba60Sopenharmony_ci  ]
13906f6ba60Sopenharmony_ci  ldflags = [ "-rdynamic" ]
14006f6ba60Sopenharmony_ci
14106f6ba60Sopenharmony_ci  install_enable = false
14206f6ba60Sopenharmony_ci  subsystem_name = "${OHOS_PROFILER_SUBSYS_NAME}"
14306f6ba60Sopenharmony_ci  part_name = "${OHOS_PROFILER_PART_NAME}"
14406f6ba60Sopenharmony_ci}
14506f6ba60Sopenharmony_ci
14606f6ba60Sopenharmony_ciohos_shared_library("nativetest_so") {
14706f6ba60Sopenharmony_ci  output_name = "nativetest_so"
14806f6ba60Sopenharmony_ci  sources = [ "test/hook_so.cpp" ]
14906f6ba60Sopenharmony_ci
15006f6ba60Sopenharmony_ci  if (current_toolchain != host_toolchain) {
15106f6ba60Sopenharmony_ci    defines = [ "HAVE_HILOG" ]
15206f6ba60Sopenharmony_ci    external_deps = [ "hilog:libhilog_base" ]
15306f6ba60Sopenharmony_ci  }
15406f6ba60Sopenharmony_ci
15506f6ba60Sopenharmony_ci  cflags = [
15606f6ba60Sopenharmony_ci    "-Wno-error=inline-asm",
15706f6ba60Sopenharmony_ci    "-O3",
15806f6ba60Sopenharmony_ci  ]
15906f6ba60Sopenharmony_ci
16006f6ba60Sopenharmony_ci  install_enable = false
16106f6ba60Sopenharmony_ci  subsystem_name = "${OHOS_PROFILER_SUBSYS_NAME}"
16206f6ba60Sopenharmony_ci  part_name = "${OHOS_PROFILER_PART_NAME}"
16306f6ba60Sopenharmony_ci}
16406f6ba60Sopenharmony_ci
16506f6ba60Sopenharmony_ciohos_executable("malloctest_cpp") {
16606f6ba60Sopenharmony_ci  output_name = "malloctest_cpp"
16706f6ba60Sopenharmony_ci  sources = [ "test/malloc_test.cpp" ]
16806f6ba60Sopenharmony_ci
16906f6ba60Sopenharmony_ci  if (current_toolchain != host_toolchain) {
17006f6ba60Sopenharmony_ci    defines = [ "HAVE_HILOG" ]
17106f6ba60Sopenharmony_ci    external_deps = [ "hilog:libhilog_base" ]
17206f6ba60Sopenharmony_ci  }
17306f6ba60Sopenharmony_ci
17406f6ba60Sopenharmony_ci  cflags = [
17506f6ba60Sopenharmony_ci    "-Wno-error=inline-asm",
17606f6ba60Sopenharmony_ci    "-O3",
17706f6ba60Sopenharmony_ci  ]
17806f6ba60Sopenharmony_ci  external_deps += [ "bounds_checking_function:libsec_shared" ]
17906f6ba60Sopenharmony_ci  ldflags = [ "-rdynamic" ]
18006f6ba60Sopenharmony_ci  install_enable = false
18106f6ba60Sopenharmony_ci  subsystem_name = "${OHOS_PROFILER_SUBSYS_NAME}"
18206f6ba60Sopenharmony_ci  part_name = "${OHOS_PROFILER_PART_NAME}"
18306f6ba60Sopenharmony_ci}
18406f6ba60Sopenharmony_ci
18506f6ba60Sopenharmony_ciohos_executable("perf_test_data") {
18606f6ba60Sopenharmony_ci  output_name = "perf_test_data"
18706f6ba60Sopenharmony_ci  sources = [ "test/perf_test_data.cpp" ]
18806f6ba60Sopenharmony_ci
18906f6ba60Sopenharmony_ci  if (current_toolchain != host_toolchain) {
19006f6ba60Sopenharmony_ci    defines = [ "HAVE_HILOG" ]
19106f6ba60Sopenharmony_ci    external_deps = [ "hilog:libhilog_base" ]
19206f6ba60Sopenharmony_ci  }
19306f6ba60Sopenharmony_ci
19406f6ba60Sopenharmony_ci  cflags = [ "-Wno-error=inline-asm" ]
19506f6ba60Sopenharmony_ci  install_enable = false
19606f6ba60Sopenharmony_ci  ldflags = [ "-rdynamic" ]
19706f6ba60Sopenharmony_ci  subsystem_name = "${OHOS_PROFILER_SUBSYS_NAME}"
19806f6ba60Sopenharmony_ci  part_name = "${OHOS_PROFILER_PART_NAME}"
19906f6ba60Sopenharmony_ci}
20006f6ba60Sopenharmony_ci
20106f6ba60Sopenharmony_ciohos_executable("statisticstest_cpp") {
20206f6ba60Sopenharmony_ci  output_name = "statisticstest_cpp"
20306f6ba60Sopenharmony_ci  sources = [ "test/statistics_test.cpp" ]
20406f6ba60Sopenharmony_ci
20506f6ba60Sopenharmony_ci  if (current_toolchain != host_toolchain) {
20606f6ba60Sopenharmony_ci    defines = [ "HAVE_HILOG" ]
20706f6ba60Sopenharmony_ci    external_deps = [ "hilog:libhilog_base" ]
20806f6ba60Sopenharmony_ci  }
20906f6ba60Sopenharmony_ci
21006f6ba60Sopenharmony_ci  cflags = [
21106f6ba60Sopenharmony_ci    "-Wno-error=inline-asm",
21206f6ba60Sopenharmony_ci    "-O3",
21306f6ba60Sopenharmony_ci  ]
21406f6ba60Sopenharmony_ci  ldflags = [ "-rdynamic" ]
21506f6ba60Sopenharmony_ci  external_deps += [ "bounds_checking_function:libsec_shared" ]
21606f6ba60Sopenharmony_ci  install_enable = false
21706f6ba60Sopenharmony_ci  subsystem_name = "${OHOS_PROFILER_SUBSYS_NAME}"
21806f6ba60Sopenharmony_ci  part_name = "${OHOS_PROFILER_PART_NAME}"
21906f6ba60Sopenharmony_ci}
220