diff --git a/adm/cmake/occt_defs_flags.cmake b/adm/cmake/occt_defs_flags.cmake index 5484c6759f..484002d1aa 100644 --- a/adm/cmake/occt_defs_flags.cmake +++ b/adm/cmake/occt_defs_flags.cmake @@ -130,7 +130,9 @@ elseif ("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xClang") if (APPLE) # CLang can be used with both libstdc++ and libc++, however on OS X libstdc++ is outdated. set (CMAKE_CXX_FLAGS "-std=c++0x -stdlib=libc++ ${CMAKE_CXX_FLAGS}") - else() + elseif(NOT WIN32) + # CLang for Windows (at least CLang 8.0 distributed with VS 2019) + # does not support option "-std=c++0x" set (CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS}") endif() elseif (DEFINED CMAKE_COMPILER_IS_GNUCXX) diff --git a/adm/genconf.tcl b/adm/genconf.tcl index 88b17d46b7..799945e3ba 100644 --- a/adm/genconf.tcl +++ b/adm/genconf.tcl @@ -82,6 +82,11 @@ if { ! [catch {exec vswhere.exe -version "\[16.0,16.99\]" -latest -requires Micr lappend ::SYS_VC_LIST "vc142-uwp" lappend ::SYS_VCVARS_LIST "$res\\VC\\vcvarsall.bat" } +if { ! [catch {exec vswhere.exe -version "\[16.0,16.99\]" -latest -requires Microsoft.VisualStudio.Component.VC.ClangCL -property installationPath} res] } { + lappend ::SYS_VS_LIST "Visual Studio 2019 (16, toolset ClangCL)" + lappend ::SYS_VC_LIST "vclang" + lappend ::SYS_VCVARS_LIST "$res\\VC\\vcvarsall.bat" +} # detect installed Visual Studio instances from global environment if { [info exists ::env(VS140COMNTOOLS)] } { diff --git a/adm/genconfdeps.tcl b/adm/genconfdeps.tcl index 030879dc15..3897341ce2 100644 --- a/adm/genconfdeps.tcl +++ b/adm/genconfdeps.tcl @@ -241,7 +241,11 @@ proc wokdep:Preferred {theList theCmpl theArch} { # keep only two first digits in "vc141" if { ! [regexp {^vc[0-9][0-9]} $theCmpl aCmpl] } { - set aCmpl $theCmpl + if { [regexp {^vclang} $theCmpl] } { + set aCmpl vc14 + } else { + set aCmpl $theCmpl + } } set aShortList {} @@ -631,7 +635,11 @@ proc wokdep:SearchTBB {theErrInc theErrLib32 theErrLib64 theErrBin32 theErrBin64 # keep only two first digits in "vc141" if { ! [regexp {^vc[0-9][0-9]} ${::VCVER} aVcLib] } { - set aVcLib ${::VCVER} + if { [regexp {^vclang} ${::VCVER}] } { + set aVcLib vc14 + } else { + set aVcLib ${::VCVER} + } } set isFound "true" diff --git a/adm/genproj.tcl b/adm/genproj.tcl index 400b71525d..b95166d1b3 100644 --- a/adm/genproj.tcl +++ b/adm/genproj.tcl @@ -256,7 +256,7 @@ proc genAllResources {} { # Wrapper-function to generate VS project files proc genproj {theFormat args} { - set aSupportedFormats { "vc7" "vc8" "vc9" "vc10" "vc11" "vc12" "vc14" "vc141" "vc142" "cbp" "xcd" "pro"} + set aSupportedFormats { "vc7" "vc8" "vc9" "vc10" "vc11" "vc12" "vc14" "vc141" "vc142" "vclang" "cbp" "xcd" "pro"} set aSupportedPlatforms { "wnt" "uwp" "lin" "mac" "ios" "qnx" } set isHelpRequire false @@ -320,6 +320,7 @@ proc genproj {theFormat args} { vc14 - Visual Studio 2015 vc141 - Visual Studio 2017 vc142 - Visual Studio 2019 + vclang - Visual Studio with ClangCL toolset cbp - CodeBlocks xcd - XCode pro - Qt Creator @@ -529,7 +530,8 @@ proc OS:MKPRC { theOutDir theFormat theLibType thePlatform theCmpl theSolution } "vc12" - "vc14" - "vc141" - - "vc142" { OS:MKVC $anOutDir $aModules $theSolution $theFormat $isUWP} + "vc142" - + "vclang" { OS:MKVC $anOutDir $aModules $theSolution $theFormat $isUWP} "cbp" { OS:MKCBP $anOutDir $aModules $theSolution $thePlatform $theCmpl } "xcd" { set ::THE_GUIDS_LIST($::aTKNullKey) "000000000000000000000000" @@ -984,7 +986,8 @@ proc osutils:vcsolution:header { vcversion } { append var \ "Microsoft Visual Studio Solution File, Format Version 12.00\n" \ "# Visual Studio 2013\n" - } elseif { "$vcversion" == "vc14" || "$vcversion" == "vc141" || "$vcversion" == "vc142" } { + } elseif { "$vcversion" == "vc14" || "$vcversion" == "vc141" || + "$vcversion" == "vc142" || "$vcversion" == "vclang" } { append var \ "Microsoft Visual Studio Solution File, Format Version 12.00\n" \ "# Visual Studio 14\n" @@ -1225,6 +1228,9 @@ proc osutils:vcproj:readtemplate {theVcVer isUWP isExec} { } elseif { $theVcVer == "vc142" } { set aVCRTVer "vc14" set aToolset "v142" + } elseif { $theVcVer == "vclang" } { + set aVCRTVer "vc14" + set aToolset "ClangCL" } set what "$theVcVer" diff --git a/adm/templates/env.bat b/adm/templates/env.bat index 4180f23999..b262e10811 100644 --- a/adm/templates/env.bat +++ b/adm/templates/env.bat @@ -77,6 +77,9 @@ if "%VCVER:~-4%" == "-uwp" ( set VCLIB=%VCLIB%-uwp set VCPROP=Universal ) +if "%VCFMT%" == "vclang" ( + set VCLIB=vc14 +) rem echo VCVER=%VCVER% VCFMT=%VCFMT% VCLIB=%VCLIB% VCPROP=%VCPROP% rem ----- Parsing of Visual Studio platform ----- @@ -106,6 +109,10 @@ if not "%DevEnvDir%" == "" ( for /f "usebackq delims=" %%i in (`vswhere.exe -version "[16.0,16.99]" -latest -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do ( set "DevEnvDir=%%i\Common7\IDE\" ) +) else if /I "%VCFMT%" == "vclang" ( + for /f "usebackq delims=" %%i in (`vswhere.exe -version "[16.0,16.99]" -latest -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do ( + set "DevEnvDir=%%i\Common7\IDE\" + ) ) else if /I "%VCFMT%" == "gcc" ( rem MinGW ) else ( @@ -118,6 +125,7 @@ if not "%DevEnvDir%" == "" ( echo vc14 = VS 2015 echo vc141 = VS 2017 echo vc142 = VS 2019 + echo vclang = VS 2019 with ClangCL toolset exit /B ) @@ -147,6 +155,11 @@ if /I "%VCFMT%" == "vc9" ( set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat" ) set "VCPlatformToolSet=v142" +) else if /I "%VCFMT%" == "vclang" ( + for /f "usebackq delims=" %%i in (`vswhere.exe -version "[16.0,16.99]" -latest -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do ( + set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat" + ) + set "VCPlatformToolSet=ClangCL" ) else if /I "%VCFMT%" == "gcc" ( rem MinGW ) else ( diff --git a/dox/overview/overview.md b/dox/overview/overview.md index 6096a2d5b3..6eb6c1b2b9 100644 --- a/dox/overview/overview.md +++ b/dox/overview/overview.md @@ -210,7 +210,7 @@ for which OCCT is certified to work. | OS | Compiler | | --------- | ----------- | -| Windows | Microsoft Visual Studio: 2008 SP1, 2010 SP1, 2012 Update 4, 2013 Update 5, 2015 Update 3, 2017 1, 2019
GCC 4.3+ (Mingw-w64)| +| Windows | Microsoft Visual Studio: 2008 SP1, 2010 SP1, 2012 Update 4, 2013 Update 5, 2015 Update 3, 2017 1, 2019
, LLVM (ClangCL), GCC 4.3+ (Mingw-w64)| | Linux | GNU gcc 4.3+
LLVM CLang 3.6+ | | OS X / macOS | XCode 6 or newer | | Android | NDK r10, GNU gcc 4.8 or newer | diff --git a/src/AdvApp2Var/AdvApp2Var_SysBase.hxx b/src/AdvApp2Var/AdvApp2Var_SysBase.hxx index 6f1c5330a4..135ec21fb1 100644 --- a/src/AdvApp2Var/AdvApp2Var_SysBase.hxx +++ b/src/AdvApp2Var/AdvApp2Var_SysBase.hxx @@ -16,12 +16,8 @@ #define AdvApp2Var_SysBase_HeaderFile #include +#include #include -#if _MSC_VER -#include -#else -#include -#endif class AdvApp2Var_SysBase { public: diff --git a/src/BVH/BVH_Object.hxx b/src/BVH/BVH_Object.hxx index 82a9133f34..609169dd32 100644 --- a/src/BVH/BVH_Object.hxx +++ b/src/BVH/BVH_Object.hxx @@ -62,7 +62,7 @@ public: BVH_Object() {} //! Releases resources of geometric object. - virtual ~BVH_Object() = 0; + virtual ~BVH_Object() {} public: @@ -71,14 +71,4 @@ public: }; -// ======================================================================= -// function : ~BVH_Object -// purpose : -// ======================================================================= -template -BVH_Object::~BVH_Object() -{ - // -} - #endif // _BVH_Object_Header diff --git a/src/BVH/BVH_QueueBuilder.hxx b/src/BVH/BVH_QueueBuilder.hxx index c7c4bf34ec..51d79615dc 100644 --- a/src/BVH/BVH_QueueBuilder.hxx +++ b/src/BVH/BVH_QueueBuilder.hxx @@ -44,7 +44,7 @@ public: myNumOfThreads (theNumOfThreads) {} //! Releases resources of BVH queue based builder. - virtual ~BVH_QueueBuilder() = 0; + virtual ~BVH_QueueBuilder() {} public: @@ -288,14 +288,4 @@ void BVH_QueueBuilder::Build (BVH_Set* theSet, } } -// ======================================================================= -// function : ~BVH_QueueBuilder -// purpose : -// ======================================================================= -template -BVH_QueueBuilder::~BVH_QueueBuilder() -{ - // -} - #endif // _BVH_QueueBuilder_Header diff --git a/src/BVH/BVH_Set.hxx b/src/BVH/BVH_Set.hxx index 2d0950cb2b..aaec3f3272 100644 --- a/src/BVH/BVH_Set.hxx +++ b/src/BVH/BVH_Set.hxx @@ -35,7 +35,7 @@ public: BVH_Set() {} //! Releases resources of set of objects. - virtual ~BVH_Set() = 0; + virtual ~BVH_Set() {} //! Returns AABB of the entire set of objects. virtual BVH_Box Box() const @@ -67,14 +67,4 @@ public: }; -// ======================================================================= -// function : ~BVH_Set -// purpose : -// ======================================================================= -template -BVH_Set::~BVH_Set() -{ - // -} - #endif // _BVH_Set_Header diff --git a/src/BinLDrivers/BinLDrivers_DocumentStorageDriver.cxx b/src/BinLDrivers/BinLDrivers_DocumentStorageDriver.cxx index 4c7d91fdd9..a01903d561 100644 --- a/src/BinLDrivers/BinLDrivers_DocumentStorageDriver.cxx +++ b/src/BinLDrivers/BinLDrivers_DocumentStorageDriver.cxx @@ -223,7 +223,7 @@ void BinLDrivers_DocumentStorageDriver::WriteSubTree // Write attributes TDF_AttributeIterator itAtt (theLabel); for ( ; itAtt.More() && theOS; itAtt.Next()) { - const Handle(TDF_Attribute)& tAtt = itAtt.Value(); + const Handle(TDF_Attribute) tAtt = itAtt.Value(); const Handle(Standard_Type)& aType = tAtt->DynamicType(); // Get type ID and driver Handle(BinMDF_ADriver) aDriver; diff --git a/src/ExprIntrp/ExprIntrp.lex b/src/ExprIntrp/ExprIntrp.lex index c2e2bc749a..e9f05243a3 100644 --- a/src/ExprIntrp/ExprIntrp.lex +++ b/src/ExprIntrp/ExprIntrp.lex @@ -57,6 +57,10 @@ static int yywrap() // Note that Intel compiler also defines _MSC_VER but has different warning ids #if defined(__INTEL_COMPILER) #pragma warning(disable:177 1786 1736) +#elif defined(__clang__) +#pragma GCC diagnostic ignored "-Wunused-function" +#pragma GCC diagnostic ignored "-Winconsistent-dllimport" +#pragma GCC diagnostic ignored "-Wunneeded-internal-declaration" #else #pragma warning(disable:4131 4244 4273 4127 4267) #endif diff --git a/src/ExprIntrp/lex.ExprIntrp.c b/src/ExprIntrp/lex.ExprIntrp.c index fa1f37beb1..c3593f9339 100644 --- a/src/ExprIntrp/lex.ExprIntrp.c +++ b/src/ExprIntrp/lex.ExprIntrp.c @@ -2106,6 +2106,10 @@ static int yywrap() // Note that Intel compiler also defines _MSC_VER but has different warning ids #if defined(__INTEL_COMPILER) #pragma warning(disable:177 1786 1736) +#elif defined(__clang__) +#pragma GCC diagnostic ignored "-Wunused-function" +#pragma GCC diagnostic ignored "-Winconsistent-dllimport" +#pragma GCC diagnostic ignored "-Wunneeded-internal-declaration" #else #pragma warning(disable:4131 4244 4273 4127 4267) #endif diff --git a/src/IVtkDraw/IVtkDraw.cxx b/src/IVtkDraw/IVtkDraw.cxx index 9c517db488..e3befa7f21 100644 --- a/src/IVtkDraw/IVtkDraw.cxx +++ b/src/IVtkDraw/IVtkDraw.cxx @@ -252,13 +252,13 @@ Standard_Integer GenerateId() // Function : WClass // Purpose : //========================================================= -const Handle(Standard_Transient)& IVtkDraw::WClass() +const Handle(WNT_WClass)& IVtkDraw::WClass() { - static Handle(Standard_Transient) aWindowClass; + static Handle(WNT_WClass) aWindowClass; #ifdef _WIN32 if (aWindowClass.IsNull()) { - aWindowClass = new WNT_WClass ("GWVTK_Class", DefWindowProc, + aWindowClass = new WNT_WClass ("GWVTK_Class", NULL, CS_VREDRAW | CS_HREDRAW, 0, 0, ::LoadCursorW (NULL, IDC_ARROW)); } @@ -305,8 +305,7 @@ void IVtkDraw::ViewerInit (Standard_Integer thePxLeft, #ifdef _WIN32 if (GetWindow().IsNull()) { - GetWindow() = new WNT_Window ("IVtkTest", - Handle(WNT_WClass)::DownCast (WClass()), + GetWindow() = new WNT_Window ("IVtkTest", WClass(), WS_OVERLAPPEDWINDOW, aPxLeft, aPxTop, aPxWidth, aPxHeight, diff --git a/src/IVtkDraw/IVtkDraw.hxx b/src/IVtkDraw/IVtkDraw.hxx index 6c485bea5e..2f7643a93a 100644 --- a/src/IVtkDraw/IVtkDraw.hxx +++ b/src/IVtkDraw/IVtkDraw.hxx @@ -21,6 +21,7 @@ #include class Draw_Interpretor; +class WNT_WClass; class IVtkDraw { @@ -37,7 +38,7 @@ public: Standard_EXPORT static void Commands (Draw_Interpretor& theCommands); private: - Standard_EXPORT static const Handle(Standard_Transient)& WClass(); + Standard_EXPORT static const Handle(WNT_WClass)& WClass(); }; #endif diff --git a/src/IVtkDraw/IVtkDraw_Interactor.cxx b/src/IVtkDraw/IVtkDraw_Interactor.cxx index 743caf9a39..0a3b90190b 100644 --- a/src/IVtkDraw/IVtkDraw_Interactor.cxx +++ b/src/IVtkDraw/IVtkDraw_Interactor.cxx @@ -187,6 +187,10 @@ void IVtkDraw_Interactor::Initialize() this->Size[1] = aSize[1]; } +#ifdef _WIN32 +LRESULT CALLBACK WndProc(HWND theHWnd, UINT theUMsg, WPARAM theWParam, LPARAM theLParam); +#endif + //=========================================================== // Function : Enable // Purpose : diff --git a/src/Image/Image_Texture.cxx b/src/Image/Image_Texture.cxx index 6e9e752147..c81f0eadd3 100644 --- a/src/Image/Image_Texture.cxx +++ b/src/Image/Image_Texture.cxx @@ -181,7 +181,7 @@ Handle(Image_PixMap) Image_Texture::loadImageOffset (const TCollection_AsciiStri // ================================================================ TCollection_AsciiString Image_Texture::ProbeImageFileFormat() const { - static const int THE_PROBE_SIZE = 20; + static const Standard_Size THE_PROBE_SIZE = 20; char aBuffer[THE_PROBE_SIZE]; if (!myBuffer.IsNull()) { diff --git a/src/NCollection/NCollection_AccAllocator.hxx b/src/NCollection/NCollection_AccAllocator.hxx index ba716b8d71..239ba351c2 100644 --- a/src/NCollection/NCollection_AccAllocator.hxx +++ b/src/NCollection/NCollection_AccAllocator.hxx @@ -75,7 +75,7 @@ protected: { Standard_Size myValue; public: - AlignedSize(){} + AlignedSize() : myValue(0) {} AlignedSize(const Standard_Size theValue) : myValue((theValue + Align - 1) & ~(Align - 1)) {} operator Standard_Size() const {return myValue;} @@ -86,7 +86,7 @@ protected: { Standard_Byte* myValue; public: - AlignedPtr(){} + AlignedPtr() : myValue(0) {} AlignedPtr(const Standard_Address theValue) : myValue((Standard_Byte*)((Standard_Size)theValue & ~(Align - 1))) {} operator Standard_Address () const {return myValue;} diff --git a/src/NCollection/NCollection_SparseArrayBase.hxx b/src/NCollection/NCollection_SparseArrayBase.hxx index e5cbeff9db..ce5087d63b 100644 --- a/src/NCollection/NCollection_SparseArrayBase.hxx +++ b/src/NCollection/NCollection_SparseArrayBase.hxx @@ -190,8 +190,8 @@ public: private: // Copy constructor and assignment operator are private thus not accessible - NCollection_SparseArrayBase (const NCollection_SparseArrayBase&) {} - void operator = (const NCollection_SparseArrayBase&) {} + NCollection_SparseArrayBase(const NCollection_SparseArrayBase&); + void operator = (const NCollection_SparseArrayBase&); protected: // Object life diff --git a/src/OSD/OSD_Directory.cxx b/src/OSD/OSD_Directory.cxx index 5e4c90933d..589e5eac06 100644 --- a/src/OSD/OSD_Directory.cxx +++ b/src/OSD/OSD_Directory.cxx @@ -29,7 +29,7 @@ #include #endif - void _osd_wnt_set_error (OSD_Error&, OSD_WhoAmI, ... ); + void _osd_wnt_set_error (OSD_Error&, Standard_Integer, ... ); #else #include #include diff --git a/src/OSD/OSD_DirectoryIterator.cxx b/src/OSD/OSD_DirectoryIterator.cxx index 568122bb91..9e349588bc 100644 --- a/src/OSD/OSD_DirectoryIterator.cxx +++ b/src/OSD/OSD_DirectoryIterator.cxx @@ -193,7 +193,7 @@ Standard_Integer OSD_DirectoryIterator::Error()const{ #define _FD ( ( PWIN32_FIND_DATAW )myData ) -void _osd_wnt_set_error ( OSD_Error&, OSD_WhoAmI, ... ); +void _osd_wnt_set_error ( OSD_Error&, Standard_Integer, ... ); OSD_DirectoryIterator :: OSD_DirectoryIterator ( const OSD_Path& where, @@ -318,7 +318,12 @@ Standard_Integer OSD_DirectoryIterator :: Error () const { } // end OSD_DirectoryIterator :: Error // For compatibility with UNIX version -OSD_DirectoryIterator::OSD_DirectoryIterator() {} +OSD_DirectoryIterator::OSD_DirectoryIterator() +: myFlag(false), + myHandle(0), + myData(0), + myFirstCall(Standard_False) +{} void OSD_DirectoryIterator::Initialize( const OSD_Path&, diff --git a/src/OSD/OSD_Disk.cxx b/src/OSD/OSD_Disk.cxx index 0bd42fbe7c..ef37014bf8 100644 --- a/src/OSD/OSD_Disk.cxx +++ b/src/OSD/OSD_Disk.cxx @@ -25,7 +25,7 @@ #ifdef _WIN32 #include - void _osd_wnt_set_error (OSD_Error&, OSD_WhoAmI, ... ); + void _osd_wnt_set_error (OSD_Error&, Standard_Integer, ... ); static TCollection_AsciiString _osd_wnt_set_disk_name (const OSD_Path& thePath) { diff --git a/src/OSD/OSD_File.cxx b/src/OSD/OSD_File.cxx index cb4850f6da..b8c0abc43b 100644 --- a/src/OSD/OSD_File.cxx +++ b/src/OSD/OSD_File.cxx @@ -42,7 +42,7 @@ #define OPEN_OLD 1 #define OPEN_APPEND 2 - void _osd_wnt_set_error ( OSD_Error&, OSD_WhoAmI, ... ); + void _osd_wnt_set_error (OSD_Error&, Standard_Integer, ...); #ifndef OCCT_UWP PSECURITY_DESCRIPTOR __fastcall _osd_wnt_protection_to_sd ( const OSD_Protection&, BOOL, const wchar_t* ); diff --git a/src/OSD/OSD_FileIterator.cxx b/src/OSD/OSD_FileIterator.cxx index 7b8f469c91..d77ca7e84f 100644 --- a/src/OSD/OSD_FileIterator.cxx +++ b/src/OSD/OSD_FileIterator.cxx @@ -267,7 +267,7 @@ Standard_Integer OSD_FileIterator::Error()const{ #define _FD ( ( PWIN32_FIND_DATAW )myData ) -void _osd_wnt_set_error ( OSD_Error&, OSD_WhoAmI, ... ); +void _osd_wnt_set_error ( OSD_Error&, Standard_Integer, ... ); OSD_FileIterator :: OSD_FileIterator ( const OSD_Path& where, @@ -392,7 +392,12 @@ Standard_Integer OSD_FileIterator :: Error () const { } // end OSD_FileIterator :: Error // For compatibility with UNIX version -OSD_FileIterator::OSD_FileIterator() {} +OSD_FileIterator::OSD_FileIterator() +: myFlag(Standard_False), + myHandle(0), + myData(0), + myFirstCall(Standard_False) +{} void OSD_FileIterator::Initialize( const OSD_Path&, diff --git a/src/OSD/OSD_FileNode.cxx b/src/OSD/OSD_FileNode.cxx index 5155543808..f0444f717c 100644 --- a/src/OSD/OSD_FileNode.cxx +++ b/src/OSD/OSD_FileNode.cxx @@ -393,7 +393,7 @@ BOOL __fastcall _osd_wnt_sd_to_protection ( #endif Standard_Integer __fastcall _get_file_type ( Standard_CString, HANDLE ); -void _osd_wnt_set_error ( OSD_Error&, OSD_WhoAmI, ... ); +void _osd_wnt_set_error ( OSD_Error&, Standard_Integer, ... ); static BOOL __fastcall _get_file_time (const wchar_t*, LPSYSTEMTIME, BOOL ); static void __fastcall _test_raise ( TCollection_AsciiString, Standard_CString ); @@ -825,7 +825,7 @@ Standard_Integer OSD_FileNode::Error () const { } // end OSD_FileNode :: Error -void _osd_wnt_set_error ( OSD_Error& err, OSD_WhoAmI who, ... ) { +void _osd_wnt_set_error ( OSD_Error& err, Standard_Integer who, ... ) { DWORD errCode; diff --git a/src/OSD/OSD_Host.cxx b/src/OSD/OSD_Host.cxx index 38d7414fdd..1547be3fbd 100644 --- a/src/OSD/OSD_Host.cxx +++ b/src/OSD/OSD_Host.cxx @@ -189,7 +189,7 @@ Standard_Integer OSD_Host::Error()const{ #pragma comment( lib, "WSOCK32.LIB" ) #endif -void _osd_wnt_set_error ( OSD_Error&, OSD_WhoAmI, ... ); +void _osd_wnt_set_error ( OSD_Error&, Standard_Integer, ... ); static BOOL fInit = FALSE; static TCollection_AsciiString hostName; @@ -218,11 +218,7 @@ OSD_Host :: OSD_Host () { ZeroMemory (szHostName, sizeof(char) * (MAX_COMPUTERNAME_LENGTH + 1)); // suppress GetVersionEx() deprecation warning -#if defined(__INTEL_COMPILER) - #pragma warning(disable : 1478) -#elif defined(_MSC_VER) - #pragma warning(disable : 4996) -#endif + Standard_DISABLE_DEPRECATION_WARNINGS if (!GetVersionExW (&osVerInfo)) { _osd_wnt_set_error (myError, OSD_WHost); @@ -236,9 +232,7 @@ OSD_Host :: OSD_Host () { ms.dwLength = sizeof(MEMORYSTATUS); GlobalMemoryStatus (&ms); } // end else -#ifdef _MSC_VER - #pragma warning(default : 4996) -#endif + Standard_ENABLE_DEPRECATION_WARNINGS if ( !Failed () ) { diff --git a/src/OSD/OSD_Parallel_TBB.cxx b/src/OSD/OSD_Parallel_TBB.cxx index 9179f8dba4..2344a6ca2d 100644 --- a/src/OSD/OSD_Parallel_TBB.cxx +++ b/src/OSD/OSD_Parallel_TBB.cxx @@ -21,10 +21,12 @@ #include #include +Standard_DISABLE_DEPRECATION_WARNINGS #include #include #include #include +Standard_ENABLE_DEPRECATION_WARNINGS //======================================================================= //function : forEachExternal diff --git a/src/OSD/OSD_Path.cxx b/src/OSD/OSD_Path.cxx index 6e5c5836eb..5f53fa684a 100644 --- a/src/OSD/OSD_Path.cxx +++ b/src/OSD/OSD_Path.cxx @@ -882,8 +882,9 @@ void OSD_Path::SetExtension(const TCollection_AsciiString& aName){ static void __fastcall _test_raise ( OSD_SysType, Standard_CString ); static void __fastcall _remove_dup ( TCollection_AsciiString& ); -OSD_Path :: OSD_Path () { - +OSD_Path :: OSD_Path () +: myUNCFlag(Standard_False), mySysDep(OSD_WindowsNT) +{ } // end constructor ( 1 ) OSD_Path :: OSD_Path ( diff --git a/src/OSD/OSD_Process.cxx b/src/OSD/OSD_Process.cxx index c3163f4e4d..d7f4b7923e 100644 --- a/src/OSD/OSD_Process.cxx +++ b/src/OSD/OSD_Process.cxx @@ -187,7 +187,7 @@ Standard_Integer OSD_Process::Error()const{ //------------------- WNT Sources of OSD_Path --------------------------- //------------------------------------------------------------------------ -void _osd_wnt_set_error ( OSD_Error&, OSD_WhoAmI, ... ); +void _osd_wnt_set_error ( OSD_Error&, Standard_Integer, ... ); // ======================================================================= // function : OSD_Process diff --git a/src/OSD/OSD_Timer.cxx b/src/OSD/OSD_Timer.cxx index e8bc5d9519..c3129a89be 100644 --- a/src/OSD/OSD_Timer.cxx +++ b/src/OSD/OSD_Timer.cxx @@ -52,10 +52,10 @@ static inline Standard_Real GetWallClockTime () LARGE_INTEGER time; return isOk && QueryPerformanceCounter (&time) ? (Standard_Real)time.QuadPart / (Standard_Real)freq.QuadPart : -#ifndef OCCT_UWP - 0.001 * GetTickCount(); -#else +#if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600) 0.001 * GetTickCount64(); +#else + 0.001 * GetTickCount(); #endif } diff --git a/src/QABugs/QABugs_11.cxx b/src/QABugs/QABugs_11.cxx index 56d3b33d56..c7012e849e 100644 --- a/src/QABugs/QABugs_11.cxx +++ b/src/QABugs/QABugs_11.cxx @@ -2174,7 +2174,7 @@ static int StackOverflow (int i = -1) #endif // this code does not work with optimize mode on Windows -#if defined(_MSC_VER) +#if defined(_MSC_VER) && !defined(__clang__) #pragma optimize( "", off ) #endif static Standard_Integer OCC6143 (Draw_Interpretor& di, Standard_Integer argc, const char ** argv) @@ -2488,7 +2488,7 @@ static Standard_Integer OCC30775 (Draw_Interpretor& theDI, Standard_Integer theN return 0; } -#if defined(_MSC_VER) +#if defined(_MSC_VER) && !defined(__clang__) #pragma optimize( "", on ) #endif diff --git a/src/QABugs/QABugs_19.cxx b/src/QABugs/QABugs_19.cxx index 2f835f5784..d61fcc5c3e 100644 --- a/src/QABugs/QABugs_19.cxx +++ b/src/QABugs/QABugs_19.cxx @@ -57,9 +57,11 @@ #include #ifdef HAVE_TBB + Standard_DISABLE_DEPRECATION_WARNINGS #include #include #include + Standard_ENABLE_DEPRECATION_WARNINGS #endif #include diff --git a/src/Quantity/Quantity_ColorRGBA.cxx b/src/Quantity/Quantity_ColorRGBA.cxx index 4ce134c4b6..10ad6164ac 100644 --- a/src/Quantity/Quantity_ColorRGBA.cxx +++ b/src/Quantity/Quantity_ColorRGBA.cxx @@ -44,7 +44,7 @@ namespace const ColorInteger theColorComponentBase) { Standard_ASSERT_RETURN (theColorComponentBase >= 2, - __FUNCTION__ ": 'theColorComponentBase' must be greater than 1.", + "'theColorComponentBase' must be greater than 1.", 0.0f); const ColorInteger aColorComponentMaxValue = theColorComponentBase - 1; const ColorInteger aColorComponentAsInteger = theColorInteger % theColorComponentBase; @@ -67,7 +67,7 @@ namespace Quantity_ColorRGBA& theColor) { Standard_ASSERT_RETURN (theColorComponentBase >= 2, - __FUNCTION__ ": 'theColorComponentBase' must be greater than 1.", + "'theColorComponentBase' must be greater than 1.", 0.0f); NCollection_Vec4 aColor (1.0f); if (hasAlphaComponent) diff --git a/src/Standard/Standard_ErrorHandler.hxx b/src/Standard/Standard_ErrorHandler.hxx index 5071021411..09bdc7bfbf 100644 --- a/src/Standard/Standard_ErrorHandler.hxx +++ b/src/Standard/Standard_ErrorHandler.hxx @@ -202,6 +202,8 @@ inline Standard_ErrorHandler::Callback::Callback () } inline Standard_ErrorHandler::Callback::~Callback () { + (void)myHandler; + (void)myPrev; } inline void Standard_ErrorHandler::Callback::RegisterCallback () { diff --git a/src/Standard/Standard_Macro.hxx b/src/Standard/Standard_Macro.hxx index a2ab9188a4..63303b2de1 100644 --- a/src/Standard/Standard_Macro.hxx +++ b/src/Standard/Standard_Macro.hxx @@ -147,14 +147,14 @@ #if defined(__ICL) || defined (__INTEL_COMPILER) #define Standard_DISABLE_DEPRECATION_WARNINGS __pragma(warning(push)) __pragma(warning(disable:1478)) #define Standard_ENABLE_DEPRECATION_WARNINGS __pragma(warning(pop)) -#elif defined(_MSC_VER) - #define Standard_DISABLE_DEPRECATION_WARNINGS __pragma(warning(push)) __pragma(warning(disable:4996)) - #define Standard_ENABLE_DEPRECATION_WARNINGS __pragma(warning(pop)) #elif (defined(__GNUC__) && __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__) // available since at least gcc 4.2 (maybe earlier), however only gcc 4.6+ supports this pragma inside the function body // CLang also supports this gcc syntax (in addition to "clang diagnostic ignored") #define Standard_DISABLE_DEPRECATION_WARNINGS _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") #define Standard_ENABLE_DEPRECATION_WARNINGS _Pragma("GCC diagnostic warning \"-Wdeprecated-declarations\"") +#elif defined(_MSC_VER) + #define Standard_DISABLE_DEPRECATION_WARNINGS __pragma(warning(push)) __pragma(warning(disable:4996)) + #define Standard_ENABLE_DEPRECATION_WARNINGS __pragma(warning(pop)) #else #define Standard_DISABLE_DEPRECATION_WARNINGS #define Standard_ENABLE_DEPRECATION_WARNINGS diff --git a/src/StepFile/lex.step.c b/src/StepFile/lex.step.c index 66baa717ce..88f946e0bf 100644 --- a/src/StepFile/lex.step.c +++ b/src/StepFile/lex.step.c @@ -552,6 +552,10 @@ void rec_typarg(int argtype); // Note that Intel compiler also defines _MSC_VER but has different warning ids #if defined(__INTEL_COMPILER) #pragma warning(disable:177 1786 1736) +#elif defined(__clang__) +#pragma GCC diagnostic ignored "-Wunused-function" +#pragma GCC diagnostic ignored "-Winconsistent-dllimport" +#pragma GCC diagnostic ignored "-Wunneeded-internal-declaration" #else #pragma warning(disable:4131 4244 4273 4267 4127) #endif diff --git a/src/StepFile/step.lex b/src/StepFile/step.lex index 94179ea56b..dd3340da5e 100644 --- a/src/StepFile/step.lex +++ b/src/StepFile/step.lex @@ -47,6 +47,11 @@ void rec_typarg(int argtype); // Note that Intel compiler also defines _MSC_VER but has different warning ids #if defined(__INTEL_COMPILER) #pragma warning(disable:177 1786 1736) +#elif defined(__clang__) +#pragma GCC diagnostic ignored "-Wunused-function" +#pragma GCC diagnostic ignored "-Winconsistent-dllimport" +#pragma GCC diagnostic ignored "-Wunneeded-internal-declaration" +#else #else #pragma warning(disable:4131 4244 4273 4267 4127) #endif diff --git a/src/Storage/Storage_Schema.cxx b/src/Storage/Storage_Schema.cxx index e070d8d5ee..7968ffdbfd 100644 --- a/src/Storage/Storage_Schema.cxx +++ b/src/Storage/Storage_Schema.cxx @@ -205,6 +205,9 @@ void Storage_BucketOfPersistent::Append(const Handle(Standard_Persistent)& sp) Storage_BucketIterator::Storage_BucketIterator (Storage_BucketOfPersistent* aBucketManager) +: myBucket(0), myCurrentBucket(0), + myCurrentBucketIndex(0), myCurrentIndex(0), + myBucketNumber(0), myMoreObject(Standard_False) { if (aBucketManager) { myBucket = aBucketManager; @@ -214,7 +217,6 @@ Storage_BucketIterator::Storage_BucketIterator myCurrentIndex = 0; myMoreObject = Standard_True; } - else myMoreObject = Standard_False; } //======================================================================= diff --git a/src/ViewerTest/ViewerTest.hxx b/src/ViewerTest/ViewerTest.hxx index b9665cfc7d..0d1301b551 100644 --- a/src/ViewerTest/ViewerTest.hxx +++ b/src/ViewerTest/ViewerTest.hxx @@ -34,6 +34,7 @@ class V3d_View; class V3d_Viewer; class ViewerTest_EventManager; class TopoDS_Shape; +class WNT_WClass; class ViewerTest { @@ -257,7 +258,7 @@ private: //! Ctrl+MB2 for pan, etc) and keyboard shortcuts. //! This method is relevant for MS Windows only and respectively //! returns WNT_WClass handle. - static const Handle(Standard_Transient)& WClass(); + static const Handle(WNT_WClass)& WClass(); }; #endif // _ViewerTest_HeaderFile diff --git a/src/ViewerTest/ViewerTest_CmdParser.cxx b/src/ViewerTest/ViewerTest_CmdParser.cxx index fbdb9c243f..bbffa5dd6d 100644 --- a/src/ViewerTest/ViewerTest_CmdParser.cxx +++ b/src/ViewerTest/ViewerTest_CmdParser.cxx @@ -305,7 +305,7 @@ bool ViewerTest_CmdParser::Arg (const std::string& theOptionName, std::string& theOptionArgument) const { Standard_ASSERT_RETURN (theArgumentIndex >= 0, - __FUNCTION__ ": 'theArgumentIndex' must be greater than or equal to zero.", + "'theArgumentIndex' must be greater than or equal to zero.", false); ViewerTest_CommandOptionKey anOptionKey = THE_UNNAMED_COMMAND_OPTION_KEY; if (!theOptionName.empty() && !findOptionKey (theOptionName, anOptionKey)) @@ -324,7 +324,7 @@ bool ViewerTest_CmdParser::Arg (const ViewerTest_CommandOptionKey theOptionKey, std::string& theOptionArgument) const { Standard_ASSERT_RETURN (theArgumentIndex >= 0, - __FUNCTION__ ": 'theArgumentIndex' must be greater than or equal to zero.", + "'theArgumentIndex' must be greater than or equal to zero.", false); std::size_t aUsedOptionIndex = 0; if (!findUsedOptionIndex (theOptionKey, aUsedOptionIndex)) @@ -347,7 +347,7 @@ bool ViewerTest_CmdParser::Arg (const ViewerTest_CommandOptionKey theOptionKey, std::string ViewerTest_CmdParser::Arg (const std::string& theOptionName, const Standard_Integer theArgumentIndex) const { Standard_ASSERT_RETURN (theArgumentIndex >= 0, - __FUNCTION__ ": 'theArgumentIndex' must be greater than or equal to zero.", + "'theArgumentIndex' must be greater than or equal to zero.", std::string()); std::string anOptionArgument; if (!Arg (theOptionName, theArgumentIndex, anOptionArgument)) @@ -501,8 +501,8 @@ bool ViewerTest_CmdParser::ArgColor (const ViewerTest_CommandOptionKey theOption const RawStringArguments aRawStringArguments = getRawStringArguments (aUsedOptionIndex); const Standard_Integer aNumberOfArguments = static_cast (aRawStringArguments.size()); Standard_ASSERT_RETURN (theArgumentIndex < aNumberOfArguments, - __FUNCTION__ ": 'theArgumentIndex' must be less than the number of command-line arguments " - "passed with the option which access key is 'theOptionKey'.", + "'theArgumentIndex' must be less than the number of command-line arguments " + "passed with the option which access key is 'theOptionKey'.", false); const Standard_Integer aNumberOfAvailableArguments = aNumberOfArguments - theArgumentIndex; TheColor aColor; @@ -601,7 +601,7 @@ ViewerTest_CmdParser::RawStringArguments ViewerTest_CmdParser::getRawStringArgum { Standard_ASSERT_RETURN ( theUsedOptionIndex < myOptionArgumentStorage.size(), - __FUNCTION__ ": 'theUsedOptionIndex' must be less than the size of 'myOptionArgumentStorage'.", + "'theUsedOptionIndex' must be less than the size of 'myOptionArgumentStorage'.", RawStringArguments()); const OptionArguments& anOptionArguments = myOptionArgumentStorage[theUsedOptionIndex]; return convertToRawStringList (anOptionArguments); diff --git a/src/ViewerTest/ViewerTest_ViewerCommands.cxx b/src/ViewerTest/ViewerTest_ViewerCommands.cxx index 4b4eab1ada..c1e1e059d5 100644 --- a/src/ViewerTest/ViewerTest_ViewerCommands.cxx +++ b/src/ViewerTest/ViewerTest_ViewerCommands.cxx @@ -1397,9 +1397,9 @@ static LRESULT WINAPI AdvViewerWindowProc( //purpose : //============================================================================== -const Handle(Standard_Transient)& ViewerTest::WClass() +const Handle(WNT_WClass)& ViewerTest::WClass() { - static Handle(Standard_Transient) theWClass; + static Handle(WNT_WClass) theWClass; #if defined(_WIN32) if (theWClass.IsNull()) { @@ -1939,8 +1939,7 @@ TCollection_AsciiString ViewerTest::ViewerInit (const Standard_Integer thePxLeft // Create window #if defined(_WIN32) - VT_GetWindow() = new WNT_Window (aTitle.ToCString(), - Handle(WNT_WClass)::DownCast (WClass()), + VT_GetWindow() = new WNT_Window (aTitle.ToCString(), WClass(), Draw_VirtualWindows ? WS_POPUP : WS_OVERLAPPEDWINDOW, aPxLeft, aPxTop, aPxWidth, aPxHeight,