From ripley at stats.ox.ac.uk  Wed Sep 28 14:43:46 2005
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Wed, 28 Sep 2005 13:43:46 +0100 (BST)
Subject: [Rd] gfortran Makefile for windows
In-Reply-To: <Pine.LNX.4.61.0509281018250.6137@gannet.stats>
References: <1253d67a05092800173c7138b3@mail.gmail.com>
	<Pine.LNX.4.61.0509281018250.6137@gannet.stats>
Message-ID: <Pine.LNX.4.61.0509281324250.9384@gannet.stats>

On Wed, 28 Sep 2005, Prof Brian Ripley wrote:

> I am unaware that gfortran or gcc4 exist as a MinGW binary for Windows.
> You mention Cygwin, but that is not a supported platform for R.
>
> There is a g95 binary for Windows.

At www.g95.org, but I found no installation instructions relevant to 
Windows.  Some comments at the end of this message.

[...]

> Support for F95 files is planned for R 2.3.0, but depends on being able to
> differentiate F77 and F95 sources where needed (most platforms).
> Meanwhile we will try to add an example to the R-admin manual for 2.2.0.

Here is an example src/Makefile.win for a package called testf95 that uses 
F95/F90 only.

% cat testf95/src/Makefile.win

DLLNAME=testf95 # will not be needed in 2.2.0

include $(RHOME)/src/gnuwin32/MkRules

F90SOURCES=$(wildcard -f *.f90)
F95SOURCES=$(wildcard -f *.f95)
OBJS=$(F90SOURCES:.f90=.o) $(F95SOURCES:.f95=.o)

G95=c:/packages/g95/bin/g95
MINGW=c:/packages/gcc-3.4.4/

.SUFFIXES: .f90 .f95
.f90.o:
 	$(G95) -c $< -o $@
.f95.o:
 	$(G95) -c $< -o $@

## at least on my setup, G95 is not searching MinGW libs.
DLL=$(G95) -L$(MINGW)/lib

all: $(DLLNAME).dll

## Rules copied from MakeDll

RCNAME=${DLLNAME}_res
RCOBJ=$(RCNAME).o
RESFLAGS=--include-dir $(RHOME)/include
$(DLLNAME)_res.rc:
 	@PERL5LIB=$(RHOME)/share/perl perl 
$(RHOME)/src/gnuwin32/makeDllRes.pl $(DLLNAME) > $@
$(DLLNAME)_res.o: $(DLLNAME)_res.rc $(RHOME)/include/Rversion.h
$(DLLNAME).a: $(OBJS)
$(DLLNAME).dll : $(DLLNAME).a $(RCOBJ)


It works for me, but do be aware that it will depend on the
fine details of how your MinGW/G95 tools are installed.  I had to copy
dllcrt2.o from MINGW/lib to
C:/packages/g95/lib/gcc-lib/i686-pc-mingw32/4.0.1 since the paths are
processed after that file.  It is probably better to fiddle with the specs 
file.


-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



[Rd] gfortran Makefile for windows
Prof Brian Ripley