[Distutils] Re: distutils and C++ extensions
Greg Ward
gward@python.net
Fri Aug 23 09:24:02 2002
On 23 August 2002, Stefan Seefeld said:
> I'v mailed to various related newsgroups/mailing lists
> but nobody answered, so please excuse for the intrusion.
Did you try distutils-sig@python.org? That's where I send people with
distutils questions, but if you already tried there...
> I'v some trouble setting up a setup.py script for an
> extension module which I want to port from a autotools
> based build system to distutils. The module consists of
> various subdirectories, each with a set of files. The
> problem is:
>
> * some of the names clash (i.e. syn/hash.cc and ucpp/hash.c),
> i.e. the way distutils works compiles different source files
> to the same object file. I can't find a way to instruct
> distutils to change the output file name (or directory) per
> file
That shouldn't happen. As I recall, distutils should compile C/C++
source as follows:
syn/hash.cc -> build/temp.$plat/syn/hash.o
ucpp/hash.c -> build/temp.$plat/ucpp/hash.o
(where $plat is eg. "linux-i686-2.1", ie. the OS, hardware, and Python
version).
If that's not happening, it's a bug.
> * the different subdirectories used to have different Makefiles,
> thus allowing different macro definitions, etc.
>
> * different subdirectories use different compilers (gcc vs. g++)
> and different compiler options
Ouch.
> Is there any way to address these issues with distutils without
> a major hack ?
I don't think so. I never figured out a good way to handle that stuff,
but I haven't been near the distutils since October 2000. AFAIK no one
has figured out a good way to handle that stuff. Sorry.
You might try multiple setup scripts, and then a meta-setup script to
tie them all together. I think Andrew Kuchling experimented with that
sort of setup when he distutil-ized ZODB; as I recall, it sort-of
worked, but wasn't exactly a stunning success.
Greg
--
Greg Ward - just another Python hacker gward@python.net
http://starship.python.net/~gward/
Gee, I feel kind of LIGHT in the head now, knowing I can't make my
satellite dish PAYMENTS!