On Fri, Oct 2, 2009 at 3:42 AM, Dr. David Kirkby
<david.kir...@onetel.net> wrote:
>
> 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?

+100

Yes, definitely.  They are all the sort of thing that I would have
liked to do long ago, but didn't have the patience to figure out how
to do right.  Props to you for working on this!

William

> 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
>
>
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to