How may I override the compiler (GCC) flags that setup.py uses by default?
distutils, gcc, python, setup.py, setuptools
Solution
Prepend `CFLAGS="-O0"` before you run `setup.py`:
% CFLAGS="-O0" python ./setup.py
The `-O0` will be appended to `CFLAGS` while compiling, therefore will override previous `-O2` setting.
Another way is add `-O0` to `extra_compile_args` in `setup.py`:
moduleA = Extension('moduleA', .....,
include_dirs = ['/usr/include', '/usr/local/include'],
extra_compile_args = ["-O0"],
)
If you want to remove all default flags, use:
% OPT="" python ./setup.py
Problem
I understand that `setup.py` uses the same `CFLAGS` that were used to build Python. I have a single C extension of ours that is segfaulting. I need to build it without `-O2` because `-O2` is optimizing out some values and code so that the core files are not sufficient to pin down the problem. I just need to modify `setup.py` so that `-O2` is not used. I've read `distutils` documentation, in particular `distutils.ccompiler` and `distutils.unixccompiler` and see how to add flags and libs and includes, but not how to modify the default GCC flags. Specifically, this is for a legacy product on Python 2.5.1 with a bunch of backports (Fedora 8, yes, I know...). No, I cannot change the OS or Python version and I cannot, without great problems, recompile Python. I just need to build a one off of the C extension for one customer whose environment is the only one segfaulting.