[Distutils] Optimization of C++ extensions to Python
Andreas Klöckner
lists at informa.tiker.net
Thu Jul 3 02:31:54 CEST 2008
Hi Michael,
On Montag 30 Juni 2008, Michael Wieher wrote:
> Can anyone
> a) tell me if my binary compiled w/extra_compile_args -O0 is, indeed, level
> zero b) tell me the correct way to adjust this flag?
Not sure about "correct", but this works for me:
8< ---------------------------------------------------------
def hack_distutils(debug=False, fast_link=True):
# hack distutils.sysconfig to eliminate debug flags
# stolen from mpi4py
def remove_prefixes(optlist, bad_prefixes):
for bad_prefix in bad_prefixes:
for i, flag in enumerate(optlist):
if flag.startswith(bad_prefix):
optlist.pop(i)
break
return optlist
import sys
if not sys.platform.lower().startswith("win"):
from distutils import sysconfig
cvars = sysconfig.get_config_vars()
cflags = cvars.get('OPT')
if cflags:
cflags = remove_prefixes(cflags.split(),
['-g', '-O', '-Wstrict-prototypes', '-DNDEBUG'])
if debug:
cflags.append("-g")
else:
cflags.append("-O3")
cflags.append("-DNDEBUG")
cvars['OPT'] = str.join(' ', cflags)
cvars["CFLAGS"] = cvars["BASECFLAGS"] + " " + cvars["OPT"]
if fast_link:
for varname in ["LDSHARED", "BLDSHARED"]:
ldsharedflags = cvars.get(varname)
if ldsharedflags:
ldsharedflags = remove_prefixes(ldsharedflags.split(),
['-Wl,-O'])
cvars[varname] = str.join(' ', ldsharedflags)
8< ---------------------------------------------------------
Distutils may just be the most-monkeypatched piece of software in history.
Andreas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20080702/b37713d1/attachment-0001.pgp>
More information about the Distutils-SIG
mailing list