1# Copyright (c) 2023 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14import("//arkcompiler/ets_runtime/js_runtime_config.gni") 15 16include_directories = [ 17 "${MAPLEALL_ROOT}/maple_be/include/cg", 18 "${MAPLEALL_ROOT}/maple_be/include/litecg", 19 "${MAPLEALL_ROOT}/maple_be/include/ad", 20 "${MAPLEALL_ROOT}/maple_pgo/include", 21 "${MAPLEALL_ROOT}/maple_be/include/ad/target", 22 "${MAPLEALL_ROOT}/maple_be/include/be", 23 "${MAPLEALL_ROOT}/maple_driver/include", 24 "${MAPLEALL_ROOT}/maple_util/include", 25 "${MAPLEALL_ROOT}/maple_ir/include", 26 "${MAPLEALL_ROOT}/maple_me/include", 27 "${MAPLEALL_ROOT}/mpl2mpl/include", 28 "${MAPLEALL_ROOT}/mempool/include", 29 "${MAPLEALL_ROOT}/maple_ipa/include", 30 "${MAPLEALL_ROOT}/maple_ipa/include/old", 31 "${MAPLEALL_ROOT}/maple_phase/include", 32] 33if (enable_jit_code_sign) { 34 include_directories += [ "$js_root/ecmascript/compiler" ] 35} 36 37deps_libcg = [ 38 ":libmplbe", 39 ":libmplad", 40 "${MAPLEALL_ROOT}/mempool:libmempool", 41 "${MAPLEALL_ROOT}/maple_phase:libmplphase", 42 "${MAPLEALL_ROOT}/mpl2mpl:libmpl2mpl", 43 "${MAPLEALL_ROOT}/maple_ir:libmplir", 44 "${MAPLEALL_ROOT}/maple_util:libmplutil", 45 "${MAPLEALL_ROOT}/maple_me:libmplme", 46 "${MAPLEALL_ROOT}/maple_pgo:libmplpgo", 47] 48 49deps_libmplbe = [ ":libcglowerer" ] 50 51if (TARGET == "aarch64" || TARGET == "x86_64") { 52 include_directories += [ 53 "${MAPLEALL_ROOT}/maple_be/include/cg/x86_64", 54 "${MAPLEALL_ROOT}/maple_be/include/be/x86_64", 55 "${MAPLEALL_ROOT}/maple_be/include/cg/aarch64", 56 "${MAPLEALL_ROOT}/maple_be/include/be/aarch64", 57 ] 58 deps_libcg += [ 59 ":libcgx8664", 60 ":libcgaarch64", 61 ":libcgphases", 62 "${MAPLEALL_ROOT}/maple_driver:libmaple_driver", 63 ] 64} 65 66if (TARGET == "riscv64") { 67 include_directories += [ 68 "${MAPLEALL_ROOT}/maple_be/include/cg/riscv64", 69 "${MAPLEALL_ROOT}/maple_be/include/be/riscv64", 70 ] 71 deps_libcg += [ ":libcgriscv64" ] 72} 73 74if (TARGET == "ark") { 75 include_directories += [ 76 "${MAPLEALL_ROOT}/maple_be/include/cg/ark", 77 "${MAPLEALL_ROOT}/maple_be/include/be/ark", 78 ] 79 deps_libcg += [ ":libcgark" ] 80} 81 82src_libmplad = [ "src/ad/mad.cpp" ] 83 84src_libcglowerer = [ 85 "src/be/bbt.cpp", 86 "src/be/trycatchblockslower.cpp", 87 "src/be/lower.cpp", 88] 89 90src_libmplbe = [ 91 "src/be/becommon.cpp", 92 "src/be/switch_lowerer.cpp", 93 "src/be/rt.cpp", 94] 95 96src_libcgaarch64 = [ 97 "src/cg/aarch64/aarch64_targetinfo.cpp", 98 "src/cg/aarch64/aarch64_abi.cpp", 99 "src/cg/aarch64/aarch64_call_conv.cpp", 100 "src/cg/aarch64/mpl_atomic.cpp", 101 "src/cg/aarch64/aarch64_cfi_generator.cpp", 102 "src/cg/aarch64/aarch64_cgfunc.cpp", 103 "src/cg/aarch64/aarch64_dependence.cpp", 104 "src/cg/aarch64/aarch64_data_dep_base.cpp", 105 "src/cg/aarch64/aarch64_ebo.cpp", 106 "src/cg/aarch64/aarch64_emitter.cpp", 107 "src/cg/aarch64/aarch64_obj_emitter.cpp", 108 "src/cg/aarch64/aarch64_fixshortbranch.cpp", 109 "src/cg/aarch64/aarch64_global.cpp", 110 "src/cg/aarch64/aarch64_proepilog.cpp", 111 "src/cg/aarch64/aarch64_operand.cpp", 112 "src/cg/aarch64/aarch64_color_ra.cpp", 113 "src/cg/aarch64/aarch64_reg_info.cpp", 114 "src/cg/aarch64/aarch64_ssa.cpp", 115 "src/cg/aarch64/aarch64_prop.cpp", 116 "src/cg/aarch64/aarch64_dce.cpp", 117 "src/cg/aarch64/aarch64_phi_elimination.cpp", 118 "src/cg/aarch64/aarch64_reg_coalesce.cpp", 119 "src/cg/aarch64/aarch64_ico.cpp", 120 "src/cg/aarch64/aarch64_insn.cpp", 121 "src/cg/aarch64/aarch64_isa.cpp", 122 "src/cg/aarch64/aarch64_memlayout.cpp", 123 "src/cg/aarch64/aarch64_args.cpp", 124 "src/cg/aarch64/aarch64_live.cpp", 125 "src/cg/aarch64/aarch64_yieldpoint.cpp", 126 "src/cg/aarch64/aarch64_offset_adjust.cpp", 127 "src/cg/aarch64/aarch64_optimize_common.cpp", 128 "src/cg/aarch64/aarch64_peep.cpp", 129 "src/cg/aarch64/aarch64_reaching.cpp", 130 "src/cg/aarch64/aarch64_schedule.cpp", 131 "src/cg/aarch64/aarch64_strldr.cpp", 132 "src/cg/aarch64/aarch64_ra_opt.cpp", 133 "src/cg/aarch64/aarch64_alignment.cpp", 134 "src/cg/aarch64/aarch64_regsaves.cpp", 135 "src/cg/aarch64/aarch64_utils.cpp", 136 "src/cg/aarch64/aarch64_cg.cpp", 137 "src/cg/aarch64/aarch64_validbit_opt.cpp", 138 "src/cg/aarch64/aarch64_cfgo.cpp", 139 "src/cg/aarch64/aarch64_imm_valid.cpp", 140 "src/cg/aarch64/aarch64_local_schedule.cpp", 141] 142 143src_libcgx86phases = [ 144 "src/cg/peep.cpp", 145 "src/cg/alignment.cpp", 146 "src/cg/reaching.cpp", 147 "src/cg/local_opt.cpp", 148 "src/cg/cfgo.cpp", 149 "src/cg/cg_dominance.cpp", 150 "src/cg/cg_stackmap_computation.cpp", 151] 152 153src_libcgx8664 = [ 154 "src/cg/x86_64/x64_targetinfo.cpp", 155 "src/cg/x86_64/x64_cg.cpp", 156 "src/cg/x86_64/x64_MPIsel.cpp", 157 "src/cg/x86_64/x64_cgfunc.cpp", 158 "src/cg/x86_64/x64_memlayout.cpp", 159 "src/cg/x86_64/x64_emitter.cpp", 160 "src/cg/x86_64/x64_abi.cpp", 161 "src/cg/x86_64/x64_call_conv.cpp", 162 "src/cg/x86_64/x64_standardize.cpp", 163 "src/cg/x86_64/x64_live.cpp", 164 "src/cg/x86_64/x64_reg_info.cpp", 165 "src/cg/x86_64/x64_proepilog.cpp", 166 "src/cg/x86_64/x64_args.cpp", 167 "src/cg/x86_64/x64_peep.cpp", 168 "src/cg/x86_64/x64_reaching.cpp", 169 "src/cg/x86_64/x64_local_opt.cpp", 170 "src/cg/x86_64/x64_cfgo.cpp", 171 "src/cg/x86_64/x64_isa.cpp", 172 "src/cg/x86_64/x64_optimize_common.cpp", 173 "src/cg/x86_64/elf_assembler.cpp", 174 "src/cg/x86_64/asm_assembler.cpp", 175] 176 177src_libcgriscv64 = [ 178 "src/cg/riscv64/mpl_atomic.cpp", 179 "src/cg/riscv64/riscv64_abi.cpp", 180 "src/cg/riscv64/riscv64_args.cpp", 181 "src/cg/riscv64/riscv64_cg.cpp", 182 "src/cg/riscv64/riscv64_cgfunc.cpp", 183 "src/cg/riscv64/riscv64_color_ra.cpp", 184 "src/cg/riscv64/riscv64_dependence.cpp", 185 "src/cg/riscv64/riscv64_ebo.cpp", 186 "src/cg/riscv64/riscv64_emitter.cpp", 187 "src/cg/riscv64/riscv64_fixshortbranch.cpp", 188 "src/cg/riscv64/riscv64_global.cpp", 189 "src/cg/riscv64/riscv64_ico.cpp", 190 "src/cg/riscv64/riscv64_immediate.cpp", 191 "src/cg/riscv64/riscv64_insn.cpp", 192 "src/cg/riscv64/riscv64_isa.cpp", 193 "src/cg/riscv64/riscv64_live.cpp", 194 "src/cg/riscv64/riscv64_lsra.cpp", 195 "src/cg/riscv64/riscv64_memlayout.cpp", 196 "src/cg/riscv64/riscv64_offset_adjust.cpp", 197 "src/cg/riscv64/riscv64_operand.cpp", 198 "src/cg/riscv64/riscv64_optimize_common.cpp", 199 "src/cg/riscv64/riscv64_peep.cpp", 200 "src/cg/riscv64/riscv64_proepilog.cpp", 201 "src/cg/riscv64/riscv64_reaching.cpp", 202 "src/cg/riscv64/riscv64_reg_alloc.cpp", 203 "src/cg/riscv64/riscv64_schedule.cpp", 204 "src/cg/riscv64/riscv64_strldr.cpp", 205 "src/cg/riscv64/riscv64_yieldpoint.cpp", 206 "src/cg/riscv64/riscv64_ra_opt.cpp", 207] 208 209src_libcgark = [ "src/cg/ark/foo.cpp" ] 210 211src_libcgphases = [ 212 "src/cg/cfi_generator.cpp", 213 "src/cg/cfgo.cpp", 214 "src/cg/local_opt.cpp", 215 "src/cg/ebo.cpp", 216 "src/cg/ra_opt.cpp", 217 "src/cg/cg_ssa.cpp", 218 "src/cg/cg_prop.cpp", 219 "src/cg/cg_dce.cpp", 220 "src/cg/cg_phi_elimination.cpp", 221 "src/cg/reg_coalesce.cpp", 222 "src/cg/global.cpp", 223 "src/cg/ico.cpp", 224 "src/cg/peep.cpp", 225 "src/cg/pressure.cpp", 226 "src/cg/reaching.cpp", 227 "src/cg/schedule.cpp", 228 "src/cg/strldr.cpp", 229 "src/cg/cg_dominance.cpp", 230 "src/cg/cg_pre.cpp", 231 "src/cg/cg_occur.cpp", 232 "src/cg/cg_ssu_pre.cpp", 233 "src/cg/cg_ssa_pre.cpp", 234 "src/cg/regsaves.cpp", 235 "src/cg/cg_critical_edge.cpp", 236 "src/cg/alignment.cpp", 237 "src/cg/cg_validbit_opt.cpp", 238 "src/cg/cg_stackmap_computation.cpp", 239 "src/cg/control_dep_analysis.cpp", 240 "src/cg/data_dep_base.cpp", 241 "src/cg/data_dep_analysis.cpp", 242 "src/cg/base_schedule.cpp", 243 "src/cg/list_scheduler.cpp", 244 "src/cg/local_schedule.cpp", 245] 246 247src_libcg = [ 248 "src/cg/args.cpp", 249 "src/cg/cg_irbuilder.cpp", 250 "src/cg/cfi.cpp", 251 "src/cg/cgbb.cpp", 252 "src/cg/operand.cpp", 253 "src/cg/cgfunc.cpp", 254 "src/cg/cg_cfg.cpp", 255 "src/cg/cg_option.cpp", 256 "src/cg/cg_options.cpp", 257 "src/cg/dbg.cpp", 258 "src/cg/optimize_common.cpp", 259 "src/cg/eh_func.cpp", 260 "src/cg/emit.cpp", 261 "src/cg/obj_emit.cpp", 262 "src/cg/ifile.cpp", 263 "src/cg/live.cpp", 264 "src/cg/loop.cpp", 265 "src/cg/isel.cpp", 266 "src/cg/standardize.cpp", 267 "src/cg/memlayout.cpp", 268 "src/cg/yieldpoint.cpp", 269 "src/cg/label_creation.cpp", 270 "src/cg/offset_adjust.cpp", 271 "src/cg/reg_alloc.cpp", 272 "src/cg/reg_alloc_basic.cpp", 273 "src/cg/reg_alloc_lsra.cpp", 274 "src/cg/proepilog.cpp", 275 "src/cg/cg.cpp", 276 "src/cg/isa.cpp", 277 "src/cg/insn.cpp", 278 "src/cg/cg_phasemanager.cpp", 279 "src/litecg/litecg.cpp", 280 "src/litecg/lmir_builder.cpp", 281 "src/cg/target_registry.cpp", 282 "src/cg/target_select.cpp", 283] 284 285ohos_static_library("libmplad") { 286 stack_protector_ret = false 287 configs = [ "${MAPLEALL_ROOT}:mapleallcompilecfg" ] 288 sources = src_libmplad 289 include_dirs = include_directories 290 output_dir = "${root_out_dir}/lib/${HOST_ARCH}" 291 external_deps = [ "bounds_checking_function:libsec_static" ] 292 part_name = "ets_runtime" 293 subsystem_name = "arkcompiler" 294} 295 296ohos_source_set("libcglowerer") { 297 stack_protector_ret = false 298 if (enable_sanitize) { 299 sanitize = { 300 cfi = true 301 cfi_cross_dso = true 302 debug = false 303 } 304 branch_protector_ret = "pac_ret" 305 } 306 configs = [ "${MAPLEALL_ROOT}:mapleallcompilecfg" ] 307 sources = src_libcglowerer 308 include_dirs = include_directories 309 external_deps = [ "bounds_checking_function:libsec_static" ] 310 part_name = "ets_runtime" 311 subsystem_name = "arkcompiler" 312} 313 314ohos_static_library("libmplbe") { 315 stack_protector_ret = false 316 if (enable_sanitize) { 317 sanitize = { 318 cfi = true 319 cfi_cross_dso = true 320 debug = false 321 } 322 branch_protector_ret = "pac_ret" 323 } 324 configs = [ "${MAPLEALL_ROOT}:mapleallcompilecfg" ] 325 sources = src_libmplbe 326 deps = deps_libmplbe 327 include_dirs = include_directories 328 output_dir = "${root_out_dir}/lib/${HOST_ARCH}" 329 external_deps = [ "bounds_checking_function:libsec_static" ] 330 part_name = "ets_runtime" 331 subsystem_name = "arkcompiler" 332} 333 334ohos_source_set("libcgaarch64") { 335 stack_protector_ret = false 336 if (enable_sanitize) { 337 sanitize = { 338 cfi = true 339 cfi_cross_dso = true 340 debug = false 341 } 342 branch_protector_ret = "pac_ret" 343 } 344 configs = [ "${MAPLEALL_ROOT}:mapleallcompilecfg" ] 345 sources = src_libcgaarch64 346 include_dirs = include_directories 347 defines = [] 348 external_deps = [ "bounds_checking_function:libsec_static" ] 349 if (enable_jit_code_sign) { 350 defines += [ "JIT_ENABLE_CODE_SIGN" ] 351 external_deps += [ "code_signature:libjit_code_sign" ] 352 if (disable_fort_switch) { 353 defines += [ "JIT_FORT_DISABLE" ] 354 } 355 } 356 part_name = "ets_runtime" 357 subsystem_name = "arkcompiler" 358} 359 360ohos_source_set("libcgx8664") { 361 stack_protector_ret = false 362 if (enable_sanitize) { 363 sanitize = { 364 cfi = true 365 cfi_cross_dso = true 366 debug = false 367 } 368 branch_protector_ret = "pac_ret" 369 } 370 configs = [ "${MAPLEALL_ROOT}:mapleallcompilecfg" ] 371 sources = src_libcgx8664 372 include_dirs = include_directories 373 external_deps = [ "bounds_checking_function:libsec_static" ] 374 part_name = "ets_runtime" 375 subsystem_name = "arkcompiler" 376} 377 378ohos_source_set("libcgx86phases") { 379 stack_protector_ret = false 380 if (enable_sanitize) { 381 sanitize = { 382 cfi = true 383 cfi_cross_dso = true 384 debug = false 385 } 386 branch_protector_ret = "pac_ret" 387 } 388 configs = [ "${MAPLEALL_ROOT}:mapleallcompilecfg" ] 389 sources = src_libcgx86phases 390 include_dirs = include_directories 391 external_deps = [ "bounds_checking_function:libsec_static" ] 392 part_name = "ets_runtime" 393 subsystem_name = "arkcompiler" 394} 395 396ohos_source_set("libcgriscv64") { 397 stack_protector_ret = false 398 configs = [ "${MAPLEALL_ROOT}:mapleallcompilecfg" ] 399 sources = src_libcgriscv64 400 include_dirs = include_directories 401 external_deps = [ "bounds_checking_function:libsec_static" ] 402 part_name = "ets_runtime" 403 subsystem_name = "arkcompiler" 404} 405 406ohos_static_library("libcgark") { 407 stack_protector_ret = false 408 if (enable_sanitize) { 409 sanitize = { 410 cfi = true 411 cfi_cross_dso = true 412 debug = false 413 } 414 branch_protector_ret = "pac_ret" 415 } 416 configs = [ "${MAPLEALL_ROOT}:mapleallcompilecfg" ] 417 sources = src_libcgark 418 include_dirs = include_directories 419 external_deps = [ "bounds_checking_function:libsec_static" ] 420 part_name = "ets_runtime" 421 subsystem_name = "arkcompiler" 422} 423 424ohos_source_set("libcgphases") { 425 stack_protector_ret = false 426 if (enable_sanitize) { 427 sanitize = { 428 cfi = true 429 cfi_cross_dso = true 430 debug = false 431 } 432 branch_protector_ret = "pac_ret" 433 } 434 configs = [ "${MAPLEALL_ROOT}:mapleallcompilecfg" ] 435 sources = src_libcgphases 436 include_dirs = include_directories 437 external_deps = [ "bounds_checking_function:libsec_static" ] 438 part_name = "ets_runtime" 439 subsystem_name = "arkcompiler" 440} 441 442ohos_static_library("libcg") { 443 stack_protector_ret = false 444 if (enable_sanitize) { 445 sanitize = { 446 cfi = true 447 cfi_cross_dso = true 448 debug = false 449 } 450 branch_protector_ret = "pac_ret" 451 } 452 configs = [ "${MAPLEALL_ROOT}:mapleallcompilecfg" ] 453 sources = src_libcg 454 include_dirs = include_directories 455 deps = deps_libcg 456 output_dir = "${root_out_dir}/lib/${HOST_ARCH}" 457 defines = [] 458 external_deps = [ "bounds_checking_function:libsec_static" ] 459 part_name = "ets_runtime" 460 subsystem_name = "arkcompiler" 461} 462