[petsc-users] win32fe?

Satish Balay balay at mcs.anl.gov
Tue Jan 31 11:49:37 CST 2023


Some additional notes on win32fe:

- PETSc uses cygwin python/make/shell etc for build tools - i.e they
  all work with cygwin (aka unix) paths. However cl,icl etc work with
  MS native paths. So win32fe parses the compiler options and converts
  the cygwin paths to native paths before invoking windows compilers.

- And the compile targets used [in makefiles] assume compilers behave
  like gcc (most unix compilers - essentially behave the same way -
  except for some differences in compiler options). However MS
  compilers require additional syntax restrictions - i.e options have
  to be set in a particular order. Win32fe does this reordering of
  compiler options before invoking cl.

- And there are other quirks with MS build tools [like lib] that
  win32fe handles - and gives a unix 'ar' like interface

Note: This was developed 20+ years ago - and only minor updates since
then [as the primary developer has moved on]

Satish

On Tue, 31 Jan 2023, Satish Balay via petsc-users wrote:

> Assuming 'icx/ifx' compiler options are same as 'icl/ifort' - you can try:
> 
> --with-cc='win32fe icl --use icx' --with-cxx='win32fe icl --use icx' --with-fc='win32e ifort --use ifx'
> 
> Also check 'win32fe --help'
> 
> However I think the above assumption [i.e icx is a drop in replacement for icl] is likely invalid - so this might not work.
> 
> Note: petsc/main has shell wrappers for 'win32fe icl' - so one could add similar wrappers for  icx - if the above would work.
> 
> balay at p1 /home/balay/petsc (main =)
> $ cat lib/petsc/bin/win32fe/win_cl
> #!/usr/bin/env sh
> #
> #  Wrapper for Microsoft Windows cl using win32fe as a full path compiler
> #
> p=`dirname $0`
> ${p}/win32fe cl $*
> 
> 
> The sources for win32fe are at https://bitbucket.org/petsc/win32fe
> 
> And 'win32fe icl --verbose' is useful to understand the commands its invoking internally.
> 
> Satish
> 
> On Tue, 31 Jan 2023, Daniel Stone wrote:
> 
> > Hello all,
> > 
> > I am currently having to figure out a way to get petsc working on windows,
> > using compilers from the intel oneAPI package. This means new compiler
> > names, such as "icx" for the c compiler and "ifx" for the fortran one.
> > 
> > I see from the installation instructions, and from old notes from a
> > collegue, how to set up the cygwin environment and to use, e.g.,
> > --with-cc="win32fe icl" (if using an older intel compiler) when configuring.
> > 
> > Unfortunately,win32fe only workes with a number of fixed (older) compilers,
> > and simply cannot be made to work with icx or ifx, as far as I can see.
> > When I try to not use the compilers without win32fe (e.g. --withcc=icx"),
> > I get a slew of problems when the configure script trys to compile and link
> > test c programs. It seems that icx works fine, but gets extemely confused
> > when having to target output files to, e.g., /tmp or /anywhere/non/trivial,
> > when running under cygwin. Is this the sort of problem that win32fe is
> > intended to solve?
> > 
> > I can't find any source code for win32fe, nor really any explainations of
> > what it's supposed to be doing or how it works. Since it looks like I have
> > to find a way of making it work with icx and ifx, I'm a bit stuck. Can
> > anyone
> > provide any insight as to what/how win32 does, or where I can look for some?
> > 
> > Many thanks,
> > 
> > Daniel
> > 
> 



More information about the petsc-users mailing list