I was thinking of making some changes to sage-env, with the main aim of improving portability and getting rid of GNUisms. I'd be intersted in any thoughts on the following, or other things which could be done. I've also made some changes to 'prereq-0.4',
http://sage.math.washington.edu/home/kirkby/Solaris-fixes/prereq-0.4/ which don't overlap with this. My thoughts were 1) Define 5 new environment variables used for creating shared libraries. * SAGE_SHARED_FLAG, * SAGE_SONAME_FLAG * SAGE_WHOLE_ARCHIVE_FLAG * SAGE_NO_WHOLE_ARCHIVE_FLAG * SAGE_FPIC_FLAG For gnu compilers, these would be set to -shared -soname -whole-archive -no-whole-archieve -fPIC For other compilers, they would be set to whatever the compilers need. In the case of Sun's compilers, for 32-bit code they are: -G -h -z allextract -z defaultextract -KPIC That should mean any time where -fPIC is seen as a compiler option, it just needs replacing by $SAGE_FPIC and would work with any compiler. I'll try to find out what the names are for some of the other compilers (IBM's on AIX, HP's on HP-UX etc). Other things I intended doing are: 2) Check 'make' is GNU make, as I don't believe we have a hope in hell of building Sage with any other make. 3) Check 'tar' is GNU tar. 4) Check carefully for the type of compiler - Intel, Sun, GNU etc, by checking what the pre-processor defines. That should be a pretty reliable test. 5) Add new environment variables SAGE_LINKER and SAGE_ASSEMBLER setting that to GNU, Sun, etc. To do that I need to try to work out what linker the compiler uses in the case of gcc. On Solaris at least, it's not too easy to tell, though most people do build gcc on Solaris with flags like --without-gnu-ld --with-ld=/usr/ccs/bin/ld --without-gnu-as --with-as=/usr/ccs/bin/as gcc -v will show these. However, there is no requirement to do so. But any time I've seen a GCC distribution (that in /usr/sfw/bin, sunfreeware.com, blastwave.org, anything I've built...), these have been defined, so it is possible to work out what linker and assembler are used in any case I know of. 6) Issue a warning if gcc is used on Solaris, and I can't work out what the linker and/or assembler is. 7) Check there is not a mix of GNU and non-GNU compilers. This is also done in my revised 'prereq' but checking in two places will do no harm, and might pick up some problems if someone manages to screw up their build. Do these seem reasonable? Can anyone think of any other variables that might be needed, perhaps for OS X, FreeBSD etc? Currently variables like CC, CXX, LD, AR, TAR, MAKE etc can be defined and are checked for in sage-env. If not set, they are simply set to 'gcc', 'g++', 'ld', 'ar', 'tar' etc. But in practice several packages ignore the most basic CC and CXX, and 99% of them ignore the others. Dave --~--~---------~--~----~------------~-------~--~----~ To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---