[petsc-users] Improve of win32fe
Gong Ding
gdiso at ustc.edu
Fri Mar 26 21:08:29 CDT 2010
Dear Petsc developers
For long time I am using win32fe as an excellent tool to port
my code to windows. However, I found it slows down the compiling speed too much.
Yesterday I investigate the code and find the my_cygwin_conv_to_full_win32_path
is the bottleneck. For each unix path to windows path convertion, a cygwin command
'cygpath -aw PATH' should be executed. My code has many include path and source file, as a result,
compiling each cc file involves ~20 calls of cygpath.
And convert path of .o file when linking takse more than 30s.
I'd like to replace cygpath execution with cygwin function cygwin_conv_path.
Of course, this function only exist in cygwin system.
So I use cygwin-gcc to compile win32fe (only with some small changes)
There's a new problem appear. The new win32fe can not accept environment variable loaded in cygwin.bat.
I then use batch file to wrap the win32fe.exe and set environment variable for cl/icl in the batch file.
Now everything is ok. I tested with my code. The compiling time is greatly reduced, from 2h to 52min.
I'd like to share this method. But there are some license problem.
First, I even don't know the license of win32fe.
Second, since new version of win32fe dependent on cygwin (cygwin1.dll), it must be GPL.
I wonder if I can receive a notice that I can release it under GPL.
BTW, there seems a small bug at compilerfe.cpp 340-341
linkarg.push_front(outfile);
OutputFlag = --linkarg.begin();
I think it should be
OutputFlag = linkarg.begin();
Sincerely
Gong Ding
More information about the petsc-users
mailing list