From simon.urbanek at r-project.org  Fri Dec 21 18:07:28 2007
From: simon.urbanek at r-project.org (Simon Urbanek)
Date: Fri, 21 Dec 2007 12:07:28 -0500
Subject: [Rd] 64-bit R build with Studio 12 on Sparc v9
In-Reply-To: <633AD4C78F3E8F489614A06990F6077B025CCF0B@a0203-xpo0111-s.hodc.ad.allstate.com>
References: <633AD4C78F3E8F489614A06990F6077B025CCF0B@a0203-xpo0111-s.hodc.ad.allstate.com>
Message-ID: <DAF6B7DA-384F-42AE-A41D-9FB0F1E4C8F9@r-project.org>


On Dec 20, 2007, at 6:45 PM, Louisell, Paul wrote:

> I'm working on a server with a sparcv9 chip using SunOS 5.9 Generic  
> May 2002. The compilers are the Sun Studio 12 compilers. I'm trying  
> to build a 64-bit version of R-2.6.1, and while the configure script  
> runs, the make does not.
>

Paul,

I don't know if that helps, but incidentally I have compiled R  
successfully with spro12  for a v9 machine just yesterday and all you  
need is in the R-admin manual. For completeness these were the (main)  
flags:

'CXX=CC -m64'
'LDFLAGS=-L/opt/SUNWspro/lib/v9'
'CC=cc -xc99 -m64'
'CFLAGS=-O -xlibmieee -xarch=sparcvis'
'F77=f95 -m64' 'FFLAGS=-O4 -xarch=sparcvis'
'CXXFLAGS=-O -m64 -xarch=sparcvis'
'FC=f95 -m64'
'FCFLAGS=-O4 -xarch=sparcvis -libmil'
'SHLIB_CXXLDFLAGS=-G -lCstd'
'SHLIB_LDFLAGS=-shared'
'CPICFLAGS=-Kpic' 'FPICFLAGS=-KPIC' 'CXXPICFLAGS=-Kpic' 'FCPICFLAGS=- 
KPIC'

Cheers,
Simon

PS: My tests so far show that R compiled with gcc 4.2.2 is faster than  
R compiled with the Sun's compilers, so I ended up using gcc instead  
as it's less painful and faster.



> Here are the options I set in config.site:
> ________________________________________________________________________
> _
>
> R_PAPERSIZE=letter
> CC="cc -m64"
> CFLAGS="-xO5 -xlibmil -xmemalign=8s"
> F77="f95 -m64"
> FFLAGS="-xO5 -xlibmil -xmemalign=8s"
> LDFLAGS="-L/opt/SUNWspro/lib/v9 -L/usr/local/lib"
> CXX="CC -m64"
> CXXFLAGS="-xO5 -xlibmil -xmemalign=8s"
> FC="f95 -m64"
> FCFLAGS="-xO5 -xlibmil -xmemalign=8s"
> ________________________________________________________________________
> __
>
> Here's the command invoking configure:
> ________________________________________________________________________
> __
>
> ./configure --with-blas --with-lapack --enable-BLAS-shlib
> ________________________________________________________________________
> __
>
> And here are the last several lines of the screen output from running
> the configure script:
> ________________________________________________________________________
> __
>
> R is now configured for sparc-sun-solaris2.9
>
>  Source directory:          .
>  Installation directory:    /usr/local
>
>  C compiler:                cc -m64  -xO5 -xlibmil -xmemalign=8s
>  Fortran 77 compiler:       f95 -m64  -xO5 -xlibmil -xmemalign=8s
>
>  C++ compiler:              CC -m64  -xO5 -xlibmil -xmemalign=8s
>  Fortran 90/95 compiler:    f95 -m64 -xO5 -xlibmil -xmemalign=8s
>  Obj-C compiler:            cc
>
>  Interfaces supported:      X11
>  External libraries:        readline, BLAS(SunPerf)
>  Additional capabilities:   iconv, MBCS, NLS
>  Options enabled:           shared BLAS, R profiling, Java
>
>  Recommended packages:      yes
>
> configure: WARNING: you cannot build the object documentation system
> configure: WARNING: you cannot build DVI versions of the R manuals
> configure: WARNING: you cannot build info or HTML versions of the R
> manuals
> configure: WARNING: you cannot build PDF versions of the R manuals
> ________________________________________________________________________
> ____
>
> I'm not concerned about not being able to build the manuals. Here are
> the last several lines of the screen output from running make:
> ________________________________________________________________________
> ____
>
> making pcre_chartables.d from pcre_chartables.c
> "./pcre_internal.h", line 168: Illegal number 4294967295U
> *** Error code 2
> make: Fatal error: Command failed for target `pcre_chartables.d'
> Current working directory
> /export/home/ploua/R_HOME/R-2.6.1/src/extra/pcre
> *** Error code 1
> make: Fatal error: Command failed for target `R'
> Current working directory
> /export/home/ploua/R_HOME/R-2.6.1/src/extra/pcre
> *** Error code 1
> make: Fatal error: Command failed for target `R'
> Current working directory /export/home/ploua/R_HOME/R-2.6.1/src/extra
> *** Error code 1
> make: Fatal error: Command failed for target `R'
> Current working directory /export/home/ploua/R_HOME/R-2.6.1/src
> *** Error code 1
> make: Fatal error: Command failed for target `R'
> ________________________________________________________________________
> ____
>
> It seems that the C compiler is having a hard time reading standard C
> constants. Some further (hopefully relevant) background:  Here is an
> excerpt from the Studio 12 C User's Guide:
> ________________________________________________________________________
> ____
>
> If you do not specify -xc99, the compiler defaults to - 
> xc99=all,no_lib.
> If you specify -xc99
> without any values, the option is set to-xc99=all.
> Note - Though the compiler support-level defaults to the language
> features of the C99 standard,
> the standard headers provided by the Solaris 8 and Solaris 9 operating
> systems in /usr/include
> do not conform with the 1999 ISO/IEC C standard. If you encounter  
> error
> messages, try
> specifying -xc99=none to obtain the 1990 ISO/IEC C standard behavior  
> for
> these headers.
> The 1999 C standard library semantics of routines that appeared in  
> both
> the 1990 and 1999 C
> standard are not available and therefore cannot be enabled on  
> Solaris 8
> and Solaris 9 software.
> The compiler issues an error message when you specify -xc99=lib  
> directly
> or indirectly on
> Solaris 8 or Solaris 9 software.
> ________________________________________________________________________
> ____
>
> I've tried adding the option '-xc99=none' to the C flags shown from
> config.site above, but I get the same error on running make. When I
> specify only '-xc99', I get an error telling me the library is
> unavailable on Solaris 9--the User's Guide is telling the truth above.
>
> I've also tried modifying 'pcre_internal.h' by commenting out the  
> lines
> where it's trying to determine the type for 32-bit unsigned integers  
> and
> instead hard-coding things with
>
> typedef unsigned int pcre_uint32;
>
> When I do this, I get the same error but originating in a different
> file. I'm not a C programmer so I can't be certain what I've attempted
> is reasonable (although I have received some guidance from people who
> are C programmers). Is my only option to go through and find all
> instances of '4294967295' in source files and hard-code things as I  
> did
> above for 'pcre_internal.h'?
>
> In the R Installation and Admin manual on page 42, it says, "However,
> our tests were none too successful: Sparc 64-bit builds crashed." Here
> they were referring to Solaris 10. I noticed that Brian Ripley  
> produced
> a successful build using Studio 12, but on x86_64 Linux. The  
> references
> to Solaris 9 used the Sun Forte 7 compilers.
>
> My ultimate question: Does anyone know how to successfully build a
> 64-bit target for R-2.6.1 using Studio 12 on a system with my
> architecture? If not using Studio 12, how about Studio 11?
>
> Thanks in advance for any help,
>
>
>
> Paul Louisell
> 650-833-6254
> ploua at allstate.com
> Associate Predictive Modeler (Statistician)
> Modeling & Data Analytics
> ARPC
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>



[Rd] 64-bit R build with Studio 12 on Sparc v9
Simon Urbanek