Using the latest patched R 3.0.2 on Mac OS X Maverics (10.9.1) with Xcode 5.0.2
command line tools and clang set as a compiler, the following kind of C code
somewhere in a package results in a dynamic link to symbol ___sincos_stret:
double sincos(double n) { return(sin(n)+cos(n)); }
It is obvious that ___sincos_stret is an LLVM optimization: if code calls
sin(n) and then cos(n) and uses both results, the compiler will make one call
to the structure-returning sincos method.
The actual problem is that such symbol is available in system library
/usr/lib/system/libsystem_m.dylib only since Mavericks (10.9 SDK) and a package
installed from binary (.tgz) compiled on 10.9 but run on 10.8 or older fails:
Symbol not found: ___sincos_stret
One ”solution" is to make minor changes to the C code so that compiler won’t
detect a need for optimization. A better solution is to use compiler flag
-mmacosx-version-min=10.8. However, these solutions to a single concrete
problem give only partial answers to the more general question:
How to (maximize the possibility to) create OS X 10.6+ (i.e. R 3.0.0+)
compatible .tgz binary packages using a computer with OS X 10.9 and Xcode 5.0
(and without using CRAN or RForge building services)?
Any tips would be appreciated.
Best wishes,
Reijo Sund
_______________________________________________
R-SIG-Mac mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-sig-mac