Re: [patch] set MULTIARCH_DIRNAME for multilib architectures

2013-11-27 Thread Aurelien Jarno
On Thu, Jun 20, 2013 at 02:26:12PM +0200, Matthias Klose wrote:
 Am 13.06.2013 11:42, schrieb Richard Sandiford:
  Bernhard Reutner-Fischer rep.dot@gmail.com writes:
  On 12 June 2013 20:20:50 Richard Sandiford rdsandif...@googlemail.com 
  wrote:
  Matthias Klose d...@ubuntu.com writes:
  Index: config/mips/t-linux64
  ===
  --- config/mips/t-linux64(revision 200012)
  +++ config/mips/t-linux64(working copy)
  @@ -24,3 +24,13 @@
   ../lib32$(call 
  if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
   ../lib$(call 
  if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
   ../lib64$(call
  if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
  +
  +ifneq (,$(findstring abin32,$(target)))
  +MULTIARCH_DIRNAME = $(call 
  if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT))
  +else
  +ifneq (,$(findstring abi64,$(target)))
  +MULTIARCH_DIRNAME = $(call 
  if_multiarch,mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
  +else
  +MULTIARCH_DIRNAME = $(call 
  if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT))
  +endif
  +endif
 
  findstring seems a bit fragile for a full triple.  I think it would
  be better to have something similar to the current MIPS_SOFT definition:
 
  MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, 
  $(target_cpu_default)) $(filter soft, $(with_float))),soft)
 
  but for ABIs.  It could then also take with_abi into account.
  Maybe something like:
 
  MIPS_ABI = $(or $(with_abi), \
  $(if $(filter MIPS_ABI_DEFAULT=ABI_N32, \
  $(target_cpu_default)), n32), \
  o32)
 
  (completely untested).
 
  Bikeshedding:
  Doko would know, but ISTR that $(or) did not exist in make-3.80 which is 
  currently the minimum prerequisite, fwiw.
  
  Gah, that's a pity.  Thanks for the catch though.  Maybe firstword
  would be OK instead.
  
  I see I also fell into the usual ABI trap.  It wouldn't have affected
  the use in this patch, but the default ought to be 32 rather than o32.
 
 the define is in tm_defines, not target_cpu_default.
 
 MIPS_ABI = $(or $(with_abi), \
 $(if $(filter MIPS_ABI_DEFAULT=ABI_N32, \
 $(tm_defines)), n32), \
  32)
 
 However I can't see yet how this should be used. Maybe Aurelian could come up
 with a tested version of this patch?
 

How about the patch below?

It first determines the ABI without using $(or), by looking (in this
order) for $(with_abi), $(tm_defines) and $(target), defaulting to 32
if none of the previous matches.

Then the multiarch path is constructed from the ABI.

Index: gcc/config/mips/t-linux64
===
--- gcc/config/mips/t-linux64   (révision 205437)
+++ gcc/config/mips/t-linux64   (copie de travail)
@@ -24,3 +24,22 @@
../lib32$(call 
if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
../lib64$(call 
if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
+
+ifneq ($(with_abi),)
+MIPS_ABI = $(with_abi)
+endif
+ifeq ($(MIPS_ABI),)
+MIPS_ABI=$(if $(strip $(filter MIPS_ABI_DEFAULT=ABI_N32, $(tm_defines))),n32)
+endif
+ifeq ($(MIPS_ABI),)
+MIPS_ABI = $(subst abi,,$(subst gnu,,$(lastword $(subst -, ,$(target)
+endif
+ifeq ($(MIPS_ABI),)
+MIPS_ABI=32
+endif
+
+ifeq ($(MIPS_ABI),32)
+MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT))
+else
+MULTIARCH_DIRNAME = $(call 
if_multiarch,mips64$(MIPS_EL)-linux-gnuabi$(MIPS_ABI)$(MIPS_SOFT))
+endif

-- 
Aurelien Jarno  GPG: 1024D/F1BCDB73
aurel...@aurel32.net http://www.aurel32.net


Re: [patch] set MULTIARCH_DIRNAME for multilib architectures

2013-11-27 Thread Bernhard Reutner-Fischer
On 27 November 2013 11:10, Aurelien Jarno aure...@debian.org wrote:
 On Thu, Jun 20, 2013 at 02:26:12PM +0200, Matthias Klose wrote:
 Am 13.06.2013 11:42, schrieb Richard Sandiford:
  Bernhard Reutner-Fischer rep.dot@gmail.com writes:
  On 12 June 2013 20:20:50 Richard Sandiford rdsandif...@googlemail.com 
  wrote:
  Matthias Klose d...@ubuntu.com writes:
  Index: config/mips/t-linux64
  ===
  --- config/mips/t-linux64(revision 200012)
  +++ config/mips/t-linux64(working copy)
  @@ -24,3 +24,13 @@
   ../lib32$(call
  if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
   ../lib$(call 
  if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
   ../lib64$(call
  if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
  +
  +ifneq (,$(findstring abin32,$(target)))
  +MULTIARCH_DIRNAME = $(call
  if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT))
  +else
  +ifneq (,$(findstring abi64,$(target)))
  +MULTIARCH_DIRNAME = $(call
  if_multiarch,mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
  +else
  +MULTIARCH_DIRNAME = $(call
  if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT))
  +endif
  +endif
 
  findstring seems a bit fragile for a full triple.  I think it would
  be better to have something similar to the current MIPS_SOFT definition:
 
  MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI,
  $(target_cpu_default)) $(filter soft, $(with_float))),soft)
 
  but for ABIs.  It could then also take with_abi into account.
  Maybe something like:
 
  MIPS_ABI = $(or $(with_abi), \
  $(if $(filter MIPS_ABI_DEFAULT=ABI_N32, \
  $(target_cpu_default)), n32), \
  o32)
 
  (completely untested).
 
  Bikeshedding:
  Doko would know, but ISTR that $(or) did not exist in make-3.80 which is
  currently the minimum prerequisite, fwiw.
 
  Gah, that's a pity.  Thanks for the catch though.  Maybe firstword
  would be OK instead.
 
  I see I also fell into the usual ABI trap.  It wouldn't have affected
  the use in this patch, but the default ought to be 32 rather than o32.

 the define is in tm_defines, not target_cpu_default.

 MIPS_ABI = $(or $(with_abi), \
 $(if $(filter MIPS_ABI_DEFAULT=ABI_N32, \
 $(tm_defines)), n32), \
  32)

 However I can't see yet how this should be used. Maybe Aurelian could come up
 with a tested version of this patch?


 How about the patch below?

 It first determines the ABI without using $(or), by looking (in this
 order) for $(with_abi), $(tm_defines) and $(target), defaulting to 32
 if none of the previous matches.

 Then the multiarch path is constructed from the ABI.

 Index: gcc/config/mips/t-linux64
 ===
 --- gcc/config/mips/t-linux64   (révision 205437)
 +++ gcc/config/mips/t-linux64   (copie de travail)
 @@ -24,3 +24,22 @@
 ../lib32$(call 
 if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
 ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
 ../lib64$(call 
 if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
 +
 +ifneq ($(with_abi),)
 +MIPS_ABI = $(with_abi)
 +endif
 +ifeq ($(MIPS_ABI),)
 +MIPS_ABI=$(if $(strip $(filter MIPS_ABI_DEFAULT=ABI_N32, $(tm_defines))),n32)
 +endif
 +ifeq ($(MIPS_ABI),)
 +MIPS_ABI = $(subst abi,,$(subst gnu,,$(lastword $(subst -, ,$(target)
 +endif
 +ifeq ($(MIPS_ABI),)
 +MIPS_ABI=32
 +endif
 +
 +ifeq ($(MIPS_ABI),32)
 +MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT))
 +else
 +MULTIARCH_DIRNAME = $(call 
 if_multiarch,mips64$(MIPS_EL)-linux-gnuabi$(MIPS_ABI)$(MIPS_SOFT))

hm, shouldn't this be gnueabi with an 'e'  or is that implied for n64 anyway?
just curious..
thanks,

 +endif

 --
 Aurelien Jarno  GPG: 1024D/F1BCDB73
 aurel...@aurel32.net http://www.aurel32.net


Re: [patch] set MULTIARCH_DIRNAME for multilib architectures

2013-11-27 Thread Aurelien Jarno
On Wed, Nov 27, 2013 at 12:55:54PM +0100, Bernhard Reutner-Fischer wrote:
 On 27 November 2013 11:10, Aurelien Jarno aure...@debian.org wrote:
  On Thu, Jun 20, 2013 at 02:26:12PM +0200, Matthias Klose wrote:
  Am 13.06.2013 11:42, schrieb Richard Sandiford:
   Bernhard Reutner-Fischer rep.dot@gmail.com writes:
   On 12 June 2013 20:20:50 Richard Sandiford rdsandif...@googlemail.com 
   wrote:
   Matthias Klose d...@ubuntu.com writes:
   Index: config/mips/t-linux64
   ===
   --- config/mips/t-linux64(revision 200012)
   +++ config/mips/t-linux64(working copy)
   @@ -24,3 +24,13 @@
../lib32$(call
   if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
../lib$(call 
   if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
../lib64$(call
   if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
   +
   +ifneq (,$(findstring abin32,$(target)))
   +MULTIARCH_DIRNAME = $(call
   if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT))
   +else
   +ifneq (,$(findstring abi64,$(target)))
   +MULTIARCH_DIRNAME = $(call
   if_multiarch,mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
   +else
   +MULTIARCH_DIRNAME = $(call
   if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT))
   +endif
   +endif
  
   findstring seems a bit fragile for a full triple.  I think it would
   be better to have something similar to the current MIPS_SOFT 
   definition:
  
   MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI,
   $(target_cpu_default)) $(filter soft, $(with_float))),soft)
  
   but for ABIs.  It could then also take with_abi into account.
   Maybe something like:
  
   MIPS_ABI = $(or $(with_abi), \
   $(if $(filter MIPS_ABI_DEFAULT=ABI_N32, \
   $(target_cpu_default)), n32), \
   o32)
  
   (completely untested).
  
   Bikeshedding:
   Doko would know, but ISTR that $(or) did not exist in make-3.80 which is
   currently the minimum prerequisite, fwiw.
  
   Gah, that's a pity.  Thanks for the catch though.  Maybe firstword
   would be OK instead.
  
   I see I also fell into the usual ABI trap.  It wouldn't have affected
   the use in this patch, but the default ought to be 32 rather than 
   o32.
 
  the define is in tm_defines, not target_cpu_default.
 
  MIPS_ABI = $(or $(with_abi), \
  $(if $(filter MIPS_ABI_DEFAULT=ABI_N32, \
  $(tm_defines)), n32), \
   32)
 
  However I can't see yet how this should be used. Maybe Aurelian could come 
  up
  with a tested version of this patch?
 
 
  How about the patch below?
 
  It first determines the ABI without using $(or), by looking (in this
  order) for $(with_abi), $(tm_defines) and $(target), defaulting to 32
  if none of the previous matches.
 
  Then the multiarch path is constructed from the ABI.
 
  Index: gcc/config/mips/t-linux64
  ===
  --- gcc/config/mips/t-linux64   (révision 205437)
  +++ gcc/config/mips/t-linux64   (copie de travail)
  @@ -24,3 +24,22 @@
  ../lib32$(call 
  if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
  ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
  ../lib64$(call 
  if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
  +
  +ifneq ($(with_abi),)
  +MIPS_ABI = $(with_abi)
  +endif
  +ifeq ($(MIPS_ABI),)
  +MIPS_ABI=$(if $(strip $(filter MIPS_ABI_DEFAULT=ABI_N32, 
  $(tm_defines))),n32)
  +endif
  +ifeq ($(MIPS_ABI),)
  +MIPS_ABI = $(subst abi,,$(subst gnu,,$(lastword $(subst -, ,$(target)
  +endif
  +ifeq ($(MIPS_ABI),)
  +MIPS_ABI=32
  +endif
  +
  +ifeq ($(MIPS_ABI),32)
  +MULTIARCH_DIRNAME = $(call 
  if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT))
  +else
  +MULTIARCH_DIRNAME = $(call 
  if_multiarch,mips64$(MIPS_EL)-linux-gnuabi$(MIPS_ABI)$(MIPS_SOFT))
 
 hm, shouldn't this be gnueabi with an 'e'  or is that implied for n64 anyway?
 just curious..
 thanks,

This is correct, the abis are n32 and 64. MIPS EABI is another ABI which
hasn't really existed in practice.

-- 
Aurelien Jarno  GPG: 1024D/F1BCDB73
aurel...@aurel32.net http://www.aurel32.net


Re: [patch] set MULTIARCH_DIRNAME for multilib architectures

2013-06-20 Thread Matthias Klose
Am 13.06.2013 11:42, schrieb Richard Sandiford:
 Bernhard Reutner-Fischer rep.dot@gmail.com writes:
 On 12 June 2013 20:20:50 Richard Sandiford rdsandif...@googlemail.com 
 wrote:
 Matthias Klose d...@ubuntu.com writes:
 Index: config/mips/t-linux64
 ===
 --- config/mips/t-linux64  (revision 200012)
 +++ config/mips/t-linux64  (working copy)
 @@ -24,3 +24,13 @@
../lib32$(call 
 if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
../lib64$(call
 if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
 +
 +ifneq (,$(findstring abin32,$(target)))
 +MULTIARCH_DIRNAME = $(call 
 if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT))
 +else
 +ifneq (,$(findstring abi64,$(target)))
 +MULTIARCH_DIRNAME = $(call 
 if_multiarch,mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
 +else
 +MULTIARCH_DIRNAME = $(call 
 if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT))
 +endif
 +endif

 findstring seems a bit fragile for a full triple.  I think it would
 be better to have something similar to the current MIPS_SOFT definition:

 MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, 
 $(target_cpu_default)) $(filter soft, $(with_float))),soft)

 but for ABIs.  It could then also take with_abi into account.
 Maybe something like:

 MIPS_ABI = $(or $(with_abi), \
 $(if $(filter MIPS_ABI_DEFAULT=ABI_N32, \
   $(target_cpu_default)), n32), \
 o32)

 (completely untested).

 Bikeshedding:
 Doko would know, but ISTR that $(or) did not exist in make-3.80 which is 
 currently the minimum prerequisite, fwiw.
 
 Gah, that's a pity.  Thanks for the catch though.  Maybe firstword
 would be OK instead.
 
 I see I also fell into the usual ABI trap.  It wouldn't have affected
 the use in this patch, but the default ought to be 32 rather than o32.

the define is in tm_defines, not target_cpu_default.

MIPS_ABI = $(or $(with_abi), \
$(if $(filter MIPS_ABI_DEFAULT=ABI_N32, \
  $(tm_defines)), n32), \
 32)

However I can't see yet how this should be used. Maybe Aurelian could come up
with a tested version of this patch?

  Matthias



Re: [patch] set MULTIARCH_DIRNAME for multilib architectures

2013-06-20 Thread Aurelien Jarno
On Thu, Jun 20, 2013 at 02:26:12PM +0200, Matthias Klose wrote:
 Am 13.06.2013 11:42, schrieb Richard Sandiford:
  Bernhard Reutner-Fischer rep.dot@gmail.com writes:
  On 12 June 2013 20:20:50 Richard Sandiford rdsandif...@googlemail.com 
  wrote:
  Matthias Klose d...@ubuntu.com writes:
  Index: config/mips/t-linux64
  ===
  --- config/mips/t-linux64(revision 200012)
  +++ config/mips/t-linux64(working copy)
  @@ -24,3 +24,13 @@
   ../lib32$(call 
  if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
   ../lib$(call 
  if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
   ../lib64$(call
  if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
  +
  +ifneq (,$(findstring abin32,$(target)))
  +MULTIARCH_DIRNAME = $(call 
  if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT))
  +else
  +ifneq (,$(findstring abi64,$(target)))
  +MULTIARCH_DIRNAME = $(call 
  if_multiarch,mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
  +else
  +MULTIARCH_DIRNAME = $(call 
  if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT))
  +endif
  +endif
 
  findstring seems a bit fragile for a full triple.  I think it would
  be better to have something similar to the current MIPS_SOFT definition:
 
  MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, 
  $(target_cpu_default)) $(filter soft, $(with_float))),soft)
 
  but for ABIs.  It could then also take with_abi into account.
  Maybe something like:
 
  MIPS_ABI = $(or $(with_abi), \
  $(if $(filter MIPS_ABI_DEFAULT=ABI_N32, \
  $(target_cpu_default)), n32), \
  o32)
 
  (completely untested).
 
  Bikeshedding:
  Doko would know, but ISTR that $(or) did not exist in make-3.80 which is 
  currently the minimum prerequisite, fwiw.
  
  Gah, that's a pity.  Thanks for the catch though.  Maybe firstword
  would be OK instead.
  
  I see I also fell into the usual ABI trap.  It wouldn't have affected
  the use in this patch, but the default ought to be 32 rather than o32.
 
 the define is in tm_defines, not target_cpu_default.
 
 MIPS_ABI = $(or $(with_abi), \
 $(if $(filter MIPS_ABI_DEFAULT=ABI_N32, \
 $(tm_defines)), n32), \
  32)
 
 However I can't see yet how this should be used. Maybe Aurelian could come up
 with a tested version of this patch?
 

I don't have a lot of time right now, will look at that in details next
week.


-- 
Aurelien Jarno  GPG: 1024D/F1BCDB73
aurel...@aurel32.net http://www.aurel32.net


Re: [patch] set MULTIARCH_DIRNAME for multilib architectures

2013-06-13 Thread Bernhard Reutner-Fischer

On 12 June 2013 20:20:50 Richard Sandiford rdsandif...@googlemail.com wrote:

Matthias Klose d...@ubuntu.com writes:
 Index: config/mips/t-linux64
 ===
 --- config/mips/t-linux64  (revision 200012)
 +++ config/mips/t-linux64  (working copy)
 @@ -24,3 +24,13 @@
  	../lib32$(call 
if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \

../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
 +
 +ifneq (,$(findstring abin32,$(target)))
 +MULTIARCH_DIRNAME = $(call 
if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT))

 +else
 +ifneq (,$(findstring abi64,$(target)))
 +MULTIARCH_DIRNAME = $(call 
if_multiarch,mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))

 +else
 +MULTIARCH_DIRNAME = $(call 
if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT))

 +endif
 +endif

findstring seems a bit fragile for a full triple.  I think it would
be better to have something similar to the current MIPS_SOFT definition:

MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, 
$(target_cpu_default)) $(filter soft, $(with_float))),soft)


but for ABIs.  It could then also take with_abi into account.
Maybe something like:

MIPS_ABI = $(or $(with_abi), \
$(if $(filter MIPS_ABI_DEFAULT=ABI_N32, \
  $(target_cpu_default)), n32), \
o32)

(completely untested).


Bikeshedding:
Doko would know, but ISTR that $(or) did not exist in make-3.80 which is 
currently the minimum prerequisite, fwiw.



Sent with AquaMail for Android
http://www.aqua-mail.com




Re: [patch] set MULTIARCH_DIRNAME for multilib architectures

2013-06-13 Thread Richard Sandiford
Bernhard Reutner-Fischer rep.dot@gmail.com writes:
 On 12 June 2013 20:20:50 Richard Sandiford rdsandif...@googlemail.com wrote:
 Matthias Klose d...@ubuntu.com writes:
  Index: config/mips/t-linux64
  ===
  --- config/mips/t-linux64  (revision 200012)
  +++ config/mips/t-linux64  (working copy)
  @@ -24,3 +24,13 @@
 ../lib32$(call 
 if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
 ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
 ../lib64$(call
  if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
  +
  +ifneq (,$(findstring abin32,$(target)))
  +MULTIARCH_DIRNAME = $(call 
 if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT))
  +else
  +ifneq (,$(findstring abi64,$(target)))
  +MULTIARCH_DIRNAME = $(call 
 if_multiarch,mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
  +else
  +MULTIARCH_DIRNAME = $(call 
 if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT))
  +endif
  +endif

 findstring seems a bit fragile for a full triple.  I think it would
 be better to have something similar to the current MIPS_SOFT definition:

 MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, 
 $(target_cpu_default)) $(filter soft, $(with_float))),soft)

 but for ABIs.  It could then also take with_abi into account.
 Maybe something like:

 MIPS_ABI = $(or $(with_abi), \
 $(if $(filter MIPS_ABI_DEFAULT=ABI_N32, \
$(target_cpu_default)), n32), \
 o32)

 (completely untested).

 Bikeshedding:
 Doko would know, but ISTR that $(or) did not exist in make-3.80 which is 
 currently the minimum prerequisite, fwiw.

Gah, that's a pity.  Thanks for the catch though.  Maybe firstword
would be OK instead.

I see I also fell into the usual ABI trap.  It wouldn't have affected
the use in this patch, but the default ought to be 32 rather than o32.

Thanks,
Richard


Re: [patch] set MULTIARCH_DIRNAME for multilib architectures

2013-06-12 Thread Richard Sandiford
Matthias Klose d...@ubuntu.com writes:
 Index: config/mips/t-linux64
 ===
 --- config/mips/t-linux64 (revision 200012)
 +++ config/mips/t-linux64 (working copy)
 @@ -24,3 +24,13 @@
   ../lib32$(call 
 if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
   ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
   ../lib64$(call 
 if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
 +
 +ifneq (,$(findstring abin32,$(target)))
 +MULTIARCH_DIRNAME = $(call 
 if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT))
 +else
 +ifneq (,$(findstring abi64,$(target)))
 +MULTIARCH_DIRNAME = $(call 
 if_multiarch,mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
 +else
 +MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT))
 +endif
 +endif

findstring seems a bit fragile for a full triple.  I think it would
be better to have something similar to the current MIPS_SOFT definition:

MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) 
$(filter soft, $(with_float))),soft)

but for ABIs.  It could then also take with_abi into account.
Maybe something like:

MIPS_ABI = $(or $(with_abi), \
$(if $(filter MIPS_ABI_DEFAULT=ABI_N32, \
  $(target_cpu_default)), n32), \
o32)

(completely untested).

Thanks,
Richard