[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