[[PageOutline]] = What is numscons ? = numscons is a python package which provides an alternative build system for numpy, that is replace most of the functionalities of numpy.distutils for the build. The goal is to make is both easier for users and developers. Users should be able to build and customize numpy more easily, and it should provide more control for developers as well. Among supported features: * Automatic dependency handling (no need to rebuild from scratch for accurate builds) * Pretty output * Easy compilation flags customization * Parallel build * simpler than distutils: the core is ~ 1000 lines, checkers (MKL, ATLAS, Fortran) is another 1000 lines, compared to 10 000 lines of numpy.distutils * Easy to extend: it should be easy to add support for a new compiler, new library, etc... = Getting numscons = numscons sources are available on github {{{ http://github.com/cournape/numscons.git }}} python eggs are also available. To install numscons from eggs, you can use easy_install: {{{ easy_install numscons }}} If you already installed numscons using easy_install, you can upgrade using: {{{ easy_install -U numscons }}} = Building numpy with numscons = To build numpy with numscons instead of numpy.distutils, you need to use numpy subversion, and just need to call setupscons.py instead of setup.py. {{{ python setupscons.py install }}} Since scons supports parrallel builds, you can also try: {{{ python setupscons.py scons --jobs=2 install }}} For nicer build output: {{{ python setupscons.py scons --silent=1 install }}} For more information, see BuildWithNumScons. = Controlling compiler flags = You can control the compiler as before, using --compiler and -fcompiler. You can also control compiler flags, using CFLAGS. For example, let's say you want to quickly rebuild numpy for testing, and do not care about optimizations: {{{ CFLAGS="" python setupscons.py install }}} Will compile numpy without optimization flags. The big difference with numpy.distutils is that using CFLAGS will NOT override flags which are necessary to build python extensions (like -fPIC, etc...). Internally, numscons makes the difference between flags which are necessary for a given target, and the ones which are optional (optimization, warning, etc...).