18e920a95Sopenharmony_ci# Copyright (c) 2023-2024 Huawei Device Co., Ltd.
28e920a95Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
38e920a95Sopenharmony_ci# you may not use this file except in compliance with the License.
48e920a95Sopenharmony_ci# You may obtain a copy of the License at
58e920a95Sopenharmony_ci#
68e920a95Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
78e920a95Sopenharmony_ci#
88e920a95Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
98e920a95Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
108e920a95Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
118e920a95Sopenharmony_ci# See the License for the specific language governing permissions and
128e920a95Sopenharmony_ci# limitations under the License.
138e920a95Sopenharmony_ci
148e920a95Sopenharmony_ciimport("//build/ohos.gni")
158e920a95Sopenharmony_ciimport("../../../code_signature.gni")
168e920a95Sopenharmony_ci
178e920a95Sopenharmony_ciconfig("public_code_sign_utils_configs") {
188e920a95Sopenharmony_ci  include_dirs = [ "include" ]
198e920a95Sopenharmony_ci}
208e920a95Sopenharmony_ci
218e920a95Sopenharmony_ciohos_shared_library("libcode_sign_utils") {
228e920a95Sopenharmony_ci  sanitize = {
238e920a95Sopenharmony_ci    cfi = true
248e920a95Sopenharmony_ci    cfi_cross_dso = true
258e920a95Sopenharmony_ci    debug = false
268e920a95Sopenharmony_ci  }
278e920a95Sopenharmony_ci  branch_protector_ret = "pac_ret"
288e920a95Sopenharmony_ci  sources = [
298e920a95Sopenharmony_ci    "${code_signature_root_dir}/utils/src/code_sign_block.cpp",
308e920a95Sopenharmony_ci    "${code_signature_root_dir}/utils/src/file_helper.cpp",
318e920a95Sopenharmony_ci    "src/code_sign_enable_multi_task.cpp",
328e920a95Sopenharmony_ci    "src/code_sign_helper.cpp",
338e920a95Sopenharmony_ci    "src/code_sign_utils.cpp",
348e920a95Sopenharmony_ci    "src/code_sign_utils_in_c.cpp",
358e920a95Sopenharmony_ci    "src/stat_utils.cpp",
368e920a95Sopenharmony_ci  ]
378e920a95Sopenharmony_ci  version_script = "libcode_sign_utils.versionscript"
388e920a95Sopenharmony_ci  cflags_cc = [
398e920a95Sopenharmony_ci    "-Os",
408e920a95Sopenharmony_ci    "-fno-asynchronous-unwind-tables",
418e920a95Sopenharmony_ci    "-fno-unwind-tables",
428e920a95Sopenharmony_ci  ]
438e920a95Sopenharmony_ci  public_configs = [
448e920a95Sopenharmony_ci    "${code_signature_root_dir}:common_public_config",
458e920a95Sopenharmony_ci    "${code_signature_root_dir}/services/key_enable:key_enable_rust_interface_config",
468e920a95Sopenharmony_ci    ":public_code_sign_utils_configs",
478e920a95Sopenharmony_ci  ]
488e920a95Sopenharmony_ci  configs = [ "${code_signature_root_dir}:common_utils_config" ]
498e920a95Sopenharmony_ci
508e920a95Sopenharmony_ci  deps = [ "${code_signature_root_dir}/utils:fsverity_sign_src_set" ]
518e920a95Sopenharmony_ci  if (host_os == "linux" && !is_asan && !ohos_indep_compiler_enable &&
528e920a95Sopenharmony_ci      !use_clang_coverage) {
538e920a95Sopenharmony_ci    deps += [ "${code_signature_root_dir}/services/key_enable:key_enable_lib" ]
548e920a95Sopenharmony_ci  } else {
558e920a95Sopenharmony_ci    sources += [ "${code_signature_root_dir}/services/key_enable/src/asan/disable_rust_interface.cpp" ]
568e920a95Sopenharmony_ci  }
578e920a95Sopenharmony_ci  defines = []
588e920a95Sopenharmony_ci  if (code_signature_support_oh_code_sign) {
598e920a95Sopenharmony_ci    defines += [ "SUPPORT_OH_CODE_SIGN" ]
608e920a95Sopenharmony_ci  }
618e920a95Sopenharmony_ci  if (build_variant == "root" || code_signature_enable_xpm_mode == 0) {
628e920a95Sopenharmony_ci    defines += [ "SUPPORT_PERMISSIVE_MODE" ]
638e920a95Sopenharmony_ci  }
648e920a95Sopenharmony_ci  external_deps = [
658e920a95Sopenharmony_ci    "ability_base:extractortool",
668e920a95Sopenharmony_ci    "appverify:libhapverify",
678e920a95Sopenharmony_ci    "c_utils:utils",
688e920a95Sopenharmony_ci    "hilog:libhilog",
698e920a95Sopenharmony_ci    "hisysevent:libhisysevent",
708e920a95Sopenharmony_ci    "hitrace:hitrace_meter",
718e920a95Sopenharmony_ci    "openssl:libcrypto_shared",
728e920a95Sopenharmony_ci  ]
738e920a95Sopenharmony_ci  install_enable = true
748e920a95Sopenharmony_ci
758e920a95Sopenharmony_ci  part_name = "code_signature"
768e920a95Sopenharmony_ci
778e920a95Sopenharmony_ci  subsystem_name = "security"
788e920a95Sopenharmony_ci
798e920a95Sopenharmony_ci  install_images = [ "system" ]
808e920a95Sopenharmony_ci}
81