On Dec 23, 2012, at 9:22 PM, Matthew Dowle wrote:
>
> Hi,
>
> Similar questions have come up before on the list and elsewhere but I
haven't found a solution yet.
>
> winbuilder's install.out shows data.table's .c files compiled with
-O3 on Win32 but -O2 on Win64. The same happens on R-Forge. I gather that some
packages don't work with -O3 so the default is -O2.
>
> I've tried this in data.table's Makevars (entire contents) :
>
> ===> MAKEFLAGS="CFLAGS=-O3" # added
> CFLAGS=-O3 # added
> PKG_CFLAGS=-O3 # added
> all: $(SHLIB) # no change
> mv $(SHLIB) datatable$(SHLIB_EXT) # no change
> ===>
> but -O2 still appears in winbuilder's install.out (after -O3, and I
believe the last -O is the one that counts) :
>
> gcc -m64 -I"D:/RCompile/recent/R-2.15.2/include" -DNDEBUG
-I"d:/Rcompile/CRANpkg/extralibs215/local215/include" -O3 -O2 -Wall
-std=gnu99 -mtune=core2 -c dogroups.c -o dogroups.o
>
> How can I ensure that data.table is compiled with -O3 on Win64?
>
You can't - at least not in a way that doesn't circumvent the R build
system. Also it's not portable so you don't want to mess with
optimization flags and hard-code it in your package as it's user's
choice how they setup R and its flags. You can certainly setup your R to compile
with -O3, you just can't impose that on others.
Cheers,
Simon