On Wed, 9 Feb 2005, Kurt Hornik wrote: > >>>>> 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?)
Thanks for the suggestions. Setting the environment prior to running R CMD is not practical for me, typing-wise. I guess if made my .Renviron file architecture-specific it might work, but that seems overkill. That leaves writing a makefile, a script to rename 'src/Makevars' as 'src/Makevars_d' prior to upload, or adding the file to my .Rbuildignore as I only really need to see the additional warnings when running R CMD check. > >> 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. GNU make availability is unlikely at best. And I don't think this approach is going to be much help for me. I only wanted to augment the compiler settings for the packages I'm developing, not override the ones for the R itself. You've managed to make me think a package configure script might not be so hard after all :) Thanks for your insight. ---------------------------------------------------------- SIGSIG -- signature too long (core dumped) ______________________________________________ R-devel@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-devel