Makefile.in (s-mlib): Add new argument MULTILIB_REQUIRED.
* Makefile.in (s-mlib): Add new argument MULTILIB_REQUIRED. * genmultilib (MULTILIB_REQUIRED): New. * doc/fragments.texi: Document the MULTILIB_REQUIRED. From-SVN: r187325
This commit is contained in:
parent
368117e868
commit
43661dc4d1
|
@ -1,3 +1,9 @@
|
|||
2012-05-09 Terry Guo <terry.guo@arm.com>
|
||||
|
||||
* Makefile.in (s-mlib): Add new argument MULTILIB_REQUIRED.
|
||||
* genmultilib (MULTILIB_REQUIRED): New.
|
||||
* doc/fragments.texi: Document the MULTILIB_REQUIRED.
|
||||
|
||||
2012-05-09 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* tree-vectorizer.h (vect_loop_versioning): Adjust prototype.
|
||||
|
|
|
@ -1831,10 +1831,11 @@ s-mlib: $(srcdir)/genmultilib Makefile
|
|||
"$(MULTILIB_EXTRA_OPTS)" \
|
||||
"$(MULTILIB_EXCLUSIONS)" \
|
||||
"$(MULTILIB_OSDIRNAMES)" \
|
||||
"$(MULTILIB_REQUIRED)" \
|
||||
"@enable_multilib@" \
|
||||
> tmp-mlib.h; \
|
||||
else \
|
||||
$(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' no \
|
||||
$(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' '' no\
|
||||
> tmp-mlib.h; \
|
||||
fi
|
||||
$(SHELL) $(srcdir)/../move-if-change tmp-mlib.h multilib.h
|
||||
|
|
|
@ -121,6 +121,29 @@ options enabled. Therefore @code{MULTILIB_EXCEPTIONS} is set to:
|
|||
*mthumb/*mhard-float*
|
||||
@end smallexample
|
||||
|
||||
@findex MULTILIB_REQUIRED
|
||||
@item MULTILIB_REQUIRED
|
||||
Sometimes when there are only a few combinations are required, it would
|
||||
be a big effort to come up with a @code{MULTILIB_EXCEPTIONS} list to
|
||||
cover all undesired ones. In such a case, just listing all the required
|
||||
combinations in @code{MULTILIB_REQUIRED} would be more straightforward.
|
||||
|
||||
The way to specify the entries in @code{MULTILIB_REQUIRED} is same with
|
||||
the way used for @code{MULTILIB_EXCEPTIONS}, only this time what are
|
||||
required will be specified. Suppose there are multiple sets of
|
||||
@code{MULTILIB_OPTIONS} and only two combinations are required, one
|
||||
for ARMv7-M and one for ARMv7-R with hard floating-point ABI and FPU, the
|
||||
@code{MULTILIB_REQUIRED} can be set to:
|
||||
@smallexample
|
||||
@code{MULTILIB_REQUIRED} = mthumb/march=armv7-m
|
||||
@code{MULTILIB_REQUIRED} += march=armv7-r/mfloat-abi=hard/mfpu=vfpv3-d16
|
||||
@end smallexample
|
||||
|
||||
The @code{MULTILIB_REQUIRED} can be used together with
|
||||
@code{MULTILIB_EXCEPTIONS}. The option combinations generated from
|
||||
@code{MULTILIB_OPTIONS} will be filtered by @code{MULTILIB_EXCEPTIONS}
|
||||
and then by @code{MULTILIB_REQUIRED}.
|
||||
|
||||
@findex MULTILIB_EXTRA_OPTS
|
||||
@item MULTILIB_EXTRA_OPTS
|
||||
Sometimes it is desirable that when building multiple versions of
|
||||
|
|
|
@ -73,6 +73,17 @@
|
|||
# the os directory names are used exclusively. Use the mapping when
|
||||
# there is no one-to-one equivalence between GCC levels and the OS.
|
||||
|
||||
# The optional eighth argument which intends to reduce the effort to write
|
||||
# so many MULTILIB_EXCEPTIONS rules. This option defines a series of option
|
||||
# combinations that we actually required.
|
||||
# For some cases, the generated option combinations are far more than what
|
||||
# we need, we have to write a lot of rules to screen out combinations we
|
||||
# don't need. If we missed some rules, the unexpected libraries will be built.
|
||||
# Now with this argument, one can simply give what combinations are needed.
|
||||
# It is pretty straigtforward.
|
||||
# This argument can be used together with MULTILIB_EXCEPTIONS and will take
|
||||
# effect after the MULTILIB_EXCEPTIONS.
|
||||
|
||||
# The last option should be "yes" if multilibs are enabled. If it is not
|
||||
# "yes", all GCC multilib dir names will be ".".
|
||||
|
||||
|
@ -93,7 +104,7 @@
|
|||
# genmultilib 'm64/m32 mno-app-regs|mcmodel=medany' '64 32 alt'
|
||||
# 'mcmodel?medany=mcmodel?medmid' 'm32/mno-app-regs* m32/mcmodel=*'
|
||||
# '' 'm32/!m64/mno-app-regs m32/!m64/mcmodel=medany'
|
||||
# '../lib64 ../lib32 alt' yes
|
||||
# '../lib64 ../lib32 alt' '' yes
|
||||
# This produces:
|
||||
# ". !m64 !m32 !mno-app-regs !mcmodel=medany;",
|
||||
# "64:../lib64 m64 !m32 !mno-app-regs !mcmodel=medany;",
|
||||
|
@ -121,7 +132,8 @@ exceptions=$4
|
|||
extra=$5
|
||||
exclusions=$6
|
||||
osdirnames=$7
|
||||
enable_multilib=$8
|
||||
multilib_required=$8
|
||||
enable_multilib=$9
|
||||
|
||||
echo "static const char *const multilib_raw[] = {"
|
||||
|
||||
|
@ -195,6 +207,33 @@ EOF
|
|||
combinations=`./tmpmultilib2 ${combinations}`
|
||||
fi
|
||||
|
||||
# If the MULTILIB_REQUIRED list are provided,
|
||||
# filter out combinations not in this list.
|
||||
if [ -n "${multilib_required}" ]; then
|
||||
cat >tmpmultilib2 <<\EOF
|
||||
#!/bin/sh
|
||||
# This recursive script weeds out any combination of multilib
|
||||
# switches that not in the expected list.
|
||||
|
||||
for opt in $@; do
|
||||
case "$opt" in
|
||||
EOF
|
||||
|
||||
for expect in ${multilib_required}; do
|
||||
echo " /${expect}/) echo \${opt};;" >> tmpmultilib2
|
||||
done
|
||||
|
||||
cat >>tmpmultilib2 <<\EOF
|
||||
*) ;;
|
||||
esac
|
||||
done
|
||||
EOF
|
||||
|
||||
chmod +x tmpmultilib2
|
||||
combinations=`./tmpmultilib2 ${combinations}`
|
||||
|
||||
fi
|
||||
|
||||
# Construct a sed pattern which will convert option names to directory
|
||||
# names.
|
||||
todirnames=
|
||||
|
|
Loading…
Reference in New Issue