Skip to content

Build broken for Linux on CentOS v7 #8

@derek-gerstmann

Description

@derek-gerstmann

Building on CentOS v7 using Linux version 3.10.0-327.18.2.el7.x86_64 compiling with gcc version 4.8.5 20150623 I ran into some build problems.

Some minor issues, but the things I had to fix:

1 - Remove shadowing DP_GL_API static bool isMulticastSupported() from dp/gl/RenderTargetFBO.h since its defined in the base class as a virtual method.
2 - ParameterRenderer_Multicast_ interfaces use WGL specific load methods for procs. I just stubbed them out ... this needs to be updated to call GLEW.
3 - DP_ASSERT wasn't defined in many files. Including <dp/Assert.h> fixed things.
4 - dp/sg/animation/LinkManager.h uses unqualified names for Property::Type and TypedPropertyEnum<>. Adding fully qualified namespace fixed this.
5 - It appears you're using a non-standard Lib3DS. Grabbing the lib3ds-20080909.zip (aka v2.0.0-rc1) from the Google Code site and building against that seems to have the right interfaces, but the header filenames don't match. lib3ds-1.3.0 doesn't match at all. Not sure what version you're using.

See below for diff generated from master at the time of this issue report.

`diff --git a/apps/GLUTMinimalMulticast/src/main.cpp b/apps/GLUTMinimalMulticast/src/main.cpp
index e1ab66e..2cd2ac0 100644
--- a/apps/GLUTMinimalMulticast/src/main.cpp
+++ b/apps/GLUTMinimalMulticast/src/main.cpp
@@ -722,7 +722,11 @@ int runApp( options::variables_map const& opts )
int main(int argc, char *argv[])
{
// Enable NVX multicast extension
+#ifdef DP_OS_WINDOWS
_putenv("GL_NVX_LINKED_GPU_MULTICAST=1");
+#else

  • putenv("GL_NVX_LINKED_GPU_MULTICAST=1");
    +#endif
    int result = -1;
    try
    {
    diff --git a/dp/cuda/BufferHost.h b/dp/cuda/BufferHost.h
    index 718e839..3681487 100644
    --- a/dp/cuda/BufferHost.h
    +++ b/dp/cuda/BufferHost.h
    @@ -28,6 +28,7 @@

include <dp/cuda/Config.h>

include <dp/cuda/Types.h>

+#include <dp/Assert.h>

namespace dp
{
diff --git a/dp/cuda/src/Buffer3D.cpp b/dp/cuda/src/Buffer3D.cpp
index e784edf..2f25038 100644
--- a/dp/cuda/src/Buffer3D.cpp
+++ b/dp/cuda/src/Buffer3D.cpp
@@ -26,6 +26,7 @@

include <dp/cuda/Buffer3D.h>

include <driver_functions.h>

+#include <dp/Assert.h>

namespace dp
{
diff --git a/dp/gl/RenderTargetFBO.h b/dp/gl/RenderTargetFBO.h
index 826ec37..af786c8 100644
--- a/dp/gl/RenderTargetFBO.h
+++ b/dp/gl/RenderTargetFBO.h
@@ -518,7 +518,8 @@ namespace dp
/** \brief Test it isMulticastSupported
\return true if GL_NVX_linked_gpu_multicast is supported
**/

  •  DP_GL_API static bool isMulticastSupported();
    
  •  // DP_GL_API static bool isMulticastSupported();
    
  •  DP_GL_API virtual bool isMulticastSupported() const;
    

    /** \brief Set multicast state for this FBO
    \param enabled If enabled is true multicast will be enabled, otherwise it'll be disabled
    diff --git a/dp/gl/src/Buffer.cpp b/dp/gl/src/Buffer.cpp
    index b2ce9e5..8387969 100644
    --- a/dp/gl/src/Buffer.cpp
    +++ b/dp/gl/src/Buffer.cpp
    @@ -25,6 +25,7 @@

    include <dp/gl/Buffer.h>

    +#include <dp/Assert.h>

    namespace dp
    {
    diff --git a/dp/gl/src/RenderTargetFBO.cpp b/dp/gl/src/RenderTargetFBO.cpp
    index d6cc1c6..7dc79e0 100644
    --- a/dp/gl/src/RenderTargetFBO.cpp
    +++ b/dp/gl/src/RenderTargetFBO.cpp
    @@ -703,7 +703,7 @@ namespace dp
    return /!!GLEW_ARB_framebuffer_object ||/ !!GLEW_EXT_framebuffer_blit;
    }

  • bool RenderTargetFBO::isMulticastSupported()

  • bool RenderTargetFBO::isMulticastSupported() const
    {
    return dp::gl::isExtensionExported("GL_NVX_linked_gpu_multicast");
    }
    diff --git a/dp/rix/gl/src/ParameterRendererBufferAddressRangeMulticast.cpp b/dp/rix/gl/src/ParameterRendererBufferAddressRangeMulticast.cpp
    index e27f326..7eba624 100644
    --- a/dp/rix/gl/src/ParameterRendererBufferAddressRangeMulticast.cpp
    +++ b/dp/rix/gl/src/ParameterRendererBufferAddressRangeMulticast.cpp
    @@ -47,9 +47,13 @@ namespace dp
    , m_numberOfGPUs(numberOfGPUs)
    , m_cacheData(new uint8_t[m_bindingLength])
    {
    +#ifdef _MFC_VER
    glLGPUNamedBufferSubDataNVX = (PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)wglGetProcAddress("glLGPUNamedBufferSubDataNVX");
    assert(glLGPUNamedBufferSubDataNVX && "multicast extension not supported");
    glGetIntegerv(GL_MAX_LGPU_GPUS_NVX, (GLint*)(&m_numberOfGPUs));
    +#else

  •    assert(!"multicast extension not supported!");
    

    +#endif
    }

    void ParameterRendererBufferAddressRangeMulticast::activate()
    diff --git a/dp/rix/gl/src/ParameterRendererBufferMulticast.cpp b/dp/rix/gl/src/ParameterRendererBufferMulticast.cpp
    index 17b3f81..dae2132 100644
    --- a/dp/rix/gl/src/ParameterRendererBufferMulticast.cpp
    +++ b/dp/rix/gl/src/ParameterRendererBufferMulticast.cpp
    @@ -40,9 +40,13 @@ namespace dp
    , m_containerSize(containerSize)
    , m_numberOfGPUs(numberOfGPUs)
    {
    +#ifdef _MFC_VER
    glLGPUNamedBufferSubDataNVX = (PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)wglGetProcAddress("glLGPUNamedBufferSubDataNVX");
    assert(glLGPUNamedBufferSubDataNVX && "multicast extension not supported");
    glGetIntegerv(GL_MAX_LGPU_GPUS_NVX, (GLint*)(&m_numberOfGPUs));
    +#else

  •    assert(!"multicast extension not supported!");
    

    +#endif
    }

    void ParameterRendererBufferMulticast::render( void const* cache )
    diff --git a/dp/rix/gl/src/ParameterRendererBufferRangeMulticast.cpp b/dp/rix/gl/src/ParameterRendererBufferRangeMulticast.cpp
    index a30ef67..5fe3212 100644
    --- a/dp/rix/gl/src/ParameterRendererBufferRangeMulticast.cpp
    +++ b/dp/rix/gl/src/ParameterRendererBufferRangeMulticast.cpp
    @@ -45,9 +45,14 @@ namespace dp
    , m_containerSize(containerSize)
    , m_cacheData( new uint8_t[bindingLength] )
    {
    +
    +#ifdef _MFC_VER
    glLGPUNamedBufferSubDataNVX = (PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)wglGetProcAddress("glLGPUNamedBufferSubDataNVX");
    assert(glLGPUNamedBufferSubDataNVX && "multicast extension not supported");
    glGetIntegerv(GL_MAX_LGPU_GPUS_NVX, (GLint*)(&m_numberOfGPUs));
    +#else

  •    assert(!"multicast extension not supported!");
    

    +#endif
    }

    void ParameterRendererBufferRangeMulticast::activate()
    diff --git a/dp/sg/animation/LinkManager.h b/dp/sg/animation/LinkManager.h
    index 0c36aae..662c790 100644
    --- a/dp/sg/animation/LinkManager.h
    +++ b/dp/sg/animation/LinkManager.h
    @@ -165,8 +165,8 @@ namespace dp
    LinkId LinkManager::link(dp::sg::core::ObjectSharedPtr const & srcObject, dp::util::PropertyId srcProperty,
    dp::sg::core::ObjectSharedPtr const & dstObject, dp::util::PropertyId dstProperty)
    {

  •    DP_ASSERT( srcObject->getPropertyType(srcProperty) == static_castProperty::Type(TypedPropertyEnum<T>::type) );
    
  •    DP_ASSERT( dstObject->getPropertyType(dstProperty) == static_castProperty::Type(TypedPropertyEnum<T>::type) );
    
  •    DP_ASSERT( srcObject->getPropertyType(srcProperty) == static_castdp::util::Property::Type(dp::util::TypedPropertyEnum<T>::type) );
    
  •    DP_ASSERT( dstObject->getPropertyType(dstProperty) == static_cast<dp::util::Property::Type>(dp::util::TypedPropertyEnum<T>::type) );
    
     LinkId link = new LinkImpl<T>(srcObject, srcProperty, dstObject, dstProperty);
     storeLink(link);
    

    diff --git a/dp/sg/io/3DS/Loader/3DSLoader.h b/dp/sg/io/3DS/Loader/3DSLoader.h
    index ff343fd..81e139f 100644
    --- a/dp/sg/io/3DS/Loader/3DSLoader.h
    +++ b/dp/sg/io/3DS/Loader/3DSLoader.h
    @@ -44,8 +44,11 @@

    include <dp/util/PlugInCallback.h>

-#include <lib3ds/lib3ds.h>
-#include <lib3ds/lib3ds_impl.h>
+// #include <lib3ds/lib3ds.h>
+// #include <lib3ds/lib3ds_impl.h>
+
+#include <lib3ds.h>
+// #include <lib3ds/lib3ds_impl.h>

#ifdef _WIN32
// microsoft specific storage-class defines
diff --git a/dp/sg/ui/qt5/src/SceniXQGLWidget.cpp b/dp/sg/ui/qt5/src/SceniXQGLWidget.cpp
index 695a03b..1b79831 100644
--- a/dp/sg/ui/qt5/src/SceniXQGLWidget.cpp
+++ b/dp/sg/ui/qt5/src/SceniXQGLWidget.cpp
@@ -1401,7 +1401,7 @@ namespace dp
dp::gl::RenderContextSharedPtr renderContextGL = dp::gl::RenderContext::create( dp::gl::RenderContext::FromHWND( (HWND)winId(), &m_format, m_shareWidget ? m_shareWidget->getRenderContext() : dp::gl::RenderContextSharedPtr() ) );
#elif defined(DP_OS_LINUX)
// TODO support format

  •      dp::gl::RenderContextSharedPtr renderContextGL = dp::gl::RenderContext::create( dp::gl::RenderContext::FromDrawable( QX11Info::display(), QX11Info::appScreen(), winId(), m_shareWidget ? m_shareWidget->getRenderContext() : dp::gl::RenderContextSharedPtr::null ) );
    
  •      dp::gl::RenderContextSharedPtr renderContextGL = dp::gl::RenderContext::create( dp::gl::RenderContext::FromDrawable( QX11Info::display(), QX11Info::appScreen(), winId(), m_shareWidget ? m_shareWidget->getRenderContext() : nullptr ) );
    
    #endif
    m_renderTarget = dp::gl::RenderTargetFB::create( renderContextGL );
    }`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions