I would like know the opinion from other people on the best way to customize compilation flags for building numpy. I am talking about the end-user point of view (e.g. I want to use the --optimize--so-aggressively-that-my-cpu-burns-into-flames flags, but without breaking build of python extensions because I forgot -fPIC).
One of the goal of using scons within distutils was to separate the logic between compilation options which are necessary to make the binary work at all (basically, what are the options to build a python extension on supported platforms, how to build a dll for ctypes, etc...) and the ones which are 'secondary' (optimization, debug, warnings). I have started working in this direction, using compiler configuration objects, which are just dictionaries:
The idea is that: - those configurations can be easily changed during the configure step of a package (for example, use sse unit instead of x87, etc...) - those configuration are not used directly when building projects: they are first copied to the actually used flags. The idea is that if necessary, you could request build environments without some warning flags (think pyrex/swig compilation), and only add them on user request. - those configurations are totally independent from the options necessary to build python extensions (those are not user accessible; I have not yet cleaned everything, but the goal is to have those flags set outside the extension builder logic, to avoid the distutils mess, which put and modifying flags everywhere deep down in the code).