Re: [Rd] Re: Compiler-specific flags with PKG_CFLAGS

From: Kurt Hornik <Kurt.Hornik_at_wu-wien.ac.at>
Date: Thu 10 Feb 2005 - 05:29:09 EST

>>>>> Paul Roebuck writes:

> On Wed, 9 Feb 2005, Kurt Hornik wrote:

>> >>>>> Paul Roebuck writes:
>>
>> > On Tue, 8 Feb 2005, Kurt Hornik wrote:
>> >> This concerns the packages...
>> >> for which current versions of r-devel now report problems with
>> >> non-portable compilation flags in Makevars[.in] files:
>> >>
>> >> Problems in package 'rwt':
>> >> Non-portable flags in variable 'PKG_CFLAGS':
>> >> -Wall -ansi -pedantic
>> >>
>> >> These flags are mostly GCC specific and not portable.
>> >> (Do not assume that any -Ox will work.)
>> >>
>> >> Can you please fix these problems, and provide an update of your
>> >> package?
>>
>> > It has been on my todo list since Ripley brought it up
>> > several weeks ago in r-devel but hadn't exactly figured
>> > out how to package it as such. Someone have an example
>> > of how to add compiler flags for GCC when it is being
>> > used and otherwise not? I'm assuming Makevars isn't being
>> > passed through cpp and I can't just use #ifdef. In this case,
>> > I could just leave them out but I hate to lose the warnings
>> > for development. Using 'configure' is probably the only
>> > option but really didn't want to use it for just stricter
>> > error checking during compilation.
>>
>> I think the simplest way to achieve this is to configure R
>> locally (for yourself) with CFLAGS="-O2 -Wall -pedantic" but
>> leave the corresponding PKG_CFLAGS etc variables in package
>> src/Makevars alone.

> I can do that for workstations which I have admin priviledges > and have a private version of R; how about the ones I don't?

It depends: R-exts says

	Flags which are set in file `etc/Makeconf' can be overridden by
	the environment variable `MAKEFLAGS' (at least for systems using
	GNU `make'), as in (Bourne shell syntax)

	     MAKEFLAGS="CFLAGS=-O3" R CMD SHLIB *.c

	or by using a `Makefile'.

so if you have GNU Make, you can actually set MAKEFLAGS accordingly in your R_ENVIRON file.

What you can also try is to have a make (Sys.getenv("MAKE")) script in your PATH which does something like

        /path/to/real/make $* CFLAGS=-O3

(but I am never sure whether command line vars override the ones in files?)

>> R 2.1.0 will provide a portable way of overriding the configured
>> "site" compilation flags via user-level ~/.R/Makevars files.

> Will this also cover how to merge or augment compilation
> flags with the site-specified ones? And how will it handle
> the situation where one's home directory is NFS mounted
> across several architectures? There will be a variable to
> override the default location, right?.

No but there is

        ~/.R/Makeconf-$platform

where $platform is the same as in R_PLATFORM, which is looked for ahead of ~/.R/Makeconf. (That should be better than having an R_MAKECONF env var.)

Btw, I assume that if all Makes are GNU Make you might actually be able to conditionalize inside.

Best
-k



R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Thu Feb 10 05:14:26 2005

This archive was generated by hypermail 2.1.8 : Fri 18 Mar 2005 - 09:02:50 EST