1bae44755Sopenharmony_ci# Copyright (C) 2022 Huawei Device Co., Ltd. 2bae44755Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 3bae44755Sopenharmony_ci# you may not use this file except in compliance with the License. 4bae44755Sopenharmony_ci# You may obtain a copy of the License at 5bae44755Sopenharmony_ci# 6bae44755Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 7bae44755Sopenharmony_ci# 8bae44755Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 9bae44755Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 10bae44755Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11bae44755Sopenharmony_ci# See the License for the specific language governing permissions and 12bae44755Sopenharmony_ci# limitations under the License. 13bae44755Sopenharmony_ci 14bae44755Sopenharmony_ciimport("//build/lite/config/component/lite_component.gni") 15bae44755Sopenharmony_ciimport("//build/ohos.gni") 16bae44755Sopenharmony_ciimport("config.gni") 17bae44755Sopenharmony_ci 18bae44755Sopenharmony_ciconfig("internal") { 19bae44755Sopenharmony_ci include_dirs = [ "include" ] 20bae44755Sopenharmony_ci include_dirs += [ syscap_codec_config_path ] 21bae44755Sopenharmony_ci if (syscap_codec_config_extern_path != "") { 22bae44755Sopenharmony_ci include_dirs += [ "${root_build_dir}" ] 23bae44755Sopenharmony_ci cflags = [ "-DSYSCAP_DEFINE_EXTERN_ENABLE" ] 24bae44755Sopenharmony_ci } 25bae44755Sopenharmony_ci} 26bae44755Sopenharmony_ci 27bae44755Sopenharmony_cisources_platform_common = [ 28bae44755Sopenharmony_ci "./src/syscap_tool.c", 29bae44755Sopenharmony_ci "./src/create_pcid.c", 30bae44755Sopenharmony_ci "./src/endian_internal.c", 31bae44755Sopenharmony_ci "./src/context_tool.c", 32bae44755Sopenharmony_ci "./src/common_method.c", 33bae44755Sopenharmony_ci] 34bae44755Sopenharmony_ci 35bae44755Sopenharmony_ciohos_executable("syscap_tool_bin") { 36bae44755Sopenharmony_ci deps = [] 37bae44755Sopenharmony_ci if (syscap_codec_config_extern_path != "") { 38bae44755Sopenharmony_ci deps += [ ":gen_syscap_define_custom" ] 39bae44755Sopenharmony_ci inputs = [ "${root_build_dir}/syscap_define_custom.h" ] 40bae44755Sopenharmony_ci } 41bae44755Sopenharmony_ci output_name = "syscap_tool" 42bae44755Sopenharmony_ci install_enable = true 43bae44755Sopenharmony_ci include_dirs = [ "src" ] 44bae44755Sopenharmony_ci configs = [ ":internal" ] 45bae44755Sopenharmony_ci defines = [] 46bae44755Sopenharmony_ci 47bae44755Sopenharmony_ci if (is_mingw) { 48bae44755Sopenharmony_ci defines += [ "_POSIX_" ] 49bae44755Sopenharmony_ci } 50bae44755Sopenharmony_ci if (defined(ohos_lite) && ohos_kernel_type == "liteos_m") { 51bae44755Sopenharmony_ci cflags = [ "-DPATH_MAX=1024" ] 52bae44755Sopenharmony_ci cflags += [ "-Wno-int-conversion" ] 53bae44755Sopenharmony_ci } 54bae44755Sopenharmony_ci sources = [ "./src/main.c" ] 55bae44755Sopenharmony_ci sources += sources_platform_common 56bae44755Sopenharmony_ci 57bae44755Sopenharmony_ci external_deps = [ "bounds_checking_function:libsec_static" ] 58bae44755Sopenharmony_ci 59bae44755Sopenharmony_ci if (defined(ohos_lite)) { 60bae44755Sopenharmony_ci deps += [ "//build/lite/config/component/cJSON:cjson_static" ] 61bae44755Sopenharmony_ci } else { 62bae44755Sopenharmony_ci external_deps += [ "cJSON:cjson_static" ] 63bae44755Sopenharmony_ci } 64bae44755Sopenharmony_ci 65bae44755Sopenharmony_ci subsystem_name = "developtools" 66bae44755Sopenharmony_ci part_name = "syscap_codec" 67bae44755Sopenharmony_ci} 68bae44755Sopenharmony_ci 69bae44755Sopenharmony_ciconfig("syscap_interface_public_config") { 70bae44755Sopenharmony_ci include_dirs = [ "./interfaces/inner_api/" ] 71bae44755Sopenharmony_ci} 72bae44755Sopenharmony_ci 73bae44755Sopenharmony_ciif (defined(ohos_lite)) { 74bae44755Sopenharmony_ci if (ohos_kernel_type == "liteos_m") { 75bae44755Sopenharmony_ci group("syscap_interface_shared") { 76bae44755Sopenharmony_ci } 77bae44755Sopenharmony_ci } else { 78bae44755Sopenharmony_ci shared_library("syscap_interface_shared") { 79bae44755Sopenharmony_ci deps = [] 80bae44755Sopenharmony_ci if (syscap_codec_config_extern_path != "") { 81bae44755Sopenharmony_ci deps += [ ":gen_syscap_define_custom" ] 82bae44755Sopenharmony_ci inputs = [ "${root_build_dir}/syscap_define_custom.h" ] 83bae44755Sopenharmony_ci } 84bae44755Sopenharmony_ci _version_script = rebase_path("libsyscap_interface_shared.versionscript") 85bae44755Sopenharmony_ci if (!defined(ldflags)) { 86bae44755Sopenharmony_ci ldflags = [] 87bae44755Sopenharmony_ci } 88bae44755Sopenharmony_ci ldflags += [ 89bae44755Sopenharmony_ci "-rdynamic", 90bae44755Sopenharmony_ci "-Wl,--version-script=${_version_script}", 91bae44755Sopenharmony_ci ] 92bae44755Sopenharmony_ci 93bae44755Sopenharmony_ci include_dirs = [ "src" ] 94bae44755Sopenharmony_ci configs += [ ":internal" ] 95bae44755Sopenharmony_ci public_configs = [ ":syscap_interface_public_config" ] 96bae44755Sopenharmony_ci sources = [ 97bae44755Sopenharmony_ci "./interfaces/inner_api/syscap_interface.c", 98bae44755Sopenharmony_ci "./src/context_tool.c", 99bae44755Sopenharmony_ci "./src/endian_internal.c", 100bae44755Sopenharmony_ci "./src/syscap_tool.c", 101bae44755Sopenharmony_ci "./src/common_method.c", 102bae44755Sopenharmony_ci ] 103bae44755Sopenharmony_ci 104bae44755Sopenharmony_ci deps += [ 105bae44755Sopenharmony_ci "//build/lite/config/component/cJSON:cjson_static", 106bae44755Sopenharmony_ci "//third_party/bounds_checking_function:libsec_static", 107bae44755Sopenharmony_ci ] 108bae44755Sopenharmony_ci } 109bae44755Sopenharmony_ci } 110bae44755Sopenharmony_ci} else { 111bae44755Sopenharmony_ci ohos_shared_library("syscap_interface_shared") { 112bae44755Sopenharmony_ci branch_protector_ret = "pac_ret" 113bae44755Sopenharmony_ci deps = [] 114bae44755Sopenharmony_ci if (syscap_codec_config_extern_path != "") { 115bae44755Sopenharmony_ci deps += [ ":gen_syscap_define_custom" ] 116bae44755Sopenharmony_ci inputs = [ "${root_build_dir}/syscap_define_custom.h" ] 117bae44755Sopenharmony_ci } 118bae44755Sopenharmony_ci version_script = "libsyscap_interface_shared.versionscript" 119bae44755Sopenharmony_ci include_dirs = [ "src" ] 120bae44755Sopenharmony_ci configs = [ ":internal" ] 121bae44755Sopenharmony_ci public_configs = [ ":syscap_interface_public_config" ] 122bae44755Sopenharmony_ci sources = [ 123bae44755Sopenharmony_ci "./interfaces/inner_api/syscap_interface.c", 124bae44755Sopenharmony_ci "./src/context_tool.c", 125bae44755Sopenharmony_ci "./src/endian_internal.c", 126bae44755Sopenharmony_ci "./src/syscap_tool.c", 127bae44755Sopenharmony_ci "./src/common_method.c", 128bae44755Sopenharmony_ci ] 129bae44755Sopenharmony_ci external_deps = [ 130bae44755Sopenharmony_ci "bounds_checking_function:libsec_static", 131bae44755Sopenharmony_ci "cJSON:cjson_static", 132bae44755Sopenharmony_ci ] 133bae44755Sopenharmony_ci 134bae44755Sopenharmony_ci subsystem_name = "developtools" 135bae44755Sopenharmony_ci part_name = "syscap_codec" 136bae44755Sopenharmony_ci } 137bae44755Sopenharmony_ci} 138bae44755Sopenharmony_ci 139bae44755Sopenharmony_cigroup("syscap_tool_bin_linux") { 140bae44755Sopenharmony_ci deps = [ ":syscap_tool_bin(//build/toolchain/linux:clang_${host_cpu})" ] 141bae44755Sopenharmony_ci} 142bae44755Sopenharmony_ci 143bae44755Sopenharmony_cibuild_ext_component("generate_pcid") { 144bae44755Sopenharmony_ci outputs = [ "$root_out_dir/pcid.sc" ] 145bae44755Sopenharmony_ci deps = [ ":syscap_tool_bin_linux" ] 146bae44755Sopenharmony_ci exec_path = rebase_path(root_out_dir) 147bae44755Sopenharmony_ci preload_path = rebase_path(preloader_output_dir) 148bae44755Sopenharmony_ci if (defined(ohos_lite)) { 149bae44755Sopenharmony_ci cmd = "${exec_path}/clang_${host_cpu}/syscap_tool" 150bae44755Sopenharmony_ci } else { 151bae44755Sopenharmony_ci cmd = "${exec_path}/clang_${host_cpu}/developtools/syscap_codec/syscap_tool" 152bae44755Sopenharmony_ci } 153bae44755Sopenharmony_ci command = "chmod 777 $cmd" 154bae44755Sopenharmony_ci command += 155bae44755Sopenharmony_ci " && $cmd -P -e -i ${preload_path}/system/etc/SystemCapability.json" 156bae44755Sopenharmony_ci if (defined(ohos_lite)) { 157bae44755Sopenharmony_ci command += " && mkdir -p $exec_path/system/etc && cp $exec_path/pcid.sc $exec_path/system/etc/pcid.sc" 158bae44755Sopenharmony_ci } 159bae44755Sopenharmony_ci} 160bae44755Sopenharmony_ci 161bae44755Sopenharmony_ciohos_prebuilt_etc("pcid.sc") { 162bae44755Sopenharmony_ci deps = [ ":generate_pcid" ] 163bae44755Sopenharmony_ci source = "$root_out_dir/pcid.sc" 164bae44755Sopenharmony_ci subsystem_name = "developtools" 165bae44755Sopenharmony_ci part_name = "syscap_codec" 166bae44755Sopenharmony_ci} 167bae44755Sopenharmony_ci 168bae44755Sopenharmony_ciif (syscap_codec_config_extern_path != "") { 169bae44755Sopenharmony_ci # generate syscap_define_custom.h 170bae44755Sopenharmony_ci action("gen_syscap_define_custom") { 171bae44755Sopenharmony_ci script = "./tools/syscap_config_merge.py" 172bae44755Sopenharmony_ci args = [ 173bae44755Sopenharmony_ci "--base", 174bae44755Sopenharmony_ci rebase_path("include/codec_config/syscap_define.h"), 175bae44755Sopenharmony_ci "--extern", 176bae44755Sopenharmony_ci rebase_path(syscap_codec_config_extern_path), 177bae44755Sopenharmony_ci "--output", 178bae44755Sopenharmony_ci rebase_path("${root_build_dir}/syscap_define_custom.h"), 179bae44755Sopenharmony_ci ] 180bae44755Sopenharmony_ci inputs = [ 181bae44755Sopenharmony_ci "include/codec_config/syscap_define.h", 182bae44755Sopenharmony_ci syscap_codec_config_extern_path, 183bae44755Sopenharmony_ci ] 184bae44755Sopenharmony_ci outputs = [ "${root_build_dir}/syscap_define_custom.h" ] 185bae44755Sopenharmony_ci } 186bae44755Sopenharmony_ci} 187bae44755Sopenharmony_ci 188bae44755Sopenharmony_cigroup("pcid_sc") { 189bae44755Sopenharmony_ci deps = [ ":pcid.sc" ] 190bae44755Sopenharmony_ci} 191bae44755Sopenharmony_ci 192bae44755Sopenharmony_cigroup("syscap_codec") { 193bae44755Sopenharmony_ci deps = [ 194bae44755Sopenharmony_ci ":pcid_sc", 195bae44755Sopenharmony_ci ":syscap_interface_shared", 196bae44755Sopenharmony_ci ] 197bae44755Sopenharmony_ci if (support_jsapi && is_standard_system) { 198bae44755Sopenharmony_ci deps += [ "napi:systemcapability" ] 199bae44755Sopenharmony_ci } 200bae44755Sopenharmony_ci} 201