From ripley at stats.ox.ac.uk  Mon Dec  1 10:45:53 2014
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Mon, 01 Dec 2014 09:45:53 +0000
Subject: [Rd] Using FPP preprocessor for Fortran Code
In-Reply-To: <547ABD63.9060606@lyle.smu.edu>
References: <547ABD63.9060606@lyle.smu.edu>
Message-ID: <547C38D1.9060404@stats.ox.ac.uk>

On 30/11/2014 06:46, Michael Hahsler wrote:
> Dear R Developers,
>
> For package seriation I use Fortran code. I recently got a request to add
>
> #if defined(__ICC) || defined(__INTEL_COMPILER)
>        USE IFPORT
> #endif
>
> to the code since the Intel Fortran compiler otherwise has problems with
> rand(). However, to enable the FPP preprocessor I have to either add a

'Writing R Extensions' advises you not to use system RNGs, so this is a 
good time to comply.  ?6.6 of 'Writing R Extensions' describes how to 
use the R RNG from Fortran.

> compiler flag (-cpp for gFortran) which is possibly not portable or
> change the extension to .F, .fpp, .FPP (and a few others) which
> automatically invokes the preprocessor (hopefully on all platforms). I

Many compilers do not know about .fpp or .FPP, and .F is not portable to 
case-independent file systems.

> tried .fpp and added the following to Makevars:
>
> OBJECTS=arsa.o bburcg.o bbwrcg.o bea.o criterion.o dist.o fprintf.o
> greedy.o optimal.o stress.o
>
> %.o: %.fpp
>          $(F77) $(ALL_FFLAGS) -c $< -o $@
>
> It seems to work (I tried Linux and Windows) but R CMD check gives me:
>
> * checking if this is a source package ... WARNING
> Subdirectory ?src? contains:
>    arsa.fpp bburcg.fpp
>
> Is there a different preferred method to do this? Is it possible to add
> support for Fortran with the fpp preprocessor (.fpp files) to the R
> package building process?

The support is as described in 'Writing R Extensions' ?1.1.5.

You could add flags in PKG_FFLAGS, but you would have to use a configure 
script to find the right one (-xpp=fpp is also used).

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Emeritus Professor of Applied Statistics, University of Oxford
1 South Parks Road, Oxford OX1 3TG, UK



[Rd] Using FPP preprocessor for Fortran Code
Prof Brian Ripley