1b6a906aeSopenharmony_ci# Copyright (c) 2021 Huawei Device Co., Ltd.
2b6a906aeSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
3b6a906aeSopenharmony_ci# you may not use this file except in compliance with the License.
4b6a906aeSopenharmony_ci# You may obtain a copy of the License at
5b6a906aeSopenharmony_ci#
6b6a906aeSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
7b6a906aeSopenharmony_ci#
8b6a906aeSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
9b6a906aeSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
10b6a906aeSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11b6a906aeSopenharmony_ci# See the License for the specific language governing permissions and
12b6a906aeSopenharmony_ci# limitations under the License.
13b6a906aeSopenharmony_ci
14b6a906aeSopenharmony_ciimport("//build/ohos.gni")
15b6a906aeSopenharmony_ci
16b6a906aeSopenharmony_ci# Execute the script and extract jsoncpp
17b6a906aeSopenharmony_ciaction("jsoncpp_install_action") {
18b6a906aeSopenharmony_ci  script = "//third_party/jsoncpp/install.py"
19b6a906aeSopenharmony_ci  outputs = [
20b6a906aeSopenharmony_ci    "${target_gen_dir}/jsoncpp-1.9.5/src/lib_json/json_reader.cpp",
21b6a906aeSopenharmony_ci    "${target_gen_dir}/jsoncpp-1.9.5/src/lib_json/json_value.cpp",
22b6a906aeSopenharmony_ci    "${target_gen_dir}/jsoncpp-1.9.5/src/lib_json/json_writer.cpp",
23b6a906aeSopenharmony_ci  ]
24b6a906aeSopenharmony_ci
25b6a906aeSopenharmony_ci  inputs = [ "//third_party/jsoncpp/jsoncpp-1.9.5.tar.gz" ]
26b6a906aeSopenharmony_ci
27b6a906aeSopenharmony_ci  args = [
28b6a906aeSopenharmony_ci    "--gen-dir",
29b6a906aeSopenharmony_ci    rebase_path("${target_gen_dir}", root_build_dir),
30b6a906aeSopenharmony_ci    "--source-file",
31b6a906aeSopenharmony_ci    rebase_path("//third_party/jsoncpp"),
32b6a906aeSopenharmony_ci  ]
33b6a906aeSopenharmony_ci}
34b6a906aeSopenharmony_ci
35b6a906aeSopenharmony_ciconfig("config_static") {
36b6a906aeSopenharmony_ci  cflags = [
37b6a906aeSopenharmony_ci    "-std=c++17",
38b6a906aeSopenharmony_ci    "-Wno-error=implicit-fallthrough",
39b6a906aeSopenharmony_ci    "-Wno-deprecated-declarations",
40b6a906aeSopenharmony_ci  ]
41b6a906aeSopenharmony_ci  visibility = [ ":*" ]
42b6a906aeSopenharmony_ci}
43b6a906aeSopenharmony_ci
44b6a906aeSopenharmony_ciconfig("jsoncpp_config") {
45b6a906aeSopenharmony_ci  cflags = [
46b6a906aeSopenharmony_ci    "-std=c++17",
47b6a906aeSopenharmony_ci    "-Wno-error=implicit-fallthrough",
48b6a906aeSopenharmony_ci    "-Wno-deprecated-declarations",
49b6a906aeSopenharmony_ci  ]
50b6a906aeSopenharmony_ci}
51b6a906aeSopenharmony_ci
52b6a906aeSopenharmony_ciconfig("flag_config") {
53b6a906aeSopenharmony_ci  cflags_cc = [ "-fexceptions" ]
54b6a906aeSopenharmony_ci}
55b6a906aeSopenharmony_ci
56b6a906aeSopenharmony_ciconfig("jsoncpp_public_config") {
57b6a906aeSopenharmony_ci  include_dirs = [ get_label_info(":jsoncpp_install_action", "target_gen_dir") +
58b6a906aeSopenharmony_ci                   "/jsoncpp-1.9.5/include" ]
59b6a906aeSopenharmony_ci}
60b6a906aeSopenharmony_ci
61b6a906aeSopenharmony_ciohos_shared_library("jsoncpp") {
62b6a906aeSopenharmony_ci  branch_protector_ret = "pac_ret"
63b6a906aeSopenharmony_ci  visibility = [ "*" ]
64b6a906aeSopenharmony_ci  sources = get_target_outputs(":jsoncpp_install_action")
65b6a906aeSopenharmony_ci  use_exceptions = true
66b6a906aeSopenharmony_ci  configs = [ ":jsoncpp_config" ]
67b6a906aeSopenharmony_ci  public_configs = [ ":jsoncpp_public_config" ]
68b6a906aeSopenharmony_ci  innerapi_tags = [
69b6a906aeSopenharmony_ci    "chipsetsdk",
70b6a906aeSopenharmony_ci    "platformsdk",
71b6a906aeSopenharmony_ci  ]
72b6a906aeSopenharmony_ci  install_images = [
73b6a906aeSopenharmony_ci    "system",
74b6a906aeSopenharmony_ci    "updater",
75b6a906aeSopenharmony_ci  ]
76b6a906aeSopenharmony_ci  deps = [ ":jsoncpp_install_action" ]
77b6a906aeSopenharmony_ci  part_name = "jsoncpp"
78b6a906aeSopenharmony_ci  subsystem_name = "thirdparty"
79b6a906aeSopenharmony_ci}
80b6a906aeSopenharmony_ci
81b6a906aeSopenharmony_ciohos_static_library("jsoncpp_static") {
82b6a906aeSopenharmony_ci  branch_protector_ret = "pac_ret"
83b6a906aeSopenharmony_ci  sources = get_target_outputs(":jsoncpp_install_action")
84b6a906aeSopenharmony_ci  use_exceptions = true
85b6a906aeSopenharmony_ci  configs = [
86b6a906aeSopenharmony_ci    ":config_static",
87b6a906aeSopenharmony_ci    ":flag_config",
88b6a906aeSopenharmony_ci  ]
89b6a906aeSopenharmony_ci  public_configs = [ ":jsoncpp_public_config" ]
90b6a906aeSopenharmony_ci  cflags_cc = [
91b6a906aeSopenharmony_ci    "-Wall",
92b6a906aeSopenharmony_ci    "-Werror",
93b6a906aeSopenharmony_ci    "-Wno-implicit-fallthrough",
94b6a906aeSopenharmony_ci  ]
95b6a906aeSopenharmony_ci  deps = [ ":jsoncpp_install_action" ]
96b6a906aeSopenharmony_ci  part_name = "jsoncpp"
97b6a906aeSopenharmony_ci  subsystem_name = "thirdparty"
98b6a906aeSopenharmony_ci}
99