View Issue Details

IDProjectCategoryView StatusLast Update
0028417CommunityOCCT:Codingpublic2017-09-29 16:28
Reportererossignon Assigned Tobugmaster  
PrioritynormalSeverityfeature 
Status closedResolutionfixed 
Product Version7.1.0 
Target Version7.2.0Fixed in Version7.2.0 
Summary0028417: Using PRECOMPILED HEADER to speed up compilation time
DescriptionI proposing to use cotire to speed up OpenCascade Compilation time.

My first experiement show that it takes less than 25 minutes to compile allmost all OCCT libraries using such a technique.

see https://github.com/OpenWebCAD/occt_builder
see https://travis-ci.org/OpenWebCAD/occt_builder/jobs/196410242 for linux
and
https://ci.appveyor.com/project/erossignon/occt-builder/branch/master for windows


The change impac the CMakelist.txt files, some addition inside adm , and a few changes located in the code as highlighted in this patch
https://github.com/OpenWebCAD/occt_builder/blob/master/add_cotire_to_7.1.0.patch#L4013


Steps To ReproduceFix pushed to CR28417_3, please review
TagsNo tags attached.
Test case numberNot required

Relationships

duplicate of 0027407 closedabv Open CASCADE Accelerate OCCT build on Visual Studio by use of precompiled headers 
parent of 0028452 closedbugmaster Open CASCADE VIS - MSVC 14 compiler warnings 
parent of 0028838 closedbugmaster Open CASCADE Configuration - undefine macros coming from X11 headers in place of collision 

Activities

kgv

2017-01-31 11:13

developer   ~0063242

Dear erossignon,

please use bug 0027407 for discussing precompiled headers feature.

abv

2017-01-31 11:21

manager   ~0063244

Hello Etienne,

Can you please indicate what was a level of speed-up in your experiments? What is the workstation and compiler you are using? The time indicated in bug description (25 min) is quite typical for building OCCT on modern workstations out of the box.

erossignon

2017-01-31 13:21

reporter   ~0063252

The effect is phenomenal on my box and on Travis and Appveyor.
Travis and Appveyor are providing standard VM and without cotire the build (even using -j <numproc>" exceeds an hour and can never finished within the allowed time slot

The compilation time is divided by 2 to 4 at least !
Try it ! and see by yourself

git

2017-02-01 08:45

administrator   ~0063275

Branch CR28417 has been created by abv.

SHA-1: fefde4787a74671ef7790f0342502a69a08a9915


Detailed log of new commits:

Author: abv
Date: Wed Feb 1 08:45:13 2017 +0300

    Hack: temporarily disable Cotire for TKV3d, TKDraw, and TKService to avoid failures

Author: abv
Date: Wed Feb 1 08:44:23 2017 +0300

    Rename or rearrange some locally defined variables in TKV3d to reduce errors in unity builds

Author: erossignon
Date: Tue Jan 31 21:44:28 2017 +0300

    0028417: Using PRECOMPILED HEADER to speed up compilation time
    
    Use of Cotire tool is introduced for acceleration of CMake builds, via precompiled headers and unity builds.
    
    Code is corrected to avoid conflicts in (some) unity builds.

abv

2017-02-01 08:52

manager   ~0063276

Last edited: 2017-02-01 09:28

Wow! It works! Cotire is great tool, it provides all that we needed (and tried to achieve in 0027407) for accelerating builds via PCH and unity builds. Thank you Etienne for pointing this out!

So far I achieved building on Windows with VS 2015 (with single strange link error in TKDraw due to unresolved symbol -- to be investigated). I had to disable Cotire for TKDraw and TKService (conflicts when using PCH due to symbols defined in Windows and third-party headers), and TKV3d (conflicts in unity build due to local symbols with same names).

The timing on my machine (i7-4790 CPU, system and Visual Studio are on SSD, OCCT code and build on HDD) is:

master (CMake): 37 min
CR28417 (CMake + Cotire): 23 min

abv

2017-02-01 09:30

manager   ~0063277

Sergey, please try to build branch CR27407 on Linux (GCC and CLang), to see if it works, and compare build time against master.

aml

2017-02-01 17:02

developer   ~0063309

I confirm speedup. I've got the following results on my workstation:

I7-6700k, OS + MSVS 2015 on SSD, occt sources on the HDD.

master: 13.5 min
CR28417: 9.5 min

kgv

2017-02-01 18:20

developer   ~0063315

i5-6500, Win10 x64, SSD.
android-ndk-r12 + MinGW-w64, target: armv7a, static libraries:
master:  build 00:25:38 / install 00:06:43
CR28417: build 00:26:28 / install 00:06:42

kgv

2017-02-01 23:03

developer   ~0063333

Last edited: 2017-02-02 09:46

AMD FX-8350, Win7 x64, SSD.
VS2015, target: x64, dynamic libraries:
master:  build 00:14:15 (gen. 00:00:48 / build 00:14:27) / install 00:00:22
CR28417: build 00:11:30 (gen. 00:01:56 / build 00:09:34) / install 00:00:32


i5-6500, Win10 x64, SSD.
VS2015, target: x64, dynamic libraries:
master:  build 00:20:21 (gen. 00:00:55 / build 00:19:16) / install 00:01:02
CR28417: build 00:14:37 (gen. 00:01:48 / build 00:12:49) / install 00:01:08


But not all targets have been build with cotire:
1>     Creating library C:/work/occt/master/occt_cmake/work/wnt-vc14-win64-make/win64/vc14/lib/TKDraw.lib and object C:/work/occt/master/occt_cmake/work/wnt-vc14-win64-make/win64/vc14/lib/TKDraw.exp
1>Draw_Commands.obj : error LNK2019: unresolved external symbol "public: bool __cdecl Message_Messenger::AddPrinter(class opencascade::handle<class Message_Printer> const &)" (?AddPrinter@Message_Messenger@@QEAA_NAEBV?$handle@VMessage_Printer@@@opencascade@@@Z) referenced in function "public: static void __cdecl Draw::Commands(class Draw_Interpretor &)" (?Commands@Draw@@SAXAEAVDraw_Interpretor@@@Z)
1>C:\work\occt\master\occt_cmake\work\wnt-vc14-win64-make\win64\vc14\bin\TKDraw.dll : fatal error LNK1120: 1 unresolved externals


kgv

2017-02-01 23:07

developer   ~0063334

Last edited: 2017-02-03 21:51

VS2015, cotire pch files increase working (CMake + building) folder from 933 MiB to 2.38 GiB.

git

2017-02-03 21:41

administrator   ~0063430

Branch CR28417 has been updated by kgv.

SHA-1: 93336c675cb03da55777480f474743b3c57debe0


Detailed log of new commits:

Author: kgv
Date: Fri Feb 3 21:38:30 2017 +0300

    Fixed TKOpenGl compilation with cotire on OS X

kgv

2017-02-03 21:50

developer   ~0063431

Last edited: 2017-02-03 21:50

Core 2 Duo, OS X 10.10, slow HDD.
XCode 6.4, target: x64, dynamic libraries:

master:  build 00:56:59 (gen. 00:00:48 / build 00:56:11) / install 00:01:15
CR28417: build 00:38:10 (gen. 00:02:31 / build 00:35:39) / install 00:01:15

Cotire pch files increase working (CMake + building)
folder from 485 MiB to 823 MiB.

git

2017-02-03 22:27

administrator   ~0063432

Branch CR28417 has been updated forcibly by kgv.

SHA-1: e4a38aaf87c126b0086b45789e44f694fa49a045

git

2017-02-04 10:50

administrator   ~0063437

Branch CR28417_1 has been created by abv.

SHA-1: fa32c668ead5eaa63333135788696880b640b66a


Detailed log of new commits:

Author: kgv
Date: Fri Feb 3 23:27:02 2017 +0400

    Fixed TKOpenGl compilation with cotire on OS X

Author: abv
Date: Wed Feb 1 08:45:13 2017 +0300

    Hack: temporarily disable Cotire for TKV3d, TKDraw, and TKService to avoid failures

Author: abv
Date: Wed Feb 1 08:44:23 2017 +0300

    Rename or rearrange some locally defined variables in TKV3d to reduce errors in unity builds

Author: erossignon
Date: Tue Jan 31 21:44:28 2017 +0300

    0028417: Using PRECOMPILED HEADER to speed up compilation time
    
    Use of Cotire tool is introduced for acceleration of CMake builds, via precompiled headers and unity builds.
    
    Code is corrected to avoid conflicts in (some) unity builds.

git

2017-02-04 11:18

administrator   ~0063438

Branch CR28417 has been updated by kgv.

SHA-1: 06844558758a15b5121d9aea9c954a658e134cd9


Detailed log of new commits:

Author: kgv
Date: Sat Feb 4 12:17:02 2017 +0400

    The macros Status, Convex, Opposite, FillSolid (coming from X11 headers)
    are now undefined in place of definition of methods with same name in OCCT headers.
    The usage of variables with name Status is now avoided.

kgv

2017-02-04 11:28

developer   ~0063439

Last edited: 2017-02-04 13:56

AMD FX-8350, Ubuntu 14.04 x64, SSD.
gcc 4.8.2, target: x64, dynamic libraries:

master:  build 00:17:07  (gen. 00:00:52 / build 00:16:15) / install 00:00:29
CR28417: build 00:15:02  (gen. 00:02:17 / build 00:12:45) / install 00:00:29


Cotire pch files increase working (CMake + building)
folder from 554 MiB to 1.9 GiB.

git

2017-02-04 13:56

administrator   ~0063440

Branch CR28417 has been updated by kgv.

SHA-1: 44dc33b8acf14a2cc556dbfdb2978b16c1dde15c


Detailed log of new commits:

Author: kgv
Date: Sat Feb 4 13:55:42 2017 +0300

    The macros AddPrinter (coming from WinAPI headers) is now undefined
    within Message_Messenger class definition having method with the same name.

git

2017-02-04 18:39

administrator   ~0063441

Branch CR28417_1 has been updated by abv.

SHA-1: de04dcf0f3eb778818260c01af710a44a0389138


Detailed log of new commits:

Author: abv
Date: Sat Feb 4 17:47:01 2017 +0300

    Adaptations for building TKDraw and TKV3d with cotire (PCH only) on Windows
    
    Remove useless header WNT_UInt.hxx
    Avoid usage of local variable conflicting with X11 macro in Draw_Viewer.cxx
    Rename local variables in AIS_ConcentricRelation.cxx to avoid conflict with macros defined in windows.h

Author: kgv
Date: Sat Feb 4 13:55:42 2017 +0300

    The macros AddPrinter (coming from WinAPI headers) is now undefined
    within Message_Messenger class definition having method with the same name.

Author: kgv
Date: Sat Feb 4 12:17:02 2017 +0400

    The macros Status, Convex, Opposite, FillSolid (coming from X11 headers)
    are now undefined in place of definition of methods with same name in OCCT headers.
    The usage of variables with name Status is now avoided.

git

2017-02-05 11:43

administrator   ~0063445

Branch CR28417_1 has been updated by abv.

SHA-1: edf32834e52fafbd75f355e4433bf9245425f542


Detailed log of new commits:

Author: abv
Date: Sun Feb 5 11:43:04 2017 +0300

    Add CMake option BUILD_USE_PCH to enable / disable use of precompiled headers

Author: abv
Date: Sun Feb 5 11:41:35 2017 +0300

    Remove useless pragmas disabling warnings on MSVC

git

2017-02-05 11:58

administrator   ~0063446

Branch CR28417_1 has been updated by abv.

SHA-1: 764a8c2532af1d36fe3d150c5a4a7ef411db9932


Detailed log of new commits:

Author: abv
Date: Sun Feb 5 11:58:03 2017 +0300

    // minor correction

ski

2017-02-06 19:37

developer   ~0063466

I have tried to build branch CR28417_1 on Debian70-64 (gcc (Debian 4.7.2-5) 4.7.2) using virtual machine (we use it for certification) and on local station (via cygwin) with next results:

Error appears:
occt/src/NCollection/NCollection_HeapAllocator.cxx: In member function 'virtual void* NCollection_HeapAllocator::Allocate(Standard_Size)':
occt/src/NCollection/NCollection_HeapAllocator.cxx:36:46: error: expected ')' before 'PRIuPTR'

After that i have tried to build the branch on virtual machine with Ubuntu 1604-64. Compilation was successfully finished with next time results:
master: build 00:42:17
CR28417_1: build 00:31:01

ski

2017-02-08 19:41

developer   ~0063714

The reason of such behavior on our Debian stations is that file
occt\build\src\TKernel\cotire\TKernel_CXX_prefix.cxx
contains including of header file /usr/include/inttypes.h

Header file inttypes.h defines PRIuPTR only in case:
#if !defined __cplusplus || defined __STD_FORMAT_MACROS
__cplusplus is defined, but __STD_FORMAT_MACROS seems to be not defined

Header file inttypes.h can be included only once.

In case of usual build without pch file occt\src\Standard\Standard_TypeDef.hxx contains next lines:
  #ifndef __STDC_FORMAT_MACROS
    #define __STDC_FORMAT_MACROS
  #endif
  #include <inttypes.h>
  
So, PRIuPTR is defined here.

In case of virtual machine with Ubuntu1604 header file inttypes.h does not have such condition:
#if !defined __cplusplus || defined __STD_FORMAT_MACROS

git

2017-02-08 19:57

administrator   ~0063715

Branch CR28417_1 has been updated by kgv.

SHA-1: 38bb5db2c7789cd52d84fa81a30cb3f683ae0224


Detailed log of new commits:

Author: kgv
Date: Wed Feb 8 19:57:31 2017 +0300

    Workaround bug in headers within old gcc versions

kgv

2017-02-08 19:58

developer   ~0063716

Try updated patch then.

ski

2017-02-09 13:49

developer   ~0063729

Dear kgv,

i think it should be
add_definitions("-D__STDC_FORMAT_MACROS")
instead of
add_definitions("__STDC_FORMAT_MACROS")

With this patch all is OK on our Debian70-64 stations
master: build 00:19:28
CR28417_1: build 00:16:04

abv

2017-02-09 14:03

manager   ~0063730

I propose that all additional pre-processor definitions needed for building with PCH should be defined in one place and only when needed (i.e. when BUILD_USE_PCH is defined, and if reasonable, for relevant platform / compiler version etc.). Sergey, can you do this?

git

2017-02-09 17:14

administrator   ~0063741

Branch CR28417_1 has been updated by ski.

SHA-1: 44f8bb6e7d7a3cd1ae946725190fd90aaa30d68b


Detailed log of new commits:

Author: ski
Date: Thu Feb 9 17:14:44 2017 +0300

    Corrected adding of __STDC_FORMAT_MACROS definition.
    All additional pre-processor definitions needed for building with PCH are defined only when needed.

git

2017-02-11 19:43

administrator   ~0063761

Branch CR28417_1 has been updated by abv.

SHA-1: fdd154126c71248b6d831e2c6166e70b3496d9ed


Detailed log of new commits:

Author: abv
Date: Sat Feb 11 19:43:12 2017 +0300

    Define macro STRSAFE_NO_DEPRECATE on Windows to prevent declaring functions of standard C library as deprecated by #pragma

Author: abv
Date: Sat Feb 11 09:16:31 2017 +0300

    Add option BUILD_USE_PCH_TOTAL to allow inclusion of OCCT own headers in PCH
    
    Cotire tuned to put windows.h first in PCH files to reduce conflicts

Author: abv
Date: Sat Feb 11 09:15:32 2017 +0300

    Undefine CurrentDirectory macro in OSD_Process.hxx to avoid conflict due to possible previous inclusion of windows.h

Author: abv
Date: Sat Feb 11 01:34:22 2017 +0300

    Remove duplicate definitions of global symbols causing conflicts when building with PCH; HXX files containing code are renamed to PXX or merged with corresponding CXX files.

git

2017-02-11 19:57

administrator   ~0063762

Branch CR28417_1 has been updated by abv.

SHA-1: 4a0169a180a476d31d25624b885377d7bf749f4b


Detailed log of new commits:

Author: abv
Date: Sat Feb 11 19:57:10 2017 +0300

    lost file

abv

2017-02-13 12:16

manager   ~0063771

I have experimenting with PCH trying to put all headers in it (i.e. including own OCCT ones, like OCE do). For that, separate (temporary) option BUILD_USE_PCH_TOTAL is added. For VS 2015 and 2010, the build time is reduced from 13 min to 9 min; on Ubuntu build failed in my environment due to insufficient disk space. The size of build dir increased till 4.5 Gb.

git

2017-02-16 19:09

administrator   ~0063856

Branch CR28417_1 has been updated by ski.

SHA-1: dd3dc8cb8c65fe376acc4106fa54251acabae1bf


Detailed log of new commits:

Author: ski
Date: Wed Feb 15 16:49:23 2017 +0300

    Fixed compile error about the order of strsafe.h and tchar.h header files

git

2017-02-20 18:34

administrator   ~0063927

Branch CR28417_1 has been updated forcibly by ski.

SHA-1: 07cb408533ef43706d9b80ba1088847a6b674223

git

2017-02-21 19:05

administrator   ~0063952

Branch CR28417_1 has been updated forcibly by ski.

SHA-1: 585236cc25f7192550961901e8f6c4216cf9c1fb

git

2017-02-27 16:56

administrator   ~0064014

Branch CR28417_1 has been updated by ski.

SHA-1: 9fab3ae915d346417e8c6c4343725de4ffe3a7a1


Detailed log of new commits:

Author: ski
Date: Mon Feb 27 16:56:11 2017 +0300

    Fix compilation error for Debug configuration

git

2017-02-28 12:01

administrator   ~0064021

Branch CR28417_1 has been updated forcibly by ski.

SHA-1: ce7d07430a76607f991be667d496ac2f14c92862

git

2017-02-28 12:18

administrator   ~0064022

Branch CR28417_1 has been updated by ski.

SHA-1: 394f59876cf3f1a911b45dd916bab504eb0d7372


Detailed log of new commits:

Author: ski
Date: Mon Feb 27 16:56:11 2017 +0300

    Fix compilation error for products samples.

git

2017-03-06 12:26

administrator   ~0064140

Branch CR28417_2 has been created by ski.

SHA-1: b1cf74a32b05867e562c65d133337349d412d884


Detailed log of new commits:

Author: ski
Date: Wed Feb 15 16:49:23 2017 +0300

    Fixed compile error about the order of strsafe.h and tchar.h header files
    Do not use Cotire tool in TKIVtkDraw toolkit.
    Fix compilation error for Debug configuration
    Fix compilation error for products samples.

Author: abv
Date: Sat Feb 11 19:57:10 2017 +0300

    lost file

Author: abv
Date: Sat Feb 11 19:43:12 2017 +0300

    Define macro STRSAFE_NO_DEPRECATE on Windows to prevent declaring functions of standard C library as deprecated by #pragma

Author: abv
Date: Sat Feb 11 09:16:31 2017 +0300

    Add option BUILD_USE_PCH_TOTAL to allow inclusion of OCCT own headers in PCH
    
    Cotire tuned to put windows.h first in PCH files to reduce conflicts

Author: abv
Date: Sat Feb 11 01:34:22 2017 +0300

    Remove duplicate definitions of global symbols causing conflicts when building with PCH; HXX files containing code are renamed to PXX or merged with corresponding CXX files.

Author: abv
Date: Sat Feb 11 09:15:32 2017 +0300

    Undefine CurrentDirectory macro in OSD_Process.hxx to avoid conflict due to possible previous inclusion of windows.h

Author: ski
Date: Thu Feb 9 17:14:44 2017 +0300

    Corrected adding of __STDC_FORMAT_MACROS definition.
    All additional pre-processor definitions needed for building with PCH are defined only when needed.

Author: kgv
Date: Wed Feb 8 19:57:31 2017 +0300

    Workaround bug in headers within old gcc versions

Author: abv
Date: Sun Feb 5 11:58:03 2017 +0300

    // minor correction

Author: abv
Date: Sun Feb 5 11:43:04 2017 +0300

    Add CMake option BUILD_USE_PCH to enable / disable use of precompiled headers

Author: abv
Date: Sun Feb 5 11:41:35 2017 +0300

    Remove useless pragmas disabling warnings on MSVC

Author: abv
Date: Sat Feb 4 17:47:01 2017 +0300

    Adaptations for building TKDraw and TKV3d with cotire (PCH only) on Windows
    
    Remove useless header WNT_UInt.hxx
    Avoid usage of local variable conflicting with X11 macro in Draw_Viewer.cxx
    Rename local variables in AIS_ConcentricRelation.cxx to avoid conflict with macros defined in windows.h

Author: kgv
Date: Sat Feb 4 13:55:42 2017 +0300

    The macros AddPrinter (coming from WinAPI headers) is now undefined
    within Message_Messenger class definition having method with the same name.

Author: kgv
Date: Sat Feb 4 12:17:02 2017 +0400

    The macros Status, Convex, Opposite, FillSolid (coming from X11 headers)
    are now undefined in place of definition of methods with same name in OCCT headers.
    The usage of variables with name Status is now avoided.

Author: kgv
Date: Fri Feb 3 23:27:02 2017 +0400

    Fixed TKOpenGl compilation with cotire on OS X

Author: abv
Date: Wed Feb 1 08:45:13 2017 +0300

    Hack: temporarily disable Cotire for TKV3d, TKDraw, and TKService to avoid failures

Author: erossignon
Date: Tue Jan 31 21:44:28 2017 +0300

    0028417: Using PRECOMPILED HEADER to speed up compilation time
    
    Use of Cotire tool is introduced for acceleration of CMake builds, via precompiled headers and unity builds.
    
    Code is corrected to avoid conflicts in (some) unity builds.

Author: abv
Date: Wed Feb 1 08:44:23 2017 +0300

    Rename or rearrange some locally defined variables in TKV3d to reduce errors in unity builds

git

2017-03-24 18:24

administrator   ~0064695

Branch CR28417_2 has been updated forcibly by ski.

SHA-1: 9978f6889e550f918456a9264112611cfbf3b9f6

git

2017-03-30 11:58

administrator   ~0064800

Branch CR28417_2 has been updated by ski.

SHA-1: b21c8552e04a8fa6a8ae13aae12466e632e2a2f4


Detailed log of new commits:

Author: ski
Date: Wed Mar 29 17:07:36 2017 +0300

    Suppress GCC warning -Wclobbered for pch build.

git

2017-03-30 12:11

administrator   ~0064803

Branch CR28417_2 has been updated forcibly by ski.

SHA-1: dc7e4be67aaeede779069850f5da298c4367392e

git

2017-03-30 12:28

administrator   ~0064807

Branch CR28417_2 has been updated forcibly by ski.

SHA-1: a6cf3f8911ad7412c7d181947714fe6d0ad0610f

git

2017-07-01 08:44

administrator   ~0067840

Branch CR28417_3 has been created by abv.

SHA-1: 99d74069d27dd11c5de6cef2b6f9b0284adc36fd


Detailed log of new commits:

Author: abv
Date: Thu Jun 29 20:17:39 2017 +0300

    0028417: Using PRECOMPILED HEADER to speed up compilation time
    
    Use of Cotire tool is introduced for acceleration of CMake builds, by usage of precompiled headers.
    CMake option BUILD_USE_PCH is added to enable / disable use of precompiled headers
    
    When precompiled headers are used, additional compiler macros are defined globally in the build system to avoid problems due to different order of included files:
    - NOMINMAX is defined on Windows to prevent defining "min" and "max" as macros by windows.h
    - STRSAFE_NO_DEPRECATE and _SCL_SECURE_NO_WARNINGS are defined on Windows to prevent declaring functions of standard C library as deprecated by #pragma, and other warnings in system headers
    - GL_GLEXT_LEGACY and GLX_GLEXT_LEGACY are defined to ensure that only OCCT's own glext.h is used
    - __STDC_FORMAT_MACROS is defined to have standard C print format macros always defined
    
    Code is corrected to avoid conflicts with system headers and in case of compiling together as unity builds (partially):
    - Some locally defined variables in TKV3d, TKHLR are renamed to be unique
    - Duplicated definitions of macros and global functions are eliminated in TKSTEP
    - Useless header WNT_UInt.hxx is removed
    - Usage of local variables conflicting with X11 macro is avoided in Draw_Viewer.cxx
    - Local variables in AIS_ConcentricRelation.cxx are renamed to avoid conflict with macros defined in windows.h
    - HXX files containing code are renamed to PXX or merged with corresponding CXX files.
    
    IVtkTools classes are corrected to avoid compiler warnings disabled in non-PCH builds by inclusion of VTK headers.
    
    Useless pragmas disabling warnings on MSVC are removed

git

2017-07-02 22:57

administrator   ~0067842

Branch CR28417_3 has been updated forcibly by abv.

SHA-1: e160f9ffa83afe7ae89758ea0576100db218cce3

kgv

2017-07-03 07:22

developer   ~0067843

Please test the patch.

-#define STRICT
+//#define STRICT
 #include <windows.h>

I'm not sure it makes sense keeping this define commented in several places - better removing it.

git

2017-07-03 08:40

administrator   ~0067844

Branch CR28417_3 has been updated by abv.

SHA-1: 7a03939476b5e33cc086592f7cd610a5d0f24751


Detailed log of new commits:

Author: abv
Date: Mon Jul 3 08:40:06 2017 +0300

    # corrected according to review remark

git

2017-07-03 09:31

administrator   ~0067921

Branch CR28417_3 has been updated by abv.

SHA-1: be6318d52b69750c7e90ccfb99ebd6ac1fb0ffaa


Detailed log of new commits:

Author: abv
Date: Mon Jul 3 09:23:23 2017 +0300

    # fix compiler warning in mm files on MacOS

abv

2017-07-03 09:39

manager   ~0067924

For testing, please use branch CR28417 in products.

Before testing, please remove CMake command options BUILD_USE_PCH and BUILD_USE_PCH_TOTAL in Jenkins job: for certification, we need to test with default setting!

git

2017-07-03 10:02

administrator   ~0067926

Branch CR28417_3 has been updated by abv.

SHA-1: fbc7e93bde8627eabdc8bb7875754b1c9ff975e3


Detailed log of new commits:

Author: abv
Date: Mon Jul 3 10:02:33 2017 +0300

    # macro SetForm defined by windows.h is undefined where this name is used for a class method

git

2017-07-03 16:55

administrator   ~0067950

Branch CR28417_3 has been updated by abv.

SHA-1: 6aee7feb2e9ab6ae45b6c4ade0cf8aa8e393c55e


Detailed log of new commits:

Author: abv
Date: Mon Jul 3 16:54:50 2017 +0300

    # correction of arguments of constructor of the class WNT_WClass to be usable from C# without extra casts

bugmaster

2017-07-03 17:24

administrator   ~0067951

Alexey,

ABV asked me to remove BUILD_USE_PCH and BUILD_USE_PCH_TOTAL cmake definitions at all. So you can launch testing on jenkins-test-09.

abv

2017-07-03 18:22

manager   ~0067952

Note that I have just passed through Jenkins compilation and build on standard platforms with current setting of BUILD_USE_PCH=1, and everything seems to build fine, but do not give any noticeable performance benefit (see CR28417_3_PCH-master-abv). Thus it remains to run full testing in non-PCH mode. Please remove builds remaining in CR28417_3_PCH-master-abv as soon as you do not need them -- I guess they occupy a lot of disk space.

bugmaster

2017-07-03 22:09

administrator   ~0067957

Alexey,

I removed CR28417_3_PCH-master-abv from jenkins-test-10.
Please start certification on from jenkins-test-09

apv

2017-07-04 11:54

tester   ~0067963

Dear BugMaster,

Branch CR28417_3 from occt git-repository (and CR28417 from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
SHA-1: 6aee7feb2e9ab6ae45b6c4ade0cf8aa8e393c55e
SHA-1: bd93a77fc47f8a25d74401b2f080cb9568450301

Number of compiler warnings:
occt component:
   Linux: 0 (0 on master)
   Windows: 0 (0 on master)
   MasOS: 0 (0 on master)
products component:
   Linux: 64
   Windows: 0
   MacOS: 1215

Regressions/Differences:
Not detected

Testing cases:
Not required

Testing on Linux:
occt component:
Total MEMORY difference: 92556987 / 92186209 [+0.40%]
Total CPU difference: 18924.47000000016 / 18926.030000000348 [-0.01%]
products component:
Total MEMORY difference: 37679293 / 37533520 [+0.39%]
Total CPU difference: 6379.100000000064 / 6405.870000000062 [-0.42%]

Testing on Windows:
occt component:
Total MEMORY difference: 58848312 / 58850236 [-0.00%]
Total CPU difference: 17457.74430789863 / 17597.770805498705 [-0.80%]
products component:
Total MEMORY difference: 27836531 / 27837358 [-0.00%]
Total CPU difference: 6516.879374600079 / 6587.376226500077 [-1.07%]

apv

2017-07-04 11:55

tester   ~0067964

Dear BugMaster,

Please integrate branch CR28417_3 into the occt git-repository master.
Please integrate branch CR28417 into the products git-repository master.

git

2017-07-10 08:58

administrator   ~0068115

Branch CR28417 has been deleted by kgv.

SHA-1: 44dc33b8acf14a2cc556dbfdb2978b16c1dde15c

git

2017-07-10 08:58

administrator   ~0068116

Branch CR28417_1 has been deleted by kgv.

SHA-1: 394f59876cf3f1a911b45dd916bab504eb0d7372

git

2017-07-10 08:58

administrator   ~0068117

Branch CR28417_2 has been deleted by kgv.

SHA-1: a6cf3f8911ad7412c7d181947714fe6d0ad0610f

git

2017-07-10 08:58

administrator   ~0068118

Branch CR28417_3 has been deleted by kgv.

SHA-1: 6aee7feb2e9ab6ae45b6c4ade0cf8aa8e393c55e

Related Changesets

occt: master 896faa72

2017-06-29 17:17:39

abv


Committer: bugmaster Details Diff
0028417: Using PRECOMPILED HEADER to speed up compilation time

Use of Cotire tool is introduced for acceleration of CMake builds, by usage of precompiled headers.
CMake option BUILD_USE_PCH is added to enable / disable use of precompiled headers

When precompiled headers are used, additional compiler macros are defined globally in the build system to avoid problems due to different order of included files:
- NOMINMAX is defined on Windows to prevent defining "min" and "max" as macros by windows.h
- STRSAFE_NO_DEPRECATE and _SCL_SECURE_NO_WARNINGS are defined on Windows to prevent declaring functions of standard C library as deprecated by #pragma, and other warnings in system headers
- GL_GLEXT_LEGACY and GLX_GLEXT_LEGACY are defined to ensure that only OCCT's own glext.h is used
- __STDC_FORMAT_MACROS is defined to have standard C print format macros always defined

Code is corrected to avoid conflicts with system headers and in case of compiling together as unity builds (partially):
- Some locally defined variables in TKV3d, TKHLR are renamed to be unique
- Duplicated definitions of macros and global functions are eliminated in TKSTEP
- Useless header WNT_UInt.hxx is removed
- Usage of local variables conflicting with X11 macro is avoided in Draw_Viewer.cxx
- Local variables in AIS_ConcentricRelation.cxx are renamed to avoid conflict with macros defined in windows.h
- HXX files containing code are renamed to PXX or merged with corresponding CXX files.

IVtkTools classes are corrected to avoid compiler warnings disabled in non-PCH builds by inclusion of VTK headers.

Useless pragmas disabling warnings on MSVC are removed
Affected Issues
0028417
add - adm/cmake/cotire.cmake Diff File
mod - adm/cmake/occt_toolkit.cmake Diff File
mod - adm/cmake/vardescr.cmake Diff File
mod - CMakeLists.txt Diff File
mod - dox/dev_guides/upgrade/upgrade.md Diff File
mod - dox/overview/overview.md Diff File
mod - src/AIS/AIS_ConcentricRelation.cxx Diff File
mod - src/AIS/AIS_InteractiveContext_1.cxx Diff File
mod - src/AIS/AIS_LocalContext_1.cxx Diff File
mod - src/BOPDS/BOPDS_PassKey.cxx Diff File
mod - src/BOPDS/BOPDS_PaveBlock.cxx Diff File
mod - src/DDF/DDF_IOStream.hxx Diff File
mod - src/DPrsStd/DPrsStd.cxx Diff File
mod - src/Draw/Draw_Viewer.cxx Diff File
mod - src/Geom/Geom_Ellipse.cxx Diff File
mod - src/gp/gp_GTrsf.hxx Diff File
mod - src/gp/gp_Trsf.hxx Diff File
mod - src/Graphic3d/Graphic3d_Texture1D.cxx Diff File
mod - src/Graphic3d/Graphic3d_Texture2D.cxx Diff File
mod - src/Graphic3d/Graphic3d_TextureEnv.cxx Diff File
mod - src/HLRAlgo/HLRAlgo_PolyData.cxx Diff File
mod - src/HLRAlgo/HLRAlgo_PolyInternalData.cxx Diff File
mod - src/HLRBRep/HLRBRep_InternalAlgo.cxx Diff File
mod - src/IGESSelect/IGESSelect_IGESTypeForm.hxx Diff File
mod - src/IntTools/IntTools.cxx Diff File
mod - src/IntTools/IntTools_EdgeFace.cxx Diff File
mod - src/IVtkDraw/IVtkDraw.cxx Diff File
mod - src/IVtkDraw/IVtkDraw_Interactor.cxx Diff File
mod - src/IVtkTools/IVtkTools_DisplayModeFilter.hxx Diff File
mod - src/IVtkTools/IVtkTools_ShapeDataSource.hxx Diff File
mod - src/IVtkTools/IVtkTools_ShapeObject.hxx Diff File
mod - src/IVtkTools/IVtkTools_ShapePicker.hxx Diff File
mod - src/IVtkTools/IVtkTools_SubPolyDataFilter.cxx Diff File
mod - src/IVtkTools/IVtkTools_SubPolyDataFilter.hxx Diff File
mod - src/Message/Message_ProgressScale.cxx Diff File
mod - src/OpenGl/OpenGl_Context_1.mm Diff File
mod - src/OpenGl/OpenGl_Window_1.mm Diff File
mod - src/OSD/OSD_Chronometer.cxx Diff File
mod - src/OSD/OSD_DirectoryIterator.cxx Diff File
mod - src/OSD/OSD_Disk.cxx Diff File
mod - src/OSD/OSD_Environment.cxx Diff File
mod - src/OSD/OSD_Error.cxx Diff File
mod - src/OSD/OSD_FileIterator.cxx Diff File
mod - src/OSD/OSD_FileNode.cxx Diff File
mod - src/OSD/OSD_Host.cxx Diff File
mod - src/OSD/OSD_signal.cxx Diff File
mod - src/OSD/OSD_Timer.cxx Diff File
mod - src/PLib/FILES Diff File
mod - src/PLib/PLib_JacobiPolynomial.cxx Diff File
mod - src/Poly/Poly_CoherentNode.cxx Diff File
mod - src/QANCollection/QANCollection_Stl.cxx Diff File
mod - src/RWStepAP214/RWStepAP214_ReadWriteModule.cxx Diff File
mod - src/SelectMgr/SelectMgr_SelectableObjectSet.cxx Diff File
mod - src/SelectMgr/SelectMgr_ViewerSelector.cxx Diff File
mod - src/Standard/Standard_OutOfMemory.cxx Diff File
mod - src/StdDrivers/StdDrivers.cxx Diff File
mod - src/StdLDrivers/StdLDrivers.cxx Diff File
mod - src/STEPCAFControl/STEPCAFControl_Reader.cxx Diff File
mod - src/StepDimTol/StepDimTol_ToleranceZone.hxx Diff File
mod - src/TNaming/TNaming_Naming.cxx Diff File
mod - src/TNaming/TNaming_NCollections.hxx Diff File
mod - src/TObjDRAW/TObjDRAW.cxx Diff File
mod - src/TopOpeBRep/TopOpeBRep_FacesFiller.cxx Diff File
mod - src/TopOpeBRepBuild/FILES Diff File
mod - src/TopOpeBRepBuild/TopOpeBRepBuild_Builder.cxx Diff File
mod - src/TopOpeBRepBuild/TopOpeBRepBuild_BuilderON.cxx Diff File
rm - src/TopOpeBRepBuild/TopOpeBRepBuild_Fill.pxx Diff File
mod - src/TopOpeBRepBuild/TopOpeBRepBuild_ShapeListOfShape.cxx Diff File
rm - src/TopOpeBRepBuild/TopOpeBRepBuild_SplitEdge.hxx Diff File
rm - src/TopOpeBRepBuild/TopOpeBRepBuild_SplitFace.hxx Diff File
rm - src/TopOpeBRepBuild/TopOpeBRepBuild_SplitShapes.hxx Diff File
rm - src/TopOpeBRepBuild/TopOpeBRepBuild_SplitSolid.pxx Diff File
mod - src/TopOpeBRepBuild/TopOpeBRepBuild_WireEdgeClassifier.cxx Diff File
mod - src/TopOpeBRepTool/FILES Diff File
rm - src/TopOpeBRepTool/TopOpeBRepTool_closing.cxx Diff File
mod - src/TopOpeBRepTool/TopOpeBRepTool_CORRISO.cxx Diff File
mod - src/TopOpeBRepTool/TopOpeBRepTool_define.hxx Diff File
mod - src/TopOpeBRepTool/TopOpeBRepTool_faulty.cxx Diff File
mod - src/TopOpeBRepTool/TopOpeBRepTool_PURGE.hxx Diff File
mod - src/TopOpeBRepTool/TopOpeBRepTool_SC.hxx Diff File
mod - src/TopOpeBRepTool/TopOpeBRepTool_TOPOLOGY.cxx Diff File
mod - src/TopOpeBRepTool/TopOpeBRepTool_TOPOLOGY.hxx Diff File
mod - src/TopTrans/TopTrans_SurfaceTransition.cxx Diff File
mod - src/VrmlData/VrmlData_Geometry.cxx Diff File
mod - src/VrmlData/VrmlData_ShapeConvert.cxx Diff File
mod - src/WNT/FILES Diff File
rm - src/WNT/WNT_Uint.hxx Diff File
mod - src/WNT/WNT_WClass.cxx Diff File
mod - src/WNT/WNT_WClass.hxx Diff File
mod - src/XSDRAWSTLVRML/XSDRAWSTLVRML.cxx Diff File

Issue History

Date Modified Username Field Change
2017-01-31 11:07 erossignon New Issue
2017-01-31 11:07 erossignon Assigned To => erossignon
2017-01-31 11:10 kgv Relationship added duplicate of 0027407
2017-01-31 11:13 kgv Note Added: 0063242
2017-01-31 11:21 abv Note Added: 0063244
2017-01-31 13:21 erossignon Note Added: 0063252
2017-01-31 18:49 abv Assigned To erossignon => abv
2017-01-31 18:49 abv Status new => assigned
2017-02-01 08:45 git Note Added: 0063275
2017-02-01 08:52 abv Note Added: 0063276
2017-02-01 09:28 abv Note Edited: 0063276
2017-02-01 09:29 abv Assigned To abv => ski
2017-02-01 09:30 abv Note Added: 0063277
2017-02-01 17:02 aml Note Added: 0063309
2017-02-01 18:20 kgv Note Added: 0063315
2017-02-01 23:03 kgv Note Added: 0063333
2017-02-01 23:07 kgv Note Added: 0063334
2017-02-01 23:12 kgv Note Edited: 0063333
2017-02-01 23:14 kgv Note Edited: 0063333
2017-02-02 09:46 kgv Note Edited: 0063333
2017-02-03 21:41 git Note Added: 0063430
2017-02-03 21:50 kgv Note Added: 0063431
2017-02-03 21:50 kgv Note Edited: 0063431
2017-02-03 21:50 kgv Note Edited: 0063431
2017-02-03 21:51 kgv Note Edited: 0063334
2017-02-03 22:27 git Note Added: 0063432
2017-02-04 10:50 git Note Added: 0063437
2017-02-04 11:18 git Note Added: 0063438
2017-02-04 11:28 kgv Note Added: 0063439
2017-02-04 13:56 git Note Added: 0063440
2017-02-04 13:56 kgv Note Edited: 0063439
2017-02-04 18:39 git Note Added: 0063441
2017-02-05 11:43 git Note Added: 0063445
2017-02-05 11:58 git Note Added: 0063446
2017-02-06 19:37 ski Note Added: 0063466
2017-02-06 19:37 ski Assigned To ski => abv
2017-02-06 19:37 ski Status assigned => feedback
2017-02-08 19:41 ski Note Added: 0063714
2017-02-08 19:57 git Note Added: 0063715
2017-02-08 19:58 kgv Note Added: 0063716
2017-02-09 13:49 ski Note Added: 0063729
2017-02-09 14:03 abv Note Added: 0063730
2017-02-09 14:03 abv Assigned To abv => ski
2017-02-09 17:14 git Note Added: 0063741
2017-02-11 19:43 git Note Added: 0063761
2017-02-11 19:57 git Note Added: 0063762
2017-02-13 12:16 abv Note Added: 0063771
2017-02-16 19:09 git Note Added: 0063856
2017-02-20 18:34 git Note Added: 0063927
2017-02-21 19:05 git Note Added: 0063952
2017-02-27 16:56 git Note Added: 0064014
2017-02-28 12:01 git Note Added: 0064021
2017-02-28 12:18 git Note Added: 0064022
2017-03-06 12:26 git Note Added: 0064140
2017-03-06 16:40 abv Relationship added parent of 0028452
2017-03-24 18:24 git Note Added: 0064695
2017-03-30 11:49 ski Status feedback => assigned
2017-03-30 11:58 git Note Added: 0064800
2017-03-30 12:11 git Note Added: 0064803
2017-03-30 12:28 git Note Added: 0064807
2017-06-13 08:36 kgv Relationship added parent of 0028838
2017-07-01 08:44 git Note Added: 0067840
2017-07-02 22:57 git Note Added: 0067842
2017-07-02 23:12 abv Assigned To ski => kgv
2017-07-02 23:12 abv Status assigned => resolved
2017-07-02 23:12 abv Steps to Reproduce Updated
2017-07-03 07:22 kgv Note Added: 0067843
2017-07-03 07:22 kgv Assigned To kgv => bugmaster
2017-07-03 07:22 kgv Status resolved => reviewed
2017-07-03 07:22 kgv Target Version => 7.2.0
2017-07-03 08:40 git Note Added: 0067844
2017-07-03 09:31 git Note Added: 0067921
2017-07-03 09:39 abv Note Added: 0067924
2017-07-03 10:02 git Note Added: 0067926
2017-07-03 16:55 git Note Added: 0067950
2017-07-03 17:23 bugmaster Assigned To bugmaster => apv
2017-07-03 17:24 bugmaster Note Added: 0067951
2017-07-03 18:22 abv Note Added: 0067952
2017-07-03 22:09 bugmaster Note Added: 0067957
2017-07-04 11:51 apv Test case number => Not needed
2017-07-04 11:54 apv Note Added: 0067963
2017-07-04 11:54 apv Assigned To apv => bugmaster
2017-07-04 11:54 apv Status reviewed => tested
2017-07-04 11:55 apv Test case number Not needed => Not required
2017-07-04 11:55 apv Note Added: 0067964
2017-07-07 17:25 bugmaster Changeset attached => occt master 896faa72
2017-07-07 17:25 bugmaster Status tested => verified
2017-07-07 17:25 bugmaster Resolution open => fixed
2017-07-10 08:58 git Note Added: 0068115
2017-07-10 08:58 git Note Added: 0068116
2017-07-10 08:58 git Note Added: 0068117
2017-07-10 08:58 git Note Added: 0068118
2017-09-29 16:18 aiv Fixed in Version => 7.2.0
2017-09-29 16:28 aiv Status verified => closed