summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2018-01-09 22:08:45 +0000
committerDimitry Andric <dim@FreeBSD.org>2018-01-09 22:08:45 +0000
commit3f6545049c70d6a97ffc29e8f71299f5a6f8b1e2 (patch)
treec18cd3e6f9e1313cacde86eb7ae36ffb204ba4a5
parent07b0973a9a6642b53cff3f81a53a6f0784f89b8d (diff)
downloadfreebsd-ports-3f6545049c70d6a97ffc29e8f71299f5a6f8b1e2.zip
Fix builds of lang/gcc{48,49,5} with clang 6.0.0
Since clang++ 6.0.0 now defaults to -std=gnu++14 (similar to g++ 6 and higher), building gcc48, gcc49 or gcc5 produce quite a number of "invalid suffix on literal; C++11 requires a space between literal and identifier" errors. This is because in many places, double quotes are directly followed by printf helper macros like HOST_WIDE_INT_PRINT. In gcc 6 and later, spaces were added between the double quotes and the macros, to fix this issue, but for earlier versions, use a combination of find, grep and sed to add them mechanically throughout the respective source trees. In addition, gcc5 needs a regular patch to fix an incorrect call to error(), which should have been error_at(). (This was a mismerge by upstream.) Approved by: gerald (maintainer) PR: 224927 MFH: 2018Q1
-rw-r--r--lang/gcc48/Makefile5
-rw-r--r--lang/gcc49/Makefile5
-rw-r--r--lang/gcc5/Makefile5
-rw-r--r--lang/gcc5/files/patch-gcc_toplev.c11
4 files changed, 26 insertions, 0 deletions
diff --git a/lang/gcc48/Makefile b/lang/gcc48/Makefile
index d01fbc178102..c1bfab776878 100644
--- a/lang/gcc48/Makefile
+++ b/lang/gcc48/Makefile
@@ -120,6 +120,11 @@ SUB_LIST+= TARGLIB=${TARGLIB}
pre-everything::
@${ECHO_MSG} "Making GCC ${PORTVERSION} for ${CONFIGURE_TARGET} [${LANGUAGES}]"
+post-patch:
+ @${FIND} ${WRKSRC} -type f -name '*.[ch]' | \
+ ${XARGS} ${EGREP} -l '"(HOST_WIDE|PLUGIN_COND)' | \
+ ${XARGS} ${REINPLACE_CMD} -E -e 's/"(HOST_WIDE|PLUGIN_COND)/" \1/g'
+
pre-configure:
cd ${WRKSRC} ; contrib/gcc_update --touch
@${RM} ${WRKSRC}/gcc/*/*.info*
diff --git a/lang/gcc49/Makefile b/lang/gcc49/Makefile
index 1807be495fb0..58603ca17957 100644
--- a/lang/gcc49/Makefile
+++ b/lang/gcc49/Makefile
@@ -120,6 +120,11 @@ SUB_LIST+= TARGLIB=${TARGLIB}
pre-everything::
@${ECHO_MSG} "Making GCC ${PORTVERSION} for ${CONFIGURE_TARGET} [${LANGUAGES}]"
+post-patch:
+ @${FIND} ${WRKSRC} -type f -name '*.[ch]' | \
+ ${XARGS} ${EGREP} -l '"(HOST_WIDE|PLUGIN_COND)' | \
+ ${XARGS} ${REINPLACE_CMD} -E -e 's/"(HOST_WIDE|PLUGIN_COND)/" \1/g'
+
pre-configure:
cd ${WRKSRC} ; contrib/gcc_update --touch
@${RM} ${WRKSRC}/gcc/*/*.info*
diff --git a/lang/gcc5/Makefile b/lang/gcc5/Makefile
index 052c2953e216..2dd569539919 100644
--- a/lang/gcc5/Makefile
+++ b/lang/gcc5/Makefile
@@ -117,6 +117,11 @@ CONFIGURE_ARGS+=--enable-languages=${LANGUAGES}
pre-everything::
@${ECHO_MSG} "Making GCC ${PORTVERSION} for ${CONFIGURE_TARGET} [${LANGUAGES}]"
+post-patch:
+ @${FIND} ${WRKSRC} -type f \( -name '*.[ch]' -o -name '*.cc' \) | \
+ ${XARGS} ${EGREP} -l '"(HOST_WIDE|PLUGIN_COND|PRId64)' | \
+ ${XARGS} ${REINPLACE_CMD} -E -e 's/"(HOST_WIDE|PLUGIN_COND|PRId64)/" \1/g'
+
pre-configure:
cd ${WRKSRC} ; contrib/gcc_update --touch
@${RM} ${WRKSRC}/gcc/*/*.info*
diff --git a/lang/gcc5/files/patch-gcc_toplev.c b/lang/gcc5/files/patch-gcc_toplev.c
new file mode 100644
index 000000000000..7ad6af702e2f
--- /dev/null
+++ b/lang/gcc5/files/patch-gcc_toplev.c
@@ -0,0 +1,11 @@
+--- gcc/toplev.c.orig 2018-01-04 15:22:21 UTC
++++ gcc/toplev.c
+@@ -1386,7 +1386,7 @@ process_options (void)
+
+ if (flag_sanitize & SANITIZE_THREAD)
+ {
+- error (UNKNOWN_LOCATION,
++ error_at (UNKNOWN_LOCATION,
+ "%<-fcheck-pointer-bounds%> is not supported with "
+ "Thread Sanitizer");
+