• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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