| 1 | # Copyright (C) 2007, 2008 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 2 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, write to the Free Software |
| 17 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
| 18 | |
| 19 | |
| 20 | # This file requires GNU make! |
| 21 | |
| 22 | # This Makefile updates files in ../regformats from their XML master |
| 23 | # copies. Because this relies on xsltproc, it is not normally run |
| 24 | # during the build process; it should be run by hand when one of the |
| 25 | # affected XML files is changed, and the results should be kept in the |
| 26 | # GDB repository. |
| 27 | |
| 28 | # It can also update the C files in the features directory from their |
| 29 | # XML master copies. This relies on a GDB linked with expat and |
| 30 | # configured for the correct architecture, so the files are again kept |
| 31 | # in the GDB repository. To generate C files: |
| 32 | # make GDB=/path/to/gdb XMLTOC="xml files" cfiles |
| 33 | |
| 34 | WHICH = arm-with-iwmmxt mips-linux mips64-linux \ |
| 35 | rs6000/powerpc-32l rs6000/powerpc-altivec32l rs6000/powerpc-e500l \ |
| 36 | rs6000/powerpc-64l rs6000/powerpc-altivec64l rs6000/powerpc-vsx32l \ |
| 37 | rs6000/powerpc-vsx64l |
| 38 | |
| 39 | # Record which registers should be sent to GDB by default after stop. |
| 40 | arm-with-iwmmxt-expedite = r11,sp,pc |
| 41 | mips-linux-expedite = r29,pc |
| 42 | mips64-linux-expedite = r29,pc |
| 43 | rs6000/powerpc-32l-expedite = r1,pc |
| 44 | rs6000/powerpc-altivec32l-expedite = r1,pc |
| 45 | rs6000/powerpc-vsx32l-expedite = r1,pc |
| 46 | rs6000/powerpc-isa205-32l-expedite = r1,pc |
| 47 | rs6000/powerpc-isa205-altivec32l-expedite = r1,pc |
| 48 | rs6000/powerpc-isa205-vsx32l-expedite = r1,pc |
| 49 | rs6000/powerpc-e500l-expedite = r1,pc |
| 50 | rs6000/powerpc-64l-expedite = r1,pc |
| 51 | rs6000/powerpc-altivec64l-expedite = r1,pc |
| 52 | rs6000/powerpc-vsx64l-expedite = r1,pc |
| 53 | rs6000/powerpc-isa205-64l-expedite = r1,pc |
| 54 | rs6000/powerpc-isa205-altivec64l-expedite = r1,pc |
| 55 | rs6000/powerpc-isa205-vsx64l-expedite = r1,pc |
| 56 | |
| 57 | |
| 58 | XSLTPROC = xsltproc |
| 59 | outdir = ../regformats |
| 60 | OUTPUTS = $(patsubst %,$(outdir)/%.dat,$(WHICH)) |
| 61 | |
| 62 | XMLTOC = |
| 63 | CFILES = $(patsubst %.xml,%.c,$(XMLTOC)) |
| 64 | GDB = false |
| 65 | |
| 66 | all: $(OUTPUTS) |
| 67 | |
| 68 | $(outdir)/%.dat: %.xml number-regs.xsl sort-regs.xsl gdbserver-regs.xsl |
| 69 | echo "# DO NOT EDIT: generated from $<" > $(outdir)/$*.tmp |
| 70 | echo "name:`echo $(notdir $*) | sed 's/-/_/g'`" >> $(outdir)/$*.tmp |
| 71 | echo "xmltarget:$(<F)" >> $(outdir)/$*.tmp |
| 72 | echo "expedite:$($*-expedite)" >> $(outdir)/$*.tmp |
| 73 | $(XSLTPROC) --path "$(PWD)" --xinclude number-regs.xsl $< | \ |
| 74 | $(XSLTPROC) sort-regs.xsl - | \ |
| 75 | $(XSLTPROC) gdbserver-regs.xsl - >> $(outdir)/$*.tmp |
| 76 | sh ../../move-if-change $(outdir)/$*.tmp $(outdir)/$*.dat |
| 77 | |
| 78 | cfiles: $(CFILES) |
| 79 | %.c: %.xml |
| 80 | $(GDB) -nx -q -batch \ |
| 81 | -ex "set tdesc filename $<" -ex 'maint print c-tdesc' > $@.tmp |
| 82 | sh ../../move-if-change $@.tmp $@ |
| 83 | |
| 84 | # Other dependencies. |
| 85 | $(outdir)/arm-with-iwmmxt.dat: arm-core.xml xscale-iwmmxt.xml |