1#
2# Makefile.incl is initially empty
3# It gets initialized by "Make OS"
4#
5default: all
6
7include Makefile.incl
8include VERSION
9
10LIBS	= $(LIBDIRS) $(CLIBS) $(TLIBS) $(GDLIBS) $(SLIBS)
11DEFINES	= $(GDEFS) $(IDEFS) $(TDEFS) $(GDDEFS) $(SDEFS) $(OSDEFS)
12
13FLAGS	= $(INCDIRS) $(DEFINES)
14
15PROGS   = avs2ps balls rastep render ribbon rings3d rods normal3d
16SCRIPTS = stereo3d worms
17
18clean:
19	rm -f *.o $(PROGS) core *~
20	rm -f render_small render_small.f parse_small.f qinp_small.f parameters_small.incl
21	rm -f lists.mod
22	$(MAKE) -C examples clean
23
24distclean: clean
25	rm -f Makefile.incl
26	touch Makefile.incl
27	if [ -e aix-patch ] ; then rm -f aix-patch; fi
28	exit 0
29
30help:
31	@if test "$(OS)" ; \
32	then \
33		echo "Making Raster3D $(VERSION) for $(OS)" ; \
34	else \
35	echo "" ; \
36	echo "Please start by typing '"make OS"', where OS is one of" ; \
37	echo "	linux linux-pgf77 linux-ifort dec osx-intel osx-fink sun sun-forte irix5 irix6 cygwin aix hpux" ; \
38	echo "If your OS is not shown but you have gfortran installed, try" ; \
39	echo "	make linux" ; \
40	echo "" ; \
41	echo "If all goes well, you can now type 'make' to build the programs" ; \
42	echo "followed by 'make install' (probably as root) to install them" ;\
43	exit 1 ; \
44	fi
45
46#
47# OS-specific initializations
48#
49
50linux:
51	@cp Makefile.template Makefile.incl
52	@echo OS = linux                      >> Makefile.incl
53	@echo CC = gcc                        >> Makefile.incl
54	@echo CFLAGS = -g -Wall -Dgfortran    >> Makefile.incl
55	@echo FC = gfortran -std=legacy       >> Makefile.incl
56	@echo FFLAGS = -g -w -O3 -Wno-tabs -ffixed-line-length-132 >> Makefile.incl
57	@echo RM = /bin/rm -f                 >> Makefile.incl
58	@echo OSDEFS =  -DLINUX -DNETWORKBYTEORDER       >> Makefile.incl
59	@echo include Makefile.package        >> Makefile.incl
60	@echo                                 >> Makefile.incl
61	@echo qinp.o: qinp.f                  >> Makefile.incl
62	@echo "	\$$(FC) -g -O0 -Wall -Wno-tabs -c -o qinp.o qinp.f" >> Makefile.incl
63	@echo                                 >> Makefile.incl
64
65linux-ifort:
66	@cp Makefile.template Makefile.incl
67	@echo OS = linux                      >> Makefile.incl
68	@echo CC = gcc                        >> Makefile.incl
69	@echo CFLAGS = -g -Wall               >> Makefile.incl
70	@echo FC = ifort                      >> Makefile.incl
71	@echo FFLAGS = -g -w -O3 -132 -static-intel >> Makefile.incl
72	@echo RM = /bin/rm -f                 >> Makefile.incl
73	@echo OSDEFS =  -DLINUX -DNETWORKBYTEORDER       >> Makefile.incl
74	@echo include Makefile.package        >> Makefile.incl
75
76linux-pgf77:
77	@cp Makefile.template Makefile.incl
78	@echo OS = linux-pgf77                >> Makefile.incl
79	@echo CC = gcc                        >> Makefile.incl
80	@echo CFLAGS = -g -m486 -w            >> Makefile.incl
81	@echo FC = pgf77                      >> Makefile.incl
82	@echo FFLAGS = -O -Munroll            >> Makefile.incl
83	@echo RM = /bin/rm -f                 >> Makefile.incl
84	@echo OSDEFS = -DLINUX -DNETWORKBYTEORDER        >> Makefile.incl
85	@echo include Makefile.package        >> Makefile.incl
86
87osx-intel:
88	@cp Makefile.template Makefile.incl
89	@echo OS = osx                        >> Makefile.incl
90	@echo CC = icc                        >> Makefile.incl
91	@echo CFLAGS = -g -Wall               >> Makefile.incl
92	@echo FC = ifort                      >> Makefile.incl
93	@echo FFLAGS = -g -w -O3 -Wtabs -132  >> Makefile.incl
94	@echo RM = /bin/rm -f                 >> Makefile.incl
95	@echo OSDEFS =  -DOSX -DNETWORKBYTEORDER       >> Makefile.incl
96	@echo include Makefile.package        >> Makefile.incl
97	@echo                                 >> Makefile.incl
98	@echo qinp.o: qinp.f                  >> Makefile.incl
99	@echo "	\$$(FC) -g -O0 -w -Wtabs -132 -c -o qinp.o qinp.f" >> Makefile.incl
100	@echo                                 >> Makefile.incl
101
102osx-fink:
103	@cp Makefile.template Makefile.incl
104	@echo .NOTPARALLEL:                   >> Makefile.incl
105	@echo                                 >> Makefile.incl
106	@echo OS = osx                        >> Makefile.incl
107	@echo CC = /sw/bin/gcc-4              >> Makefile.incl
108	@echo INCDIRS = -I/sw/include         >> Makefile.incl
109	@echo LIBDIRS = -L/sw/lib             >> Makefile.incl
110	@echo CFLAGS = -g -Wall -Dgfortran    >> Makefile.incl
111	@echo FC = /sw/bin/gfortran           >> Makefile.incl
112	@echo FFLAGS = -g -w -O3 -Wtabs -ffixed-line-length-132 >> Makefile.incl
113	@echo RM = /bin/rm -f                 >> Makefile.incl
114	@echo OSDEFS =  -DOSX -DNETWORKBYTEORDER       >> Makefile.incl
115	@echo include Makefile.package        >> Makefile.incl
116	@echo                                 >> Makefile.incl
117	@echo qinp.o: qinp.f                  >> Makefile.incl
118	@echo "	\$$(FC) -g -O0 -Wall -Wtabs -c -o qinp.o qinp.f" >> Makefile.incl
119	@echo                                 >> Makefile.incl
120
121irix5:
122	@cp Makefile.template Makefile.incl
123	@echo OS=irix5 >> Makefile.incl
124	@echo SHELL=/bin/sh >> Makefile.incl
125	@echo CC = cc                         >> Makefile.incl
126	@echo CFLAGS = -g -w                  >> Makefile.incl
127	@echo FC = f77                        >> Makefile.incl
128	@echo FFLAGS = -O -Olimit 4500        >> Makefile.incl
129	@echo RM = /bin/rm -f                 >> Makefile.incl
130
131irix6:
132	@cp Makefile.template Makefile.incl
133	@echo OS=irix6 >> Makefile.incl
134	@echo SHELL=/bin/sh >> Makefile.incl
135	@echo CC = cc -n32                    >> Makefile.incl
136	@echo CFLAGS = -g -w                  >> Makefile.incl
137	@echo FC = f77                        >> Makefile.incl
138	@echo FFLAGS = -O -n32 -OPT:Olimit=4500 >> Makefile.incl
139	@echo LDFLAGS = -L/usr/lib32          >> Makefile.incl
140	@echo RM = /bin/rm -f                 >> Makefile.incl
141
142dec:
143	@cp Makefile.template Makefile.incl
144	@echo OS=dec >> Makefile.incl
145	@echo CC = cc                         >> Makefile.incl
146	@echo CFLAGS = -O -w                  >> Makefile.incl
147	@echo FC = f77                        >> Makefile.incl
148	@echo FFLAGS = -O -static -fast -r8   >> Makefile.incl
149	@echo RM = /bin/rm -f                 >> Makefile.incl
150	@echo OSDEFS = -DNETWORKBYTEORDER     >> Makefile.incl
151	@echo include Makefile.package        >> Makefile.incl
152
153aix:	aix-patch
154	@cp Makefile.template Makefile.incl
155	@echo OS=aix >> Makefile.incl
156	@echo CC = cc                         >> Makefile.incl
157	@echo CFLAGS = -g                     >> Makefile.incl
158	@echo FC = xlf -qqcount -w            >> Makefile.incl
159	@echo FFLAGS = -O -qtkq_size=2000 -qintlog -qsave  >> Makefile.incl
160	@echo LDFLAGS = -lz -bloadmap:loadmap.lis          >> Makefile.incl
161	@echo RM = /bin/rm -f                 >> Makefile.incl
162	@echo OSDEFS = -Dlocal_=local -Dungz_=ungz >> Makefile.incl
163aix-patch:
164	patch render.f < render_patch.aix
165	mv render.f.orig render.f.bak
166	@touch aix-patch
167
168sun:
169	@cp Makefile.template Makefile.incl
170	@echo OS = sun                        >> Makefile.incl
171	@echo CC = gcc                        >> Makefile.incl
172	@echo CFLAGS = -O                     >> Makefile.incl
173	@echo FC = g77                        >> Makefile.incl
174	@echo FFLAGS = -O                     >> Makefile.incl
175	@echo RM = /bin/rm -f                 >> Makefile.incl
176	@echo LDFLAGS = -L/usr/local/lib/gcc-lib/sparc-sun-sunos4.1.3_U1/2.6.2 -lgcc >> Makefile.incl
177
178sun-forte:
179	@cp Makefile.template Makefile.incl
180	@echo OS = sun                        >> Makefile.incl
181	@echo CC = cc                         >> Makefile.incl
182	@echo CFLAGS = -fast -`fpversion -foption`       >> Makefile.incl
183	@echo FC = f77                        >> Makefile.incl
184	@echo FFLAGS = \${CFLAGS}               >> Makefile.incl
185	@echo RM = /bin/rm -f                 >> Makefile.incl
186
187
188#
189# These source files are dependent on parameters.incl
190#
191FINCLS = render.o parse.o quadric.o normal3d.o
192$(FINCLS):	parameters.incl
193
194#
195# Actually build the programs
196#
197
198all:	help $(PROGS)
199
200avs2ps:	avs2ps.c
201	$(CC) $(CFLAGS) $(FLAGS) $(LDFLAGS) -o avs2ps avs2ps.c -lm
202
203balls:	balls.f
204	$(FC) $(FFLAGS) $(LDFLAGS) -o balls balls.f
205
206local.o:	Makefile.incl local.c
207	$(CC) $(CFLAGS) $(FLAGS) -c local.c
208
209ungz.o:	Makefile.incl ungz.c
210	$(CC) $(CFLAGS) $(GDEFS) $(OSDEFS) -c ungz.c
211
212ribbon:	ribbon.f ribbon1.f modsubs.f
213	$(FC) $(FFLAGS) $(LDFLAGS) \
214	ribbon.f ribbon1.f modsubs.f -o ribbon
215
216rastep:	rastep.f quadric.o suv.o
217	$(FC) $(FFLAGS) \
218	rastep.f quadric.o suv.o $(LDFLAGS) \
219	-o rastep
220
221render:	render.o local.o quadric.o parse.o r3dtogd.o ungz.o qinp.o
222	$(FC) $(FFLAGS) \
223	render.o local.o quadric.o parse.o r3dtogd.o ungz.o \
224	qinp.o \
225	$(LIBS) $(LDFLAGS) \
226	-o render
227
228normal3d:	normal3d.o quadric.o qinp.o ungz.o parameters.incl
229	$(FC) $(FFLAGS) \
230	normal3d.o quadric.o ungz.o qinp.o $(LDFLAGS) \
231	-o normal3d
232
233stereo3d:
234
235#
236# Install
237#
238install:	all
239	if [ ! -e $(prefix)  ] ; then mkdir -p $(prefix) ; fi
240	if [ ! -e $(bindir)  ] ; then mkdir -p $(bindir) ; fi
241	chmod 755 $(PROGS);   cp $(PROGS) $(bindir)
242	chmod 755 $(SCRIPTS); cp $(SCRIPTS) $(bindir)
243	if [ ! -e $(datadir) ] ; then mkdir -p $(datadir) ; fi
244	cp materials/* $(datadir)
245	if [ ! -e $(mandir)  ] ; then mkdir -p $(mandir) ; fi
246	cp doc/*.l $(mandir)
247	if [ ! -e $(htmldir) ] ; then mkdir -p $(htmldir) ; fi
248	cp html/* $(htmldir)
249	if [ ! -e $(examdir) ] ; then mkdir -p $(examdir) ; fi
250	if [ ! -e $(examdir)/msms ] ; then mkdir -p $(examdir)/msms ; fi
251	cp -R examples/* $(examdir)
252	@echo ""
253	@echo "	********************************************"
254	@echo "	* The examples subdirectory contains input *"
255	@echo "	* scripts to verify your installation and  *"
256	@echo "	* to serve as examples of use.             *"
257	@echo "	********************************************"
258
259tests: all render_small
260	$(MAKE) -C examples
261	$(MAKE) -j1 -C examples compare
262
263example1.png: render_small
264	./render_small
265
266render_small: render_small.o local.o quadric.o parse_small.o r3dtogd.o ungz.o qinp_small.o
267	$(FC) $(FFLAGS) $^ $(LIBS) $(LDFLAGS) -o $@
268
269.SUFFIXES: .incl
270SMALL=10
271parameters_small.incl: parameters.incl
272	sed 's/PARAMETER *(MAXOBJ *=.*)/PARAMETER (MAXOBJ=$(SMALL))/;' $< \
273	  | sed 's/PARAMETER *(MAXDET *=.*)/PARAMETER (MAXDET=$(SMALL),MAXSDT=$(SMALL))/;' \
274	  | sed 's/PARAMETER *(MAXSHR *=.*)/PARAMETER (MAXSHR=$(SMALL),MAXSSL=$(SMALL))/;' \
275	  > $@
276
277render_small.o parse_small.o qinp_small.o: parameters_small.incl
278
279render_small.f parse_small.f qinp_small.f: %_small.f: %.f
280	sed 's/parameters.incl/parameters_small.incl/;' $< >$@
281
282