# Copyright (C) 2022 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import("//build/lite/config/component/lite_component.gni") import("//build/ohos.gni") config("pubilc") { include_dirs = [ "include" ] } sources_platform_common = [ "./src/syscap_tool.c", "./src/create_pcid.c", "./src/endian_internal.c", ] ohos_executable("syscap_define_check_bin") { include_dirs = [ "include" ] sources = [ "./test/syscap_define_check.c" ] if (is_mingw) { defines = [ "_POSIX_" ] } subsystem_name = "developtools" part_name = "syscap_codec" } build_ext_component("syscap_define_check") { deps = [ ":syscap_define_check_bin(//build/toolchain/linux:clang_x64)" ] exec_path = rebase_path(root_out_dir) if (defined(ohos_lite)) { cmd = "${exec_path}/clang_x64/syscap_define_check_bin" } else { cmd = "${exec_path}/clang_x64/developtools/syscap_codec/syscap_define_check_bin" } command = "chmod 777 $cmd && $cmd" } ohos_executable("syscap_tool_bin") { output_name = "syscap_tool" install_enable = true include_dirs = [ "src" ] public_configs = [ ":pubilc" ] defines = [] if (is_mingw) { defines += [ "_POSIX_" ] } sources = [ "./src/main.c" ] sources += sources_platform_common deps = [ "//third_party/bounds_checking_function:libsec_static" ] if (defined(ohos_lite)) { deps += [ "//build/lite/config/component/cJSON:cjson_static" ] } else { deps += [ "//third_party/cJSON:cjson_static" ] } subsystem_name = "developtools" part_name = "syscap_codec" } ohos_executable("syscap_tool_test") { install_enable = true include_dirs = [ "src" ] public_configs = [ ":pubilc" ] defines = [] if (is_mingw) { defines += [ "_POSIX_" ] } sources = [ "./test/syscap_tool_test.c" ] sources += sources_platform_common deps = [ "//third_party/bounds_checking_function:libsec_static" ] if (defined(ohos_lite)) { deps += [ "//build/lite/config/component/cJSON:cjson_static" ] } else { deps += [ "//third_party/cJSON:cjson_static" ] } subsystem_name = "developtools" part_name = "syscap_codec" } ohos_shared_library("syscap_tool_shared") { output_name = "syscap_codec" include_dirs = [ "src" ] public_configs = [ ":pubilc" ] sources = sources_platform_common deps = [ "//third_party/bounds_checking_function:libsec_static" ] if (defined(ohos_lite)) { deps += [ "//build/lite/config/component/cJSON:cjson_static" ] } else { deps += [ "//third_party/cJSON:cjson_static" ] } subsystem_name = "developtools" part_name = "syscap_codec" } config("syscap_interface_public_config") { include_dirs = [ "./interfaces/inner_api/" ] } if (defined(ohos_lite)) { if (ohos_kernel_type == "liteos_m") { group("syscap_interface_shared") { } } else { shared_library("syscap_interface_shared") { _version_script = rebase_path("libsyscap_interface_shared.versionscript") if (!defined(ldflags)) { ldflags = [] } ldflags += [ "-rdynamic", "-Wl,--version-script=${_version_script}", ] include_dirs = [ "include", "src", ] public_configs = [ ":syscap_interface_public_config" ] sources = [ "./interfaces/inner_api/syscap_interface.c", "./src/endian_internal.c", "./src/syscap_tool.c", ] deps = [ "//build/lite/config/component/cJSON:cjson_static", "//third_party/bounds_checking_function:libsec_static", ] } } } else { ohos_shared_library("syscap_interface_shared") { version_script = "libsyscap_interface_shared.versionscript" include_dirs = [ "include", "src", ] public_configs = [ ":syscap_interface_public_config" ] sources = [ "./interfaces/inner_api/syscap_interface.c", "./src/endian_internal.c", "./src/syscap_tool.c", ] deps = [ "//third_party/bounds_checking_function:libsec_static", "//third_party/cJSON:cjson_static", ] subsystem_name = "developtools" part_name = "syscap_codec" } } group("syscap_tool_bin_linux") { deps = [ ":syscap_tool_bin(//build/toolchain/linux:clang_x64)" ] } build_ext_component("generate_pcid") { outputs = [ "$root_out_dir/PCID.sc" ] deps = [ ":syscap_tool_bin_linux" ] exec_path = rebase_path(root_out_dir) preload_path = rebase_path(preloader_output_dir) if (defined(ohos_lite)) { cmd = "${exec_path}/clang_x64/syscap_tool" } else { cmd = "${exec_path}/clang_x64/developtools/syscap_codec/syscap_tool" } command = "chmod 777 $cmd" command += " && $cmd -P -e -i ${preload_path}/system/etc/SystemCapability.json" if (defined(ohos_lite)) { command += " && mkdir -p $exec_path/system/etc && cp $exec_path/PCID.sc $exec_path/system/etc/PCID.sc" } } ohos_prebuilt_etc("PCID.sc") { deps = [ ":generate_pcid" ] source = "$root_out_dir/PCID.sc" part_name = "syscap_codec" } group("pcid_sc") { deps = [ ":PCID.sc" ] } group("syscap_codec") { deps = [ ":pcid_sc", ":syscap_define_check", ":syscap_interface_shared", ":syscap_tool_shared", ] if (support_jsapi && is_standard_system) { deps += [ "napi:systemcapability" ] } }