diff mbox series

build: Implement --with-multilib-list for avr target

Message ID 4962954C-5270-4192-A024-8DD212453BE5@me.com
State New
Headers show
Series build: Implement --with-multilib-list for avr target | expand

Commit Message

Matt Jacobson June 7, 2021, 7:30 a.m. UTC
The AVR target builds a lot of multilib variants of target libraries by default,
and I found myself wanting to use the --with-multilib-list argument to limit
what I was building, to shorten build times.  This patch implements that option
for the AVR target.

Tested by configuring and building an AVR compiler and target libs on macOS.

I don't have commit access, so if this patch is suitable, I'd need someone else
to commit it for me.  Thanks.

gcc/ChangeLog:

2020-06-07  Matt Jacobson  <mhjacobson@me.com>

	* config.gcc: For the AVR target, populate TM_MULTILIB_CONFIG.
	* config/avr/genmultilib.awk: Add ability to filter generated multilib
	list.
	* config/avr/t-avr: Pass TM_MULTILIB_CONFIG to genmultilib.awk.
	* configure.ac: Update help string for --with-multilib-list.
	* configure: Regenerate.

Comments

Matt Jacobson July 5, 2021, 11:09 p.m. UTC | #1
> On Jun 7, 2021, at 3:30 AM, Matt Jacobson <mhjacobson@me.com> wrote:
> 
> The AVR target builds a lot of multilib variants of target libraries by default,
> and I found myself wanting to use the --with-multilib-list argument to limit
> what I was building, to shorten build times.  This patch implements that option
> for the AVR target.
> 
> Tested by configuring and building an AVR compiler and target libs on macOS.
> 
> I don't have commit access, so if this patch is suitable, I'd need someone else
> to commit it for me.  Thanks.

Ping.  (Please let me know if I’ve made some process error here; this is my 
first change to GCC.)

Original mail:
<https://gcc.gnu.org/pipermail/gcc-patches/2021-June/572041.html>

Thanks.
Matt Jacobson July 19, 2021, 8:44 p.m. UTC | #2
> On Jul 5, 2021, at 7:09 PM, Matt Jacobson <mhjacobson@me.com> wrote:
> 
>> On Jun 7, 2021, at 3:30 AM, Matt Jacobson <mhjacobson@me.com> wrote:
>> 
>> The AVR target builds a lot of multilib variants of target libraries by default,
>> and I found myself wanting to use the --with-multilib-list argument to limit
>> what I was building, to shorten build times.  This patch implements that option
>> for the AVR target.
>> 
>> Tested by configuring and building an AVR compiler and target libs on macOS.
>> 
>> I don't have commit access, so if this patch is suitable, I'd need someone else
>> to commit it for me.  Thanks.
> 
> Ping.  (Please let me know if I’ve made some process error here; this is my 
> first change to GCC.)

Ping again.  Thanks!

Original mail:
<https://gcc.gnu.org/pipermail/gcc-patches/2021-June/572041.html>

Matt
Jeff Law Dec. 3, 2021, 2:54 a.m. UTC | #3
On 6/7/2021 1:30 AM, Matt Jacobson via Gcc-patches wrote:
> gcc/ChangeLog:
>
> 2020-06-07  Matt Jacobson<mhjacobson@me.com>
>
> 	* config.gcc: For the AVR target, populate TM_MULTILIB_CONFIG.
> 	* config/avr/genmultilib.awk: Add ability to filter generated multilib
> 	list.
> 	* config/avr/t-avr: Pass TM_MULTILIB_CONFIG to genmultilib.awk.
> 	* configure.ac: Update help string for --with-multilib-list.
> 	* configure: Regenerate.
>
THanks.  I've pushed this to the trunk.  Sorry about the long wait.

jeff
diff mbox series

Patch

diff --git a/gcc/config.gcc b/gcc/config.gcc
index 6a349965c..fd83996a4 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -4201,6 +4201,13 @@  case "${target}" in
 		fi
 		;;
 
+	avr-*-*)
+		# Handle --with-multilib-list.
+		if test "x${with_multilib_list}" != xdefault; then
+			TM_MULTILIB_CONFIG="${with_multilib_list}"
+		fi
+	;;
+
     csky-*-*)
 	supported_defaults="cpu endian float"
 	;;
diff --git a/gcc/config/avr/genmultilib.awk b/gcc/config/avr/genmultilib.awk
index 2d07c0e53..ad8814602 100644
--- a/gcc/config/avr/genmultilib.awk
+++ b/gcc/config/avr/genmultilib.awk
@@ -67,6 +67,16 @@  BEGIN {
 
     dir_long_double = "long-double"   (96 - with_long_double)
     opt_long_double = "mlong-double=" (96 - with_long_double)
+
+    if (with_multilib_list != "")
+    {
+	split(with_multilib_list, multilib_list, ",")
+
+	for (i in multilib_list)
+	{
+	    multilibs[multilib_list[i]] = 1
+	}
+    }
 }
 
 ##################################################################
@@ -137,6 +147,9 @@  BEGIN {
 	if (core == "avr1")
 	    next
 
+	if (with_multilib_list != "" && !(core in multilibs))
+	    next
+
 	option[core] = "mmcu=" core
 
 	m_options  = m_options m_sep option[core]
@@ -150,6 +163,9 @@  BEGIN {
     if (core == "avr1")
 	next
 
+    if (with_multilib_list != "" && !(core in multilibs))
+	next
+
     opts = option[core]
 
     # split device specific feature list
diff --git a/gcc/config/avr/t-avr b/gcc/config/avr/t-avr
index 3e1a1ba68..7d20c6107 100644
--- a/gcc/config/avr/t-avr
+++ b/gcc/config/avr/t-avr
@@ -127,6 +127,7 @@  t-multilib-avr: $(srcdir)/config/avr/genmultilib.awk \
 		-v HAVE_LONG_DOUBLE64=$(HAVE_LONG_DOUBLE64) 		\
 		-v with_double=$(WITH_DOUBLE) 				\
 		-v with_long_double=$(WITH_LONG_DOUBLE)			\
+		-v with_multilib_list=$(TM_MULTILIB_CONFIG)		\
 		-f $< $< $(AVR_MCUS) > $@
 
 include t-multilib-avr
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 715fcba04..c3ed65df7 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -1106,7 +1106,7 @@  if test x"$enable_hsa" = x1 ; then
 fi
 
 AC_ARG_WITH(multilib-list,
-[AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
+[AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, AVR, i386, or1k, RISC-V, SH, and x86-64 only)])],
 :,
 with_multilib_list=default)