15f9996aaSopenharmony_ci# Copyright (c) 2020 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_ciimport("//build/lite/ohos_var.gni") 145f9996aaSopenharmony_ciimport("${device_path}/config.gni") 155f9996aaSopenharmony_ci 165f9996aaSopenharmony_ciif (target_os == "") { 175f9996aaSopenharmony_ci target_os = "ohos" 185f9996aaSopenharmony_ci} 195f9996aaSopenharmony_ci 205f9996aaSopenharmony_ciif (target_cpu == "") { 215f9996aaSopenharmony_ci target_cpu = board_cpu 225f9996aaSopenharmony_ci} 235f9996aaSopenharmony_ci 245f9996aaSopenharmony_citarget_arch_cflags = board_cflags 255f9996aaSopenharmony_ciif (board_arch != "") { 265f9996aaSopenharmony_ci target_arch_cflags += [ "-march=$board_arch" ] 275f9996aaSopenharmony_ci} 285f9996aaSopenharmony_ciif (board_cpu != "") { 295f9996aaSopenharmony_ci target_arch_cflags += [ "-mcpu=$board_cpu" ] 305f9996aaSopenharmony_ci} 315f9996aaSopenharmony_ci 325f9996aaSopenharmony_ciarch = "arm" 335f9996aaSopenharmony_ciif (ohos_kernel_type == "liteos_a") { 345f9996aaSopenharmony_ci target_triple = "$arch-liteos-ohos" 355f9996aaSopenharmony_ci} else if (ohos_kernel_type == "linux") { 365f9996aaSopenharmony_ci target_triple = "$arch-linux-ohos" 375f9996aaSopenharmony_ci} 385f9996aaSopenharmony_ci 395f9996aaSopenharmony_ciif (defined(board_configed_sysroot) && board_configed_sysroot != "") { 405f9996aaSopenharmony_ci ohos_current_sysroot = board_configed_sysroot 415f9996aaSopenharmony_ci} 425f9996aaSopenharmony_ci 435f9996aaSopenharmony_ci# Only gcc available for liteos_m. 445f9996aaSopenharmony_ciif (ohos_kernel_type == "liteos_m" || ohos_kernel_type == "uniproton" || 455f9996aaSopenharmony_ci ohos_kernel_type == "linux") { 465f9996aaSopenharmony_ci use_board_toolchain = true 475f9996aaSopenharmony_ci} 485f9996aaSopenharmony_ci 495f9996aaSopenharmony_citoolchain_cmd_suffix = "" 505f9996aaSopenharmony_ciif (host_os == "win") { 515f9996aaSopenharmony_ci toolchain_cmd_suffix = ".exe" 525f9996aaSopenharmony_ci} 535f9996aaSopenharmony_ci 545f9996aaSopenharmony_ci# enable ccache if ccache is installed, 555f9996aaSopenharmony_ci# or enable xcache if xcache is installed. 565f9996aaSopenharmony_ciif (ohos_build_enable_ccache) { 575f9996aaSopenharmony_ci compile_prefix = "ccache " 585f9996aaSopenharmony_ci} else if (ohos_build_enable_xcache) { 595f9996aaSopenharmony_ci compile_prefix = "opt/buildtools/nextbuild/xcache " 605f9996aaSopenharmony_ci} else { 615f9996aaSopenharmony_ci compile_prefix = "" 625f9996aaSopenharmony_ci} 635f9996aaSopenharmony_ci 645f9996aaSopenharmony_ci# Load board adapter dir from board config. 655f9996aaSopenharmony_ciif (board_adapter_dir != "") { 665f9996aaSopenharmony_ci ohos_board_adapter_dir = board_adapter_dir 675f9996aaSopenharmony_ci ohos_vendor_adapter_dir = board_adapter_dir 685f9996aaSopenharmony_ci} 695f9996aaSopenharmony_ci 705f9996aaSopenharmony_ci# Set current toolchain with to board configuration. 715f9996aaSopenharmony_ciif (board_toolchain != "" && use_board_toolchain) { 725f9996aaSopenharmony_ci ohos_build_compiler = board_toolchain_type 735f9996aaSopenharmony_ci if (board_toolchain_path != "") { 745f9996aaSopenharmony_ci compile_prefix += "${board_toolchain_path}/${board_toolchain_prefix}" 755f9996aaSopenharmony_ci } else { 765f9996aaSopenharmony_ci compile_prefix += "${board_toolchain_prefix}" 775f9996aaSopenharmony_ci } 785f9996aaSopenharmony_ci set_default_toolchain("//build/lite/toolchain:${board_toolchain}") 795f9996aaSopenharmony_ci if (board_toolchain_type == "gcc") { 805f9996aaSopenharmony_ci ohos_current_cc_command = "${compile_prefix}gcc$toolchain_cmd_suffix" 815f9996aaSopenharmony_ci ohos_current_cxx_command = "${compile_prefix}g++$toolchain_cmd_suffix" 825f9996aaSopenharmony_ci ohos_current_ar_command = "${compile_prefix}ar$toolchain_cmd_suffix" 835f9996aaSopenharmony_ci ohos_current_ld_command = ohos_current_cc_command 845f9996aaSopenharmony_ci ohos_current_strip_command = 855f9996aaSopenharmony_ci "${compile_prefix}strip$toolchain_cmd_suffix --strip-unneeded" 865f9996aaSopenharmony_ci default_target_configs = [ "//build/lite/config:gcc_opt" ] 875f9996aaSopenharmony_ci } else if (board_toolchain_type == "clang") { 885f9996aaSopenharmony_ci ohos_current_cc_command = "${compile_prefix}clang$toolchain_cmd_suffix" 895f9996aaSopenharmony_ci ohos_current_cxx_command = "${compile_prefix}clang++$toolchain_cmd_suffix" 905f9996aaSopenharmony_ci compile_prefix += "llvm-" 915f9996aaSopenharmony_ci ohos_current_ar_command = "${compile_prefix}ar$toolchain_cmd_suffix" 925f9996aaSopenharmony_ci ohos_current_ld_command = ohos_current_cc_command 935f9996aaSopenharmony_ci ohos_current_strip_command = 945f9996aaSopenharmony_ci "${compile_prefix}strip$toolchain_cmd_suffix --strip-unneeded" 955f9996aaSopenharmony_ci default_target_configs = [ "//build/lite/config:clang_opt" ] 965f9996aaSopenharmony_ci } else if (board_toolchain_type == "iccarm") { 975f9996aaSopenharmony_ci ohos_current_cc_command = "${compile_prefix}iccarm$toolchain_cmd_suffix" 985f9996aaSopenharmony_ci ohos_current_cxx_command = "${compile_prefix}iccarm$toolchain_cmd_suffix" 995f9996aaSopenharmony_ci ohos_current_ar_command = "${compile_prefix}iarchive$toolchain_cmd_suffix" 1005f9996aaSopenharmony_ci ohos_current_as_command = "${compile_prefix}iasmarm$toolchain_cmd_suffix" 1015f9996aaSopenharmony_ci ohos_current_ld_command = "${compile_prefix}ilinkarm$toolchain_cmd_suffix" 1025f9996aaSopenharmony_ci } 1035f9996aaSopenharmony_ci 1045f9996aaSopenharmony_ci # Overwrite ld cmd by customed cmd. 1055f9996aaSopenharmony_ci if (defined(board_customed_ld_cmd) && board_customed_ld_cmd != "") { 1065f9996aaSopenharmony_ci ohos_current_ld_command = board_customed_ld_cmd 1075f9996aaSopenharmony_ci } 1085f9996aaSopenharmony_ci} else { 1095f9996aaSopenharmony_ci # OHOS default toolchain 1105f9996aaSopenharmony_ci ohos_build_compiler = "clang" 1115f9996aaSopenharmony_ci ohos_clang_toolchain_dir = rebase_path("${ohos_build_compiler_dir}/bin") 1125f9996aaSopenharmony_ci compile_prefix += "$ohos_clang_toolchain_dir/" 1135f9996aaSopenharmony_ci ohos_current_cc_command = "${compile_prefix}clang$toolchain_cmd_suffix" 1145f9996aaSopenharmony_ci ohos_current_cxx_command = "${compile_prefix}clang++$toolchain_cmd_suffix" 1155f9996aaSopenharmony_ci compile_prefix += "llvm-" 1165f9996aaSopenharmony_ci ohos_current_ar_command = "${compile_prefix}ar$toolchain_cmd_suffix" 1175f9996aaSopenharmony_ci ohos_current_ld_command = ohos_current_cxx_command 1185f9996aaSopenharmony_ci ohos_current_strip_command = 1195f9996aaSopenharmony_ci "${compile_prefix}strip$toolchain_cmd_suffix --strip-unneeded" 1205f9996aaSopenharmony_ci set_default_toolchain("//build/lite/toolchain:linux_x86_64_ohos_clang") 1215f9996aaSopenharmony_ci default_target_configs = [ "//build/lite/config:ohos_clang" ] 1225f9996aaSopenharmony_ci default_target_configs += [ "//build/lite/config:clang_opt" ] 1235f9996aaSopenharmony_ci} 1245f9996aaSopenharmony_ci 1255f9996aaSopenharmony_ciif (board_toolchain_type != "iccarm") { 1265f9996aaSopenharmony_ci default_target_configs += [ 1275f9996aaSopenharmony_ci "//build/lite/config:board_config", 1285f9996aaSopenharmony_ci "//build/lite/config:cpu_arch", 1295f9996aaSopenharmony_ci "//build/lite/config:common", 1305f9996aaSopenharmony_ci "//build/lite/config:default_link_path", 1315f9996aaSopenharmony_ci "//build/lite/config:language_c", 1325f9996aaSopenharmony_ci "//build/lite/config:language_cpp", 1335f9996aaSopenharmony_ci "//build/lite/config:kernel_macros", 1345f9996aaSopenharmony_ci ] 1355f9996aaSopenharmony_ci if (ohos_build_type == "debug") { 1365f9996aaSopenharmony_ci default_target_configs += [ "//build/lite/config:debug" ] 1375f9996aaSopenharmony_ci } else if (ohos_build_type == "release") { 1385f9996aaSopenharmony_ci default_target_configs += [ "//build/lite/config:release" ] 1395f9996aaSopenharmony_ci } 1405f9996aaSopenharmony_ci 1415f9996aaSopenharmony_ci if (ohos_kernel_type == "liteos_m") { 1425f9996aaSopenharmony_ci default_target_configs += [ "//build/lite/config:stack_protector" ] 1435f9996aaSopenharmony_ci } 1445f9996aaSopenharmony_ci} 1455f9996aaSopenharmony_ci 1465f9996aaSopenharmony_ciif (ohos_kernel_type == "liteos_a") { 1475f9996aaSopenharmony_ci default_target_configs += 1485f9996aaSopenharmony_ci [ "//build/lite/config/kernel/liteos/cortex_a:default" ] 1495f9996aaSopenharmony_ci} 1505f9996aaSopenharmony_ci 1515f9996aaSopenharmony_ciif (ohos_kernel_type == "liteos_a" || ohos_kernel_type == "linux") { 1525f9996aaSopenharmony_ci default_target_configs += [ 1535f9996aaSopenharmony_ci "//build/lite/config:security", 1545f9996aaSopenharmony_ci "//build/lite/config:exceptions", 1555f9996aaSopenharmony_ci ] 1565f9996aaSopenharmony_ci} 1575f9996aaSopenharmony_cidefault_shared_library_configs = 1585f9996aaSopenharmony_ci default_target_configs + [ "//build/lite/config:shared_library_config" ] 1595f9996aaSopenharmony_cidefault_static_library_configs = default_target_configs 1605f9996aaSopenharmony_cidefault_executable_configs = default_static_library_configs 1615f9996aaSopenharmony_ciif (ohos_kernel_type != "liteos_m" && ohos_kernel_type != "uniproton") { 1625f9996aaSopenharmony_ci default_static_library_configs += [ "//build/lite/config:static_pie_config" ] 1635f9996aaSopenharmony_ci default_executable_configs += [ "//build/lite/config:static_pie_config" ] 1645f9996aaSopenharmony_ci default_executable_configs += [ "//build/lite/config:pie_executable_config" ] 1655f9996aaSopenharmony_ci} 1665f9996aaSopenharmony_ci 1675f9996aaSopenharmony_ciset_defaults("executable") { 1685f9996aaSopenharmony_ci configs = default_executable_configs 1695f9996aaSopenharmony_ci configs += [ "//build/lite/config:board_exe_ld_flags" ] 1705f9996aaSopenharmony_ci} 1715f9996aaSopenharmony_ci 1725f9996aaSopenharmony_ciset_defaults("static_library") { 1735f9996aaSopenharmony_ci configs = default_static_library_configs 1745f9996aaSopenharmony_ci} 1755f9996aaSopenharmony_ci 1765f9996aaSopenharmony_ciset_defaults("shared_library") { 1775f9996aaSopenharmony_ci configs = default_shared_library_configs 1785f9996aaSopenharmony_ci} 1795f9996aaSopenharmony_ci 1805f9996aaSopenharmony_ciset_defaults("source_set") { 1815f9996aaSopenharmony_ci configs = default_target_configs 1825f9996aaSopenharmony_ci} 1835f9996aaSopenharmony_ci 1845f9996aaSopenharmony_ci_target_type_list = [ 1855f9996aaSopenharmony_ci "executable", 1865f9996aaSopenharmony_ci "static_library", 1875f9996aaSopenharmony_ci "shared_library", 1885f9996aaSopenharmony_ci "source_set", 1895f9996aaSopenharmony_ci "action", 1905f9996aaSopenharmony_ci "action_foreach", 1915f9996aaSopenharmony_ci] 1925f9996aaSopenharmony_ci 1935f9996aaSopenharmony_ciforeach(_target_type, _target_type_list) { 1945f9996aaSopenharmony_ci template(_target_type) { 1955f9996aaSopenharmony_ci target(_target_type, target_name) { 1965f9996aaSopenharmony_ci forward_variables_from(invoker, "*", [ "no_default_deps" ]) 1975f9996aaSopenharmony_ci if (!defined(deps)) { 1985f9996aaSopenharmony_ci deps = [] 1995f9996aaSopenharmony_ci } 2005f9996aaSopenharmony_ci if (!defined(invoker.no_default_deps) || !invoker.no_default_deps) { 2015f9996aaSopenharmony_ci deps += [ "//build/lite:prebuilts" ] 2025f9996aaSopenharmony_ci } 2035f9996aaSopenharmony_ci } 2045f9996aaSopenharmony_ci } 2055f9996aaSopenharmony_ci} 206