Developer forums (C::B DEVELOPMENT STRICTLY!) > Development

Enable the PCH when build C::B against wx3.x

(1/2) > >>

ollydbg:
The PCH file is normally larger in wx3.x version than wx2.x. I think for historical reasons: For example, old windows GCC(such as tdm gcc 5.1) does not handle a PCH file size which is larger than 128M. But some newer windows GCC(such as GCC from mingw-w64 site) suite already has a patch to fix this issue. The PCH issue of Windows GCC is fixed for more than two years.

I personally have this patch in my local copy for quite a long time:

--- Code: --- src/CodeBlocks_wx31.cbp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/CodeBlocks_wx31.cbp b/src/CodeBlocks_wx31.cbp
index 51dacc95..9f164270 100644
--- a/src/CodeBlocks_wx31.cbp
+++ b/src/CodeBlocks_wx31.cbp
@@ -715,12 +715,13 @@
  <Add option="-mthreads" />
  <Add option="-fmessage-length=0" />
  <Add option="-fexceptions" />
+ <Add option="-Winvalid-pch" />
  <Add option="-std=gnu++11" />
  <Add option="-DHAVE_W32API_H" />
  <Add option="-D__WXMSW__" />
  <Add option="-DWXUSINGDLL" />
  <Add option="-DcbDEBUG" />
- <Add option="-DNOPCH" />
+ <Add option="-DCB_PRECOMP" />
  <Add option="-DwxUSE_UNICODE" />
  <Add directory="$(#WX31.include)" />
  <Add directory="$(#WX31.lib)/gcc_dll$(WX_CFG)/msw$(WX_SUFFIX)" />
@@ -1256,6 +1257,7 @@
  <Option target="sdk" />
  </Unit>
  <Unit filename="include/sdk.h">
+ <Option compile="1" />
  <Option weight="1" />
  <Option target="src" />
  </Unit>
@@ -1266,6 +1268,7 @@
  <Option target="sdk" />
  </Unit>
  <Unit filename="include/sdk_precomp.h">
+ <Option compile="1" />
  <Option weight="0" />
  <Option target="sdk" />
  </Unit>

--- End code ---

Today, I did some tests:
I use MinGW-W64 mingw-build gcc 7.2 32bit compiler, wx3.1.1-rc and build CodeBlocks_wx31.cbp with PCH enabled and not.

With out PCH enabled, it takes:

--- Code: ---Process terminated with status 0 (12 minute(s), 21 second(s))
0 error(s), 4 warning(s) (12 minute(s), 21 second(s))

--- End code ---

With PCH enabled, it takes:

--- Code: ---Process terminated with status 0 (5 minute(s), 51 second(s))
0 error(s), 4 warning(s) (5 minute(s), 51 second(s))

--- End code ---

So, it is more than 50% build time saved.  :)

This is done in my Windows 7 64bit system.

Any objections?

BTW: another patch is need to build cb against wx3.1.1, see: UXTheme error when compiling with wxWidgets 3.1.1

BlueHazzard:
This would break compilation with compiler prior 7.XX on windows?

stahta01:

--- Quote from: BlueHazzard on March 01, 2018, 09:54:32 pm ---This would break compilation with compiler prior 7.XX on windows?

--- End quote ---

Only with a few 5.xx compilers; I forgot the exact version numbers that has the bug.
Edit: It might even have been 4.xx compilers that had the bug.
Edit2: The bug was in MinGW GCC 4.8; started in one of the last MinGW GCC 4.7.x builds.
I believe it was fixed in the 5.xx compilers.

Tim S.

ollydbg:

--- Quote from: BlueHazzard on March 01, 2018, 09:54:32 pm ---This would break compilation with compiler prior 7.XX on windows?

--- End quote ---
Hi, you can see my answers here for details https://stackoverflow.com/questions/10841306/cc1plus-exe-crash-when-using-large-precompiled-header-file/19372020#19372020

It is in year 2015.

ollydbg:
FYI: I commit the patch in r11401.

Navigation

[0] Message Index

[#] Next page

Go to full version