Trying x2goclient in a test build with the libc++ update, it fails: c++ -c -std=c++03 -pipe -O2 -fno-wrapv -std=c++03 -O2 -fno-wrapv -Wall -W -pthread -DCFGCLIENT -D__linux__ -DQT_NO_Dang -I. -I../../../../local/include/X11/qt4/QtCore -I../../../../local/include/X11/qt4/QtNetwork -I../../../../local/iclude -I. -I. -I/usr/local/include -o sharewidget.o src/sharewidget.cpp In file included from src/sharewidget.cpp:18: In file included from src/sharewidget.h:21: In file included from src/configwidget.h:21: In file included from ../../../../local/include/X11/qt4/QtGui/QFrame:1: In file included from ../../../../local/include/X11/qt4/QtGui/qframe.h:45: In file included from ../../../../local/include/X11/qt4/QtGui/qwidget.h:46: In file included from ../../../../local/include/X11/qt4/QtGui/qwindowdefs.h:45: In file included from ../../../../local/include/X11/qt4/QtCore/qobjectdefs.h:45: In file included from ../../../../local/include/X11/qt4/QtCore/qnamespace.h:45: In file included from ../../../../local/include/X11/qt4/QtCore/qglobal.h:45: In file included from /usr/include/c++/v1/stddef.h:40: /usr/include/c++/v1/__config:186:10: fatal error: 'features.h' file not found #include <features.h> ^~~~~~~~~~~~ 1 error generated.
And indeed /usr/include/c++/v1/__config has this: : // Need to detect which libc we're using if we're on Linux. : #if defined(__linux__) : #include <features.h> : #if !defined(__GLIBC_PREREQ) : #define __GLIBC_PREREQ(a, b) 0 : #endif // !defined(__GLIBC_PREREQ) : #endif // defined(__linux__) In x2goclient release notes, it talks about setting __linux__ in order to get translated by moc to Q_OS_LINUX which is used across the source: [ Oleksandr Shneyder ] * New upstream version (3.99.3.0): - Add settings for direct RDP connection. - Implement direct RDP connection using standalone client. - Build direct RDP feature only for linux. - Add DEFINES += __linux__ to project file when building linux binaries (need to define Q_OS_LINUX in moc generator). [..] But the port hacks those into Q_OS_UNIX instead: do-configure: find ${WRKSRC} -type f -iname "*.cpp" -exec \ perl -pi -e 's,Q_OS_LINUX,Q_OS_UNIX,g;' \ -e 's,#include <linux/fs.h>,,g;' {} \; find ${WRKSRC} -type f -iname "*.h" -exec \ perl -pi -e 's,Q_OS_LINUX,Q_OS_UNIX,g;' \ -e 's,#include <linux/fs.h>,,g;' {} \; So it seems like setting __linux__ here probably isn't needed. With the following diff it builds with both old+new libc++ but I have no idea how to test. It claims to support RDP but that doesn't seem to work in the in-tree version and I have no idea about NX. Index: Makefile =================================================================== RCS file: /cvs/ports/x11/x2goclient/Makefile,v retrieving revision 1.7 diff -u -p -r1.7 Makefile --- Makefile 26 Jun 2018 16:56:50 -0000 1.7 +++ Makefile 10 Sep 2018 12:50:59 -0000 @@ -3,6 +3,7 @@ COMMENT = Qt4 client for the X2Go system DISTNAME = x2goclient-4.1.2.1 +REVISION = 0 CATEGORIES = x11 Index: patches/patch-x2goclient_pro =================================================================== RCS file: /cvs/ports/x11/x2goclient/patches/patch-x2goclient_pro,v retrieving revision 1.3 diff -u -p -r1.3 patch-x2goclient_pro --- patches/patch-x2goclient_pro 26 Jun 2018 16:56:50 -0000 1.3 +++ patches/patch-x2goclient_pro 10 Sep 2018 12:50:59 -0000 @@ -11,15 +11,14 @@ Index: x2goclient.pro RESOURCES += res/resources.qrc exists(res/txt/git-info) { -@@ -187,6 +187,11 @@ linux-g++ { - DEFINES += __linux__ - } - linux-g++-64 { -+ message("building $$TARGET with ldap and cups") -+ LIBS += -lldap -lcups -lX11 -lXpm -+ DEFINES += __linux__ -+} -+openbsd-* { +@@ -190,6 +190,10 @@ linux-g++-64 { message("building $$TARGET with ldap and cups") LIBS += -lldap -lcups -lX11 -lXpm DEFINES += __linux__ ++} ++openbsd-* { ++ message("building $$TARGET with ldap and cups") ++ LIBS += -lldap -lcups -lX11 -lXpm + } + x2go_linux_static { + message("linking all libs statically")