1e509ee18Sopenharmony_ci# Copyright (C) 2021-2023 Huawei Device Co., Ltd. 2e509ee18Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 3e509ee18Sopenharmony_ci# you may not use this file except in compliance with the License. 4e509ee18Sopenharmony_ci# You may obtain a copy of the License at 5e509ee18Sopenharmony_ci# 6e509ee18Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 7e509ee18Sopenharmony_ci# 8e509ee18Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 9e509ee18Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 10e509ee18Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11e509ee18Sopenharmony_ci# See the License for the specific language governing permissions and 12e509ee18Sopenharmony_ci# limitations under the License. 13e509ee18Sopenharmony_ci 14e509ee18Sopenharmony_ciimport("$build_root/templates/cxx/cxx.gni") 15e509ee18Sopenharmony_ci 16e509ee18Sopenharmony_citemplate("ohos_prebuilt_executable") { 17e509ee18Sopenharmony_ci assert(defined(invoker.source), "source must be defined for ${target_name}.") 18e509ee18Sopenharmony_ci 19e509ee18Sopenharmony_ci if (defined(invoker.output)) { 20e509ee18Sopenharmony_ci _copy_output = "${target_out_dir}/${invoker.output}" 21e509ee18Sopenharmony_ci } else { 22e509ee18Sopenharmony_ci _copy_output = "${target_out_dir}/${invoker.source}" 23e509ee18Sopenharmony_ci } 24e509ee18Sopenharmony_ci 25e509ee18Sopenharmony_ci if (!defined(invoker.deps)) { 26e509ee18Sopenharmony_ci invoker.deps = [] 27e509ee18Sopenharmony_ci } 28e509ee18Sopenharmony_ci 29e509ee18Sopenharmony_ci if (!defined(invoker.stable)) { 30e509ee18Sopenharmony_ci invoker.stable = false 31e509ee18Sopenharmony_ci } 32e509ee18Sopenharmony_ci 33e509ee18Sopenharmony_ci deps_info = [] 34e509ee18Sopenharmony_ci foreach(dep, invoker.deps) { 35e509ee18Sopenharmony_ci info = { 36e509ee18Sopenharmony_ci } 37e509ee18Sopenharmony_ci info = { 38e509ee18Sopenharmony_ci target_out_dir = 39e509ee18Sopenharmony_ci rebase_path(get_label_info(dep, "target_out_dir"), root_build_dir) 40e509ee18Sopenharmony_ci target_name = get_label_info(dep, "name") 41e509ee18Sopenharmony_ci } 42e509ee18Sopenharmony_ci deps_info += [ info ] 43e509ee18Sopenharmony_ci } 44e509ee18Sopenharmony_ci module_label = get_label_info(":${target_name}", "label_with_toolchain") 45e509ee18Sopenharmony_ci target_deps_data = { 46e509ee18Sopenharmony_ci label = module_label 47e509ee18Sopenharmony_ci module_deps_info = deps_info 48e509ee18Sopenharmony_ci type = "executable" 49e509ee18Sopenharmony_ci prebuilt = true 50e509ee18Sopenharmony_ci stable = invoker.stable 51e509ee18Sopenharmony_ci toolchain = get_label_info(":${target_name}", "toolchain") 52e509ee18Sopenharmony_ci source_path = rebase_path(invoker.source, root_build_dir) 53e509ee18Sopenharmony_ci output_path = rebase_path(_copy_output, root_build_dir) 54e509ee18Sopenharmony_ci } 55e509ee18Sopenharmony_ci write_file("${target_out_dir}/${target_name}_deps_data.json", 56e509ee18Sopenharmony_ci target_deps_data, 57e509ee18Sopenharmony_ci "json") 58e509ee18Sopenharmony_ci 59e509ee18Sopenharmony_ci ohos_copy(target_name) { 60e509ee18Sopenharmony_ci forward_variables_from(invoker, 61e509ee18Sopenharmony_ci [ 62e509ee18Sopenharmony_ci "testonly", 63e509ee18Sopenharmony_ci "visibility", 64e509ee18Sopenharmony_ci 65e509ee18Sopenharmony_ci "deps", 66e509ee18Sopenharmony_ci "public_configs", 67e509ee18Sopenharmony_ci "subsystem_name", 68e509ee18Sopenharmony_ci "part_name", 69e509ee18Sopenharmony_ci 70e509ee18Sopenharmony_ci # For generate_module_info 71e509ee18Sopenharmony_ci "install_images", 72e509ee18Sopenharmony_ci "module_install_dir", 73e509ee18Sopenharmony_ci "relative_install_dir", 74e509ee18Sopenharmony_ci "symlink_target_name", 75e509ee18Sopenharmony_ci 76e509ee18Sopenharmony_ci # Open source license related 77e509ee18Sopenharmony_ci "license_file", 78e509ee18Sopenharmony_ci "license_as_sources", 79e509ee18Sopenharmony_ci ]) 80e509ee18Sopenharmony_ci sources = [ invoker.source ] 81e509ee18Sopenharmony_ci outputs = [ _copy_output ] 82e509ee18Sopenharmony_ci } 83e509ee18Sopenharmony_ci} 84e509ee18Sopenharmony_ci 85e509ee18Sopenharmony_citemplate("ohos_prebuilt_shared_library") { 86e509ee18Sopenharmony_ci assert(defined(invoker.source), "source must be defined for ${target_name}.") 87e509ee18Sopenharmony_ci 88e509ee18Sopenharmony_ci if (defined(invoker.output)) { 89e509ee18Sopenharmony_ci _copy_output = "${target_out_dir}/${invoker.output}" 90e509ee18Sopenharmony_ci } else { 91e509ee18Sopenharmony_ci _copy_output = "${target_out_dir}/${invoker.source}" 92e509ee18Sopenharmony_ci } 93e509ee18Sopenharmony_ci config("${target_name}__config") { 94e509ee18Sopenharmony_ci libs = [ _copy_output ] 95e509ee18Sopenharmony_ci } 96e509ee18Sopenharmony_ci 97e509ee18Sopenharmony_ci if (!defined(invoker.deps)) { 98e509ee18Sopenharmony_ci invoker.deps = [] 99e509ee18Sopenharmony_ci } 100e509ee18Sopenharmony_ci 101e509ee18Sopenharmony_ci if (!defined(invoker.stable)) { 102e509ee18Sopenharmony_ci invoker.stable = false 103e509ee18Sopenharmony_ci } 104e509ee18Sopenharmony_ci 105e509ee18Sopenharmony_ci deps_info = [] 106e509ee18Sopenharmony_ci foreach(dep, invoker.deps) { 107e509ee18Sopenharmony_ci info = { 108e509ee18Sopenharmony_ci } 109e509ee18Sopenharmony_ci info = { 110e509ee18Sopenharmony_ci target_out_dir = 111e509ee18Sopenharmony_ci rebase_path(get_label_info(dep, "target_out_dir"), root_build_dir) 112e509ee18Sopenharmony_ci target_name = get_label_info(dep, "name") 113e509ee18Sopenharmony_ci } 114e509ee18Sopenharmony_ci deps_info += [ info ] 115e509ee18Sopenharmony_ci } 116e509ee18Sopenharmony_ci module_label = get_label_info(":${target_name}", "label_with_toolchain") 117e509ee18Sopenharmony_ci target_deps_data = { 118e509ee18Sopenharmony_ci label = module_label 119e509ee18Sopenharmony_ci module_deps_info = deps_info 120e509ee18Sopenharmony_ci type = "shared_library" 121e509ee18Sopenharmony_ci prebuilt = true 122e509ee18Sopenharmony_ci stable = invoker.stable 123e509ee18Sopenharmony_ci toolchain = get_label_info(":${target_name}", "toolchain") 124e509ee18Sopenharmony_ci source_path = rebase_path(invoker.source, root_build_dir) 125e509ee18Sopenharmony_ci output_path = rebase_path(_copy_output, root_build_dir) 126e509ee18Sopenharmony_ci } 127e509ee18Sopenharmony_ci write_file("${target_out_dir}/${target_name}_deps_data.json", 128e509ee18Sopenharmony_ci target_deps_data, 129e509ee18Sopenharmony_ci "json") 130e509ee18Sopenharmony_ci 131e509ee18Sopenharmony_ci ohos_copy(target_name) { 132e509ee18Sopenharmony_ci forward_variables_from(invoker, 133e509ee18Sopenharmony_ci [ 134e509ee18Sopenharmony_ci "testonly", 135e509ee18Sopenharmony_ci "visibility", 136e509ee18Sopenharmony_ci 137e509ee18Sopenharmony_ci "deps", 138e509ee18Sopenharmony_ci "public_configs", 139e509ee18Sopenharmony_ci "subsystem_name", 140e509ee18Sopenharmony_ci "part_name", 141e509ee18Sopenharmony_ci 142e509ee18Sopenharmony_ci # For generate_module_info 143e509ee18Sopenharmony_ci "install_images", 144e509ee18Sopenharmony_ci "module_install_dir", 145e509ee18Sopenharmony_ci "relative_install_dir", 146e509ee18Sopenharmony_ci "symlink_target_name", 147e509ee18Sopenharmony_ci 148e509ee18Sopenharmony_ci # Open source license related 149e509ee18Sopenharmony_ci "license_file", 150e509ee18Sopenharmony_ci "license_as_sources", 151e509ee18Sopenharmony_ci ]) 152e509ee18Sopenharmony_ci sources = [ invoker.source ] 153e509ee18Sopenharmony_ci outputs = [ _copy_output ] 154e509ee18Sopenharmony_ci if (!defined(public_configs)) { 155e509ee18Sopenharmony_ci public_configs = [] 156e509ee18Sopenharmony_ci } 157e509ee18Sopenharmony_ci public_configs += [ ":${target_name}__config" ] 158e509ee18Sopenharmony_ci } 159e509ee18Sopenharmony_ci} 160e509ee18Sopenharmony_ci 161e509ee18Sopenharmony_citemplate("ohos_prebuilt_static_library") { 162e509ee18Sopenharmony_ci assert(defined(invoker.source), "source must be defined for ${target_name}.") 163e509ee18Sopenharmony_ci 164e509ee18Sopenharmony_ci if (defined(invoker.output)) { 165e509ee18Sopenharmony_ci _copy_output = "${target_out_dir}/${invoker.output}" 166e509ee18Sopenharmony_ci } else { 167e509ee18Sopenharmony_ci _copy_output = "${target_out_dir}/${invoker.source}" 168e509ee18Sopenharmony_ci } 169e509ee18Sopenharmony_ci config("${target_name}__config") { 170e509ee18Sopenharmony_ci libs = [ _copy_output ] 171e509ee18Sopenharmony_ci } 172e509ee18Sopenharmony_ci 173e509ee18Sopenharmony_ci ohos_copy(target_name) { 174e509ee18Sopenharmony_ci forward_variables_from(invoker, 175e509ee18Sopenharmony_ci [ 176e509ee18Sopenharmony_ci "testonly", 177e509ee18Sopenharmony_ci "visibility", 178e509ee18Sopenharmony_ci 179e509ee18Sopenharmony_ci "deps", 180e509ee18Sopenharmony_ci "public_configs", 181e509ee18Sopenharmony_ci "subsystem_name", 182e509ee18Sopenharmony_ci "part_name", 183e509ee18Sopenharmony_ci 184e509ee18Sopenharmony_ci # Open source license related 185e509ee18Sopenharmony_ci "license_file", 186e509ee18Sopenharmony_ci "license_as_sources", 187e509ee18Sopenharmony_ci ]) 188e509ee18Sopenharmony_ci sources = [ invoker.source ] 189e509ee18Sopenharmony_ci outputs = [ _copy_output ] 190e509ee18Sopenharmony_ci if (!defined(public_configs)) { 191e509ee18Sopenharmony_ci public_configs = [] 192e509ee18Sopenharmony_ci } 193e509ee18Sopenharmony_ci public_configs += [ ":${target_name}__config" ] 194e509ee18Sopenharmony_ci } 195e509ee18Sopenharmony_ci} 196e509ee18Sopenharmony_ci 197e509ee18Sopenharmony_citemplate("ohos_prebuilt_etc") { 198e509ee18Sopenharmony_ci assert(defined(invoker.source), "source must be defined for ${target_name}.") 199e509ee18Sopenharmony_ci 200e509ee18Sopenharmony_ci if (defined(invoker.output)) { 201e509ee18Sopenharmony_ci _copy_output = "${target_out_dir}/${invoker.output}" 202e509ee18Sopenharmony_ci } else { 203e509ee18Sopenharmony_ci _copy_output = "${target_out_dir}/${invoker.source}" 204e509ee18Sopenharmony_ci } 205e509ee18Sopenharmony_ci 206e509ee18Sopenharmony_ci module_label = get_label_info(":${target_name}", "label_with_toolchain") 207e509ee18Sopenharmony_ci target_deps_data = { 208e509ee18Sopenharmony_ci label = module_label 209e509ee18Sopenharmony_ci type = "etc" 210e509ee18Sopenharmony_ci prebuilt = true 211e509ee18Sopenharmony_ci source_path = rebase_path(invoker.source, root_build_dir) 212e509ee18Sopenharmony_ci output_path = rebase_path(_copy_output, root_build_dir) 213e509ee18Sopenharmony_ci } 214e509ee18Sopenharmony_ci write_file("${target_out_dir}/${target_name}_deps_data.json", 215e509ee18Sopenharmony_ci target_deps_data, 216e509ee18Sopenharmony_ci "json") 217e509ee18Sopenharmony_ci 218e509ee18Sopenharmony_ci ohos_copy(target_name) { 219e509ee18Sopenharmony_ci forward_variables_from(invoker, 220e509ee18Sopenharmony_ci [ 221e509ee18Sopenharmony_ci "testonly", 222e509ee18Sopenharmony_ci "visibility", 223e509ee18Sopenharmony_ci 224e509ee18Sopenharmony_ci "deps", 225e509ee18Sopenharmony_ci "public_configs", 226e509ee18Sopenharmony_ci "subsystem_name", 227e509ee18Sopenharmony_ci "part_name", 228e509ee18Sopenharmony_ci 229e509ee18Sopenharmony_ci # For generate_module_info 230e509ee18Sopenharmony_ci "install_images", 231e509ee18Sopenharmony_ci "module_install_dir", 232e509ee18Sopenharmony_ci "relative_install_dir", 233e509ee18Sopenharmony_ci "symlink_target_name", 234e509ee18Sopenharmony_ci 235e509ee18Sopenharmony_ci # Open source license related 236e509ee18Sopenharmony_ci "license_file", 237e509ee18Sopenharmony_ci "license_as_sources", 238e509ee18Sopenharmony_ci ]) 239e509ee18Sopenharmony_ci sources = [ invoker.source ] 240e509ee18Sopenharmony_ci outputs = [ _copy_output ] 241e509ee18Sopenharmony_ci } 242e509ee18Sopenharmony_ci} 243