1e509ee18Sopenharmony_ci# Copyright (c) 2022 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/ark_var.gni") 15e509ee18Sopenharmony_ci 16e509ee18Sopenharmony_citemplate("ohos_executable") { 17e509ee18Sopenharmony_ci if (defined(invoker.subsystem_name) && defined(invoker.part_name)) { 18e509ee18Sopenharmony_ci subsystem_name = invoker.subsystem_name 19e509ee18Sopenharmony_ci part_name = invoker.part_name 20e509ee18Sopenharmony_ci } else if (defined(invoker.subsystem_name)) { 21e509ee18Sopenharmony_ci subsystem_name = invoker.subsystem_name 22e509ee18Sopenharmony_ci part_name = subsystem_name 23e509ee18Sopenharmony_ci } else { 24e509ee18Sopenharmony_ci subsystem_name = "arkcompiler" 25e509ee18Sopenharmony_ci part_name = "common" 26e509ee18Sopenharmony_ci } 27e509ee18Sopenharmony_ci assert(part_name != "") 28e509ee18Sopenharmony_ci assert(subsystem_name != "") 29e509ee18Sopenharmony_ci 30e509ee18Sopenharmony_ci if (defined(invoker.unit_test) && invoker.unit_test) { 31e509ee18Sopenharmony_ci output_dir = invoker.test_output_dir 32e509ee18Sopenharmony_ci } else { 33e509ee18Sopenharmony_ci output_dir = "${root_out_dir}/${subsystem_name}/${part_name}" 34e509ee18Sopenharmony_ci } 35e509ee18Sopenharmony_ci 36e509ee18Sopenharmony_ci executable(target_name) { 37e509ee18Sopenharmony_ci forward_variables_from(invoker, 38e509ee18Sopenharmony_ci "*", 39e509ee18Sopenharmony_ci [ 40e509ee18Sopenharmony_ci "configs", 41e509ee18Sopenharmony_ci "remove_configs", 42e509ee18Sopenharmony_ci "subsystem_name", 43e509ee18Sopenharmony_ci "install_enable", 44e509ee18Sopenharmony_ci "part_name", 45e509ee18Sopenharmony_ci "use_exceptions", 46e509ee18Sopenharmony_ci "static_link", 47e509ee18Sopenharmony_ci "output_dir", 48e509ee18Sopenharmony_ci "unit_test", 49e509ee18Sopenharmony_ci "external_deps", 50e509ee18Sopenharmony_ci "stack_protector_ret", 51e509ee18Sopenharmony_ci "use_rtti", 52e509ee18Sopenharmony_ci ]) 53e509ee18Sopenharmony_ci output_dir = output_dir 54e509ee18Sopenharmony_ci if (defined(invoker.configs)) { 55e509ee18Sopenharmony_ci configs += invoker.configs 56e509ee18Sopenharmony_ci } 57e509ee18Sopenharmony_ci 58e509ee18Sopenharmony_ci if (defined(invoker.remove_configs)) { 59e509ee18Sopenharmony_ci configs -= invoker.remove_configs 60e509ee18Sopenharmony_ci } 61e509ee18Sopenharmony_ci 62e509ee18Sopenharmony_ci if (defined(invoker.use_exceptions) && invoker.use_exceptions) { 63e509ee18Sopenharmony_ci configs += [ "//arkcompiler/toolchain/build/config/compiler:exceptions" ] 64e509ee18Sopenharmony_ci ldflags = [] 65e509ee18Sopenharmony_ci } 66e509ee18Sopenharmony_ci if (defined(invoker.use_rtti) && invoker.use_rtti) { 67e509ee18Sopenharmony_ci configs += [ "//arkcompiler/toolchain/build/config/compiler:rtti" ] 68e509ee18Sopenharmony_ci } 69e509ee18Sopenharmony_ci if (!defined(libs)) { 70e509ee18Sopenharmony_ci libs = [] 71e509ee18Sopenharmony_ci } 72e509ee18Sopenharmony_ci if (!defined(ldflags)) { 73e509ee18Sopenharmony_ci ldflags = [] 74e509ee18Sopenharmony_ci } 75e509ee18Sopenharmony_ci if (!defined(inputs)) { 76e509ee18Sopenharmony_ci inputs = [] 77e509ee18Sopenharmony_ci } 78e509ee18Sopenharmony_ci 79e509ee18Sopenharmony_ci if (defined(version_script)) { 80e509ee18Sopenharmony_ci _version_script = rebase_path(version_script, root_build_dir) 81e509ee18Sopenharmony_ci inputs += [ version_script ] 82e509ee18Sopenharmony_ci ldflags += [ "-Wl,--version-script=${_version_script}" ] 83e509ee18Sopenharmony_ci } 84e509ee18Sopenharmony_ci 85e509ee18Sopenharmony_ci if (defined(invoker.static_link) && invoker.static_link) { 86e509ee18Sopenharmony_ci no_default_deps = true 87e509ee18Sopenharmony_ci ldflags += [ "-static" ] 88e509ee18Sopenharmony_ci configs -= [ "$build_root/config:executable_config" ] 89e509ee18Sopenharmony_ci if (is_ohos) { 90e509ee18Sopenharmony_ci import("$build_root/config/ohos/musl.gni") 91e509ee18Sopenharmony_ci deps += [ "$build_root/third_party_gn/musl:soft_static_libs" ] 92e509ee18Sopenharmony_ci } 93e509ee18Sopenharmony_ci } else if (is_ohos) { 94e509ee18Sopenharmony_ci if (current_cpu == "arm" || current_cpu == "arm64") { 95e509ee18Sopenharmony_ci libs += [ "unwind" ] 96e509ee18Sopenharmony_ci } 97e509ee18Sopenharmony_ci libs += [ "c++" ] 98e509ee18Sopenharmony_ci } 99e509ee18Sopenharmony_ci 100e509ee18Sopenharmony_ci if (defined(invoker.external_deps) && invoker.external_deps != []) { 101e509ee18Sopenharmony_ci if (!defined(deps)) { 102e509ee18Sopenharmony_ci deps = [] 103e509ee18Sopenharmony_ci } 104e509ee18Sopenharmony_ci 105e509ee18Sopenharmony_ci external_deps_temp_file = 106e509ee18Sopenharmony_ci "$target_gen_dir/${part_name}__${target_name}_external_deps_temp.json" 107e509ee18Sopenharmony_ci arguments = [ 108e509ee18Sopenharmony_ci "--root-src-dir", 109e509ee18Sopenharmony_ci rebase_path("//", root_build_dir), 110e509ee18Sopenharmony_ci "--external-deps-temp-file", 111e509ee18Sopenharmony_ci rebase_path(external_deps_temp_file, root_build_dir), 112e509ee18Sopenharmony_ci "--external-deps", 113e509ee18Sopenharmony_ci ] 114e509ee18Sopenharmony_ci arguments += invoker.external_deps 115e509ee18Sopenharmony_ci exec_script("$build_root/templates/cxx/external_deps_handler.py", 116e509ee18Sopenharmony_ci arguments, 117e509ee18Sopenharmony_ci "string") 118e509ee18Sopenharmony_ci external_deps_info = read_file(external_deps_temp_file, "json") 119e509ee18Sopenharmony_ci if (defined(external_deps_info.deps)) { 120e509ee18Sopenharmony_ci deps += external_deps_info.deps 121e509ee18Sopenharmony_ci } 122e509ee18Sopenharmony_ci } 123e509ee18Sopenharmony_ci } 124e509ee18Sopenharmony_ci} 125e509ee18Sopenharmony_ci 126e509ee18Sopenharmony_citemplate("ohos_static_library") { 127e509ee18Sopenharmony_ci if (defined(invoker.subsystem_name) && defined(invoker.part_name)) { 128e509ee18Sopenharmony_ci part_name = invoker.part_name 129e509ee18Sopenharmony_ci } else if (defined(invoker.part_name)) { 130e509ee18Sopenharmony_ci part_name = invoker.part_name 131e509ee18Sopenharmony_ci } else if (defined(invoker.subsystem_name)) { 132e509ee18Sopenharmony_ci part_name = invoker.subsystem_name 133e509ee18Sopenharmony_ci } else { 134e509ee18Sopenharmony_ci part_name = "common" 135e509ee18Sopenharmony_ci } 136e509ee18Sopenharmony_ci assert(part_name != "") 137e509ee18Sopenharmony_ci 138e509ee18Sopenharmony_ci static_library(target_name) { 139e509ee18Sopenharmony_ci forward_variables_from(invoker, 140e509ee18Sopenharmony_ci "*", 141e509ee18Sopenharmony_ci [ 142e509ee18Sopenharmony_ci "configs", 143e509ee18Sopenharmony_ci "remove_configs", 144e509ee18Sopenharmony_ci "subsystem_name", 145e509ee18Sopenharmony_ci "part_name", 146e509ee18Sopenharmony_ci "use_exceptions", 147e509ee18Sopenharmony_ci "external_deps", 148e509ee18Sopenharmony_ci "stack_protector_ret", 149e509ee18Sopenharmony_ci "use_rtti", 150e509ee18Sopenharmony_ci ]) 151e509ee18Sopenharmony_ci if (defined(invoker.configs)) { 152e509ee18Sopenharmony_ci configs += invoker.configs 153e509ee18Sopenharmony_ci } 154e509ee18Sopenharmony_ci 155e509ee18Sopenharmony_ci if (defined(invoker.remove_configs)) { 156e509ee18Sopenharmony_ci configs -= invoker.remove_configs 157e509ee18Sopenharmony_ci } 158e509ee18Sopenharmony_ci 159e509ee18Sopenharmony_ci if (defined(invoker.use_exceptions) && invoker.use_exceptions) { 160e509ee18Sopenharmony_ci configs += [ "//arkcompiler/toolchain/build/config/compiler:exceptions" ] 161e509ee18Sopenharmony_ci ldflags = [] 162e509ee18Sopenharmony_ci } 163e509ee18Sopenharmony_ci 164e509ee18Sopenharmony_ci if (defined(invoker.use_rtti) && invoker.use_rtti) { 165e509ee18Sopenharmony_ci configs += [ "//arkcompiler/toolchain/build/config/compiler:rtti" ] 166e509ee18Sopenharmony_ci } 167e509ee18Sopenharmony_ci if (!defined(libs)) { 168e509ee18Sopenharmony_ci libs = [] 169e509ee18Sopenharmony_ci } 170e509ee18Sopenharmony_ci if (!defined(include_dirs)) { 171e509ee18Sopenharmony_ci include_dirs = [] 172e509ee18Sopenharmony_ci } 173e509ee18Sopenharmony_ci 174e509ee18Sopenharmony_ci if (defined(invoker.external_deps) && invoker.external_deps != []) { 175e509ee18Sopenharmony_ci if (!defined(deps)) { 176e509ee18Sopenharmony_ci deps = [] 177e509ee18Sopenharmony_ci } 178e509ee18Sopenharmony_ci 179e509ee18Sopenharmony_ci external_deps_temp_file = 180e509ee18Sopenharmony_ci "$target_gen_dir/${part_name}__${target_name}_external_deps_temp.json" 181e509ee18Sopenharmony_ci arguments = [ 182e509ee18Sopenharmony_ci "--root-src-dir", 183e509ee18Sopenharmony_ci rebase_path("//", root_build_dir), 184e509ee18Sopenharmony_ci "--external-deps-temp-file", 185e509ee18Sopenharmony_ci rebase_path(external_deps_temp_file, root_build_dir), 186e509ee18Sopenharmony_ci "--external-deps", 187e509ee18Sopenharmony_ci ] 188e509ee18Sopenharmony_ci arguments += invoker.external_deps 189e509ee18Sopenharmony_ci exec_script("$build_root/templates/cxx/external_deps_handler.py", 190e509ee18Sopenharmony_ci arguments, 191e509ee18Sopenharmony_ci "string") 192e509ee18Sopenharmony_ci external_deps_info = read_file(external_deps_temp_file, "json") 193e509ee18Sopenharmony_ci if (defined(external_deps_info.deps)) { 194e509ee18Sopenharmony_ci deps += external_deps_info.deps 195e509ee18Sopenharmony_ci } 196e509ee18Sopenharmony_ci } 197e509ee18Sopenharmony_ci } 198e509ee18Sopenharmony_ci} 199e509ee18Sopenharmony_ci 200e509ee18Sopenharmony_citemplate("ohos_shared_library") { 201e509ee18Sopenharmony_ci if (defined(invoker.subsystem_name) && defined(invoker.part_name)) { 202e509ee18Sopenharmony_ci subsystem_name = invoker.subsystem_name 203e509ee18Sopenharmony_ci part_name = invoker.part_name 204e509ee18Sopenharmony_ci } else if (defined(invoker.subsystem_name)) { 205e509ee18Sopenharmony_ci subsystem_name = invoker.subsystem_name 206e509ee18Sopenharmony_ci part_name = subsystem_name 207e509ee18Sopenharmony_ci } else { 208e509ee18Sopenharmony_ci subsystem_name = "arkcompiler" 209e509ee18Sopenharmony_ci part_name = "common" 210e509ee18Sopenharmony_ci } 211e509ee18Sopenharmony_ci output_dir = "${root_out_dir}/${subsystem_name}/${part_name}" 212e509ee18Sopenharmony_ci shared_library(target_name) { 213e509ee18Sopenharmony_ci forward_variables_from(invoker, 214e509ee18Sopenharmony_ci "*", 215e509ee18Sopenharmony_ci [ 216e509ee18Sopenharmony_ci "relative_install_dir", 217e509ee18Sopenharmony_ci "configs", 218e509ee18Sopenharmony_ci "subsystem_name", 219e509ee18Sopenharmony_ci "install_enable", 220e509ee18Sopenharmony_ci "part_name", 221e509ee18Sopenharmony_ci "output_dir", 222e509ee18Sopenharmony_ci "install_images", 223e509ee18Sopenharmony_ci "use_exceptions", 224e509ee18Sopenharmony_ci "external_deps", 225e509ee18Sopenharmony_ci "stack_protector_ret", 226e509ee18Sopenharmony_ci "innerapi_tags", 227e509ee18Sopenharmony_ci "use_rtti", 228e509ee18Sopenharmony_ci ]) 229e509ee18Sopenharmony_ci output_dir = output_dir 230e509ee18Sopenharmony_ci if (defined(invoker.configs)) { 231e509ee18Sopenharmony_ci configs += invoker.configs 232e509ee18Sopenharmony_ci } 233e509ee18Sopenharmony_ci if (defined(invoker.remove_configs)) { 234e509ee18Sopenharmony_ci configs -= invoker.remove_configs 235e509ee18Sopenharmony_ci } 236e509ee18Sopenharmony_ci 237e509ee18Sopenharmony_ci if (!defined(libs)) { 238e509ee18Sopenharmony_ci libs = [] 239e509ee18Sopenharmony_ci } 240e509ee18Sopenharmony_ci if (!defined(ldflags)) { 241e509ee18Sopenharmony_ci ldflags = [] 242e509ee18Sopenharmony_ci } 243e509ee18Sopenharmony_ci if (!defined(inputs)) { 244e509ee18Sopenharmony_ci inputs = [] 245e509ee18Sopenharmony_ci } 246e509ee18Sopenharmony_ci if (defined(invoker.use_rtti) && invoker.use_rtti) { 247e509ee18Sopenharmony_ci configs += [ "//arkcompiler/toolchain/build/config/compiler:rtti" ] 248e509ee18Sopenharmony_ci } 249e509ee18Sopenharmony_ci 250e509ee18Sopenharmony_ci if (defined(version_script)) { 251e509ee18Sopenharmony_ci _version_script = rebase_path(version_script, root_build_dir) 252e509ee18Sopenharmony_ci inputs += [ version_script ] 253e509ee18Sopenharmony_ci ldflags += [ "-Wl,--version-script=${_version_script}" ] 254e509ee18Sopenharmony_ci } 255e509ee18Sopenharmony_ci 256e509ee18Sopenharmony_ci if (is_ohos) { 257e509ee18Sopenharmony_ci if (defined(invoker.stl)) { 258e509ee18Sopenharmony_ci cflags_cc += [ 259e509ee18Sopenharmony_ci "-nostdinc++", 260e509ee18Sopenharmony_ci "-I" + rebase_path( 261e509ee18Sopenharmony_ci "//prebuilts/clang/ohos/${host_platform_dir}/llvm_ndk/include/c++/v1", 262e509ee18Sopenharmony_ci root_build_dir), 263e509ee18Sopenharmony_ci ] 264e509ee18Sopenharmony_ci ldflags += [ 265e509ee18Sopenharmony_ci "-nostdlib++", 266e509ee18Sopenharmony_ci "-L" + rebase_path("${clang_stl_path}/${abi_target}/c++", 267e509ee18Sopenharmony_ci root_build_dir), 268e509ee18Sopenharmony_ci ] 269e509ee18Sopenharmony_ci libs += [ invoker.stl ] 270e509ee18Sopenharmony_ci } else { 271e509ee18Sopenharmony_ci if (current_cpu == "arm" || current_cpu == "arm64") { 272e509ee18Sopenharmony_ci libs += [ "unwind" ] 273e509ee18Sopenharmony_ci } 274e509ee18Sopenharmony_ci libs += [ "c++" ] 275e509ee18Sopenharmony_ci } 276e509ee18Sopenharmony_ci } 277e509ee18Sopenharmony_ci 278e509ee18Sopenharmony_ci if (defined(invoker.external_deps) && invoker.external_deps != []) { 279e509ee18Sopenharmony_ci if (!defined(deps)) { 280e509ee18Sopenharmony_ci deps = [] 281e509ee18Sopenharmony_ci } 282e509ee18Sopenharmony_ci 283e509ee18Sopenharmony_ci external_deps_temp_file = 284e509ee18Sopenharmony_ci "$target_gen_dir/${part_name}__${target_name}_external_deps_temp.json" 285e509ee18Sopenharmony_ci arguments = [ 286e509ee18Sopenharmony_ci "--root-src-dir", 287e509ee18Sopenharmony_ci rebase_path("//", root_build_dir), 288e509ee18Sopenharmony_ci "--external-deps-temp-file", 289e509ee18Sopenharmony_ci rebase_path(external_deps_temp_file, root_build_dir), 290e509ee18Sopenharmony_ci "--external-deps", 291e509ee18Sopenharmony_ci ] 292e509ee18Sopenharmony_ci arguments += invoker.external_deps 293e509ee18Sopenharmony_ci exec_script("$build_root/templates/cxx/external_deps_handler.py", 294e509ee18Sopenharmony_ci arguments, 295e509ee18Sopenharmony_ci "string") 296e509ee18Sopenharmony_ci external_deps_info = read_file(external_deps_temp_file, "json") 297e509ee18Sopenharmony_ci if (defined(external_deps_info.deps)) { 298e509ee18Sopenharmony_ci deps += external_deps_info.deps 299e509ee18Sopenharmony_ci } 300e509ee18Sopenharmony_ci } 301e509ee18Sopenharmony_ci } 302e509ee18Sopenharmony_ci} 303e509ee18Sopenharmony_ci 304e509ee18Sopenharmony_citemplate("ohos_source_set") { 305e509ee18Sopenharmony_ci if (defined(invoker.subsystem_name) && defined(invoker.part_name)) { 306e509ee18Sopenharmony_ci subsystem_name = invoker.subsystem_name 307e509ee18Sopenharmony_ci part_name = invoker.part_name 308e509ee18Sopenharmony_ci } else if (defined(invoker.subsystem_name)) { 309e509ee18Sopenharmony_ci subsystem_name = invoker.subsystem_name 310e509ee18Sopenharmony_ci part_name = subsystem_name 311e509ee18Sopenharmony_ci } else { 312e509ee18Sopenharmony_ci subsystem_name = "arkcompiler" 313e509ee18Sopenharmony_ci part_name = "common" 314e509ee18Sopenharmony_ci } 315e509ee18Sopenharmony_ci assert(subsystem_name != "") 316e509ee18Sopenharmony_ci assert(part_name != "") 317e509ee18Sopenharmony_ci 318e509ee18Sopenharmony_ci source_set(target_name) { 319e509ee18Sopenharmony_ci forward_variables_from(invoker, 320e509ee18Sopenharmony_ci "*", 321e509ee18Sopenharmony_ci [ 322e509ee18Sopenharmony_ci "configs", 323e509ee18Sopenharmony_ci "remove_configs", 324e509ee18Sopenharmony_ci "no_default_deps", 325e509ee18Sopenharmony_ci "external_deps", 326e509ee18Sopenharmony_ci "license_file", 327e509ee18Sopenharmony_ci "license_as_sources", 328e509ee18Sopenharmony_ci "use_exceptions", 329e509ee18Sopenharmony_ci "subsystem_name", 330e509ee18Sopenharmony_ci "part_name", 331e509ee18Sopenharmony_ci "stack_protector_ret", 332e509ee18Sopenharmony_ci "use_rtti", 333e509ee18Sopenharmony_ci ]) 334e509ee18Sopenharmony_ci if (defined(invoker.configs)) { 335e509ee18Sopenharmony_ci configs += invoker.configs 336e509ee18Sopenharmony_ci } 337e509ee18Sopenharmony_ci if (defined(invoker.use_rtti) && invoker.use_rtti) { 338e509ee18Sopenharmony_ci configs += [ "//arkcompiler/toolchain/build/config/compiler:rtti" ] 339e509ee18Sopenharmony_ci } 340e509ee18Sopenharmony_ci if (defined(invoker.remove_configs)) { 341e509ee18Sopenharmony_ci configs -= invoker.remove_configs 342e509ee18Sopenharmony_ci } 343e509ee18Sopenharmony_ci if (defined(invoker.external_deps) && invoker.external_deps != []) { 344e509ee18Sopenharmony_ci if (!defined(deps)) { 345e509ee18Sopenharmony_ci deps = [] 346e509ee18Sopenharmony_ci } 347e509ee18Sopenharmony_ci external_deps_temp_file = 348e509ee18Sopenharmony_ci "$target_gen_dir/${part_name}__${target_name}_external_deps_temp.json" 349e509ee18Sopenharmony_ci arguments = [ 350e509ee18Sopenharmony_ci "--root-src-dir", 351e509ee18Sopenharmony_ci rebase_path("//", root_build_dir), 352e509ee18Sopenharmony_ci "--external-deps-temp-file", 353e509ee18Sopenharmony_ci rebase_path(external_deps_temp_file, root_build_dir), 354e509ee18Sopenharmony_ci "--external-deps", 355e509ee18Sopenharmony_ci ] 356e509ee18Sopenharmony_ci arguments += invoker.external_deps 357e509ee18Sopenharmony_ci exec_script("$build_root/templates/cxx/external_deps_handler.py", 358e509ee18Sopenharmony_ci arguments, 359e509ee18Sopenharmony_ci "string") 360e509ee18Sopenharmony_ci external_deps_info = read_file(external_deps_temp_file, "json") 361e509ee18Sopenharmony_ci if (defined(external_deps_info.deps)) { 362e509ee18Sopenharmony_ci deps += external_deps_info.deps 363e509ee18Sopenharmony_ci } 364e509ee18Sopenharmony_ci } 365e509ee18Sopenharmony_ci } 366e509ee18Sopenharmony_ci} 367e509ee18Sopenharmony_ci 368e509ee18Sopenharmony_citemplate("ohos_copy") { 369e509ee18Sopenharmony_ci assert(defined(invoker.sources), 370e509ee18Sopenharmony_ci "sources must be defined for ${target_name}.") 371e509ee18Sopenharmony_ci assert(defined(invoker.outputs), 372e509ee18Sopenharmony_ci "outputs must be defined for ${target_name}.") 373e509ee18Sopenharmony_ci if (defined(invoker.subsystem_name) && defined(invoker.part_name)) { 374e509ee18Sopenharmony_ci copy_subsystem_name = invoker.subsystem_name 375e509ee18Sopenharmony_ci copy_part_name = invoker.part_name 376e509ee18Sopenharmony_ci } else if (defined(invoker.subsystem_name)) { 377e509ee18Sopenharmony_ci copy_subsystem_name = invoker.subsystem_name 378e509ee18Sopenharmony_ci copy_part_name = copy_subsystem_name 379e509ee18Sopenharmony_ci } else { 380e509ee18Sopenharmony_ci copy_subsystem_name = "common" 381e509ee18Sopenharmony_ci copy_part_name = copy_subsystem_name 382e509ee18Sopenharmony_ci } 383e509ee18Sopenharmony_ci assert(copy_subsystem_name != "") 384e509ee18Sopenharmony_ci assert(copy_part_name != "") 385e509ee18Sopenharmony_ci 386e509ee18Sopenharmony_ci copy(target_name) { 387e509ee18Sopenharmony_ci forward_variables_from(invoker, 388e509ee18Sopenharmony_ci "*", 389e509ee18Sopenharmony_ci [ 390e509ee18Sopenharmony_ci "relative_install_dir", 391e509ee18Sopenharmony_ci "module_source_dir", 392e509ee18Sopenharmony_ci "module_install_name", 393e509ee18Sopenharmony_ci "license_file", 394e509ee18Sopenharmony_ci "install_enable", 395e509ee18Sopenharmony_ci "module_type", 396e509ee18Sopenharmony_ci ]) 397e509ee18Sopenharmony_ci } 398e509ee18Sopenharmony_ci} 399