0026823: Configuration - use EGL on another platform without GLX
authoribs <ibs@opencascade.com>
Wed, 28 Oct 2015 15:24:34 +0000 (18:24 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 5 Nov 2015 09:04:05 +0000 (12:04 +0300)
31 files changed:
adm/genproj.tcl
src/AdvApp2Var/AdvApp2Var_ApproxF2var.cxx
src/AdvApp2Var/AdvApp2Var_SysBase.cxx
src/Aspect/Aspect_DisplayConnection.cxx
src/Aspect/Aspect_DisplayConnection.hxx
src/Aspect/Aspect_FBConfig.hxx
src/Aspect/Aspect_XWD.hxx
src/Draw/Draw_BasicCommands.cxx
src/ElCLib/ElCLib.cxx
src/InterfaceGraphic/InterfaceGraphic.hxx
src/Message/Message_PrinterOStream.cxx
src/OSD/OSD.cxx
src/OSD/OSD_Chronometer.cxx
src/OSD/OSD_Path.cxx
src/OSD/OSD_signal.cxx
src/OpenGl/OpenGl_GlFunctions.hxx
src/OpenGl/OpenGl_GraphicDriver.cxx
src/OpenGl/OpenGl_GraphicDriver.hxx
src/OpenGl/OpenGl_Window.cxx
src/Standard/Standard.cxx
src/Standard/Standard_CString.cxx
src/Standard/Standard_MMgrOpt.cxx
src/Standard/Standard_Mutex.cxx
src/Standard/Standard_Mutex.hxx
src/Standard/Standard_Real.cxx
src/Standard/Standard_Real.hxx
src/Standard/Standard_ShortReal.hxx
src/Standard/Standard_Time.hxx
src/Xw/Xw_Window.cxx
src/Xw/Xw_Window.hxx
src/math/math_Recipes.cxx

index 3fcfec2..f0ddc6f 100644 (file)
@@ -1109,12 +1109,19 @@ proc osutils:csfList { theOS theCsfLibsMap theCsfFrmsMap } {
       set aFrmsMap(CSF_TclLibs)    "Tcl"
       set aFrmsMap(CSF_TclTkLibs)  "Tk"
     } else {
-      set aLibsMap(CSF_ThreadLibs) "pthread rt"
-      set aLibsMap(CSF_OpenGlLibs) "GL"
-      set aLibsMap(CSF_TclLibs)    "tcl8.6"
-      set aLibsMap(CSF_TclTkLibs)  "X11 tk8.6"
-      set aLibsMap(CSF_XwLibs)     "X11 Xext Xmu Xi"
-      set aLibsMap(CSF_MotifLibs)  "X11"
+      if { "$theOS" == "qnx" } {
+        # CSF_ThreadLibs - pthread API is part og libc on QNX
+        set aLibsMap(CSF_OpenGlLibs) "EGL GLESv2"
+        set aLibsMap(CSF_TclLibs)    "tcl8.6"
+        set aLibsMap(CSF_TclTkLibs)  "tk8.6"
+      } else {
+        set aLibsMap(CSF_ThreadLibs) "pthread rt"
+        set aLibsMap(CSF_OpenGlLibs) "GL"
+        set aLibsMap(CSF_TclLibs)    "tcl8.6"
+        set aLibsMap(CSF_TclTkLibs)  "X11 tk8.6"
+        set aLibsMap(CSF_XwLibs)     "X11 Xext Xmu Xi"
+        set aLibsMap(CSF_MotifLibs)  "X11"
+      }
     }
 
     # optional 3rd-parties
@@ -2054,13 +2061,13 @@ proc osutils:cbp { theOutDir theProjName theSrcFiles theLibsList theFrameworks t
   # Release target configuration
   puts $aFile "\t\t\t<Target title=\"Release\">"
   if { "$theIsExe" == "true" } {
-    puts $aFile "\t\t\t\t<Option output=\"../../../${aWokStation}/cbp/bin/${theProjName}\" prefix_auto=\"1\" extension_auto=\"1\" />"
+    puts $aFile "\t\t\t\t<Option output=\"../../../${aWokStation}/cbp/bin/${theProjName}\" prefix_auto=\"0\" extension_auto=\"0\" />"
     puts $aFile "\t\t\t\t<Option type=\"1\" />"
   } else {
     if { "$aWokStation" == "wnt" } {
       puts $aFile "\t\t\t\t<Option output=\"../../../${aWokStation}/cbp/lib/${theProjName}\" prefix_auto=\"1\" extension_auto=\"1\" />"
     } else {
-      puts $aFile "\t\t\t\t<Option output=\"../../../${aWokStation}/cbp/lib/lib${theProjName}\" prefix_auto=\"1\" extension_auto=\"1\" />"
+      puts $aFile "\t\t\t\t<Option output=\"../../../${aWokStation}/cbp/lib/lib${theProjName}.so\" prefix_auto=\"0\" extension_auto=\"0\" />"
     }
     puts $aFile "\t\t\t\t<Option type=\"3\" />"
   }
@@ -2070,8 +2077,8 @@ proc osutils:cbp { theOutDir theProjName theSrcFiles theLibsList theFrameworks t
   } else {
     puts $aFile "\t\t\t\t<Option compiler=\"gcc\" />"
   }
-  puts $aFile "\t\t\t\t<Option createDefFile=\"1\" />"
-  puts $aFile "\t\t\t\t<Option createStaticLib=\"1\" />"
+  puts $aFile "\t\t\t\t<Option createDefFile=\"0\" />"
+  puts $aFile "\t\t\t\t<Option createStaticLib=\"0\" />"
 
   # compiler options per TARGET (including defines)
   puts $aFile "\t\t\t\t<Compiler>"
@@ -2085,15 +2092,20 @@ proc osutils:cbp { theOutDir theProjName theSrcFiles theLibsList theFrameworks t
   } else {
     puts $aFile "\t\t\t\t\t<Add option=\"-O2\" />"
     puts $aFile "\t\t\t\t\t<Add option=\"-std=c++0x\" />"
-    puts $aFile "\t\t\t\t\t<Add option=\"-mmmx\" />"
-    puts $aFile "\t\t\t\t\t<Add option=\"-msse\" />"
-    puts $aFile "\t\t\t\t\t<Add option=\"-msse2\" />"
-    puts $aFile "\t\t\t\t\t<Add option=\"-mfpmath=sse\" />"
+    if { "$aWokStation" != "qnx" } {
+      puts $aFile "\t\t\t\t\t<Add option=\"-mmmx\" />"
+      puts $aFile "\t\t\t\t\t<Add option=\"-msse\" />"
+      puts $aFile "\t\t\t\t\t<Add option=\"-msse2\" />"
+      puts $aFile "\t\t\t\t\t<Add option=\"-mfpmath=sse\" />"
+    }
   }
   foreach aMacro $theDefines {
     puts $aFile "\t\t\t\t\t<Add option=\"-D${aMacro}\" />"
   }
   puts $aFile "\t\t\t\t\t<Add option=\"-DNDEBUG\" />"
+  if { "$aWokStation" == "qnx" } {
+    puts $aFile "\t\t\t\t\t<Add option=\"-D_QNX_SOURCE\" />"
+  }
   puts $aFile "\t\t\t\t\t<Add option=\"-DNo_Exception\" />"
 
   puts $aFile "\t\t\t\t</Compiler>"
@@ -2111,13 +2123,13 @@ proc osutils:cbp { theOutDir theProjName theSrcFiles theLibsList theFrameworks t
   # Debug target configuration
   puts $aFile "\t\t\t<Target title=\"Debug\">"
   if { "$theIsExe" == "true" } {
-    puts $aFile "\t\t\t\t<Option output=\"../../../${aWokStation}/cbp/bind/${theProjName}\" prefix_auto=\"1\" extension_auto=\"1\" />"
+    puts $aFile "\t\t\t\t<Option output=\"../../../${aWokStation}/cbp/bind/${theProjName}\" prefix_auto=\"0\" extension_auto=\"0\" />"
     puts $aFile "\t\t\t\t<Option type=\"1\" />"
   } else {
     if { "$aWokStation" == "wnt" } {
       puts $aFile "\t\t\t\t<Option output=\"../../../${aWokStation}/cbp/libd/${theProjName}\" prefix_auto=\"1\" extension_auto=\"1\" />"
     } else {
-      puts $aFile "\t\t\t\t<Option output=\"../../../${aWokStation}/cbp/libd/lib${theProjName}\" prefix_auto=\"1\" extension_auto=\"1\" />"
+      puts $aFile "\t\t\t\t<Option output=\"../../../${aWokStation}/cbp/libd/lib${theProjName}.so\" prefix_auto=\"0\" extension_auto=\"0\" />"
     }
     puts $aFile "\t\t\t\t<Option type=\"3\" />"
   }
@@ -2127,8 +2139,8 @@ proc osutils:cbp { theOutDir theProjName theSrcFiles theLibsList theFrameworks t
   } else {
     puts $aFile "\t\t\t\t<Option compiler=\"gcc\" />"
   }
-  puts $aFile "\t\t\t\t<Option createDefFile=\"1\" />"
-  puts $aFile "\t\t\t\t<Option createStaticLib=\"1\" />"
+  puts $aFile "\t\t\t\t<Option createDefFile=\"0\" />"
+  puts $aFile "\t\t\t\t<Option createStaticLib=\"0\" />"
 
   # compiler options per TARGET (including defines)
   puts $aFile "\t\t\t\t<Compiler>"
@@ -2144,15 +2156,20 @@ proc osutils:cbp { theOutDir theProjName theSrcFiles theLibsList theFrameworks t
     puts $aFile "\t\t\t\t\t<Add option=\"-O0\" />"
     puts $aFile "\t\t\t\t\t<Add option=\"-std=c++0x\" />"
     puts $aFile "\t\t\t\t\t<Add option=\"-g\" />"
-    puts $aFile "\t\t\t\t\t<Add option=\"-mmmx\" />"
-    puts $aFile "\t\t\t\t\t<Add option=\"-msse\" />"
-    puts $aFile "\t\t\t\t\t<Add option=\"-msse2\" />"
-    puts $aFile "\t\t\t\t\t<Add option=\"-mfpmath=sse\" />"
+    if { "$aWokStation" != "qnx" } {
+      puts $aFile "\t\t\t\t\t<Add option=\"-mmmx\" />"
+      puts $aFile "\t\t\t\t\t<Add option=\"-msse\" />"
+      puts $aFile "\t\t\t\t\t<Add option=\"-msse2\" />"
+      puts $aFile "\t\t\t\t\t<Add option=\"-mfpmath=sse\" />"
+    }
   }
   foreach aMacro $theDefines {
     puts $aFile "\t\t\t\t\t<Add option=\"-D${aMacro}\" />"
   }
   puts $aFile "\t\t\t\t\t<Add option=\"-D_DEBUG\" />"
+  if { "$aWokStation" == "qnx" } {
+    puts $aFile "\t\t\t\t\t<Add option=\"-D_QNX_SOURCE\" />"
+  }
   puts $aFile "\t\t\t\t\t<Add option=\"-DDEB\" />"
   puts $aFile "\t\t\t\t</Compiler>"
 
index 19a5e7e..85a79ad 100644 (file)
 // Alternatively, this file may be used under the terms of Open CASCADE
 // commercial license or contractual agreement.
 
-// AdvApp2Var_ApproxF2var.cxx
-#include <math.h>
 #include <AdvApp2Var_SysBase.hxx>
 #include <AdvApp2Var_MathBase.hxx>
 #include <AdvApp2Var_Data_f2c.hxx>
 #include <AdvApp2Var_Data.hxx>
 #include <AdvApp2Var_ApproxF2var.hxx>
 
+#include <cmath>
 
 static
 int mmjacpt_(const integer *ndimen,
index ee37c0d..0ac817a 100644 (file)
@@ -13,7 +13,7 @@
 
 // AdvApp2Var_SysBase.cxx
 #include <assert.h>
-#include <math.h>
+#include <cmath>
 #include <stdlib.h>
 #include <string.h>
 #include <AdvApp2Var_Data_f2c.hxx>
index 00447a0..dfab6bf 100755 (executable)
@@ -23,7 +23,7 @@
 // =======================================================================
 Aspect_DisplayConnection::Aspect_DisplayConnection()
 {
-#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__)
+#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__) && !defined(__QNX__)
   OSD_Environment anEnv ("DISPLAY");
   myDisplayName = anEnv.Value();
   Init();
@@ -36,7 +36,7 @@ Aspect_DisplayConnection::Aspect_DisplayConnection()
 // =======================================================================
 Aspect_DisplayConnection::~Aspect_DisplayConnection()
 {
-#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__)
+#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__) && !defined(__QNX__)
   if (myDisplay != NULL)
   {
     XCloseDisplay (myDisplay);
@@ -44,7 +44,7 @@ Aspect_DisplayConnection::~Aspect_DisplayConnection()
 #endif
 }
 
-#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__)
+#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__) && !defined(__QNX__)
 // =======================================================================
 // function : Aspect_DisplayConnection
 // purpose  :
index 43d5b71..82165da 100755 (executable)
@@ -20,7 +20,7 @@
 #include <TCollection_AsciiString.hxx>
 #include <NCollection_DataMap.hxx>
 
-#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__)
+#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__) && !defined(__QNX__)
   #include <InterfaceGraphic.hxx>
 #endif
 
@@ -39,7 +39,7 @@ public:
   //! Destructor. Close opened connection.
   Standard_EXPORT ~Aspect_DisplayConnection();
 
-#if !defined(_WIN32) && !defined(__WIN32__) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__)
+#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__) && !defined(__QNX__)
   //! Constructor. Creates connection with display specified in theDisplayName.
   //! Display name should be in format "hostname:number" or "hostname:number.screen_number", where:
   //! hostname      - Specifies the name of the host machine on which the display is physically attached.
index 40cfe92..ffdb65b 100644 (file)
@@ -14,7 +14,7 @@
 #ifndef _Aspect_FBConfig_HeaderFile
 #define _Aspect_FBConfig_HeaderFile
 
-#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__)
+#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__) && !defined(__QNX__)
   typedef struct __GLXFBConfigRec* GLXFBConfig;
   typedef GLXFBConfig Aspect_FBConfig; // GLXFBConfig* under UNIX
 #else
index 474e82c..46fed65 100644 (file)
@@ -14,7 +14,7 @@
 #ifndef __Aspect_WNTXWD_HXX
 # define __Aspect_WNTXWD_HXX
 
-#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__)
+#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__) && !defined(__QNX__)
 #  include <X11/XWDFile.h>
 # else
 
index e7bff0f..3bf0a18 100644 (file)
@@ -362,6 +362,10 @@ static Standard_Integer dversion(Draw_Interpretor& di, Standard_Integer, const c
 #elif defined(__ANDROID__) /* must be before Linux */
   #include <android/api-level.h>
   di << "OS: Android (__ANDROID_API__ = " << __ANDROID_API__ << ")\n";
+#elif defined(__QNXNTO__)
+  di << "OS: QNX Neutrino\n";
+#elif defined(__QNX__)
+  di << "OS: QNX\n";
 #elif defined(__linux__)
   di << "OS: Linux\n";
 #elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
index cacd77c..9d4f8f4 100644 (file)
@@ -1342,7 +1342,12 @@ Standard_Real ElCLib::HyperbolaParameter (const gp_Ax2& Pos,
   Standard_Real sht = 
     gp_Vec(Pos.Location (), P).Dot
       (gp_Vec (Pos.YDirection())) / MinorRadius;
+
+#if __cplusplus >= 201103L
+  return std::asinh(sht);
+#else
   return asinh(sht);
+#endif
 }
 
 //=======================================================================
@@ -1421,7 +1426,11 @@ Standard_Real ElCLib::HyperbolaParameter (const gp_Ax22d& Pos,
 {
   gp_Vec2d V (Pos.YDirection().XY());
   Standard_Real sht = gp_Vec2d(Pos.Location(),P).Dot(V) /MinorRadius;
-  return asinh(sht); 
+#if __cplusplus >= 201103L
+  return std::asinh(sht);
+#else
+  return asinh(sht);
+#endif
 }
 
 //=======================================================================
index 80ac333..5379156 100644 (file)
@@ -23,7 +23,7 @@
   #undef DrawText
 #endif
 
-#elif !defined(__ANDROID__) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX))
+#elif !defined(__ANDROID__) && !defined(__QNX__) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX))
 
 #include <stdio.h>
 
index a36031a..edf41fc 100644 (file)
 #include <TCollection_AsciiString.hxx>
 #include <TCollection_ExtendedString.hxx>
 
+#ifndef _WIN32
+  #include <strings.h>
+#endif
+
 //=======================================================================
 //function : Constructor
 //purpose  : Empty constructor, defaulting to cerr
index 66ec9ca..6a6a4d0 100644 (file)
@@ -16,7 +16,7 @@
 #include <OSD.hxx>
 #include <Standard_Stream.hxx>
 
-#include <math.h>
+#include <cmath>
 #include <stdio.h>
 #if defined(isfinite)
 # define finite isfinite
@@ -125,6 +125,10 @@ void OSD::MilliSecSleep(const Standard_Integer aDelay)
 
 Standard_Boolean OSD::IsDivisible(const Standard_Real theDividend,const Standard_Real theDivisor)
 {
+#ifdef __QNX__
+  using std::finite;
+#endif
+
   if ( theDivisor == 0. || ! finite(theDividend) ) return Standard_False;
   //
   // you may divide by infinity
index 509aee6..9c1d77d 100644 (file)
@@ -57,7 +57,7 @@
 //=======================================================================
 void OSD_Chronometer::GetProcessCPU (Standard_Real& UserSeconds, Standard_Real& SystemSeconds)
 {
-#if defined(__linux__) || defined(linux) || defined(__FreeBSD__) || defined(__ANDROID__)
+#if defined(__linux__) || defined(linux) || defined(__FreeBSD__) || defined(__ANDROID__) || defined(__QNX__)
   static const long aCLK_TCK = sysconf(_SC_CLK_TCK);
 #else
   static const long aCLK_TCK = CLK_TCK;
@@ -87,7 +87,7 @@ void OSD_Chronometer::GetThreadCPU (Standard_Real& theUserSeconds,
     theUserSeconds   = Standard_Real(aTaskInfo.user_time.seconds)   + 0.000001 * aTaskInfo.user_time.microseconds;
     theSystemSeconds = Standard_Real(aTaskInfo.system_time.seconds) + 0.000001 * aTaskInfo.system_time.microseconds;
   }
-#elif (defined(_POSIX_TIMERS) && defined(_POSIX_THREAD_CPUTIME)) || defined(__ANDROID__)
+#elif (defined(_POSIX_TIMERS) && defined(_POSIX_THREAD_CPUTIME)) || defined(__ANDROID__) || defined(__QNX__)
   // on Linux, only user times are available for threads via clock_gettime()
   struct timespec t;
   if (!clock_gettime (CLOCK_THREAD_CPUTIME_ID, &t))
index cb9f999..f544ac4 100644 (file)
@@ -21,8 +21,8 @@
 #include <Standard_ProgramError.hxx>
 #include <TCollection_AsciiString.hxx>
 
-static OSD_SysType whereAmI(){
-#if defined(__digital__) || defined(__FreeBSD__) || defined(SUNOS) || defined(__APPLE__)
+static OSD_SysType whereAmI() {
+#if defined(__digital__) || defined(__FreeBSD__) || defined(SUNOS) || defined(__APPLE__) || defined(__QNX__)
   return OSD_UnixBSD;
 }
 #elif defined(sgi)  || defined(IRIX) || defined(__sun)  || defined(SOLARIS) ||  defined(__sco__) || defined(__hpux) || defined(HPUX)
index 1f9c374..4979916 100644 (file)
@@ -70,7 +70,7 @@ typedef void (* SIG_PFV) (int);
 
 #include <signal.h>
 
-#if !defined(__ANDROID__)
+#if !defined(__ANDROID__) && !defined(__QNX__)
   #include <sys/signal.h>
 #endif
 
index d787830..6b479b5 100644 (file)
@@ -45,7 +45,7 @@
     #include <OpenGL/gl.h>
   #endif
   #define __X_GL_H // prevent chaotic gl.h inclusions to avoid compile errors
-#elif defined(HAVE_GLES2) || defined(__ANDROID__)
+#elif defined(HAVE_GLES2) || defined(__ANDROID__) || defined(__QNX__)
   #include <GLES2/gl2.h>
   //#include <GLES3/gl3.h>
 #else
   #define GL_TEXTURE_BUFFER_ARB             0x8C2A
 #endif
 
-#if defined(__ANDROID__)
+#if defined(__ANDROID__) || defined(__QNX__)
   #define HAVE_EGL
 #endif
 
index 393eca0..545009d 100644 (file)
   #include <Xw_Window.hxx>
 #endif
 
-#if !defined(_WIN32) && !defined(__ANDROID__) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX))
+#if !defined(_WIN32) && !defined(__ANDROID__) && !defined(__QNX__) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX))
   #include <X11/Xlib.h> // XOpenDisplay()
 #endif
 
-#if defined(HAVE_EGL) || defined(__ANDROID__)
+#if defined(HAVE_EGL) || defined(__ANDROID__) || defined(__QNX__)
   #include <EGL/egl.h>
 #endif
 
@@ -59,7 +59,7 @@ OpenGl_GraphicDriver::OpenGl_GraphicDriver (const Handle(Aspect_DisplayConnectio
                                             const Standard_Boolean                  theToInitialize)
 : Graphic3d_GraphicDriver (theDisp),
   myIsOwnContext (Standard_False),
-#if defined(HAVE_EGL) || defined(__ANDROID__)
+#if defined(HAVE_EGL) || defined(__ANDROID__) || defined(__QNX__)
   myEglDisplay ((Aspect_Display )EGL_NO_DISPLAY),
   myEglContext ((Aspect_RenderingContext )EGL_NO_CONTEXT),
   myEglConfig  (NULL),
@@ -68,7 +68,7 @@ OpenGl_GraphicDriver::OpenGl_GraphicDriver (const Handle(Aspect_DisplayConnectio
   myMapOfView      (1, NCollection_BaseAllocator::CommonBaseAllocator()),
   myMapOfStructure (1, NCollection_BaseAllocator::CommonBaseAllocator())
 {
-#if !defined(_WIN32) && !defined(__ANDROID__) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX))
+#if !defined(_WIN32) && !defined(__ANDROID__) && !defined(__QNX__) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX))
   if (myDisplayConnection.IsNull())
   {
     //Aspect_GraphicDeviceDefinitionError::Raise ("OpenGl_GraphicDriver: cannot connect to X server!");
@@ -202,7 +202,7 @@ void OpenGl_GraphicDriver::ReleaseContext()
     aWindow->GetGlContext()->forcedRelease();
   }
 
-#if defined(HAVE_EGL) || defined(__ANDROID__)
+#if defined(HAVE_EGL) || defined(__ANDROID__) || defined(__QNX__)
   if (myIsOwnContext)
   {
     if (myEglContext != (Aspect_RenderingContext )EGL_NO_CONTEXT)
@@ -237,9 +237,9 @@ void OpenGl_GraphicDriver::ReleaseContext()
 Standard_Boolean OpenGl_GraphicDriver::InitContext()
 {
   ReleaseContext();
-#if defined(HAVE_EGL) || defined(__ANDROID__)
+#if defined(HAVE_EGL) || defined(__ANDROID__) || defined(__QNX__)
 
-#if !defined(_WIN32) && !defined(__ANDROID__) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX))
+#if !defined(_WIN32) && !defined(__ANDROID__) && !defined(__QNX__) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX))
   if (myDisplayConnection.IsNull())
   {
     return Standard_False;
@@ -328,7 +328,7 @@ Standard_Boolean OpenGl_GraphicDriver::InitContext()
   return Standard_True;
 }
 
-#if defined(HAVE_EGL) || defined(__ANDROID__)
+#if defined(HAVE_EGL) || defined(__ANDROID__) || defined(__QNX__)
 // =======================================================================
 // function : InitEglContext
 // purpose  :
@@ -338,7 +338,7 @@ Standard_Boolean OpenGl_GraphicDriver::InitEglContext (Aspect_Display          t
                                                        void*                   theEglConfig)
 {
   ReleaseContext();
-#if !defined(_WIN32) && !defined(__ANDROID__) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX))
+#if !defined(_WIN32) && !defined(__ANDROID__) && !defined(__QNX__) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX))
   if (myDisplayConnection.IsNull())
   {
     return Standard_False;
@@ -751,7 +751,7 @@ Standard_Boolean OpenGl_GraphicDriver::ViewExists (const Handle(Aspect_Window)&
   #else
     NSView* TheSpecifiedWindowId = THEWindow->HView();
   #endif
-#elif defined(__ANDROID__)
+#elif defined(__ANDROID__) || defined(__QNX__)
   int TheSpecifiedWindowId = -1;
 #else
   const Handle(Xw_Window) THEWindow = Handle(Xw_Window)::DownCast (AWindow);
@@ -776,7 +776,7 @@ Standard_Boolean OpenGl_GraphicDriver::ViewExists (const Handle(Aspect_Window)&
       #else
         NSView* TheWindowIdOfView = theWindow->HView();
       #endif
-#elif defined(__ANDROID__)
+#elif defined(__ANDROID__) || defined(__QNX__)
       int TheWindowIdOfView = 0;
 #else
       const Handle(Xw_Window) theWindow = Handle(Xw_Window)::DownCast (AspectWindow);
index b297ce3..8fa7e8f 100644 (file)
@@ -104,7 +104,7 @@ public:
   //! Perform initialization of default OpenGL context.
   Standard_EXPORT Standard_Boolean InitContext();
 
-#if defined(HAVE_EGL) || defined(__ANDROID__)
+#if defined(HAVE_EGL) || defined(__ANDROID__) || defined(__QNX__)
   //! Initialize default OpenGL context using existing one.
   //! @param theEglDisplay EGL connection to the Display
   //! @param theEglContext EGL rendering context
@@ -199,7 +199,7 @@ public:
   //! Could return NULL-handle if no window created by this driver.
   Standard_EXPORT const Handle(OpenGl_Context)& GetSharedContext() const;
 
-#if defined(HAVE_EGL) || defined(__ANDROID__)
+#if defined(HAVE_EGL) || defined(__ANDROID__) || defined(__QNX__)
   Aspect_Display          getRawGlDisplay() const { return myEglDisplay; }
   Aspect_RenderingContext getRawGlContext() const { return myEglContext;  }
   void*                   getRawGlConfig()  const { return myEglConfig; }
@@ -212,7 +212,7 @@ public:
 protected:
 
   Standard_Boolean        myIsOwnContext; //!< indicates that shared context has been created within OpenGl_GraphicDriver
-#if defined(HAVE_EGL) || defined(__ANDROID__)
+#if defined(HAVE_EGL) || defined(__ANDROID__) || defined(__QNX__)
   Aspect_Display          myEglDisplay;   //!< EGL connection to the Display : EGLDisplay
   Aspect_RenderingContext myEglContext;   //!< EGL rendering context         : EGLContext
   void*                   myEglConfig;    //!< EGL configuration             : EGLConfig
index 4f3b54f..73955bf 100644 (file)
@@ -26,7 +26,7 @@
 #include <TCollection_ExtendedString.hxx>
 #include <Graphic3d_GraphicDriver.hxx>
 
-#if defined(HAVE_EGL) || defined(__ANDROID__)
+#if defined(HAVE_EGL) || defined(__ANDROID__) || defined(__QNX__)
   #include <EGL/egl.h>
 #endif
 
@@ -36,7 +36,7 @@
 namespace
 {
 
-#if defined(HAVE_EGL) || defined(__ANDROID__)
+#if defined(HAVE_EGL) || defined(__ANDROID__) || defined(__QNX__)
   //
 #elif defined(_WIN32)
 
@@ -172,7 +172,7 @@ OpenGl_Window::OpenGl_Window (const Handle(OpenGl_GraphicDriver)& theDriver,
 
   Standard_Boolean isCoreProfile = Standard_False;
 
-#if defined(HAVE_EGL) || defined(__ANDROID__)
+#if defined(HAVE_EGL) || defined(__ANDROID__) || defined(__QNX__)
   EGLDisplay anEglDisplay = (EGLDisplay )theDriver->getRawGlDisplay();
   EGLContext anEglContext = (EGLContext )theDriver->getRawGlContext();
   EGLConfig  anEglConfig  = (EGLConfig  )theDriver->getRawGlConfig();
@@ -615,7 +615,7 @@ OpenGl_Window::~OpenGl_Window()
   // release "GL" context if it is owned by window
   // Mesa implementation can fail to destroy GL context if it set for current thread.
   // It should be safer to unset thread GL context before its destruction.
-#if defined(HAVE_EGL) || defined(__ANDROID__)
+#if defined(HAVE_EGL) || defined(__ANDROID__) || defined(__QNX__)
   if ((EGLSurface )myGlContext->myWindow != EGL_NO_SURFACE)
   {
     eglDestroySurface ((EGLDisplay )myGlContext->myDisplay,
@@ -677,7 +677,7 @@ Standard_Boolean OpenGl_Window::Activate()
 // =======================================================================
 void OpenGl_Window::Resize()
 {
-#if !defined(_WIN32) && !defined(HAVE_EGL) && !defined(__ANDROID__)
+#if !defined(_WIN32) && !defined(HAVE_EGL) && !defined(__ANDROID__) && !defined(__QNX__)
   Display* aDisp = (Display* )myGlContext->myDisplay;
   if (aDisp == NULL)
     return;
@@ -694,7 +694,7 @@ void OpenGl_Window::Resize()
   myWidth  = aWidth;
   myHeight = aHeight;
 
-#if !defined(_WIN32) && !defined(HAVE_EGL) && !defined(__ANDROID__)
+#if !defined(_WIN32) && !defined(HAVE_EGL) && !defined(__ANDROID__) && !defined(__QNX__)
   XResizeWindow (aDisp, myGlContext->myWindow, (unsigned int )myWidth, (unsigned int )myHeight);
   XSync (aDisp, False);
 #endif
@@ -711,7 +711,7 @@ void OpenGl_Window::Init()
   if (!Activate())
     return;
 
-#if defined(HAVE_EGL) || defined(__ANDROID__)
+#if defined(HAVE_EGL) || defined(__ANDROID__) || defined(__QNX__)
   eglQuerySurface ((EGLDisplay )myGlContext->myDisplay, (EGLSurface )myGlContext->myWindow, EGL_WIDTH,  &myWidth);
   eglQuerySurface ((EGLDisplay )myGlContext->myDisplay, (EGLSurface )myGlContext->myWindow, EGL_HEIGHT, &myHeight);
 #elif defined(_WIN32)
index 925d330..185cb64 100644 (file)
@@ -27,7 +27,7 @@
   #include <locale.h>
 #endif
 
-#if defined(_MSC_VER) || defined(__ANDROID__)
+#if defined(_MSC_VER) || defined(__ANDROID__) || defined(__QNX__)
   #include <malloc.h>
 #elif (defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 1)
   #include <mm_malloc.h>
@@ -264,7 +264,7 @@ Standard_Address Standard::AllocateAligned (const Standard_Size theSize,
 {
 #if defined(_MSC_VER)
   return _aligned_malloc (theSize, theAlign);
-#elif defined(__ANDROID__)
+#elif defined(__ANDROID__) || defined(__QNX__)
   return memalign (theAlign, theSize);
 #elif (defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 1)
   return _mm_malloc (theSize, theAlign);
@@ -287,7 +287,7 @@ void Standard::FreeAligned (Standard_Address thePtrAligned)
 {
 #if defined(_MSC_VER)
   _aligned_free (thePtrAligned);
-#elif defined(__ANDROID__)
+#elif defined(__ANDROID__) || defined(__QNX__)
   free (thePtrAligned);
 #elif (defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 1)
   _mm_free (thePtrAligned);
index bc8b5c6..ed39493 100755 (executable)
@@ -80,7 +80,7 @@ Standard_Integer HashCodes (const Standard_CString Value,
     // glibc version for android platform use locale-independent implementation of
     // strtod, strtol, strtoll functions. For other system with locale-depended
     // implementations problems may appear if "C" locale is not set explicitly.
-    #ifndef __ANDROID__
+    #if !defined(__ANDROID__) && !defined(__QNX__)
       #error System does not support xlocale. Import/export could be broken if C locale did not specified by application.
     #endif
     #define strtod_l(thePtr, theNextPtr, theLocale)              strtod(thePtr, theNextPtr)
index 45ae928..30b837f 100644 (file)
@@ -18,6 +18,7 @@
 #include <Standard_Assert.hxx>
 
 #include <stdio.h>
+#include <errno.h>
 
 #ifdef _WIN32
 # include <windows.h>
index cdf6498..ee10a87 100644 (file)
@@ -24,6 +24,8 @@
 #include <Standard_Mutex.hxx>
 #include <Standard_OStream.hxx>
 
+#include <errno.h>
+
 //=============================================
 // Standard_Mutex::Standard_Mutex
 //=============================================
index 22b8a03..42752a3 100644 (file)
 #include <Standard_Boolean.hxx>
 #include <Standard_ErrorHandlerCallback.hxx>
 
-#if (defined(_WIN32) || defined(__WIN32__))
+#if defined(_WIN32)
   #include <windows.h>
 #else
   #include <pthread.h>
-  #include <sys/errno.h>
+  ///#include <sys/errno.h>
   #include <unistd.h>
   #include <time.h>
 #endif
index 7db9110..53922fa 100644 (file)
@@ -239,8 +239,12 @@ Standard_Real     ATanh(const Standard_Real Value)
 #ifdef OCCT_DEBUG
     cout << "Illegal agument in ATanh" << endl ;
 #endif
-  } 
-  return atanh(Value); 
+  }
+#if __cplusplus >= 201103L
+  return std::atanh(Value);
+#else
+  return atanh(Value);
+#endif
 }
 
 //-------------------------------------------------------------------
@@ -253,8 +257,12 @@ Standard_Real     ACosh (const Standard_Real Value)
 #ifdef OCCT_DEBUG
     cout << "Illegal agument in ACosh" << endl ;
 #endif
-  } 
-  return acosh(Value); 
+  }
+#if __cplusplus >= 201103L
+  return std::acosh(Value);
+#else
+  return acosh(Value);
+#endif
 }
 
 //-------------------------------------------------------------------
index fb94a5c..4a2f39c 100644 (file)
@@ -15,8 +15,8 @@
 #ifndef _Standard_Real_HeaderFile
 #define _Standard_Real_HeaderFile
 
+#include <cmath>
 #include <float.h>
-#include <math.h>
 #include <Standard_values.h>
 #include <Standard_math.hxx>
 #include <Standard_TypeDef.hxx>
@@ -295,7 +295,11 @@ inline Standard_Real     Sinh(const Standard_Real Value)
 // ASinh : Returns the hyperbolic arc sine of a real
 //-------------------------------------------------------------------
 inline Standard_Real     ASinh(const Standard_Real Value) 
+#if __cplusplus >= 201103L
+{ return std::asinh(Value); }
+#else
 { return asinh(Value); }
+#endif
 
 //-------------------------------------------------------------------
 // Square : Returns a real to the power 2
index 8d1af20..674ab9f 100644 (file)
@@ -15,8 +15,8 @@
 #ifndef _Standard_ShortReal_HeaderFile
 #define _Standard_ShortReal_HeaderFile
 
+#include <cmath>
 #include <float.h>
-#include <math.h>
 
 #include <Standard_values.h>
 #include <Standard_TypeDef.hxx>
index 235f2bf..3a44119 100755 (executable)
@@ -21,6 +21,8 @@
 //    - IsEqual
 // ===============================================
 
+#ifndef __QNX__ // same as Standard_Size
+
 // ------------------------------------------------------------------
 // IsEqual : Returns Standard_True if two time values are equal
 // ------------------------------------------------------------------
@@ -31,3 +33,5 @@ inline Standard_Boolean IsEqual (const Standard_Time theOne,
 }
 
 #endif
+
+#endif
index 9e7b980..39b9a28 100644 (file)
@@ -15,7 +15,7 @@
 
 #include <Xw_Window.hxx>
 
-#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__)
+#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__) && !defined(__QNX__)
 
 #include <Aspect_Convert.hxx>
 #include <Aspect_WindowDefinitionError.hxx>
index 4e6236c..166e140 100644 (file)
@@ -16,7 +16,7 @@
 #ifndef _Xw_Window_H__
 #define _Xw_Window_H__
 
-#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__)
+#if !defined(_WIN32) && (!defined(__APPLE__) || defined(MACOSX_USE_GLX)) && !defined(__ANDROID__) && !defined(__QNX__)
 
 #include <Aspect_Window.hxx>
 
index cdd7e23..1df7b88 100644 (file)
@@ -27,7 +27,7 @@
 #define No_Standard_DimensionError
 //#endif
 
-#include <math.h>
+#include <cmath>
 
 #include <math_Recipes.hxx>