Copy libGL force-inclusion hack from renderdoccmd to qrenderdoc

* Normally Qt uses libGL dynamically so this isn't an issue, but if Qt
  is statically linked then we need this.
This commit is contained in:
baldurk
2017-02-22 17:17:15 +00:00
parent 9ffc18a5c0
commit 8ff3ee93b5
3 changed files with 70 additions and 0 deletions
+12
View File
@@ -20,6 +20,18 @@ if(QRENDERDOC_NO_CXX11_REGEX)
set(QMAKE_CXXFLAGS "-DNO_CXX11_REGEX=1")
endif()
if(ENABLE_GL)
set(QMAKE_CXXFLAGS "${QMAKE_CXXFLAGS} -DRENDERDOC_SUPPORT_GL")
endif()
if(ENABLE_GLES)
set(QMAKE_CXXFLAGS "${QMAKE_CXXFLAGS} -DRENDERDOC_SUPPORT_GLES")
endif()
if(ENABLE_VULKAN)
set(QMAKE_CXXFLAGS "${QMAKE_CXXFLAGS} -DRENDERDOC_SUPPORT_VULKAN")
endif()
if(APPLE)
add_custom_command(OUTPUT RenderDoc.icns
COMMAND echo Creating OS X Icon
+48
View File
@@ -33,6 +33,52 @@
#include "Code/Resources.h"
#include "Windows/MainWindow.h"
#if defined(Q_OS_LINUX)
#if defined(RENDERDOC_SUPPORT_GL)
// symbol defined in libGL but not librenderdoc.
// Forces link of libGL after renderdoc (otherwise all symbols would
// be resolved and libGL wouldn't link, meaning dlsym(RTLD_NEXT) would fai
extern "C" void glXWaitX();
#endif
#if defined(RENDERDOC_SUPPORT_GLES)
// symbol defined in libEGL but not in librenderdoc.
// Forces link of libEGL.
extern "C" int eglWaitGL(void);
#endif
void linuxlibGLhack()
{
volatile bool never_run = false;
#if defined(RENDERDOC_SUPPORT_GL)
if(never_run)
glXWaitX();
#endif
#if defined(RENDERDOC_SUPPORT_GLES)
if(never_run)
eglWaitGL();
#endif
}
#else
void linuxlibGLhack()
{
}
#endif
void sharedLogOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
LogMessageType logtype = eLogType_Comment;
@@ -53,6 +99,8 @@ int main(int argc, char *argv[])
{
qInstallMessageHandler(sharedLogOutput);
linuxlibGLhack();
qInfo() << "QRenderDoc initialising.";
QString filename = "";
+10
View File
@@ -96,6 +96,16 @@ win32 {
} else {
QT += x11extras
DEFINES += RENDERDOC_PLATFORM_POSIX RENDERDOC_PLATFORM_LINUX RENDERDOC_WINDOWING_XLIB RENDERDOC_WINDOWING_XCB
contains(QMAKE_CXXFLAGS, "-DRENDERDOC_SUPPORT_GL") {
# Link against GL
LIBS += -lGL
}
contains(QMAKE_CXXFLAGS, "-DRENDERDOC_SUPPORT_GLES") {
# Link against EGL
LIBS += -lEGL
}
}
}