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_cideclare_args() { 14e509ee18Sopenharmony_ci ark_standalone_build = true 15e509ee18Sopenharmony_ci use_musl = true 16e509ee18Sopenharmony_ci build_root = "//arkcompiler/toolchain/build" 17e509ee18Sopenharmony_ci run_with_qemu = false 18e509ee18Sopenharmony_ci so_dir_for_qemu = "common/common/libc" 19e509ee18Sopenharmony_ci enable_lto_O0 = false 20e509ee18Sopenharmony_ci disable_force_gc = false 21e509ee18Sopenharmony_ci timeout = 1200 22e509ee18Sopenharmony_ci} 23e509ee18Sopenharmony_ci 24e509ee18Sopenharmony_cicheck_mac_system_and_cpu_script = 25e509ee18Sopenharmony_ci rebase_path("$build_root/scripts/check_mac_system_and_cpu.py") 26e509ee18Sopenharmony_cicheck_darwin_system_result = 27e509ee18Sopenharmony_ci exec_script(check_mac_system_and_cpu_script, [ "system" ], "string") 28e509ee18Sopenharmony_ci 29e509ee18Sopenharmony_ciif (check_darwin_system_result != "") { 30e509ee18Sopenharmony_ci check_mac_host_cpu_result = 31e509ee18Sopenharmony_ci exec_script(check_mac_system_and_cpu_script, [ "cpu" ], "string") 32e509ee18Sopenharmony_ci if (check_mac_host_cpu_result != "") { 33e509ee18Sopenharmony_ci host_cpu = "arm64" 34e509ee18Sopenharmony_ci } 35e509ee18Sopenharmony_ci} 36e509ee18Sopenharmony_ci 37e509ee18Sopenharmony_ciif (host_os == "linux") { 38e509ee18Sopenharmony_ci host_platform_dir = "linux-x86_64" 39e509ee18Sopenharmony_ci} else if (host_os == "mac") { 40e509ee18Sopenharmony_ci if (host_cpu == "arm64") { 41e509ee18Sopenharmony_ci host_platform_dir = "darwin-arm64" 42e509ee18Sopenharmony_ci } else { 43e509ee18Sopenharmony_ci host_platform_dir = "darwin-x86_64" 44e509ee18Sopenharmony_ci } 45e509ee18Sopenharmony_ci} else { 46e509ee18Sopenharmony_ci assert(false, "Unsupported host_os: $host_os") 47e509ee18Sopenharmony_ci} 48e509ee18Sopenharmony_ci 49e509ee18Sopenharmony_cideclare_args() { 50e509ee18Sopenharmony_ci # Debug build. Enabling official builds automatically sets is_debug to false. 51e509ee18Sopenharmony_ci is_debug = false 52e509ee18Sopenharmony_ci is_standard_system = false 53e509ee18Sopenharmony_ci} 54e509ee18Sopenharmony_ci 55e509ee18Sopenharmony_cideclare_args() { 56e509ee18Sopenharmony_ci # Enable mini debug info, it will add .gnu_debugdata 57e509ee18Sopenharmony_ci # section in each stripped sofile 58e509ee18Sopenharmony_ci 59e509ee18Sopenharmony_ci # Currently, we don't publish ohos-adapted python on m1 platform, 60e509ee18Sopenharmony_ci # So that we disable mini debug info on m1 platform until 61e509ee18Sopenharmony_ci # ohos-adapted python publishing on m1 platform 62e509ee18Sopenharmony_ci if (host_os == "mac") { 63e509ee18Sopenharmony_ci full_mini_debug = false 64e509ee18Sopenharmony_ci } else { 65e509ee18Sopenharmony_ci full_mini_debug = true 66e509ee18Sopenharmony_ci } 67e509ee18Sopenharmony_ci} 68e509ee18Sopenharmony_ci 69e509ee18Sopenharmony_cideclare_args() { 70e509ee18Sopenharmony_ci host_toolchain = "" 71e509ee18Sopenharmony_ci custom_toolchain = "" 72e509ee18Sopenharmony_ci target_toolchain = "" 73e509ee18Sopenharmony_ci 74e509ee18Sopenharmony_ci is_clang = current_os != "linux" || 75e509ee18Sopenharmony_ci (current_cpu != "s390x" && current_cpu != "s390" && 76e509ee18Sopenharmony_ci current_cpu != "ppc64" && current_cpu != "ppc" && 77e509ee18Sopenharmony_ci current_cpu != "mips" && current_cpu != "mips64") 78e509ee18Sopenharmony_ci 79e509ee18Sopenharmony_ci target_platform = "phone" 80e509ee18Sopenharmony_ci 81e509ee18Sopenharmony_ci is_official_build = false 82e509ee18Sopenharmony_ci 83e509ee18Sopenharmony_ci is_component_build = false 84e509ee18Sopenharmony_ci 85e509ee18Sopenharmony_ci # build for cross platform 86e509ee18Sopenharmony_ci is_arkui_x = false 87e509ee18Sopenharmony_ci} 88e509ee18Sopenharmony_ci 89e509ee18Sopenharmony_ciis_wearable_product = "${target_platform}" == "wearable" 90e509ee18Sopenharmony_ci 91e509ee18Sopenharmony_ciis_emulator = false 92e509ee18Sopenharmony_ci 93e509ee18Sopenharmony_ciif (target_os == "ohos" && target_cpu == "x86_64") { 94e509ee18Sopenharmony_ci is_emulator = true 95e509ee18Sopenharmony_ci} 96e509ee18Sopenharmony_ci 97e509ee18Sopenharmony_ci# Determine host_toolchain. (like a constant in a build on a certain host) 98e509ee18Sopenharmony_ciif (host_toolchain == "") { 99e509ee18Sopenharmony_ci if (host_os == "linux") { 100e509ee18Sopenharmony_ci if (target_os != "linux") { 101e509ee18Sopenharmony_ci host_toolchain = "$build_root/toolchain/linux:clang_$host_cpu" 102e509ee18Sopenharmony_ci } else if (is_clang) { 103e509ee18Sopenharmony_ci host_toolchain = "$build_root/toolchain/linux:clang_$host_cpu" 104e509ee18Sopenharmony_ci } else { 105e509ee18Sopenharmony_ci host_toolchain = "$build_root/toolchain/linux:$host_cpu" 106e509ee18Sopenharmony_ci } 107e509ee18Sopenharmony_ci } else if (host_os == "mac") { 108e509ee18Sopenharmony_ci host_toolchain = "$build_root/toolchain/mac:clang_$host_cpu" 109e509ee18Sopenharmony_ci } else { 110e509ee18Sopenharmony_ci assert(false, "Unsupported host_os: $host_os") 111e509ee18Sopenharmony_ci } 112e509ee18Sopenharmony_ci} 113e509ee18Sopenharmony_ci 114e509ee18Sopenharmony_ci# Determine default_toolchain. 115e509ee18Sopenharmony_ci# (like a constant in a build for a certain target on a certain host) 116e509ee18Sopenharmony_ci_default_toolchain = host_toolchain 117e509ee18Sopenharmony_ciif (target_os == "ohos") { 118e509ee18Sopenharmony_ci _default_toolchain = "$build_root/toolchain/ark:ark_clang_${target_cpu}" 119e509ee18Sopenharmony_ci} else if (target_os == "linux" && target_cpu == "x64") { 120e509ee18Sopenharmony_ci _default_toolchain = "$build_root/toolchain/linux:clang_x64" 121e509ee18Sopenharmony_ci} else if (target_os == "linux" && target_cpu == "x86") { 122e509ee18Sopenharmony_ci _default_toolchain = "$build_root/toolchain/linux:clang_x86" 123e509ee18Sopenharmony_ci} else if (target_os == "mingw" && target_cpu == "x86_64") { 124e509ee18Sopenharmony_ci _default_toolchain = "$build_root/toolchain/mingw:mingw_x86_64" 125e509ee18Sopenharmony_ci} else if (target_os == "android" && target_cpu == "arm64") { 126e509ee18Sopenharmony_ci _default_toolchain = "$build_root/toolchain/aosp:aosp_clang_arm64" 127e509ee18Sopenharmony_ci} else if (target_os == "mac" && target_cpu == "arm64") { 128e509ee18Sopenharmony_ci _default_toolchain = "$build_root/toolchain/mac:clang_arm64" 129e509ee18Sopenharmony_ci} 130e509ee18Sopenharmony_ciif (custom_toolchain != "") { 131e509ee18Sopenharmony_ci set_default_toolchain(custom_toolchain) 132e509ee18Sopenharmony_ci} else if (_default_toolchain != "") { 133e509ee18Sopenharmony_ci set_default_toolchain(_default_toolchain) 134e509ee18Sopenharmony_ci} 135e509ee18Sopenharmony_ci 136e509ee18Sopenharmony_ci# Determine current_cpu and current_os. 137e509ee18Sopenharmony_ci# (like a variable which could be changed during tracing deps) 138e509ee18Sopenharmony_ciif (current_cpu == "") { 139e509ee18Sopenharmony_ci current_cpu = target_cpu 140e509ee18Sopenharmony_ci} 141e509ee18Sopenharmony_ciif (current_os == "") { 142e509ee18Sopenharmony_ci current_os = target_os 143e509ee18Sopenharmony_ci} 144e509ee18Sopenharmony_ci 145e509ee18Sopenharmony_ci# Variables like "is_..." are already used to represent for 146e509ee18Sopenharmony_ci# "current_os == "..."" in most of the repositories. Thus, we need to make them 147e509ee18Sopenharmony_ci# change with the change of current_os. 148e509ee18Sopenharmony_ciif (current_os == "mac") { 149e509ee18Sopenharmony_ci is_aix = false 150e509ee18Sopenharmony_ci is_ohos = false 151e509ee18Sopenharmony_ci is_chromeos = false 152e509ee18Sopenharmony_ci is_linux = false 153e509ee18Sopenharmony_ci is_mac = true 154e509ee18Sopenharmony_ci is_nacl = false 155e509ee18Sopenharmony_ci is_posix = true 156e509ee18Sopenharmony_ci is_win = false 157e509ee18Sopenharmony_ci is_mingw = false 158e509ee18Sopenharmony_ci is_android = false 159e509ee18Sopenharmony_ci is_ios = false 160e509ee18Sopenharmony_ci} else if (current_os == "ohos") { 161e509ee18Sopenharmony_ci is_ohos = true 162e509ee18Sopenharmony_ci is_linux = false 163e509ee18Sopenharmony_ci is_mac = false 164e509ee18Sopenharmony_ci is_posix = true 165e509ee18Sopenharmony_ci is_win = false 166e509ee18Sopenharmony_ci is_mingw = false 167e509ee18Sopenharmony_ci is_android = false 168e509ee18Sopenharmony_ci is_ios = false 169e509ee18Sopenharmony_ci} else if (current_os == "linux") { 170e509ee18Sopenharmony_ci is_ohos = false 171e509ee18Sopenharmony_ci is_linux = true 172e509ee18Sopenharmony_ci is_mac = false 173e509ee18Sopenharmony_ci is_posix = true 174e509ee18Sopenharmony_ci is_win = false 175e509ee18Sopenharmony_ci is_mingw = false 176e509ee18Sopenharmony_ci is_android = false 177e509ee18Sopenharmony_ci is_ios = false 178e509ee18Sopenharmony_ci} else if (current_os == "mingw") { 179e509ee18Sopenharmony_ci is_ohos = false 180e509ee18Sopenharmony_ci is_linux = false 181e509ee18Sopenharmony_ci is_mac = false 182e509ee18Sopenharmony_ci is_posix = true 183e509ee18Sopenharmony_ci is_win = false 184e509ee18Sopenharmony_ci is_mingw = true 185e509ee18Sopenharmony_ci is_android = false 186e509ee18Sopenharmony_ci is_ios = false 187e509ee18Sopenharmony_ci} else if (current_os == "android") { 188e509ee18Sopenharmony_ci is_ohos = false 189e509ee18Sopenharmony_ci is_linux = false 190e509ee18Sopenharmony_ci is_mac = false 191e509ee18Sopenharmony_ci is_posix = true 192e509ee18Sopenharmony_ci is_win = false 193e509ee18Sopenharmony_ci is_mingw = false 194e509ee18Sopenharmony_ci is_android = true 195e509ee18Sopenharmony_ci is_ios = false 196e509ee18Sopenharmony_ci} 197e509ee18Sopenharmony_ci 198e509ee18Sopenharmony_cidefault_compiler_configs = [ 199e509ee18Sopenharmony_ci "$build_root/config/compiler:default_warnings", 200e509ee18Sopenharmony_ci "$build_root/config/compiler:compiler", 201e509ee18Sopenharmony_ci "$build_root/config/compiler:default_include_dirs", 202e509ee18Sopenharmony_ci "$build_root/config/compiler:default_optimization", 203e509ee18Sopenharmony_ci "$build_root/config/compiler:runtime_config", 204e509ee18Sopenharmony_ci "$build_root/config:default_libs", 205e509ee18Sopenharmony_ci "$build_root/config/compiler:ark_code", 206e509ee18Sopenharmony_ci "$build_root/config/compiler:no_rtti", 207e509ee18Sopenharmony_ci] 208e509ee18Sopenharmony_ci 209e509ee18Sopenharmony_cidefault_static_library_configs = default_compiler_configs 210e509ee18Sopenharmony_cidefault_source_set_configs = default_compiler_configs 211e509ee18Sopenharmony_cidefault_shared_library_configs = 212e509ee18Sopenharmony_ci default_compiler_configs + [ "$build_root/config:shared_library_config" ] 213e509ee18Sopenharmony_cidefault_executable_configs = 214e509ee18Sopenharmony_ci default_compiler_configs + [ "$build_root/config:executable_config" ] 215e509ee18Sopenharmony_ci 216e509ee18Sopenharmony_ciset_defaults("executable") { 217e509ee18Sopenharmony_ci configs = default_executable_configs 218e509ee18Sopenharmony_ci} 219e509ee18Sopenharmony_ci 220e509ee18Sopenharmony_ciset_defaults("static_library") { 221e509ee18Sopenharmony_ci configs = default_static_library_configs 222e509ee18Sopenharmony_ci} 223e509ee18Sopenharmony_ci 224e509ee18Sopenharmony_ciset_defaults("shared_library") { 225e509ee18Sopenharmony_ci configs = default_shared_library_configs 226e509ee18Sopenharmony_ci} 227e509ee18Sopenharmony_ci 228e509ee18Sopenharmony_ciset_defaults("source_set") { 229e509ee18Sopenharmony_ci configs = default_source_set_configs 230e509ee18Sopenharmony_ci} 231e509ee18Sopenharmony_ci 232e509ee18Sopenharmony_citarget_list = [ 233e509ee18Sopenharmony_ci "static_library", 234e509ee18Sopenharmony_ci "shared_library", 235e509ee18Sopenharmony_ci "source_set", 236e509ee18Sopenharmony_ci "executable", 237e509ee18Sopenharmony_ci] 238e509ee18Sopenharmony_ci 239e509ee18Sopenharmony_ciforeach(target, target_list) { 240e509ee18Sopenharmony_ci template(target) { 241e509ee18Sopenharmony_ci target(target, target_name) { 242e509ee18Sopenharmony_ci forward_variables_from(invoker, "*", [ "no_default_deps" ]) 243e509ee18Sopenharmony_ci if (!defined(deps)) { 244e509ee18Sopenharmony_ci deps = [] 245e509ee18Sopenharmony_ci } 246e509ee18Sopenharmony_ci if (!defined(invoker.no_default_deps) || !invoker.no_default_deps) { 247e509ee18Sopenharmony_ci deps += [ "$build_root/config:${target}_deps" ] 248e509ee18Sopenharmony_ci } 249e509ee18Sopenharmony_ci } 250e509ee18Sopenharmony_ci } 251e509ee18Sopenharmony_ci} 252