diff options
author | andreast <andreast@FreeBSD.org> | 2019-03-20 06:03:17 +0800 |
---|---|---|
committer | andreast <andreast@FreeBSD.org> | 2019-03-20 06:03:17 +0800 |
commit | 2b00094ed1813a11623d0998f202bdeec862b966 (patch) | |
tree | f859f5bf858f385085ac94e94f0c5e690f4bbd61 /lang | |
parent | acd4a23acbb70ad8c9476ea39f6fa3e99473f5ed (diff) | |
download | freebsd-ports-gnome-2b00094ed1813a11623d0998f202bdeec862b966.tar.gz freebsd-ports-gnome-2b00094ed1813a11623d0998f202bdeec862b966.tar.zst freebsd-ports-gnome-2b00094ed1813a11623d0998f202bdeec862b966.zip |
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.
Approved by: gerald@
Diffstat (limited to 'lang')
-rw-r--r-- | lang/gcc8-devel/Makefile | 4 | ||||
-rw-r--r-- | lang/gcc8-devel/files/patch-amd64-gcc-multilib-support | 73 | ||||
-rw-r--r-- | lang/gcc9-devel/Makefile | 4 | ||||
-rw-r--r-- | lang/gcc9-devel/files/patch-amd64-gcc-multilib-support | 73 |
4 files changed, 152 insertions, 2 deletions
diff --git a/lang/gcc8-devel/Makefile b/lang/gcc8-devel/Makefile index 1f0571f51088..432d94a8055e 100644 --- a/lang/gcc8-devel/Makefile +++ b/lang/gcc8-devel/Makefile @@ -51,6 +51,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 @@ -145,7 +147,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-devel/files/patch-amd64-gcc-multilib-support b/lang/gcc8-devel/files/patch-amd64-gcc-multilib-support new file mode 100644 index 000000000000..ffae93210614 --- /dev/null +++ b/lang/gcc8-devel/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 diff --git a/lang/gcc9-devel/Makefile b/lang/gcc9-devel/Makefile index 711e9182f248..fdf08f981961 100644 --- a/lang/gcc9-devel/Makefile +++ b/lang/gcc9-devel/Makefile @@ -49,6 +49,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 @@ -140,7 +142,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/gcc9-devel/files/patch-amd64-gcc-multilib-support b/lang/gcc9-devel/files/patch-amd64-gcc-multilib-support new file mode 100644 index 000000000000..ffae93210614 --- /dev/null +++ b/lang/gcc9-devel/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 |