1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-18 00:10:04 +00:00

converters/wkhtmltopdf: Fix build with gcc10

The patch is accepted from Debian:
0d4a3dd61c

Still keep it DEPRECATED and see how it builds on 13.X series.

PR:		269313
Reported by:	r.quakkelaar@quaras.nl
Approved by:	portmgr (just-fix-it)
This commit is contained in:
Muhammad Moinur Rahman 2023-11-20 13:42:15 +01:00
parent 1a0193ce5f
commit 3f47a0b1eb
5 changed files with 43 additions and 61 deletions

View File

@ -1,44 +0,0 @@
--- config.m4.orig 2023-06-06 15:54:29 UTC
+++ config.m4
@@ -37,6 +37,31 @@ AC_DEFUN([PHP_MBSTRING_EXTENSION], [
out="php_config.h"
+ dnl This is PECL build, check if bundled PCRE library is used
+ old_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS=$INCLUDES
+ AC_EGREP_CPP(yes,[
+#include <main/php_config.h>
+#if defined(HAVE_BUNDLED_PCRE) && !defined(COMPILE_DL_PCRE)
+yes
+#endif
+ ],[
+ PHP_PCRE_REGEX=yes
+ ],[
+ AC_EGREP_CPP(yes,[
+#include <main/php_config.h>
+#if defined(HAVE_PCRE) && !defined(COMPILE_DL_PCRE)
+yes
+#endif
+ ],[
+ PHP_PCRE_REGEX=pecl
+ PHP_ADD_INCLUDE($PHP_PCRE_DIR/include)
+ ],[
+ PHP_PCRE_REGEX=no
+ ])
+ ])
+
+
if test "$ext_shared" != "no" && test -f "$ext_builddir/config.h.in"; then
out="$abs_builddir/config.h"
fi
@@ -148,6 +173,9 @@ PHP_ARG_ENABLE([mbregex],
[MBSTRING: Disable multibyte regex support])],
[yes],
[no])
+
+PHP_ARG_WITH(pcre-dir, pcre install prefix,
+[ --with-pcre-dir MBSTRING: pcre install prefix], no, no)
if test "$PHP_MBSTRING" != "no"; then
AC_DEFINE([HAVE_MBSTRING],1,[whether to have multibyte string support])

View File

@ -57,7 +57,7 @@ MAKE_ARGS= INSTALL_ROOT="${STAGEDIR}${PREFIX}"
.include <bsd.port.pre.mk>
.if ${ARCH} == "i386" || ${ARCH} == "powerpc" || ${CHOSEN_COMPILER_TYPE} == gcc
USE_GCC= 8
USE_GCC= 10
.endif
pre-patch:
@ -69,8 +69,6 @@ post-patch:
-e 's|/usr/X11R6/include|${LOCALBASE}/include/X11|g' \
-e 's|/usr/X11R6/lib|${LOCALBASE}/lib|g' \
${PATCH_WRKSRC}/mkspecs/freebsd-g++/qmake.conf
${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
${PATCH_WRKSRC}/mkspecs/common/gcc-base.conf
${REINPLACE_CMD} -e "s|gcc|${CC}|g" -e "s|g++|${CXX}|g" \
${PATCH_WRKSRC}/mkspecs/common/g++-base.conf
${REINPLACE_CMD} -e "s|share/man|man|g" \
@ -85,7 +83,6 @@ post-patch:
${XARGS} ${REINPLACE_CMD} -E 's|register ([a-zA-Z])|\1|g'
.endif
post-build:
cd ${WRKSRC}/build/app && ${SETENV} ${MAKE_ENV} \
../qt/bin/qmake ../../wkhtmltopdf.pro && \

View File

@ -1,11 +0,0 @@
--- mkspecs/common/gcc-base.conf.orig 2020-09-02 16:07:46 UTC
+++ mkspecs/common/gcc-base.conf
@@ -53,7 +53,7 @@ QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB
QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC
QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
-QMAKE_LFLAGS +=
+QMAKE_LFLAGS += -Wl,-rpath=%%LOCALBASE%%/lib/gcc8
QMAKE_LFLAGS_DEBUG +=
QMAKE_LFLAGS_APP +=
QMAKE_LFLAGS_RELEASE +=

View File

@ -1,5 +1,5 @@
--- src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h.orig 2020-11-08 17:05:56.503694000 +0100
+++ src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h 2020-11-08 17:06:42.105176000 +0100
--- src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h.orig 2018-05-29 06:56:52 UTC
+++ src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
@@ -1003,7 +1003,9 @@
|| CPU(SPARC64) \
|| CPU(S390X) \

View File

@ -0,0 +1,40 @@
--- src/corelib/global/qglobal.h.orig 2023-11-20 11:36:42 UTC
+++ src/corelib/global/qglobal.h
@@ -2482,22 +2482,32 @@ typedef uint Flags;
#endif /* Q_NO_TYPESAFE_FLAGS */
-#if defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && !defined(Q_CC_RVCT)
+#if (defined(Q_CC_GNU) && !defined(Q_CC_RVCT))
/* make use of typeof-extension */
template <typename T>
class QForeachContainer {
public:
- inline QForeachContainer(const T& t) : c(t), brk(0), i(c.begin()), e(c.end()) { }
+ inline QForeachContainer(const T& t) : c(t), i(c.begin()), e(c.end()), control(1) { }
const T c;
int brk;
typename T::const_iterator i, e;
+ int control;
};
+// Explanation of the control word:
+// - it's initialized to 1
+// - that means both the inner and outer loops start
+// - if there were no breaks, at the end of the inner loop, it's set to 0, which
+// causes it to exit (the inner loop is run exactly once)
+// - at the end of the outer loop, it's inverted, so it becomes 1 again, allowing
+// the outer loop to continue executing
+// - if there was a break inside the inner loop, it will exit with control still
+// set to 1; in that case, the outer loop will invert it to 0 and will exit too
#define Q_FOREACH(variable, container) \
for (QForeachContainer<__typeof__(container)> _container_(container); \
- !_container_.brk && _container_.i != _container_.e; \
- __extension__ ({ ++_container_.brk; ++_container_.i; })) \
- for (variable = *_container_.i;; __extension__ ({--_container_.brk; break;}))
+ _container_.control && _container_.i != _container_.e; \
+ ++_container_.i, _container_.control ^= 1) \
+ for (variable = *_container_.i; _container_.control; _container_.control = 0)
#else