Doing the unix-like configure-make-make-check got me thinking about the MPIR
build system. Here are some thoughts, some of this is a rehash of older
conversations/ideas.
At the moment we have autotools to take care the unix systems and VC projects
to take care of the Windows side. It would be nice if we had one system to do
both . Clearly VC projects only work on windows so this is no good , why wont
autotools run on windows. It does under cygwin , but this has problems of 1)
License ? not lgpl2? 2) require installation 3) requires runtime cygwin.dll .
Mingw/MSYS fairs better in that we dont require a runtime dll , the
installation could be done at build time , like we do for YASM at the
moment. Dont know about the license , but I think it may be more suited, if
not perhaps we could mix and match our own( we need bash,binutils... all of
which have been ported, I think). Perhaps this solution would better suit a
bigger project like SAGE , if SAGE shipped with a cutdown MSYS/Mingw then
porting could be fast , we could wrap MSVC's cl.exe so it looks like a
version of cc/gcc.
Another problem of autotools is the complexity , if you look at reported
errors for any package then a large percentage are autotools related ,
strictly speaking they are not the fault of autotools , but rather the
scripts we write to configure and make our packages. Because autotools must
work with every version of unix since the big bang , you have to work to the
lowest common denominator, which is time consuming and error prone. Autotools
brings all developers done to the lowest level , whereas I think it should
brought all systems *up to* a modern level, it should be a set of patches and
tools that users install to bring their systems up to stuff . There have been
thoughts of writing a new python build system , sounds attractive , but the
more I think about it , the more like a black hole it becomes for our time .
eg we would need to support parallel make, cross-compilation. I think we
really have to use a ready made solution?
If the existing build system was simpler then perhaps the above tasks may
become clearer , and it hopefully encourage people to help. One aspect that
could be cleaned is the mpn cpu selection and fat-build. The current cpu
selection (ie the sym-links) is done at configure time and is restrictive (ie
it wont cope with a new K8 asm function). There is also no need for this to
be done at build time , we could do it when we do autoreconf for example. The
configure mechanism at build time would be then simpler . Not sure how clean
up the fat build !!
Jason
For Sage-for-windows it would be very reasonable to ship with a
msys/mingw or whatever else along those lines makes porting work
easier.
-- William
No , I didn't get around to it , I'll try it later