From 4a176b2331bb589fd7c77b720292b72db3ca2f8c Mon Sep 17 00:00:00 2001 From: Georg-Johann Lay Date: Mon, 7 Jan 2013 12:45:13 +0000 Subject: [PATCH] re PR target/55243 (STAMP variable is not defined in t-avr) PR55243 * config/avr/t-avr: Don't automatically rebuild $(srcdir)/config/avr/t-multilib $(srcdir)/config/avr/avr-tables.opt $(srcdir)/doc/avr-mmcu.texi (avr-mcus): New phony target to build them on request. (s-avr-mlib, s-avr-mmcu-texi): Remove. * avr/avr-mcus.def: Adjust comments. From-SVN: r194968 --- gcc/ChangeLog | 11 +++++++++++ gcc/config/avr/avr-mcus.def | 47 +++++++++++++++++++++++++++++++++++++-------- gcc/config/avr/t-avr | 46 ++++++++++++++++---------------------------- 3 files changed, 67 insertions(+), 37 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 85a6e8b..07a4c04 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2013-01-07 Georg-Johann Lay + + PR55243 + * config/avr/t-avr: Don't automatically rebuild + $(srcdir)/config/avr/t-multilib + $(srcdir)/config/avr/avr-tables.opt + $(srcdir)/doc/avr-mmcu.texi + (avr-mcus): New phony target to build them on request. + (s-avr-mlib, s-avr-mmcu-texi): Remove. + * avr/avr-mcus.def: Adjust comments. + 2013-01-07 Uros Bizjak * config/i386/i386.c (DEFAULT_PCC_STRUCT_RETURN): Remove. diff --git a/gcc/config/avr/avr-mcus.def b/gcc/config/avr/avr-mcus.def index 01d61f7..8b06fa3 100644 --- a/gcc/config/avr/avr-mcus.def +++ b/gcc/config/avr/avr-mcus.def @@ -18,19 +18,50 @@ along with GCC; see the file COPYING3. If not see . */ -/* List of all known AVR MCU types - if updated, it has to be kept - in sync in several places (FIXME: is there a better way?): - - here; - - gas/config/tc-avr.c; - - avr-libc. +/* List of all known AVR MCU types. If updated, cd to $(builddir)/gcc and run + + $ make avr-mcus + + This will regenerate / update the following source files: + + - $(srcdir)/config/avr/t-multilib + - $(srcdir)/config/avr/avr-tables.opt + - $(srcdir)/doc/avr-mmcu.texi + + After that, rebuild everything and check-in the new sources to the repo. + The device list below has to be kept in sync with the following places: + + - here + - gas/config/tc-avr.c + - avr-libc Before including this file, define a macro: - AVR_MCU (NAME, ARCH, MACRO, SHORT_SP, ERRATA_SKIP, DATA_SEC, N_FLASH, LIBRARY_NAME) + AVR_MCU (NAME, ARCH, MACRO, SHORT_SP, ERRATA_SKIP, DATA_SEC, N_FLASH, + LIBRARY_NAME) + + where the arguments are the fields of struct mcu_type_s: + + NAME Accept -mmcu= + + ARCH Specifies the multilib variant together with SHORT_SP + + MACRO If NULL, this is a core and not a device. If non-NULL, + supply respective built-in macro. + + SHORT_SP The device / multilib has an 8-bit stack pointer (no SPH). + + ERRATA_SKIP Apply work-around for the "skip 32-bit instruction" + silicon bug: Don't skip 32-bit instrctions. + + DATA_SEC First address of SRAM, used in -Tdata= by the driver. + + N_FLASH Number of 64 KiB flash segments, rounded up. - where the arguments are the fields of struct mcu_type_s. */ + LIBRARY_NAME Used by the driver to linke startup code from avr-libc + as of crt.o -/* "avr2" must be first for the "0" default to work as intended. */ + "avr2" must be first for the "0" default to work as intended. */ /* Classic, <= 8K. */ AVR_MCU ("avr2", ARCH_AVR2, NULL, 0, 1, 0x0060, 6, "s8515") diff --git a/gcc/config/avr/t-avr b/gcc/config/avr/t-avr index c7fffd7..3d3b817 100644 --- a/gcc/config/avr/t-avr +++ b/gcc/config/avr/t-avr @@ -40,48 +40,36 @@ avr.o avr-c.o: $(srcdir)/config/avr/builtins.def AVR_MCUS = $(srcdir)/config/avr/avr-mcus.def +# Run `avr-mcus' after you changed or added devices in avr-mcus.def + +.PHONY: avr-mcus + +avr-mcus: $(srcdir)/config/avr/t-multilib \ + $(srcdir)/config/avr/avr-tables.opt \ + $(srcdir)/doc/avr-mmcu.texi ; @true + +# Make sure that -mmcu= is supported for devices from avr-mcus.def and +# is displaed all -mmcu= values are displayed on the help screen $(srcdir)/config/avr/avr-tables.opt: $(srcdir)/config/avr/genopt.sh $(AVR_MCUS) $(SHELL) $< $(AVR_MCUS) > $@ +# Make sure that -mmcu= support is in sync with -mmcu= documentation. gen-avr-mmcu-texi$(build_exeext): $(srcdir)/config/avr/gen-avr-mmcu-texi.c \ $(AVR_MCUS) $(srcdir)/config/avr/avr-devices.c \ $(srcdir)/config/avr/avr-arch.h $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $< -o $@ -# Make sure that the -mmcu= documentation is in sync with the compiler. -$(srcdir)/doc/avr-mmcu.texi: s-avr-mmcu-texi; @true - -# invoke.texi @includes avr-mmcu.texi. Put this dependency here instead -# of in the global Makefile so that developers of other backends are not -# bothered with AVR stuff. -$(srcdir)/doc/invoke.texi: $(srcdir)/doc/avr-mmcu.texi - -# Ensure that device support is in sync with -mmcu= documentation. -s-avr-mmcu-texi: gen-avr-mmcu-texi$(build_exeext) - $(RUN_GEN) ./$< > tmp-avr-mmcu.texi - $(SHELL) $(srcdir)/../move-if-change tmp-avr-mmcu.texi avr-mmcu.texi - @if cmp -s $(srcdir)/doc/avr-mmcu.texi avr-mmcu.texi; then \ - $(STAMP) $@; \ - else \ - echo >&2 ; \ - echo "***" >&2 ; \ - echo "*** Verify that you have permission to grant a" >&2 ; \ - echo "*** GFDL license for all new text in" >&2 ; \ - echo "*** avr-mmcu.texi, then copy it to $(srcdir)/doc/avr-mmcu.texi" >&2 ; \ - echo "***" >&2 ; \ - false; \ - fi +$(srcdir)/doc/avr-mmcu.texi: gen-avr-mmcu-texi$(build_exeext) + $(RUN_GEN) ./$< > $@ +# Map -mmcu= to the right multilib variant # MULTILIB_OPTIONS # MULTILIB_DIRNAMES # MULTILIB_EXCEPTIONS # MULTILIB_MATCHES -$(srcdir)/config/avr/t-multilib: s-avr-mlib; @true s-mlib: $(srcdir)/config/avr/t-multilib -s-avr-mlib: $(srcdir)/config/avr/genmultilib.awk $(AVR_MCUS) - $(AWK) -f $< -v FORMAT=Makefile $< $(AVR_MCUS) > tmp-avr-mlib - $(SHELL) $(srcdir)/../move-if-change \ - tmp-avr-mlib $(srcdir)/config/avr/t-multilib - $(STAMP) $@ +$(srcdir)/config/avr/t-multilib: $(srcdir)/config/avr/genmultilib.awk \ + $(AVR_MCUS) + $(AWK) -f $< -v FORMAT=Makefile $< $(AVR_MCUS) > $@ -- 2.7.4