Home | History | Annotate | Line # | Download | only in features
Makefile revision 1.1.1.5
      1 # Copyright (C) 2007-2017 Free Software Foundation, Inc.
      2 
      3 # This file is part of GDB.
      4 
      5 # This program is free software; you can redistribute it and/or modify
      6 # it under the terms of the GNU General Public License as published by
      7 # the Free Software Foundation; either version 3 of the License, or
      8 # (at your option) any later version.
      9 #
     10 # This program is distributed in the hope that it will be useful,
     11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 # GNU General Public License for more details.
     14 #
     15 # You should have received a copy of the GNU General Public License
     16 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 
     18 
     19 # This file requires GNU make!
     20 
     21 # This Makefile updates files in ../regformats from their XML master
     22 # copies.  Because this relies on xsltproc, it is not normally run
     23 # during the build process; it should be run by hand when one of the
     24 # affected XML files is changed, and the results should be kept in the
     25 # GDB repository.
     26 
     27 # It can also update the C files in the features directory from their
     28 # XML master copies.  This relies on a GDB linked with expat and that
     29 # is configured to include support for the architecture, so the files
     30 # are kept in the GDB repository.
     31 #
     32 # By default we'll generate all C files, and you must point make at a
     33 # GDB that has been configured with --enable-targets=all:
     34 #
     35 #   make GDB=/path/to/gdb cfiles
     36 #
     37 # To regenerate all C files from scratch:
     38 #
     39 #   make GDB=/path/to/gdb clean-cfiles cfiles
     40 #
     41 # To generate specific C files, you can override the XMLTOC make
     42 # variable:
     43 #
     44 #   make GDB=/path/to/gdb XMLTOC="xml files" cfiles
     45 
     46 WHICH = aarch64 \
     47 	arm/arm-with-iwmmxt arm/arm-with-vfpv2 arm/arm-with-vfpv3 \
     48 	arm/arm-with-neon \
     49 	i386/i386 i386/i386-linux \
     50 	i386/i386-mmx i386/i386-mmx-linux \
     51 	i386/amd64 i386/amd64-linux \
     52 	i386/i386-avx i386/i386-avx-linux \
     53 	i386/i386-mpx i386/i386-mpx-linux \
     54 	i386/i386-avx-mpx i386/i386-avx-mpx-linux \
     55 	i386/i386-avx-avx512 i386/i386-avx-avx512-linux \
     56 	i386/i386-avx-mpx-avx512-pku i386/i386-avx-mpx-avx512-pku-linux \
     57 	i386/amd64-avx i386/amd64-avx-linux \
     58 	i386/amd64-mpx i386/amd64-mpx-linux \
     59 	i386/amd64-avx-mpx i386/amd64-avx-mpx-linux \
     60 	i386/amd64-avx-avx512 i386/amd64-avx-avx512-linux \
     61 	i386/amd64-avx-mpx-avx512-pku i386/amd64-avx-mpx-avx512-pku-linux \
     62 	i386/x32 i386/x32-linux \
     63 	i386/x32-avx i386/x32-avx-linux \
     64 	i386/x32-avx-avx512 i386/x32-avx-avx512-linux \
     65 	mips-linux mips-dsp-linux \
     66 	microblaze-with-stack-protect \
     67 	mips64-linux mips64-dsp-linux \
     68 	nios2-linux \
     69 	rs6000/powerpc-32 \
     70 	rs6000/powerpc-32l rs6000/powerpc-altivec32l rs6000/powerpc-e500l \
     71 	rs6000/powerpc-64l rs6000/powerpc-altivec64l rs6000/powerpc-vsx32l \
     72 	rs6000/powerpc-vsx64l rs6000/powerpc-cell32l rs6000/powerpc-cell64l \
     73 	rs6000/powerpc-isa205-32l rs6000/powerpc-isa205-64l \
     74 	rs6000/powerpc-isa205-altivec32l rs6000/powerpc-isa205-altivec64l \
     75 	rs6000/powerpc-isa205-vsx32l rs6000/powerpc-isa205-vsx64l \
     76 	s390-linux32 s390-linux64 s390x-linux64 \
     77 	s390-linux32v1 s390-linux64v1 s390x-linux64v1 \
     78 	s390-linux32v2 s390-linux64v2 s390x-linux64v2 \
     79 	s390-te-linux64 s390x-te-linux64 s390-vx-linux64 s390x-vx-linux64 \
     80 	s390-tevx-linux64 s390x-tevx-linux64 \
     81 	tic6x-c64xp tic6x-c64x tic6x-c62x \
     82 	tic6x-c64xp-linux tic6x-c64x-linux tic6x-c62x-linux
     83 
     84 # Record which registers should be sent to GDB by default after stop.
     85 aarch64-expedite = x29,sp,pc
     86 arm-expedite = r11,sp,pc
     87 i386-expedite = ebp,esp,eip
     88 amd64-expedite = rbp,rsp,rip
     89 x32-expedite = rbp,rsp,rip
     90 mips-expedite = r29,pc
     91 mips-dsp-expedite = r29,pc
     92 mips64-expedite = r29,pc
     93 mips64-dsp-expedite = r29,pc
     94 microblaze-expedite = r1,rpc
     95 nios2-linux-expedite = sp,pc
     96 powerpc-expedite = r1,pc
     97 rs6000/powerpc-cell32l-expedite = r1,pc,r0,orig_r3,r4
     98 rs6000/powerpc-cell64l-expedite = r1,pc,r0,orig_r3,r4
     99 s390-linux32-expedite = r14,r15,pswa
    100 s390-linux32v1-expedite = r14,r15,pswa
    101 s390-linux32v2-expedite = r14,r15,pswa
    102 s390-linux64-expedite = r14l,r15l,pswa
    103 s390-linux64v1-expedite = r14l,r15l,pswa
    104 s390-linux64v2-expedite = r14l,r15l,pswa
    105 s390-te-linux64-expedite = r14l,r15l,pswa
    106 s390-vx-linux64-expedite = r14l,r15l,pswa
    107 s390-tevx-linux64-expedite = r14l,r15l,pswa
    108 s390x-linux64-expedite = r14,r15,pswa
    109 s390x-linux64v1-expedite = r14,r15,pswa
    110 s390x-linux64v2-expedite = r14,r15,pswa
    111 s390x-te-linux64-expedite = r14,r15,pswa
    112 s390x-vx-linux64-expedite = r14,r15,pswa
    113 s390x-tevx-linux64-expedite = r14,r15,pswa
    114 tic6x-c64xp-expedite = A15,PC
    115 tic6x-c64x-expedite = A15,PC
    116 tic6x-c62x-expedite = A15,PC
    117 tic6x-c64xp-linux-expedite = A15,PC
    118 tic6x-c64x-linux-expedite = A15,PC
    119 tic6x-c62x-linux-expedite = A15,PC
    120 
    121 
    122 XSLTPROC = xsltproc
    123 outdir = ../regformats
    124 OUTPUTS = $(patsubst %,$(outdir)/%.dat,$(WHICH))
    125 
    126 # The set of xml files we'll generate .c files for GDB from.  By
    127 # default we'll build all .c files, which requires an
    128 # --enable-targets=all GDB.  You can override this by passing XMLTOC
    129 # to make on the command line.
    130 XMLTOC = \
    131 	aarch64.xml \
    132 	arc-v2.xml \
    133 	arc-arcompact.xml \
    134 	arm/arm-with-iwmmxt.xml \
    135 	arm/arm-with-m-fpa-layout.xml \
    136 	arm/arm-with-m-vfp-d16.xml \
    137 	arm/arm-with-m.xml \
    138 	arm/arm-with-neon.xml \
    139 	arm/arm-with-vfpv2.xml \
    140 	arm/arm-with-vfpv3.xml \
    141 	i386/amd64-avx-linux.xml \
    142 	i386/amd64-avx.xml \
    143 	i386/amd64-avx-avx512-linux.xml \
    144 	i386/amd64-avx-avx512.xml \
    145 	i386/amd64-avx-mpx-avx512-pku-linux.xml \
    146 	i386/amd64-avx-mpx-avx512-pku.xml \
    147 	i386/amd64-linux.xml \
    148 	i386/amd64-mpx-linux.xml \
    149 	i386/amd64-mpx.xml \
    150 	i386/amd64-avx-mpx-linux.xml \
    151 	i386/amd64-avx-mpx.xml \
    152 	i386/amd64.xml \
    153 	i386/i386-avx-linux.xml \
    154 	i386/i386-avx.xml \
    155 	i386/i386-avx-avx512-linux.xml \
    156 	i386/i386-avx-avx512.xml \
    157 	i386/i386-avx-mpx-avx512-pku-linux.xml \
    158 	i386/i386-avx-mpx-avx512-pku.xml \
    159 	i386/i386-linux.xml \
    160 	i386/i386-mmx-linux.xml \
    161 	i386/i386-mmx.xml \
    162 	i386/i386-mpx-linux.xml \
    163 	i386/i386-mpx.xml \
    164 	i386/i386-avx-mpx-linux.xml \
    165 	i386/i386-avx-mpx.xml \
    166 	i386/i386.xml \
    167 	i386/x32-avx-linux.xml \
    168 	i386/x32-avx.xml \
    169 	i386/x32-avx-avx512-linux.xml \
    170 	i386/x32-avx-avx512.xml \
    171 	i386/x32-linux.xml \
    172 	i386/x32.xml \
    173 	microblaze-with-stack-protect.xml \
    174 	microblaze.xml \
    175 	mips-dsp-linux.xml \
    176 	mips-linux.xml \
    177 	mips64-dsp-linux.xml \
    178 	mips64-linux.xml \
    179 	nds32.xml \
    180 	nios2-linux.xml \
    181 	nios2.xml \
    182 	rs6000/powerpc-32.xml \
    183 	rs6000/powerpc-32l.xml \
    184 	rs6000/powerpc-403.xml \
    185 	rs6000/powerpc-403gc.xml \
    186 	rs6000/powerpc-405.xml \
    187 	rs6000/powerpc-505.xml \
    188 	rs6000/powerpc-601.xml \
    189 	rs6000/powerpc-602.xml \
    190 	rs6000/powerpc-603.xml \
    191 	rs6000/powerpc-604.xml \
    192 	rs6000/powerpc-64.xml \
    193 	rs6000/powerpc-64l.xml \
    194 	rs6000/powerpc-7400.xml \
    195 	rs6000/powerpc-750.xml \
    196 	rs6000/powerpc-860.xml \
    197 	rs6000/powerpc-altivec32.xml \
    198 	rs6000/powerpc-altivec32l.xml \
    199 	rs6000/powerpc-altivec64.xml \
    200 	rs6000/powerpc-altivec64l.xml \
    201 	rs6000/powerpc-cell32l.xml \
    202 	rs6000/powerpc-cell64l.xml \
    203 	rs6000/powerpc-e500.xml \
    204 	rs6000/powerpc-e500l.xml \
    205 	rs6000/powerpc-isa205-32l.xml \
    206 	rs6000/powerpc-isa205-64l.xml \
    207 	rs6000/powerpc-isa205-altivec32l.xml \
    208 	rs6000/powerpc-isa205-altivec64l.xml \
    209 	rs6000/powerpc-isa205-vsx32l.xml \
    210 	rs6000/powerpc-isa205-vsx64l.xml \
    211 	rs6000/powerpc-vsx32.xml \
    212 	rs6000/powerpc-vsx32l.xml \
    213 	rs6000/powerpc-vsx64.xml \
    214 	rs6000/powerpc-vsx64l.xml \
    215 	rs6000/rs6000.xml \
    216 	s390-linux32.xml \
    217 	s390-linux32v1.xml \
    218 	s390-linux32v2.xml \
    219 	s390-linux64.xml \
    220 	s390-linux64v1.xml \
    221 	s390-linux64v2.xml \
    222 	s390-te-linux64.xml \
    223 	s390x-linux64.xml \
    224 	s390x-linux64v1.xml \
    225 	s390x-linux64v2.xml \
    226 	s390x-te-linux64.xml \
    227 	s390-tevx-linux64.xml \
    228 	s390-vx-linux64.xml \
    229 	s390x-tevx-linux64.xml \
    230 	s390x-vx-linux64.xml \
    231 	tic6x-c62x-linux.xml \
    232 	tic6x-c62x.xml \
    233 	tic6x-c64x-linux.xml \
    234 	tic6x-c64x.xml \
    235 	tic6x-c64xp-linux.xml \
    236 	tic6x-c64xp.xml
    237 
    238 CFILES = $(patsubst %.xml,%.c,$(XMLTOC))
    239 GDB = false
    240 
    241 all: $(OUTPUTS)
    242 
    243 $(outdir)/%.dat: %.xml number-regs.xsl sort-regs.xsl gdbserver-regs.xsl
    244 	echo "# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:" > $(outdir)/$*.tmp
    245 	echo "# Generated from: $<" >> $(outdir)/$*.tmp
    246 	echo "name:`echo $(notdir $*) | sed 's/-/_/g'`" >> $(outdir)/$*.tmp
    247 	echo "xmltarget:$(<F)" >> $(outdir)/$*.tmp
    248 	echo "expedite:$(if $($*-expedite),$($*-expedite),$($(firstword $(subst -, ,$(notdir $*)))-expedite))" \
    249 	  >> $(outdir)/$*.tmp
    250 	$(XSLTPROC) --path "$(PWD)" --xinclude number-regs.xsl $< | \
    251 	  $(XSLTPROC) sort-regs.xsl - | \
    252 	  $(XSLTPROC) gdbserver-regs.xsl - >> $(outdir)/$*.tmp
    253 	sh ../../move-if-change $(outdir)/$*.tmp $(outdir)/$*.dat
    254 
    255 cfiles: $(CFILES)
    256 %.c: %.xml
    257 	$(GDB) -nx -q -batch \
    258 	  -ex "set tdesc filename $<" -ex 'maint print c-tdesc' > $@.tmp
    259 	sh ../../move-if-change $@.tmp $@
    260 
    261 # Other dependencies.
    262 $(outdir)/arm/arm-with-iwmmxt.dat: arm/arm-core.xml arm/xscale-iwmmxt.xml
    263 $(outdir)/i386/i386.dat: i386/32bit-core.xml i386/32bit-sse.xml
    264 $(outdir)/i386/i386-linux.dat: i386/32bit-core.xml i386/32bit-sse.xml \
    265 			       i386/32bit-linux.xml
    266 $(outdir)/i386/amd64.dat: i386/64bit-core.xml i386/64bit-sse.xml
    267 $(outdir)/i386/amd64-linux.dat: i386/64bit-core.xml i386/64bit-sse.xml \
    268 			       i386/64bit-linux.xml i386/64bit-segments.xml
    269 $(outdir)/i386/i386-avx.dat: i386/32bit-core.xml i386/32bit-avx.xml
    270 $(outdir)/i386/i386-avx-linux.dat: i386/32bit-core.xml i386/32bit-avx.xml \
    271 			       i386/32bit-linux.xml
    272 $(outdir)/i386/i386-mpx.dat: i386/32bit-core.xml i386/32bit-avx.xml \
    273 			       i386/32bit-mpx.xml
    274 $(outdir)/i386/i386-mpx-linux.dat: i386/32bit-core.xml 	i386/32bit-avx.xml \
    275 			       i386/32bit-linux.xml i386/32bit-mpx.xml
    276 $(outdir)/i386/i386-mpx-linux.dat: i386/32bit-core.xml \
    277 			       i386/32bit-linux.xml i386/32bit-mpx.xml
    278 $(outdir)/i386/i386-avx-mpx-linux.dat: i386/32bit-core.xml \
    279 			       i386/32bit-linux.xml i386/32bit-mpx.xml
    280 $(outdir)/i386/i386-avx-avx512.dat: i386/32bit-core.xml i386/32bit-avx.xml \
    281 			       i386/32bit-avx512.xml
    282 $(outdir)/i386/i386-avx-avx512-linux.dat: i386/32bit-core.xml i386/32bit-avx.xml \
    283 			       i386/32bit-linux.xml i386/32bit-avx512.xml
    284 $(outdir)/i386/i386-avx-mpx-avx512-pku.dat: i386/32bit-core.xml
    285 			       i386/32bit-avx.xml i386/32bit-mpx.xml i386/32bit-avx512.xml \
    286 			       i386/32bit-pkeys.xml
    287 $(outdir)/i386/i386-avx-mpx-avx512-pku-linux.dat: i386/32bit-core.xml \
    288 			       i386/32bit-avx.xml i386/32bit-mpx.xml i386/32bit-avx512.xml \
    289 			       i386/32bit-pkeys.xml i386/32bit-linux.xml
    290 $(outdir)/i386/i386-mmx.dat: i386/32bit-core.xml 
    291 $(outdir)/i386/i386-mmx-linux.dat: i386/32bit-core.xml i386/32bit-linux.xml
    292 $(outdir)/i386/amd64-avx.dat: i386/64bit-core.xml i386/64bit-avx.xml
    293 $(outdir)/i386/amd64-avx-linux.dat: i386/64bit-core.xml i386/64bit-avx.xml \
    294 			       i386/64bit-linux.xml i386/64bit-segments.xml
    295 $(outdir)/i386/amd64-mpx-linux.dat: i386/64bit-core.xml i386/64bit-avx.xml \
    296 			       i386/64bit-linux.xml i386/64bit-segments.xml i386/64bit-mpx.xml
    297 $(outdir)/i386/amd64-avx-mpx-linux.dat: i386/64bit-core.xml \
    298 			       i386/64bit-linux.xml i386/64bit-segments.xml i386/64bit-mpx.xml
    299 $(outdir)/i386/amd64-mpx.dat: i386/64bit-core.xml i386/64bit-avx.xml \
    300 			       i386/64bit-mpx.xml
    301 $(outdir)/i386/amd64-avx-mpx.dat: i386/64bit-core.xml \
    302 			       i386/64bit-mpx.xml
    303 $(outdir)/i386/amd64-avx-avx512.dat: i386/64bit-core.xml i386/64bit-avx.xml \
    304 			       i386/64bit-avx512.xml
    305 $(outdir)/i386/amd64-avx-avx512-linux.dat: i386/64bit-core.xml i386/64bit-avx.xml \
    306 			       i386/64bit-avx512.xml i386/64bit-linux.xml
    307 $(outdir)/i386/amd64-avx-mpx-avx512-pku.dat: i386/64bit-core.xml \
    308 			       i386/64bit-avx.xml i386/64bit-mpx.xml i386/64bit-avx512.xml \
    309 			       i386/64bit-pkeys.xml
    310 $(outdir)/i386/amd64-avx-mpx-avx512-pku-linux.dat: i386/64bit-core.xml \
    311 			       i386/64bit-avx.xml i386/64bit-mpx.xml i386/64bit-avx512.xml \
    312 			       i386/64bit-linux.xml i386/64bit-segments.xml \
    313 			       i386/64bit-pkeys.xml
    314 $(outdir)/i386/x32.dat: i386/x32-core.xml i386/64bit-sse.xml
    315 $(outdir)/i386/x32-linux.dat: i386/x32-core.xml i386/64bit-sse.xml \
    316 			       i386/64bit-linux.xml i386/64bit-segments.xml
    317 $(outdir)/i386/x32-avx.dat: i386/x32-core.xml i386/64bit-avx.xml
    318 $(outdir)/i386/x32-avx-linux.dat: i386/x32-core.xml i386/64bit-avx.xml \
    319 			       i386/64bit-linux.xml i386/64bit-segments.xml
    320 $(outdir)/i386/x32-avx-avx512.dat: i386/x32-core.xml i386/64bit-avx.xml \
    321 			       i386/64bit-avx512.xml
    322 $(outdir)/i386/x32-avx-avx512-linux.dat: i386/x32-core.xml i386/64bit-avx.xml \
    323 			       i386/64bit-avx512.xml i386/64bit-linux.xml \
    324 			       i386/64bit-segments.xml
    325 
    326 # 'all' doesn't build the C files, so don't delete them in 'clean'
    327 # either.
    328 clean-cfiles:
    329 	rm -f $(CFILES)
    330 
    331 clean:
    332 	rm -f $(OUTPUTS)
    333