1# f2c
2#
3# Build f2c into OBJROOT and let scipy use it to build.  A copy of numpy
4# is needed, modified to support f2c as one of its known fortran compilers.
5# Installation directory is given by the variable TMPPREFIX.
6# Set RC_CFLAGS to build multiple architectures.
7
8F2CNAME = f2c
9F2CVERS = 20100827
10F2CNAMEVERS = $(F2CNAME)-$(F2CVERS)
11LIBF2CNAME = libf2c
12
13F2CSRC = $(SRCROOT)/tmpprefix/$(F2CNAME)
14F2CTOP = $(OBJROOT)/$(F2CNAME)
15F2CDIR = $(F2CTOP)/$(F2CNAME)
16TARSUFFIX = .tar.gz
17
18install: $(F2CDIR) $(F2CDIR)/$(LIBF2CNAME) buildsrc
19	@set -x && \
20	cd $(F2CDIR) && \
21	sed 's,XXXXX,$(TMPPREFIX),' $(F2CSRC)/fc.ed | ed - fc && \
22	install -d $(TMPPREFIX)/bin $(TMPPREFIX)/include $(TMPPREFIX)/lib && \
23	cp -p $(LIBF2CNAME)/$(LIBF2CNAME).a $(TMPPREFIX)/lib && \
24	cp -p $(LIBF2CNAME)/f2c.h $(TMPPREFIX)/include && \
25	ranlib $(TMPPREFIX)/lib/$(LIBF2CNAME).a && \
26	install src/f2c $(TMPPREFIX)/bin && \
27	install fc $(TMPPREFIX)/bin && \
28	ln -s fc $(TMPPREFIX)/bin/f77
29	cp -f $(F2CDIR)/permission $(OSL)/$(F2CNAMEVERS).txt
30	cp -f $(F2CSRC)/$(F2CNAME).partial $(OSV)/$(F2CNAMEVERS).partial
31
32$(F2CDIR):
33	mkdir -p $(F2CTOP)
34	tar xzof $(F2CNAME)-mod$(TARSUFFIX) -C $(F2CTOP)
35
36$(F2CDIR)/$(LIBF2CNAME):
37	@set -x && \
38	cd $(F2CDIR) && \
39	unzip $(LIBF2CNAME).zip -d $(LIBF2CNAME) && \
40	cd $(LIBF2CNAME) && \
41	cp makefile.u Makefile && \
42	ed - f2c.h0 < $(F2CSRC)/f2c.h0.ed && \
43	ed - sysdep1.h0 < $(F2CSRC)/sysdep1.h0.ed && \
44	ed - Makefile < $(F2CSRC)/libf2c_Makefile.ed && \
45	ed - fio.h < $(F2CSRC)/fio.h.ed && \
46	cp $(F2CSRC)/arith.h $(F2CSRC)/cpu_time__.c . && \
47	make f2c.h && \
48	make
49
50buildsrc:
51	@set -x && \
52	cd $(F2CDIR)/src && \
53	cp makefile.u Makefile && \
54	ed - Makefile < $(F2CSRC)/src_Makefile.ed && \
55	ed - format.c < $(F2CSRC)/src_format.c.ed && \
56	ed - defs.h < $(F2CSRC)/src_defs.h.ed && \
57	ed - main.c < $(F2CSRC)/src_main.c.ed && \
58	rm -f f2c.h && \
59	ln -s ../$(LIBF2CNAME)/f2c.h && \
60	make
61
62afterinstallsrc:
63	perl $(SRCROOT)/tar-remove.pl '^f2c/(?:msdos|mswin)/' $(F2CSRC)/$(F2CNAME)$(TARSUFFIX) $(F2CNAME)-mod$(TARSUFFIX)
64	rm -f $(F2CSRC)/$(F2CNAME)$(TARSUFFIX)
65