Simplify config/avr/genmultilib.awk.
gcc/ Simplify config/avr/genmultilib.awk. * config/avr/t-avr (AWK) [t-multilib]: Remove "-v FORMAT=Makefile" command option from $(AWK) call. * config/avr/genmultilib.awk: Simplify and rewrite so that it generates MULTILIB_REQUIRED instead of MULTILIB_EXCEPTIONS. [FORMAT]: Remove handling of variable. * config/avr/t-multilib: Regenerate. From-SVN: r248332
This commit is contained in:
parent
3b205ea1bd
commit
6aea3c3720
4 changed files with 76 additions and 140 deletions
|
@ -1,3 +1,12 @@
|
|||
2017-05-22 Georg-Johann Lay <avr@gjlay.de>
|
||||
|
||||
* config/avr/t-avr (AWK) [t-multilib]: Remove "-v FORMAT=Makefile"
|
||||
command option from $(AWK) call.
|
||||
* config/avr/genmultilib.awk: Simplify and rewrite so that it
|
||||
generates MULTILIB_REQUIRED instead of MULTILIB_EXCEPTIONS.
|
||||
[FORMAT]: Remove handling of variable.
|
||||
* config/avr/t-multilib: Regenerate.
|
||||
|
||||
2017-05-22 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
* ipa-inline-analysis.c (inline_summary::reset): Do not reset
|
||||
|
|
|
@ -22,23 +22,28 @@
|
|||
# Representation that is understood by GCC's multilib Machinery.
|
||||
#
|
||||
# The Script works as a Filter from STDIN to STDOUT.
|
||||
#
|
||||
# FORMAT = "Makefile": Generate Makefile Snipet that sets some
|
||||
# MULTILIB_* Variables as needed.
|
||||
# It generates a Makefile Snippet that sets some
|
||||
# MULTILIB_* Variables as needed.
|
||||
#
|
||||
##################################################################
|
||||
|
||||
BEGIN {
|
||||
FS ="[(, \t]+"
|
||||
option[""] = ""
|
||||
tiny_stack[""] = 1
|
||||
comment = 1
|
||||
n_mcu = 0
|
||||
n_cores = 0
|
||||
|
||||
mtiny[0] = ""
|
||||
mtiny[1] = "tiny-stack"
|
||||
option["tiny-stack"] = "msp8"
|
||||
dir_tiny = "tiny-stack"
|
||||
opt_tiny = "msp8"
|
||||
|
||||
# awk Variable Makefile Variable
|
||||
# ------------------------------------------
|
||||
# m_options <-> MULTILIB_OPTIONS
|
||||
# m_dirnames <-> MULTILIB_DIRNAMES
|
||||
# m_required <-> MULTILIB_REQUIRED
|
||||
m_sep = ""
|
||||
m_options = "\nMULTILIB_OPTIONS = "
|
||||
m_dirnames = "\nMULTILIB_DIRNAMES ="
|
||||
m_required = "\nMULTILIB_REQUIRED ="
|
||||
}
|
||||
|
||||
##################################################################
|
||||
|
@ -51,14 +56,11 @@ BEGIN {
|
|||
next
|
||||
else if (comment == 1)
|
||||
{
|
||||
if (FORMAT == "Makefile")
|
||||
{
|
||||
print "# Auto-generated Makefile Snip"
|
||||
print "# Generated by : ./gcc/config/avr/genmultilib.awk"
|
||||
print "# Generated from : ./gcc/config/avr/avr-mcus.def"
|
||||
print "# Used by : tmake_file from Makefile and genmultilib"
|
||||
print ""
|
||||
}
|
||||
print "# Auto-generated Makefile Snip"
|
||||
print "# Generated by : ./gcc/config/avr/genmultilib.awk"
|
||||
print "# Generated from : ./gcc/config/avr/avr-mcus.def"
|
||||
print "# Used by : tmake_file from Makefile and genmultilib"
|
||||
print ""
|
||||
}
|
||||
|
||||
comment = 2;
|
||||
|
@ -74,12 +76,10 @@ BEGIN {
|
|||
}
|
||||
|
||||
##################################################################
|
||||
# Run over all AVR_MCU Lines and gather Information:
|
||||
# cores[] : Enumerates the Cores (avr2, avr25, ...)
|
||||
# mcu[] : Enumerates the Devices
|
||||
# tiny_stack[]: Maps Core/Device to 0 (2-byte SP) or 1 (1-byte SP)
|
||||
# option[] : Maps Core/Device to the mmcu= option to get it
|
||||
# toCore[] : Maps Device to its Core
|
||||
# Run over all AVR_MCU Lines. If we encounter a required multilib
|
||||
# variant, add according combination of options to m_required,
|
||||
# but onyl once. Add encountered cores to m_dirnames and
|
||||
# according -mmcu= options to m_options.
|
||||
##################################################################
|
||||
|
||||
/^AVR_MCU/ {
|
||||
|
@ -94,11 +94,12 @@ BEGIN {
|
|||
if (core == "avr1")
|
||||
next
|
||||
|
||||
cores[n_cores] = core
|
||||
n_cores++
|
||||
tiny_stack[core] = 0
|
||||
option[core] = "mmcu=" core
|
||||
|
||||
m_options = m_options m_sep option[core]
|
||||
m_dirnames = m_dirnames " " core
|
||||
m_sep = "/"
|
||||
|
||||
next
|
||||
}
|
||||
|
||||
|
@ -106,116 +107,40 @@ BEGIN {
|
|||
if (core == "avr1")
|
||||
next
|
||||
|
||||
opts = option[core]
|
||||
|
||||
# split device specific feature list
|
||||
n = split($4,dev_attribute,"|")
|
||||
|
||||
# set tiny_stack false by default
|
||||
tiny_stack[name] = 0
|
||||
for (i=1; i <= n; i++)
|
||||
if (dev_attribute[i] == "AVR_SHORT_SP") {
|
||||
tiny_stack[name] = 1
|
||||
break
|
||||
}
|
||||
{
|
||||
if (dev_attribute[i] == "AVR_SHORT_SP")
|
||||
opts = opts "/" opt_tiny
|
||||
}
|
||||
|
||||
mcu[n_mcu] = name
|
||||
n_mcu++
|
||||
option[name] = "mmcu=" name
|
||||
toCore[name] = core
|
||||
|
||||
if (tiny_stack[name] == 1)
|
||||
tiny_stack[core] = 1
|
||||
if (!have[opts])
|
||||
{
|
||||
have[opts] = 1
|
||||
# Some special handling for the default mmcu: Remove a
|
||||
# leading "mmcu=avr2/" in order not to confuse genmultilib.
|
||||
opts = gensub (/mmcu=avr2\//, "", 1, opts)
|
||||
if (opts != "mmcu=avr2")
|
||||
m_required = m_required " \\\n\t" opts
|
||||
}
|
||||
}
|
||||
|
||||
##################################################################
|
||||
#
|
||||
# We gathered all the Information, now build/output the following:
|
||||
#
|
||||
# awk Variable target Variable FORMAT
|
||||
# -----------------------------------------------------------
|
||||
# m_options <-> MULTILIB_OPTIONS Makefile
|
||||
# m_dirnames <-> MULTILIB_DIRNAMES "
|
||||
# m_exceptions <-> MULTILIB_EXCEPTIONS "
|
||||
#
|
||||
##################################################################
|
||||
|
||||
END {
|
||||
m_options = "\nMULTILIB_OPTIONS = "
|
||||
m_dirnames = "\nMULTILIB_DIRNAMES ="
|
||||
m_exceptions = "\nMULTILIB_EXCEPTIONS ="
|
||||
|
||||
##############################################################
|
||||
# Compose MULTILIB_OPTIONS. This represents the Cross-Product
|
||||
# (avr2, avr25, ...) x msp8
|
||||
|
||||
sep = ""
|
||||
for (c = 0; c < n_cores; c++)
|
||||
{
|
||||
m_options = m_options sep option[cores[c]]
|
||||
sep = "/"
|
||||
}
|
||||
|
||||
# The ... x msp8
|
||||
m_options = m_options " " option[mtiny[1]]
|
||||
|
||||
##############################################################
|
||||
# Map Device to its multilib
|
||||
|
||||
for (t = 0; t < n_mcu; t++)
|
||||
{
|
||||
core = toCore[mcu[t]]
|
||||
|
||||
line = option[core] ":" option[mcu[t]]
|
||||
gsub ("=", "?", line)
|
||||
gsub (":", "=", line)
|
||||
}
|
||||
|
||||
####################################################################
|
||||
# Compose MULTILIB_DIRNAMES and MULTILIB_EXEPTIONS
|
||||
|
||||
n_mtiny = 2
|
||||
for (t = 0; t < n_mtiny; t++)
|
||||
for (c = -1; c < n_cores; c++)
|
||||
{
|
||||
if (c == -1)
|
||||
core = ""
|
||||
else
|
||||
core = cores[c]
|
||||
|
||||
# The Directory Name for this multilib
|
||||
|
||||
if (core != "" && mtiny[t] != "")
|
||||
{
|
||||
mdir = core "/" mtiny[t]
|
||||
mopt = option[core] "/" option[mtiny[t]]
|
||||
}
|
||||
else
|
||||
{
|
||||
mdir = core mtiny[t]
|
||||
mopt = option[core] option[mtiny[t]]
|
||||
}
|
||||
|
||||
if (core != "" && tiny_stack[core] == 0 && mtiny[t] != "")
|
||||
{
|
||||
# There's not a single SP = 8 Devices for this Core:
|
||||
# Don't build respective multilib
|
||||
m_exceptions = m_exceptions " \\\n\t" mopt
|
||||
continue
|
||||
}
|
||||
|
||||
if (core != "avr2" || mtiny[t] == "")
|
||||
m_dirnames = m_dirnames " " mdir
|
||||
}
|
||||
|
||||
############################################################
|
||||
# Output that Stuff
|
||||
############################################################
|
||||
|
||||
if (FORMAT == "Makefile")
|
||||
{
|
||||
# Intended Target: ./gcc/config/avr/t-multilib
|
||||
# Intended Target: ./gcc/config/avr/t-multilib
|
||||
|
||||
print m_options
|
||||
print m_dirnames
|
||||
print m_exceptions
|
||||
}
|
||||
print m_options " " opt_tiny
|
||||
print m_dirnames " " dir_tiny
|
||||
print m_required
|
||||
}
|
||||
|
|
|
@ -89,14 +89,13 @@ install-device-specs: s-device-specs installdirs
|
|||
$(INSTALL_DATA) $${file} $(DESTDIR)$(libsubdir)/$${file}; \
|
||||
done
|
||||
|
||||
# Map -mmcu= to the right multilib variant
|
||||
# Get multilib layout
|
||||
# MULTILIB_OPTIONS
|
||||
# MULTILIB_DIRNAMES
|
||||
# MULTILIB_EXCEPTIONS
|
||||
# MULTILIB_MATCHES
|
||||
# MULTILIB_REQUIRED
|
||||
|
||||
s-mlib: $(srcdir)/config/avr/t-multilib
|
||||
|
||||
$(srcdir)/config/avr/t-multilib: $(srcdir)/config/avr/genmultilib.awk \
|
||||
$(AVR_MCUS)
|
||||
$(AWK) -f $< -v FORMAT=Makefile $< $(AVR_MCUS) > $@
|
||||
$(AWK) -f $< $< $(AVR_MCUS) > $@
|
||||
|
|
|
@ -23,19 +23,22 @@
|
|||
|
||||
MULTILIB_OPTIONS = mmcu=avr2/mmcu=avr25/mmcu=avr3/mmcu=avr31/mmcu=avr35/mmcu=avr4/mmcu=avr5/mmcu=avr51/mmcu=avr6/mmcu=avrxmega2/mmcu=avrxmega4/mmcu=avrxmega5/mmcu=avrxmega6/mmcu=avrxmega7/mmcu=avrtiny msp8
|
||||
|
||||
MULTILIB_DIRNAMES = avr2 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega2 avrxmega4 avrxmega5 avrxmega6 avrxmega7 avrtiny tiny-stack avr25/tiny-stack
|
||||
MULTILIB_DIRNAMES = avr2 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega2 avrxmega4 avrxmega5 avrxmega6 avrxmega7 avrtiny tiny-stack
|
||||
|
||||
MULTILIB_EXCEPTIONS = \
|
||||
mmcu=avr3/msp8 \
|
||||
mmcu=avr31/msp8 \
|
||||
mmcu=avr35/msp8 \
|
||||
mmcu=avr4/msp8 \
|
||||
mmcu=avr5/msp8 \
|
||||
mmcu=avr51/msp8 \
|
||||
mmcu=avr6/msp8 \
|
||||
mmcu=avrxmega2/msp8 \
|
||||
mmcu=avrxmega4/msp8 \
|
||||
mmcu=avrxmega5/msp8 \
|
||||
mmcu=avrxmega6/msp8 \
|
||||
mmcu=avrxmega7/msp8 \
|
||||
mmcu=avrtiny/msp8
|
||||
MULTILIB_REQUIRED = \
|
||||
msp8 \
|
||||
mmcu=avr25 \
|
||||
mmcu=avr25/msp8 \
|
||||
mmcu=avr3 \
|
||||
mmcu=avr31 \
|
||||
mmcu=avr35 \
|
||||
mmcu=avr4 \
|
||||
mmcu=avr5 \
|
||||
mmcu=avr51 \
|
||||
mmcu=avr6 \
|
||||
mmcu=avrxmega2 \
|
||||
mmcu=avrxmega4 \
|
||||
mmcu=avrxmega5 \
|
||||
mmcu=avrxmega6 \
|
||||
mmcu=avrxmega7 \
|
||||
mmcu=avrtiny
|
||||
|
|
Loading…
Add table
Reference in a new issue