* gnu/packages/embedded.scm (gcc-arm-none-eabi-6): New variable. * gnu/packages/patches/gcc-6-arm-none-eabi-multilib.patch: New file. * gnu/packages/patches/gcc-6-cross-environment-variables.patch: New file. * gnu/local.mk (dist_patch_DATA): Add the patches.
		
			
				
	
	
		
			206 lines
		
	
	
	
		
			7.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			206 lines
		
	
	
	
		
			7.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From Anatol Pomozov <anatol.pomozov@gmail.com>
 | |
| Taken from Arch Linux arm-none-eabi-gcc package.
 | |
| 
 | |
| Modified version of ARM patch https://gcc.gnu.org/ml/gcc-patches/2012-05/msg00083/enable-with-multilib-list-for-arm.patch
 | |
| 
 | |
| This patch enables the use of the "--with-multilib-list" flag, when
 | |
| configuring GCC 6.2.  It makes GCC 6 compatible with the configure flags used
 | |
| in the "gcc-arm-none-eabi-4.9" package.
 | |
| 
 | |
| 
 | |
| diff --git a/gcc/Makefile.in b/gcc/Makefile.in
 | |
| index 4ab7405..6e1ea2c 100644
 | |
| --- a/gcc/Makefile.in
 | |
| +++ b/gcc/Makefile.in
 | |
| @@ -535,6 +535,7 @@ lang_opt_files=@lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt
 | |
|  lang_specs_files=@lang_specs_files@
 | |
|  lang_tree_files=@lang_tree_files@
 | |
|  target_cpu_default=@target_cpu_default@
 | |
| +with_multilib_list=@with_multilib_list@
 | |
|  OBJC_BOEHM_GC=@objc_boehm_gc@
 | |
|  extra_modes_file=@extra_modes_file@
 | |
|  extra_opt_files=@extra_opt_files@
 | |
| diff --git a/gcc/config.gcc b/gcc/config.gcc
 | |
| index cb08a5c..7bded02 100644
 | |
| --- a/gcc/config.gcc
 | |
| +++ b/gcc/config.gcc
 | |
| @@ -1072,7 +1072,7 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
 | |
|  	case ${target} in
 | |
|  	arm*-*-eabi*)
 | |
|  	  tm_file="$tm_file newlib-stdint.h"
 | |
| -	  tmake_file="${tmake_file} arm/t-bpabi"
 | |
| +	  tmake_file="${tmake_file} arm/t-bpabi arm/t-mlibs"
 | |
|  	  use_gcc_stdint=wrap
 | |
|  	  ;;
 | |
|  	arm*-*-rtems*)
 | |
| @@ -3684,42 +3684,6 @@ case "${target}" in
 | |
|  			exit 1
 | |
|  		fi
 | |
|  
 | |
| -		# Add extra multilibs
 | |
| -		if test "x$with_multilib_list" != x; then
 | |
| -			arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
 | |
| -			for arm_multilib in ${arm_multilibs}; do
 | |
| -				case ${arm_multilib} in
 | |
| -				aprofile)
 | |
| -				# Note that arm/t-aprofile is a
 | |
| -				# stand-alone make file fragment to be
 | |
| -				# used only with itself.  We do not
 | |
| -				# specifically use the
 | |
| -				# TM_MULTILIB_OPTION framework because
 | |
| -				# this shorthand is more
 | |
| -				# pragmatic. Additionally it is only
 | |
| -				# designed to work without any
 | |
| -				# with-cpu, with-arch with-mode
 | |
| -				# with-fpu or with-float options.
 | |
| -					if test "x$with_arch" != x \
 | |
| -					    || test "x$with_cpu" != x \
 | |
| -					    || test "x$with_float" != x \
 | |
| -					    || test "x$with_fpu" != x \
 | |
| -					    || test "x$with_mode" != x ; then
 | |
| -					    echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=aprofile" 1>&2
 | |
| -					    exit 1
 | |
| -					fi
 | |
| -					tmake_file="${tmake_file} arm/t-aprofile"
 | |
| -					break
 | |
| -					;;
 | |
| -				default)
 | |
| -					;;
 | |
| -				*)
 | |
| -					echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
 | |
| -					exit 1
 | |
| -					;;
 | |
| -				esac
 | |
| -			done
 | |
| -		fi
 | |
|  		;;
 | |
|  
 | |
|  	fr*-*-*linux*)
 | |
| diff --git a/gcc/config/arm/t-mlibs b/gcc/config/arm/t-mlibs
 | |
| new file mode 100644
 | |
| index 0000000..5720cf7
 | |
| --- /dev/null
 | |
| +++ b/gcc/config/arm/t-mlibs
 | |
| @@ -0,0 +1,89 @@
 | |
| +# A set of predefined MULTILIB which can be used for different ARM targets.
 | |
| +# Via the configure option --with-multilib-list, user can customize the
 | |
| +# final MULTILIB implementation.
 | |
| +
 | |
| +comma := ,
 | |
| +space :=
 | |
| +space +=
 | |
| +
 | |
| +MULTILIB_OPTIONS   = mthumb/marm
 | |
| +MULTILIB_DIRNAMES  = thumb arm
 | |
| +MULTILIB_OPTIONS  += march=armv6s-m/march=armv7-m/march=armv7e-m/march=armv7
 | |
| +MULTILIB_DIRNAMES += armv6-m armv7-m armv7e-m armv7-ar
 | |
| +MULTILIB_OPTIONS  += mfloat-abi=softfp/mfloat-abi=hard
 | |
| +MULTILIB_DIRNAMES += softfp fpu
 | |
| +MULTILIB_OPTIONS  += mfpu=fpv4-sp-d16/mfpu=vfpv3-d16
 | |
| +MULTILIB_DIRNAMES += fpv4-sp-d16 vfpv3-d16
 | |
| +
 | |
| +MULTILIB_MATCHES   = march?armv6s-m=mcpu?cortex-m0
 | |
| +MULTILIB_MATCHES  += march?armv6s-m=mcpu?cortex-m0plus
 | |
| +MULTILIB_MATCHES  += march?armv6s-m=mcpu?cortex-m1
 | |
| +MULTILIB_MATCHES  += march?armv6s-m=march?armv6-m
 | |
| +MULTILIB_MATCHES  += march?armv7-m=mcpu?cortex-m3
 | |
| +MULTILIB_MATCHES  += march?armv7e-m=mcpu?cortex-m4
 | |
| +MULTILIB_MATCHES  += march?armv7e-m=mcpu?cortex-m7
 | |
| +MULTILIB_MATCHES  += march?armv7=march?armv7-r
 | |
| +MULTILIB_MATCHES  += march?armv7=march?armv7-a
 | |
| +MULTILIB_MATCHES  += march?armv7=mcpu?cortex-r4
 | |
| +MULTILIB_MATCHES  += march?armv7=mcpu?cortex-r4f
 | |
| +MULTILIB_MATCHES  += march?armv7=mcpu?cortex-r5
 | |
| +MULTILIB_MATCHES  += march?armv7=mcpu?cortex-r7
 | |
| +MULTILIB_MATCHES  += march?armv7=mcpu?cortex-a5
 | |
| +MULTILIB_MATCHES  += march?armv7=mcpu?cortex-a7
 | |
| +MULTILIB_MATCHES  += march?armv7=mcpu?cortex-a8
 | |
| +MULTILIB_MATCHES  += march?armv7=mcpu?cortex-a9
 | |
| +MULTILIB_MATCHES  += march?armv7=mcpu?cortex-a15
 | |
| +MULTILIB_MATCHES  += mfpu?fpv4-sp-d16=mfpu?fpv5-sp-d16
 | |
| +MULTILIB_MATCHES  += mfpu?fpv4-sp-d16=mfpu?fpv5-d16
 | |
| +MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?vfpv3
 | |
| +MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?vfpv3-fp16
 | |
| +MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?vfpv3-d16-fp16
 | |
| +MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?vfpv3xd
 | |
| +MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?vfpv3xd-fp16
 | |
| +MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?vfpv4
 | |
| +MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?vfpv4-d16
 | |
| +MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?neon
 | |
| +MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?neon-fp16
 | |
| +MULTILIB_MATCHES  += mfpu?vfpv3-d16=mfpu?neon-vfpv4
 | |
| +
 | |
| +MULTILIB_EXCEPTIONS =
 | |
| +MULTILIB_REUSE =
 | |
| +
 | |
| +MULTILIB_REQUIRED  = mthumb
 | |
| +MULTILIB_REQUIRED += marm
 | |
| +MULTILIB_REQUIRED += mfloat-abi=hard
 | |
| +
 | |
| +MULTILIB_OSDIRNAMES  = mthumb=!thumb
 | |
| +MULTILIB_OSDIRNAMES += marm=!arm
 | |
| +MULTILIB_OSDIRNAMES += mfloat-abi.hard=!fpu
 | |
| +
 | |
| +ifneq (,$(findstring armv6-m,$(subst $(comma),$(space),$(with_multilib_list))))
 | |
| +MULTILIB_REQUIRED   += mthumb/march=armv6s-m
 | |
| +MULTILIB_OSDIRNAMES += mthumb/march.armv6s-m=!armv6-m
 | |
| +endif
 | |
| +
 | |
| +ifneq (,$(findstring armv7-m,$(subst $(comma),$(space),$(with_multilib_list))))
 | |
| +MULTILIB_REQUIRED   += mthumb/march=armv7-m
 | |
| +MULTILIB_OSDIRNAMES += mthumb/march.armv7-m=!armv7-m
 | |
| +endif
 | |
| +
 | |
| +ifneq (,$(findstring armv7e-m,$(subst $(comma),$(space),$(with_multilib_list))))
 | |
| +MULTILIB_REQUIRED   += mthumb/march=armv7e-m
 | |
| +MULTILIB_REQUIRED   += mthumb/march=armv7e-m/mfloat-abi=softfp/mfpu=fpv4-sp-d16
 | |
| +MULTILIB_REQUIRED   += mthumb/march=armv7e-m/mfloat-abi=hard/mfpu=fpv4-sp-d16
 | |
| +MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m=!armv7e-m
 | |
| +MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m/mfloat-abi.hard/mfpu.fpv4-sp-d16=!armv7e-m/fpu
 | |
| +MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m/mfloat-abi.softfp/mfpu.fpv4-sp-d16=!armv7e-m/softfp
 | |
| +endif
 | |
| +
 | |
| +ifneq (,$(filter armv7 armv7-r armv7-a,$(subst $(comma),$(space),$(with_multilib_list))))
 | |
| +MULTILIB_REQUIRED   += mthumb/march=armv7
 | |
| +MULTILIB_REQUIRED   += mthumb/march=armv7/mfloat-abi=softfp/mfpu=vfpv3-d16
 | |
| +MULTILIB_REQUIRED   += mthumb/march=armv7/mfloat-abi=hard/mfpu=vfpv3-d16
 | |
| +MULTILIB_OSDIRNAMES += mthumb/march.armv7=!armv7-ar/thumb
 | |
| +MULTILIB_OSDIRNAMES += mthumb/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16=!armv7-ar/thumb/fpu
 | |
| +MULTILIB_OSDIRNAMES += mthumb/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16=!armv7-ar/thumb/softfp
 | |
| +MULTILIB_REUSE      += mthumb/march.armv7=marm/march.armv7
 | |
| +MULTILIB_REUSE      += mthumb/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16=marm/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16
 | |
| +MULTILIB_REUSE      += mthumb/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16=marm/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16
 | |
| +endif
 | |
| diff --git a/gcc/configure b/gcc/configure
 | |
| index 9523773..24952e3 100755
 | |
| --- a/gcc/configure
 | |
| +++ b/gcc/configure
 | |
| @@ -763,6 +763,7 @@ SET_MAKE
 | |
|  accel_dir_suffix
 | |
|  real_target_noncanonical
 | |
|  enable_as_accelerator
 | |
| +with_multilib_list
 | |
|  REPORT_BUGS_TEXI
 | |
|  REPORT_BUGS_TO
 | |
|  PKGVERSION
 | |
| @@ -7462,6 +7463,7 @@ else
 | |
|  fi
 | |
|  
 | |
|  
 | |
| +
 | |
|  # -------------------------
 | |
|  # Checks for other programs
 | |
|  # -------------------------
 | |
| diff --git a/gcc/configure.ac b/gcc/configure.ac
 | |
| index 68b0ee8..f8a1097 100644
 | |
| --- a/gcc/configure.ac
 | |
| +++ b/gcc/configure.ac
 | |
| @@ -925,6 +925,7 @@ AC_ARG_WITH(multilib-list,
 | |
|  [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
 | |
|  :,
 | |
|  with_multilib_list=default)
 | |
| +AC_SUBST(with_multilib_list)
 | |
|  
 | |
|  # -------------------------
 | |
|  # Checks for other programs
 | |
| 
 |