#7818: Update sage-env
------------------------+---------------------------------------------------
   Reporter:  drkirkby  |       Owner:  drkirkby  
       Type:  defect    |      Status:  new       
   Priority:  major     |   Milestone:  sage-4.3.1
  Component:  porting   |    Keywords:            
Work_issues:            |      Author:            
   Upstream:  N/A       |    Reviewer:            
     Merged:            |  
------------------------+---------------------------------------------------
 This is an update to the sage-env file. It should allow a much improved
 build process, simplifying the code in spkg install files, as much of it
 will be taken care of. The code will also be more portable.

  * Little or no need for any SAGE64 rubbish in any spkg-install files. The
 appropriate flag to build 64-bit code is added if SAGE64 is set to use.
  * No need to add -Wall or -g, as these are added by default.
  * GNU specific compiler options can be replaced by variables with similar
 names to the GNU ones, making substitution a relatively easy task.
  * Will enable code to be much more portable.

 The changes mainly affect the 3 variables for compiler flags  - CFLAGS,
 CXXFLAGS and FCFLAGS.

 The user may set CFLAGS, CXXFLAGS and FCFLAGS, but the following will be
 appended.

  == General flags ==
  * The -g  option is added to enable debugging unless SAGE_DEBUG is set to
 "no".
  * -Wall is added for gcc, g++ and gfortran.

  == 64-bit Flags ==
 If SAGE64 is "yes"
  * -m64 is added for GCC
  * -m64 is added for Sun Studio
  * -q64 is added for IBM's compiler on AIX
  * +DA2.OW is added on HP-UX. (This will not work on Itanium processors
 running on HP-UX. I'll update when I have more information).

 A variable CFLAG64 is set to the correct option for building 64-bit
 binaries with the C compiler. So if -m64 is replaced by $CFLAG64, the code
 will work on any C compiler.

 (Some compilers may require a different option for C and C++ files. The
 names CXXFLAG64 and FCFLAG64 are reserved for this, but its not suggested
 they are used now)

  == C++ library flags ==
 Due to changes in the C++ standard, it is impossible for compiler vendors
 to distribute a C++ runtime library which is both compatible with the old
 standard and the new one. Both HP and Sun use the older library by
 default, and need a switch added to enable the newer libraries, which more
 closely follow the latest C++ standard. See:

 http://developers.sun.com/solaris/articles/cmp_stlport_libCstd.html

 http://docs.hp.com/en/14487/faq.htm


 Therefore
  * If the compiler is Sun Studio, library=stlport4 is added to CXXFLAGS.
  * If the Compiler is HP's on HP-UX, the option -AA is added to CXXFLAGS.

  == Shared Library Flags ==
 Five new variables are set in sage-env. These are for building shared
 libraries and take on names very similar to the GNU names for the flags.

 ||'''Flag name'''||'''Value with GCC'''||'''Value with Sun Studio'''||
 ||FPIC_FLAG||-fPIC||-xcode=pic32||
 ||SHARED_FLAG||-shared||-G||
 ||SONAME_FLAG||-soname||-h||

 A reviewer may notice two further variable names used. These options can
 be linker dependent and will be finalized once some code to detect the
 linker is in place.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/7818>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

--

You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.


Reply via email to