15f9996aaSopenharmony_ci# Copyright (c) 2021 Huawei Device Co., Ltd. 25f9996aaSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 35f9996aaSopenharmony_ci# you may not use this file except in compliance with the License. 45f9996aaSopenharmony_ci# You may obtain a copy of the License at 55f9996aaSopenharmony_ci# 65f9996aaSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 75f9996aaSopenharmony_ci# 85f9996aaSopenharmony_ci# Unless required by applicable law or agreed to in writing, software 95f9996aaSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 105f9996aaSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 115f9996aaSopenharmony_ci# See the License for the specific language governing permissions and 125f9996aaSopenharmony_ci# limitations under the License. 135f9996aaSopenharmony_ci 145f9996aaSopenharmony_ciimport("//build/templates/common/copy.gni") 155f9996aaSopenharmony_ci 165f9996aaSopenharmony_citemplate("ohos_prebuilt_executable") { 175f9996aaSopenharmony_ci assert(defined(invoker.source), "source must be defined for ${target_name}.") 185f9996aaSopenharmony_ci 195f9996aaSopenharmony_ci if (defined(invoker.output)) { 205f9996aaSopenharmony_ci _copy_output = "${target_out_dir}/${invoker.output}" 215f9996aaSopenharmony_ci } else { 225f9996aaSopenharmony_ci _copy_output = "${target_out_dir}/${invoker.source}" 235f9996aaSopenharmony_ci } 245f9996aaSopenharmony_ci 255f9996aaSopenharmony_ci if (!defined(invoker.deps)) { 265f9996aaSopenharmony_ci invoker.deps = [] 275f9996aaSopenharmony_ci } 285f9996aaSopenharmony_ci 295f9996aaSopenharmony_ci if (!defined(invoker.stable)) { 305f9996aaSopenharmony_ci invoker.stable = false 315f9996aaSopenharmony_ci } 325f9996aaSopenharmony_ci 335f9996aaSopenharmony_ci deps_info = [] 345f9996aaSopenharmony_ci foreach(dep, invoker.deps) { 355f9996aaSopenharmony_ci info = { 365f9996aaSopenharmony_ci } 375f9996aaSopenharmony_ci info = { 385f9996aaSopenharmony_ci target_out_dir = 395f9996aaSopenharmony_ci rebase_path(get_label_info(dep, "target_out_dir"), root_build_dir) 405f9996aaSopenharmony_ci target_name = get_label_info(dep, "name") 415f9996aaSopenharmony_ci } 425f9996aaSopenharmony_ci deps_info += [ info ] 435f9996aaSopenharmony_ci } 445f9996aaSopenharmony_ci module_label = get_label_info(":${target_name}", "label_with_toolchain") 455f9996aaSopenharmony_ci target_deps_data = { 465f9996aaSopenharmony_ci label = module_label 475f9996aaSopenharmony_ci module_deps_info = deps_info 485f9996aaSopenharmony_ci type = "executable" 495f9996aaSopenharmony_ci prebuilt = true 505f9996aaSopenharmony_ci stable = invoker.stable 515f9996aaSopenharmony_ci toolchain = get_label_info(":${target_name}", "toolchain") 525f9996aaSopenharmony_ci source_path = rebase_path(invoker.source, root_build_dir) 535f9996aaSopenharmony_ci output_path = rebase_path(_copy_output, root_build_dir) 545f9996aaSopenharmony_ci } 555f9996aaSopenharmony_ci write_file("${target_out_dir}/${target_name}_deps_data.json", 565f9996aaSopenharmony_ci target_deps_data, 575f9996aaSopenharmony_ci "json") 585f9996aaSopenharmony_ci 595f9996aaSopenharmony_ci ohos_copy(target_name) { 605f9996aaSopenharmony_ci forward_variables_from(invoker, 615f9996aaSopenharmony_ci [ 625f9996aaSopenharmony_ci "testonly", 635f9996aaSopenharmony_ci "visibility", 645f9996aaSopenharmony_ci 655f9996aaSopenharmony_ci "deps", 665f9996aaSopenharmony_ci "external_deps", 675f9996aaSopenharmony_ci "public_external_deps", 685f9996aaSopenharmony_ci "public_configs", 695f9996aaSopenharmony_ci "subsystem_name", 705f9996aaSopenharmony_ci "part_name", 715f9996aaSopenharmony_ci 725f9996aaSopenharmony_ci # For generate_module_info 735f9996aaSopenharmony_ci "install_images", 745f9996aaSopenharmony_ci "module_install_dir", 755f9996aaSopenharmony_ci "relative_install_dir", 765f9996aaSopenharmony_ci "symlink_target_name", 775f9996aaSopenharmony_ci 785f9996aaSopenharmony_ci # Open source license related 795f9996aaSopenharmony_ci "license_file", 805f9996aaSopenharmony_ci "license_as_sources", 815f9996aaSopenharmony_ci ]) 825f9996aaSopenharmony_ci sources = [ invoker.source ] 835f9996aaSopenharmony_ci outputs = [ _copy_output ] 845f9996aaSopenharmony_ci module_type = "bin" 855f9996aaSopenharmony_ci prebuilt = true 865f9996aaSopenharmony_ci install_enable = false 875f9996aaSopenharmony_ci enable_strip = false 885f9996aaSopenharmony_ci if (defined(invoker.enable_strip) && invoker.enable_strip) { 895f9996aaSopenharmony_ci enable_strip = true 905f9996aaSopenharmony_ci } 915f9996aaSopenharmony_ci if (defined(invoker.install_enable)) { 925f9996aaSopenharmony_ci install_enable = invoker.install_enable 935f9996aaSopenharmony_ci } 945f9996aaSopenharmony_ci } 955f9996aaSopenharmony_ci} 965f9996aaSopenharmony_ci 975f9996aaSopenharmony_citemplate("ohos_prebuilt_shared_library") { 985f9996aaSopenharmony_ci assert(defined(invoker.source), "source must be defined for ${target_name}.") 995f9996aaSopenharmony_ci 1005f9996aaSopenharmony_ci if (defined(invoker.output)) { 1015f9996aaSopenharmony_ci _copy_output = "${target_out_dir}/${invoker.output}" 1025f9996aaSopenharmony_ci } else { 1035f9996aaSopenharmony_ci _copy_output = "${target_out_dir}/${invoker.source}" 1045f9996aaSopenharmony_ci } 1055f9996aaSopenharmony_ci config("${target_name}__config") { 1065f9996aaSopenharmony_ci libs = [ _copy_output ] 1075f9996aaSopenharmony_ci } 1085f9996aaSopenharmony_ci 1095f9996aaSopenharmony_ci if (!defined(invoker.deps)) { 1105f9996aaSopenharmony_ci invoker.deps = [] 1115f9996aaSopenharmony_ci } 1125f9996aaSopenharmony_ci 1135f9996aaSopenharmony_ci if (!defined(invoker.stable)) { 1145f9996aaSopenharmony_ci invoker.stable = false 1155f9996aaSopenharmony_ci } 1165f9996aaSopenharmony_ci 1175f9996aaSopenharmony_ci # auto set auto_relative_install_dir by innerapi_tags 1185f9996aaSopenharmony_ci if (defined(invoker.innerapi_tags)) { 1195f9996aaSopenharmony_ci is_chipsetsdk = false 1205f9996aaSopenharmony_ci is_platformsdk = false 1215f9996aaSopenharmony_ci is_passthrough = false 1225f9996aaSopenharmony_ci foreach(tag, filter_include(invoker.innerapi_tags, [ "chipsetsdk*" ])) { 1235f9996aaSopenharmony_ci is_chipsetsdk = true 1245f9996aaSopenharmony_ci } 1255f9996aaSopenharmony_ci foreach(tag, filter_include(invoker.innerapi_tags, [ "platformsdk*" ])) { 1265f9996aaSopenharmony_ci is_platformsdk = true 1275f9996aaSopenharmony_ci } 1285f9996aaSopenharmony_ci foreach(tag, filter_include(invoker.innerapi_tags, [ "passthrough*" ])) { 1295f9996aaSopenharmony_ci is_passthrough = true 1305f9996aaSopenharmony_ci } 1315f9996aaSopenharmony_ci 1325f9996aaSopenharmony_ci if (is_chipsetsdk && is_platformsdk) { 1335f9996aaSopenharmony_ci auto_relative_install_dir = "chipset-pub-sdk" 1345f9996aaSopenharmony_ci } else if (is_chipsetsdk) { 1355f9996aaSopenharmony_ci auto_relative_install_dir = "chipset-sdk" 1365f9996aaSopenharmony_ci } else if (is_platformsdk) { 1375f9996aaSopenharmony_ci auto_relative_install_dir = "platformsdk" 1385f9996aaSopenharmony_ci } 1395f9996aaSopenharmony_ci if (is_passthrough) { 1405f9996aaSopenharmony_ci auto_relative_install_dir = chipset_passthrough_dir 1415f9996aaSopenharmony_ci } 1425f9996aaSopenharmony_ci 1435f9996aaSopenharmony_ci is_ndk = false 1445f9996aaSopenharmony_ci foreach(tag, filter_include(invoker.innerapi_tags, [ "ndk" ])) { 1455f9996aaSopenharmony_ci is_ndk = true 1465f9996aaSopenharmony_ci } 1475f9996aaSopenharmony_ci if (is_ndk) { 1485f9996aaSopenharmony_ci auto_relative_install_dir = "ndk" 1495f9996aaSopenharmony_ci } 1505f9996aaSopenharmony_ci } 1515f9996aaSopenharmony_ci 1525f9996aaSopenharmony_ci deps_info = [] 1535f9996aaSopenharmony_ci foreach(dep, invoker.deps) { 1545f9996aaSopenharmony_ci info = { 1555f9996aaSopenharmony_ci } 1565f9996aaSopenharmony_ci info = { 1575f9996aaSopenharmony_ci target_out_dir = 1585f9996aaSopenharmony_ci rebase_path(get_label_info(dep, "target_out_dir"), root_build_dir) 1595f9996aaSopenharmony_ci target_name = get_label_info(dep, "name") 1605f9996aaSopenharmony_ci } 1615f9996aaSopenharmony_ci deps_info += [ info ] 1625f9996aaSopenharmony_ci } 1635f9996aaSopenharmony_ci module_label = get_label_info(":${target_name}", "label_with_toolchain") 1645f9996aaSopenharmony_ci target_deps_data = { 1655f9996aaSopenharmony_ci label = module_label 1665f9996aaSopenharmony_ci module_deps_info = deps_info 1675f9996aaSopenharmony_ci type = "shared_library" 1685f9996aaSopenharmony_ci prebuilt = true 1695f9996aaSopenharmony_ci stable = invoker.stable 1705f9996aaSopenharmony_ci toolchain = get_label_info(":${target_name}", "toolchain") 1715f9996aaSopenharmony_ci source_path = rebase_path(invoker.source, root_build_dir) 1725f9996aaSopenharmony_ci output_path = rebase_path(_copy_output, root_build_dir) 1735f9996aaSopenharmony_ci } 1745f9996aaSopenharmony_ci write_file("${target_out_dir}/${target_name}_deps_data.json", 1755f9996aaSopenharmony_ci target_deps_data, 1765f9996aaSopenharmony_ci "json") 1775f9996aaSopenharmony_ci 1785f9996aaSopenharmony_ci ohos_copy(target_name) { 1795f9996aaSopenharmony_ci forward_variables_from(invoker, 1805f9996aaSopenharmony_ci [ 1815f9996aaSopenharmony_ci "testonly", 1825f9996aaSopenharmony_ci "visibility", 1835f9996aaSopenharmony_ci 1845f9996aaSopenharmony_ci "deps", 1855f9996aaSopenharmony_ci "external_deps", 1865f9996aaSopenharmony_ci "public_external_deps", 1875f9996aaSopenharmony_ci "public_configs", 1885f9996aaSopenharmony_ci "subsystem_name", 1895f9996aaSopenharmony_ci "part_name", 1905f9996aaSopenharmony_ci 1915f9996aaSopenharmony_ci # For generate_module_info 1925f9996aaSopenharmony_ci "install_images", 1935f9996aaSopenharmony_ci "module_install_dir", 1945f9996aaSopenharmony_ci "symlink_target_name", 1955f9996aaSopenharmony_ci "innerapi_tags", 1965f9996aaSopenharmony_ci "symlink_ext", 1975f9996aaSopenharmony_ci 1985f9996aaSopenharmony_ci # Open source license related 1995f9996aaSopenharmony_ci "license_file", 2005f9996aaSopenharmony_ci "license_as_sources", 2015f9996aaSopenharmony_ci ]) 2025f9996aaSopenharmony_ci sources = [ invoker.source ] 2035f9996aaSopenharmony_ci outputs = [ _copy_output ] 2045f9996aaSopenharmony_ci module_type = "lib" 2055f9996aaSopenharmony_ci prebuilt = true 2065f9996aaSopenharmony_ci install_enable = true 2075f9996aaSopenharmony_ci enable_strip = false 2085f9996aaSopenharmony_ci if (defined(invoker.enable_strip) && invoker.enable_strip) { 2095f9996aaSopenharmony_ci enable_strip = true 2105f9996aaSopenharmony_ci } 2115f9996aaSopenharmony_ci mini_debug = false 2125f9996aaSopenharmony_ci if (defined(invoker.mini_debug) && invoker.mini_debug) { 2135f9996aaSopenharmony_ci mini_debug = true 2145f9996aaSopenharmony_ci } 2155f9996aaSopenharmony_ci if (defined(invoker.install_enable)) { 2165f9996aaSopenharmony_ci install_enable = invoker.install_enable 2175f9996aaSopenharmony_ci } 2185f9996aaSopenharmony_ci 2195f9996aaSopenharmony_ci # update relative_install_dir if auto_relative_install_dir defined 2205f9996aaSopenharmony_ci if (defined(auto_relative_install_dir)) { 2215f9996aaSopenharmony_ci relative_install_dir = auto_relative_install_dir 2225f9996aaSopenharmony_ci } 2235f9996aaSopenharmony_ci if (defined(invoker.relative_install_dir)) { 2245f9996aaSopenharmony_ci relative_install_dir = invoker.relative_install_dir 2255f9996aaSopenharmony_ci } 2265f9996aaSopenharmony_ci if (!defined(public_configs)) { 2275f9996aaSopenharmony_ci public_configs = [] 2285f9996aaSopenharmony_ci } 2295f9996aaSopenharmony_ci public_configs += [ ":${target_name}__config" ] 2305f9996aaSopenharmony_ci } 2315f9996aaSopenharmony_ci} 2325f9996aaSopenharmony_ci 2335f9996aaSopenharmony_citemplate("ohos_prebuilt_static_library") { 2345f9996aaSopenharmony_ci assert(defined(invoker.source), "source must be defined for ${target_name}.") 2355f9996aaSopenharmony_ci 2365f9996aaSopenharmony_ci if (defined(invoker.output)) { 2375f9996aaSopenharmony_ci _copy_output = "${target_out_dir}/${invoker.output}" 2385f9996aaSopenharmony_ci } else { 2395f9996aaSopenharmony_ci _copy_output = "${target_out_dir}/${invoker.source}" 2405f9996aaSopenharmony_ci } 2415f9996aaSopenharmony_ci config("${target_name}__config") { 2425f9996aaSopenharmony_ci libs = [ _copy_output ] 2435f9996aaSopenharmony_ci } 2445f9996aaSopenharmony_ci ohos_copy(target_name) { 2455f9996aaSopenharmony_ci forward_variables_from(invoker, 2465f9996aaSopenharmony_ci [ 2475f9996aaSopenharmony_ci "testonly", 2485f9996aaSopenharmony_ci "visibility", 2495f9996aaSopenharmony_ci 2505f9996aaSopenharmony_ci "deps", 2515f9996aaSopenharmony_ci "external_deps", 2525f9996aaSopenharmony_ci "public_external_deps", 2535f9996aaSopenharmony_ci "public_configs", 2545f9996aaSopenharmony_ci "subsystem_name", 2555f9996aaSopenharmony_ci "part_name", 2565f9996aaSopenharmony_ci 2575f9996aaSopenharmony_ci # Open source license related 2585f9996aaSopenharmony_ci "license_file", 2595f9996aaSopenharmony_ci "license_as_sources", 2605f9996aaSopenharmony_ci ]) 2615f9996aaSopenharmony_ci sources = [ invoker.source ] 2625f9996aaSopenharmony_ci outputs = [ _copy_output ] 2635f9996aaSopenharmony_ci bypass_module_info_generation = true 2645f9996aaSopenharmony_ci if (!defined(public_configs)) { 2655f9996aaSopenharmony_ci public_configs = [] 2665f9996aaSopenharmony_ci } 2675f9996aaSopenharmony_ci public_configs += [ ":${target_name}__config" ] 2685f9996aaSopenharmony_ci } 2695f9996aaSopenharmony_ci} 2705f9996aaSopenharmony_ci 2715f9996aaSopenharmony_citemplate("ohos_prebuilt_etc") { 2725f9996aaSopenharmony_ci assert(defined(invoker.source), "source must be defined for ${target_name}.") 2735f9996aaSopenharmony_ci 2745f9996aaSopenharmony_ci if (defined(invoker.output)) { 2755f9996aaSopenharmony_ci _copy_output = "${target_out_dir}/${invoker.output}" 2765f9996aaSopenharmony_ci } else { 2775f9996aaSopenharmony_ci _copy_output = "${target_out_dir}/${invoker.source}" 2785f9996aaSopenharmony_ci } 2795f9996aaSopenharmony_ci 2805f9996aaSopenharmony_ci source_path = rebase_path(invoker.source, root_build_dir) 2815f9996aaSopenharmony_ci module_label = get_label_info(":${target_name}", "label_with_toolchain") 2825f9996aaSopenharmony_ci target_deps_data = { 2835f9996aaSopenharmony_ci label = module_label 2845f9996aaSopenharmony_ci type = "etc" 2855f9996aaSopenharmony_ci prebuilt = true 2865f9996aaSopenharmony_ci source_path = source_path 2875f9996aaSopenharmony_ci output_path = rebase_path(_copy_output, root_build_dir) 2885f9996aaSopenharmony_ci } 2895f9996aaSopenharmony_ci write_file("${target_out_dir}/${target_name}_deps_data.json", 2905f9996aaSopenharmony_ci target_deps_data, 2915f9996aaSopenharmony_ci "json") 2925f9996aaSopenharmony_ci 2935f9996aaSopenharmony_ci ohos_copy(target_name) { 2945f9996aaSopenharmony_ci forward_variables_from(invoker, 2955f9996aaSopenharmony_ci [ 2965f9996aaSopenharmony_ci "testonly", 2975f9996aaSopenharmony_ci "visibility", 2985f9996aaSopenharmony_ci 2995f9996aaSopenharmony_ci "deps", 3005f9996aaSopenharmony_ci "external_deps", 3015f9996aaSopenharmony_ci "public_external_deps", 3025f9996aaSopenharmony_ci "public_configs", 3035f9996aaSopenharmony_ci "subsystem_name", 3045f9996aaSopenharmony_ci "part_name", 3055f9996aaSopenharmony_ci 3065f9996aaSopenharmony_ci # For generate_module_info 3075f9996aaSopenharmony_ci "install_images", 3085f9996aaSopenharmony_ci "module_install_dir", 3095f9996aaSopenharmony_ci "relative_install_dir", 3105f9996aaSopenharmony_ci "symlink_target_name", 3115f9996aaSopenharmony_ci 3125f9996aaSopenharmony_ci # Open source license related 3135f9996aaSopenharmony_ci "license_file", 3145f9996aaSopenharmony_ci "license_as_sources", 3155f9996aaSopenharmony_ci ]) 3165f9996aaSopenharmony_ci sources = [ invoker.source ] 3175f9996aaSopenharmony_ci outputs = [ _copy_output ] 3185f9996aaSopenharmony_ci module_type = "etc" 3195f9996aaSopenharmony_ci prebuilt = true 3205f9996aaSopenharmony_ci install_enable = true 3215f9996aaSopenharmony_ci if (defined(invoker.install_enable)) { 3225f9996aaSopenharmony_ci install_enable = invoker.install_enable 3235f9996aaSopenharmony_ci } 3245f9996aaSopenharmony_ci if (defined(invoker.symlink_path)) { 3255f9996aaSopenharmony_ci symlink_path = invoker.symlink_path 3265f9996aaSopenharmony_ci } 3275f9996aaSopenharmony_ci } 3285f9996aaSopenharmony_ci} 329