1# Rules common to all arm targets
2#
3# Copyright (C) 2004-2022 Free Software Foundation, Inc.
4#
5# This file is part of GCC.
6#
7# GCC is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation; either version 3, or (at your option)
10# any later version.
11#
12# GCC is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with GCC; see the file COPYING3.  If not see
19# <http://www.gnu.org/licenses/>.
20
21GTM_H += arm-cpu.h arm-isa.h
22
23# All md files - except for arm.md.
24# This list should be kept in alphabetical order and updated whenever an md
25# file is added or removed.
26MD_INCLUDES=        $(srcdir)/config/arm/arm1020e.md \
27                    $(srcdir)/config/arm/arm1026ejs.md \
28                    $(srcdir)/config/arm/arm1136jfs.md \
29                    $(srcdir)/config/arm/arm926ejs.md \
30                    $(srcdir)/config/arm/arm-fixed.md \
31                    $(srcdir)/config/arm/arm-generic.md \
32                    $(srcdir)/config/arm/arm-tune.md \
33                    $(srcdir)/config/arm/constraints.md \
34                    $(srcdir)/config/arm/cortex-a15.md \
35                    $(srcdir)/config/arm/cortex-a5.md \
36                    $(srcdir)/config/arm/cortex-a7.md \
37                    $(srcdir)/config/arm/cortex-a8.md \
38                    $(srcdir)/config/arm/cortex-a8-neon.md \
39                    $(srcdir)/config/arm/cortex-a9.md \
40                    $(srcdir)/config/arm/cortex-a9-neon.md \
41                    $(srcdir)/config/arm/cortex-a53.md \
42                    $(srcdir)/config/arm/xgene1.md \
43                    $(srcdir)/config/arm/cortex-m4-fpu.md \
44                    $(srcdir)/config/arm/cortex-m4.md \
45                    $(srcdir)/config/arm/cortex-r4f.md \
46                    $(srcdir)/config/arm/cortex-r4.md \
47                    $(srcdir)/config/arm/fa526.md \
48                    $(srcdir)/config/arm/fa606te.md \
49                    $(srcdir)/config/arm/fa626te.md \
50                    $(srcdir)/config/arm/fa726te.md \
51                    $(srcdir)/config/arm/fmp626.md \
52                    $(srcdir)/config/arm/iterators.md \
53                    $(srcdir)/config/arm/iwmmxt.md \
54                    $(srcdir)/config/arm/iwmmxt2.md \
55                    $(srcdir)/config/arm/ldmstm.md \
56                    $(srcdir)/config/arm/ldrdstrd.md \
57                    $(srcdir)/config/arm/marvell-f-iwmmxt.md \
58                    $(srcdir)/config/arm/mve.md \
59                    $(srcdir)/config/arm/neon.md \
60                    $(srcdir)/config/arm/predicates.md \
61                    $(srcdir)/config/arm/sync.md \
62                    $(srcdir)/config/arm/thumb2.md \
63                    $(srcdir)/config/arm/vec-common.md \
64                    $(srcdir)/config/arm/vfp11.md \
65                    $(srcdir)/config/arm/vfp.md
66
67s-config s-conditions s-flags s-codes s-constants s-emit s-recog s-preds \
68          s-opinit s-extract s-peep s-attr s-attrtab s-output: $(MD_INCLUDES)
69
70$(srcdir)/config/arm/arm-tune.md: $(srcdir)/config/arm/parsecpu.awk \
71          $(srcdir)/config/arm/arm-cpus.in
72          @echo "NOT REBUILDING $@"
73NetBSD_DISABLED_config_arm_arm-tune.md:
74          $(AWK) -f $(srcdir)/config/arm/parsecpu.awk -v cmd=md \
75                    $(srcdir)/config/arm/arm-cpus.in > arm-tune.new
76          $(srcdir)/../move-if-change arm-tune.new \
77                                            $(srcdir)/config/arm/arm-tune.md
78
79$(srcdir)/config/arm/arm-tables.opt: $(srcdir)/config/arm/parsecpu.awk \
80  $(srcdir)/config/arm/arm-cpus.in
81          @echo "NOT REBUILDING $@"
82NetBSD_DISABLED_config_arm_arm-tables.opt:
83          $(AWK) -f $(srcdir)/config/arm/parsecpu.awk -v cmd=opt \
84                    $(srcdir)/config/arm/arm-cpus.in > arm-tables.new
85          $(srcdir)/../move-if-change arm-tables.new \
86                                            $(srcdir)/config/arm/arm-tables.opt
87
88arm-cpu.h: s-arm-cpu ; @true
89s-arm-cpu: $(srcdir)/config/arm/parsecpu.awk \
90  $(srcdir)/config/arm/arm-cpus.in
91          $(AWK) -f $(srcdir)/config/arm/parsecpu.awk -v cmd=headers \
92                    $(srcdir)/config/arm/arm-cpus.in > tmp-arm-cpu.h
93          $(SHELL) $(srcdir)/../move-if-change tmp-arm-cpu.h arm-cpu.h
94          $(STAMP) s-arm-cpu
95
96arm-isa.h: s-arm-isa ; @true
97s-arm-isa: $(srcdir)/config/arm/parsecpu.awk \
98  $(srcdir)/config/arm/arm-cpus.in
99          $(AWK) -f $(srcdir)/config/arm/parsecpu.awk -v cmd=isa \
100                    $(srcdir)/config/arm/arm-cpus.in > tmp-arm-isa.h
101          $(SHELL) $(srcdir)/../move-if-change tmp-arm-isa.h arm-isa.h
102          $(STAMP) s-arm-isa
103
104arm-cpu-data.h: s-arm-data ; @true
105s-arm-data: $(srcdir)/config/arm/parsecpu.awk \
106  $(srcdir)/config/arm/arm-cpus.in
107          $(AWK) -f $(srcdir)/config/arm/parsecpu.awk -v cmd=data \
108                    $(srcdir)/config/arm/arm-cpus.in > tmp-arm-cpu-data.h
109          $(SHELL) $(srcdir)/../move-if-change tmp-arm-cpu-data.h arm-cpu-data.h
110          $(STAMP) s-arm-data
111
112arm-cpu-cdata.h: s-arm-cdata ; @true
113s-arm-cdata: $(srcdir)/config/arm/parsecpu.awk \
114  $(srcdir)/config/arm/arm-cpus.in
115          $(AWK) -f $(srcdir)/config/arm/parsecpu.awk -v cmd=common-data \
116                    $(srcdir)/config/arm/arm-cpus.in > tmp-arm-cpu-cdata.h
117          $(SHELL) $(srcdir)/../move-if-change tmp-arm-cpu-cdata.h arm-cpu-cdata.h
118          $(STAMP) s-arm-cdata
119
120arm-native.h: s-arm-native ; @true
121s-arm-native: $(srcdir)/config/arm/parsecpu.awk \
122  $(srcdir)/config/arm/arm-cpus.in
123          $(AWK) -f $(srcdir)/config/arm/parsecpu.awk -v cmd=native \
124                    $(srcdir)/config/arm/arm-cpus.in > tmp-arm-native.h
125          $(SHELL) $(srcdir)/../move-if-change tmp-arm-native.h arm-native.h
126          $(STAMP) s-arm-native
127
128aarch-common.o: $(srcdir)/config/arm/aarch-common.cc $(CONFIG_H) $(SYSTEM_H) \
129    coretypes.h $(TM_H) $(TM_P_H) $(RTL_H) $(TREE_H) output.h $(C_COMMON_H)
130          $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
131                    $(srcdir)/config/arm/aarch-common.cc
132
133arm.o: $(srcdir)/config/arm/arm.cc $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
134  $(RTL_H) $(TREE_H) $(HASH_TABLE_H) $(OBSTACK_H) $(REGS_H) hard-reg-set.h \
135  insn-config.h conditions.h output.h dumpfile.h \
136  $(INSN_ATTR_H) $(FLAGS_H) reload.h $(FUNCTION_H) \
137  $(EXPR_H) $(OPTABS_H) $(RECOG_H) $(CGRAPH_H) \
138  $(GGC_H) except.h $(C_PRAGMA_H) $(TM_P_H) \
139  $(TARGET_H) $(TARGET_DEF_H) debug.h langhooks.h $(DF_H) \
140  intl.h libfuncs.h $(PARAMS_H) $(OPTS_H) sched-int.h \
141  arm-cpu-data.h \
142  $(srcdir)/config/arm/arm-protos.h \
143  $(srcdir)/config/arm/arm_neon_builtins.def \
144  $(srcdir)/config/arm/arm_vfp_builtins.def \
145  $(srcdir)/config/arm/arm_mve_builtins.def
146
147arm-builtins.o: $(srcdir)/config/arm/arm-builtins.cc $(CONFIG_H) \
148  $(SYSTEM_H) coretypes.h $(TM_H) \
149  $(RTL_H) $(TREE_H) expr.h $(TM_P_H) $(RECOG_H) langhooks.h \
150  $(DIAGNOSTIC_CORE_H) $(OPTABS_H) \
151  $(srcdir)/config/arm/arm-protos.h \
152  $(srcdir)/config/arm/arm_acle_builtins.def \
153  $(srcdir)/config/arm/arm_neon_builtins.def \
154  $(srcdir)/config/arm/arm_vfp_builtins.def \
155  $(srcdir)/config/arm/arm_mve_builtins.def \
156  $(srcdir)/config/arm/arm-simd-builtin-types.def
157          $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
158                    $(srcdir)/config/arm/arm-builtins.cc
159
160arm-mve-builtins.o: $(srcdir)/config/arm/arm-mve-builtins.cc $(CONFIG_H) \
161  $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
162  fold-const.h langhooks.h stringpool.h attribs.h diagnostic.h \
163  $(srcdir)/config/arm/arm-protos.h \
164  $(srcdir)/config/arm/arm-builtins.h \
165  $(srcdir)/config/arm/arm-mve-builtins.h \
166  $(srcdir)/config/arm/arm-mve-builtins.def
167          $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
168                    $(srcdir)/config/arm/arm-mve-builtins.cc
169
170arm-c.o: $(srcdir)/config/arm/arm-c.cc $(CONFIG_H) $(SYSTEM_H) \
171    coretypes.h $(TM_H) $(TREE_H) output.h $(C_COMMON_H)
172          $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
173                    $(srcdir)/config/arm/arm-c.cc
174
175arm-d.o: $(srcdir)/config/arm/arm-d.cc
176          $(COMPILE) $<
177          $(POSTCOMPILE)
178
179arm-common.o: arm-cpu-cdata.h
180
181driver-arm.o: arm-native.h
182