[Distutils] Proposal: C/C++ compiler identification

Guido van Rossum guido@CNRI.Reston.VA.US
Tue, 15 Dec 1998 10:15:23 -0500


[someone]
> >> The proposal is for the Python build process to create run time accessible
> >> identification data whose purpose is to facilitate run time building of
> >> 
> >>         a) dynamically loadable binary python module objects *.so, .dll etc)
> >>         b) external (shell) application tools (.exe etc)
> >> 
> >> This proposal does not fix the format of the information.

[me]
> >Note that (for Unix at least) all this info is already being gathered
> >by the configure script, and stored in the various Makefile.  The info
> >also ends up being installed (look in
> >/usr/local/lib/python1.5/config/).

[John Skaller]
>         So, it would be relatively easily to generate a standard
> python module?

Without more context I don't know what you mean by "generate a
standard Python module".  If you are asking whether it is easy to
compile a Python extension given just its source, yes: just copy
/usr/local/lib/python1.5/config/Makefile.pre.in in the directory where 
the extension lives, write a one-line Setup file containing the module 
name and the source file name, and execute these two shell commands:

  make -f Makefile.pre.in boot
  make

This assumes that "python" is on your $PATH.

> >For Windows, since the only supported compiler is VC++, it could be
> >hardcoded.  However, there's a very serious problem on Windows with
> >Interscript's approach of invoking the compiler at run-time: most
> >users don't have this compiler.  
> 
>         I wouldn't have call that a serious problem with the
> approach. It is a difficulty :-)
> 
>         The current implementation doesn't handle failure
> gracefully. But, after all, it is just python script: more work 
> needs to be done to fetch or use pre-built binaries, 
> and to detect _whether_ a compiler is available. Etc.
> 
> >I realize that gcc is available for
> >free, but I think it isn't compatible with VC++.  As far as I know,
> >VC++ is required if you want to use any of Mark Hammond's stuff (COM
> >and MFC).  I don't know if Tcl/Tk can be used (without recompilation)
> >from a gcc-based app, and I don't know how easy it would be to
> >recompile.  (Does gcc on Windows have support for Win32 APIs at all?)
> 
>         To the best of my knowledge, CygWin will allow a Python
> build on Windows: it supplies bash, ecgs version of C/C++,
> and some other utilities. It also supplies Tcl/Tk/Tix. And it
> allows standard Windows API calls as well.

I know all that, but it requires building Python with CygWin.  Do you
realize that most Python users on Windows download the installer from
python.org?  That doesn't contain the C sources (they don't have a
C compiler so what good would it do them) and has a PYTHON15.DLL
created with VC++.  Oh well, I guess that if your software requires
them to have a compiler, you might as well require them to grab the
sources and rebuild Python -- but you must realize that this will put
off most potential users...

>         The advantage of the Interscript approach for Windows
> users is that SOME of them do have a C/C++ compiler. So instead
> of just ONE person supporting Windows, everyone with a compiler
> would be able to build and contribute binaries.

*IF* they can produce compatible binaries.

>         In other words, I can't see how the interscript approach
> makes anything _worse_ for Windows users. I do agree the current
> mechanism is inadequate! Hopefully, people can suggest ways
> to improve the mechanism.
> 
>         Note also: JPython works on Windows! So Mark Hammonds
> isn't the only build of Python that works on Windows :-))

I never said that.

--Guido van Rossum (home page: http://www.python.org/~guido/)