Skip to content

compiling with R-3.4.0

3 messages · Charles C. Berry, Simon Urbanek

#
TL;DR: I can compile C/Fortran to install packages that need
compilation, but I get loads of warnings.  I must have quirks in my
setup, possibly including the need to add system header files
compatible with clang4.


Details:

I have

: R version 3.4.0 (2017-04-21) -- "You Stupid Darkness"
: macOS 10.12.5 (16F73) aka Sierra -- on an older MacBook Pro
: Xcode 7.3        (mindful of advice that version 8.0 has some gotchas)
: clang version 4.0.0 (tags/RELEASE_400/final) (in /usr/local/clang4/bin)
: gfortran reports: gcc version 6.1.0 (GCC)  (in /usr/local/bin)
: PATH=/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/usr/local/bin

bash-3.2$ grep -v "#" ~/.R/MakeVars

CC=/usr/local/clang4/bin/clang
CXX=/usr/local/clang4/bin/clang++
LDFLAGS=-L/usr/local/clang4/lib
CPPFLAGS=-I/usr/local/clang4/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include
bash-3.2$


I came to the CPPFLAGS setting by trial and error - noticing that 
compilations generated fatal errors and complaints about not finding 
<string.h> and hunting my system for it.

----

With all this packages will install, but generate lots of warnings, viz.

* installing *source* package ?ECTC? ...
** libs
/usr/local/clang4/bin/clang -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG   -I/usr/local/clang4/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include   -fPIC  -Wall -g -O2  -c estimateCTC.c -o estimateCTC.o
In file included from estimateCTC.c:26:
In file included from ./ectc.h:1:
In file included from /Library/Frameworks/R.framework/Resources/include/R.h:55:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/stdlib.h:92:6: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
#if !__DARWIN_NO_LONG_LONG
      ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/sys/cdefs.h:633:32: note: expanded from macro '__DARWIN_NO_LONG_LONG'
#define __DARWIN_NO_LONG_LONG   (defined(__STRICT_ANSI__) \
                                  ^
[ ... ]

14 warnings generated.
/usr/local/clang4/bin/clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/clang4/lib -o ECTC.so estimateCTC.o init.o utils.o zmat.o -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
installing to /Users/cberry/projects/bushman/ECTC.Rcheck/ECTC/libs
** R
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (ECTC)

---


Further, attempts to use inline::cfunction(...) will *sometimes* fail.
I recall that this depends on whether I specify #include directives
and maybe which headers I use.

Advice appreciated.


Chuck
3 days later
#
Charles,

Including another SDK's includes manually won't work, because you can't mix SDKs - and you shouldn't need to do that.

If in doubt, run
sudo xcode-select --install
which will install any missing tools - you still do need regular Xcode installation in addition to the clang+fortran compilers.
You shouldn't need to touch CPPFLAGS - if you do, something is broken in your system.

Cheers,
Simon
#
On Thu, 8 Jun 2017, Simon Urbanek wrote:

            
Simon,

Thanks for the reply.  As of yesterday, everything seemed to be working OK 
without any ~/.R/MakeVars file. viz, I can compile packages using the 
binary you provide for R-3.4.0.  Also, I can configure, make, and make 
check R-devel using the clang4 you provide.

I can't say what is different now from before.  I just updated pcre and 
added pkg-config, java JDK, and cairo.  I recently re-installed command 
line tools, but I have had these `forever'.

Anyway, all is now well.

Thanks,

Chuck

[snip]
[snip]