aboutsummaryrefslogtreecommitdiff
path: root/lang/gcc8
diff options
context:
space:
mode:
authorGerald Pfeifer <gerald@FreeBSD.org>2019-03-30 14:59:34 +0000
committerGerald Pfeifer <gerald@FreeBSD.org>2019-03-30 14:59:34 +0000
commita0f3f6b45e7850c48e90fe24e05d8de8fce83179 (patch)
tree8e7c613c18e917faafbaf4ff9bfca7bee5603168 /lang/gcc8
parent37c76d7fcd4dc1fbcdd73ecff1f86134e04ca8fd (diff)
downloadports-a0f3f6b45e7850c48e90fe24e05d8de8fce83179.tar.gz
ports-a0f3f6b45e7850c48e90fe24e05d8de8fce83179.zip
Backport r496295 | andreast | 2019-03-19 22:03:17 from lang/gcc8-devel:
This commit brings multilib support for gcc on amd64. This means you can compile and execute 32-bit binaries with gcc. The gcc part will be upstreamed as soon as gcc trunk opens for new commits. On the release front, gcc8, we will merge this commit after a week or so.
Notes
Notes: svn path=/head/; revision=497254
Diffstat (limited to 'lang/gcc8')
-rw-r--r--lang/gcc8/Makefile5
-rw-r--r--lang/gcc8/files/patch-amd64-gcc-multilib-support73
2 files changed, 77 insertions, 1 deletions
diff --git a/lang/gcc8/Makefile b/lang/gcc8/Makefile
index c063974f2445..6b46544fc7c7 100644
--- a/lang/gcc8/Makefile
+++ b/lang/gcc8/Makefile
@@ -3,6 +3,7 @@
PORTNAME= gcc
PORTVERSION= 8.3.0
+PORTREVISION= 1
CATEGORIES= lang
MASTER_SITES= GCC
PKGNAMESUFFIX= ${SUFFIX}
@@ -44,6 +45,8 @@ BOOTSTRAP_DESC= Build using a full bootstrap
GRAPHITE_DESC= Support for Graphite loop optimizations
.if exists(/usr/lib32/libc.so)
+OPTIONS_DEFINE_amd64+= MULTILIB
+OPTIONS_DEFAULT_amd64+= MULTILIB
OPTIONS_DEFINE_powerpc64+= MULTILIB
OPTIONS_DEFAULT_powerpc64+= MULTILIB
MULTILIB_DESC= Build support for 32-bit and 64-bit targets
@@ -137,7 +140,7 @@ post-stage:
# Add target libraries and include files to packaging list.
${RM} ${WRKDIR}/PLIST.lib
-.if ${ARCH} == powerpc64 && ${PORT_OPTIONS:MMULTILIB}
+.if (${ARCH} == amd64 || ${ARCH} == powerpc64) && ${PORT_OPTIONS:MMULTILIB}
${MKDIR} ${STAGEDIR}${TARGLIB32}
${MV} ${STAGEDIR}${PREFIX}/lib/lib32 ${STAGEDIR}${TARGLIB32}/gcc${SUFFIX}
.endif
diff --git a/lang/gcc8/files/patch-amd64-gcc-multilib-support b/lang/gcc8/files/patch-amd64-gcc-multilib-support
new file mode 100644
index 000000000000..ffae93210614
--- /dev/null
+++ b/lang/gcc8/files/patch-amd64-gcc-multilib-support
@@ -0,0 +1,73 @@
+--- UTC
+Index: gcc/config.gcc
+===================================================================
+--- gcc/config.gcc (revision 269726)
++++ gcc/config.gcc (working copy)
+@@ -4925,8 +4925,11 @@
+ ;;
+ i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
+ ;;
+- i[34567]86-*-freebsd* | x86_64-*-freebsd*)
++ i[34567]86-*-freebsd*)
+ ;;
++ x86_64-*-freebsd*)
++ tmake_file="${tmake_file} i386/t-freebsd64"
++ ;;
+ ia64*-*-linux*)
+ ;;
+
+Index: gcc/config/i386/freebsd64.h
+===================================================================
+--- gcc/config/i386/freebsd64.h (revision 269733)
++++ gcc/config/i386/freebsd64.h (working copy)
+@@ -31,7 +31,7 @@
+
+ #undef LINK_SPEC
+ #define LINK_SPEC "\
+- %{m32:-m elf_i386_fbsd} \
++ %{m32:-m elf_i386_fbsd}%{!m32:-m elf_x86_64_fbsd} \
+ %{p:%nconsider using '-pg' instead of '-p' with gprof(1)} \
+ %{v:-V} \
+ %{assert*} %{R*} %{rpath*} %{defsym*} \
+@@ -42,3 +42,6 @@
+ -dynamic-linker %(fbsd_dynamic_linker) } \
+ %{static:-Bstatic}} \
+ %{symbolic:-Bsymbolic}"
++
++#undef MULTILIB_DEFAULTS
++#define MULTILIB_DEFAULTS { "m64" }
+Index: gcc/config/i386/t-freebsd64
+===================================================================
+--- gcc/config/i386/t-freebsd64 (nonexistent)
++++ gcc/config/i386/t-freebsd64 (working copy)
+@@ -0,0 +1,30 @@
++# Copyright (C) 2019 Free Software Foundation, Inc.
++#
++# This file is part of GCC.
++#
++# GCC is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3, or (at your option)
++# any later version.
++#
++# GCC is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with GCC; see the file COPYING3. If not see
++# <http://www.gnu.org/licenses/>.
++
++# The 32-bit libraries are found in /usr/lib32
++
++# To support i386 and x86-64, the directory structrue
++# should be:
++#
++# /lib has x86-64 libraries.
++# /lib32 has i386 libraries.
++#
++
++MULTILIB_OPTIONS = m32
++MULTILIB_DIRNAMES = 32
++MULTILIB_OSDIRNAMES = ../lib32