1#
2#	You have to toy with the value of COLOR_OFFSET
3#	(0.0 <= COLOR_OFFSET <= 1.0) it reflects the darkness
4#	of the shaded plots, this can vary over X-servers
5#       (You can always override it with the command line flag -c0.25)
6#
7#       The queue names for the submit job part can be compiled in
8#       by using -DDOQUEUE
9#       You have to edit xwin.c to customise the queunames and times.
10#
11#	You can add the mpfit module by typing 'make molden.mpfit'
12#
13#	Disregard compiler warnings on rdmolf.f
14#
15#
16#CC = cc
17LIBS =  -lX11 -lm
18LDR = ${FC}
19LIBSG = -L/usr/local/lib -lGLU -lGL  -lX11 -lm
20ARCH := $(shell getconf LONG_BIT)
21AFLAG= -m$(ARCH)
22EXTEN=
23EXTENZ=
24EXTRAZ=
25
26empty :=
27choosefc :=
28EXT :=
29uname := $(shell uname -s)
30os :=
31
32ifeq ($(uname), Linux)
33 os := $(shell head -n 1 /etc/issue | cut -d" " -f1)
34 ifeq ($(os), Ubuntu)
35    EXTEN = exten
36    EXTENZ = exten2
37    LIBSG = -L/usr/local/lib -lGLU -lGL -lX11 -lm
38 endif
39 ifeq ($(os), Debian)
40    LIBSG = -L/usr/lib/X11 -lGLU -lGL -lX11 -lm
41 endif
42
43 choosefc := 'yes'
44endif
45
46ifneq (,$(findstring CYGWIN,$(uname)))
47 uname := Linux
48 choosefc := 'yes'
49endif
50
51ifeq ($(uname), Darwin)
52 choosefc := 'yes'
53endif
54
55
56ifneq ($(choosefc), $(empty))
57 comg77 := $(shell which g77 | grep -i g77)
58 comgfort := $(shell which gfortran | grep -i gfortran)
59 ifneq ($(comg77), $(empty))
60    FC = g77
61 endif
62 ifneq ($(comgfort), $(empty))
63    FC = gfortran
64 endif
65endif
66
67print-%  : ; @echo $* = $($*)
68#
69# Linux version
70#
71# Make sure the Xwindow include files are installed in an rpm package
72# called libX11-devel-*
73# For gmolden you also need the OpenGL include files contained in the
74# rpm packages mesa-libGL-devel* and mesa-libGLU-devel-*
75#
76# For optimisation you can try adding the following options to
77# CFLAGS & FFLAGS (Bjoern Pedersen):
78#
79# -O2 -malign-double -fomit-frame-pointer -funroll-loops
80#
81# On 64-bit Alpha-Linux add -mieee to the FFLAGS
82#
83# when using ggc3 instead of gcc2 add to CFLAGS: -traditional-cpp
84#
85# when using gfortran, replace g77 with gfortran and with some versions of the
86# gfortran compiler, comment out the line
87# 'external iargc' in molden.f
88# with GCC4.0 or higher replace the line with:
89# 'external gfortran_iargc'
90#
91
92ifeq ($(uname), Linux)
93#CC = gcc
94comgcc := $(shell gcc --version | grep 5.4)
95ifneq ($(comgcc), $(empty))
96   EXTRAZ = -Wno-implicit-function-declaration
97   EXT = ${EXTRAZ}
98endif
99FFLAGS = -g ${AFLAG}
100LIBS =  -L/usr/local/lib -lX11 -lm
101ifeq ($(AFLAG),"-m64")
102LIBS =  -L/usr/local/lib64 -lX11 -lm
103endif
104LDR = ${FC} -g ${AFLAG}
105CFLAGS = ${AFLAG} ${EXTRAZ} -c -g -I/usr/local/include -DDOBACK -DHASTIMER -DCOLOR_OFFSET=0.0
106 ifeq ($(os), Debian)
107    CFLAGS = ${AFLAG} ${EXTRAZ} -c -I/usr/include/X11 -DDOBACK -DHASTIMER -DCOLOR_OFFSET=0.0
108    LIBS =  -L/usr/lib/X11 -lX11 -lm
109    ifeq ($(AFLAG),"-m64")
110       LIBS =  -L/usr/local/lib64 -lX11 -lm
111    endif
112 endif
113ifeq ($(os), FreeBSD)
114CFLAGS = ${CFLAGS} -DFREEBSD
115endif
116endif
117
118ifeq ($(uname), Darwin)
119#
120# Mac OS X g77
121#
122CC=cc
123CFLAGS= -std=gnu89 -Wno-return-type -DDARWIN -I/usr/local/include -DDOBACK -DHASTIMER -DCOLOR_OFFSET=0.0
124EXT= -std=gnu89 -Wno-return-type -DDARWIN ${EXTRAZ}
125FFLAGS=-O3 -funroll-loops
126LIBS = -L/usr/local/lib -lX11 -lm
127LIBSG = -L/usr/local/lib -lGLU "-Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib" -lGL  -lX11 -lm
128LDR = ${FC}
129endif
130
131# Silicon Graphics
132#CFLAGS = -c -DDOBACK -DHASTIMER -DCOLOR_OFFSET=0.0
133#FFLAGS =
134#LDR = f77
135
136# Ultrix, Dec Alpha ( and best start for Unix other than below )
137#
138# on linux you some times need to add -Nx400 option to FFLAGS
139#
140#CFLAGS = -c -DDOBACK -DHASTIMER
141#FFLAGS =
142#LDR = f77
143
144#
145# Mac OS X Absoft Pro Fortran 8.0
146#
147#CC=cc -O2 -DHASTIMER -DDOBACK -DDARWIN -I/usr/local/include
148#FC=f77
149#FFLAGS= -B18 -O3 -f -N15 -s
150#LIBS = -L/usr/local/lib -lX11 -lm -lf90math -lfio -lf77math -lU77
151#LDR= ${FC}
152
153#
154# Mac OS X IBM XLF 8.1
155#
156#CC=cc -O2 -DHASTIMER -DDOBACK -DDARWIN -I/usr/local/include
157#FC=xlf
158#FFLAGS= -O3 -qtune=auto -qarch=auto -qextname
159#LIBS = -L/usr/local/lib -lX11 -lm
160#LDR= ${FC}
161
162#
163# an 64-bit Alpha-Linux system with the Compaq Fortran and C/C++ compilers
164#
165#CC = ccc
166#CFLAGS = -std0 -c -I/usr/local/include -DDOBACK -DHASTIMER -DCOLOR_OFFSET=0.0
167#FC = fort
168#FFLAGS =
169#LIBS =  -L/usr/local/lib -lX11 -lmcheck
170#LDR = ${FC}
171#
172
173# AIX
174#
175#CFLAGS = -c -D DOBACK -D UNDERSC -D HASTIMER
176#FFLAGS =
177#LDR = f77
178
179# SUN		(on the Sun: use "limit datasize 20M" if not enough memory)
180#CFLAGS = -c -DDOBACK -DHASTIMER
181##CFLAGS = -c -DDOBACK -DHASTIMER -I/usr/openwin/include
182#FFLAGS = -Nl90
183#LDR = f77
184
185# SUN		SOLARIS
186#LIBS =  -L/usr/openwin/lib -lX11 -lm
187#CFLAGS = -c -DDOBACK -DHASTIMER -I/usr/openwin/include
188#FFLAGS = -Nl90
189#LDR = f77
190
191# Cray
192# To Prevent the cray compiler to do stupid things, added -O0
193#CFLAGS = -D DOBACK -D CRAY
194#FFLAGS = -O0 -Wf"-dp"
195# If you are using F90 (fortran 90) use:
196#FFLAGS = -O0 -d p -e 0
197#LDR = segldr
198
199# HP-UX
200# Try any of the follwing two:
201#
202#LIBS =  -lU77 -lX11 -lm
203#CFLAGS = -c -O -D DOBACK -D HASTIMER -D UNDERSC
204#FC = fort77
205#FFLAGS = -O +U77
206#LDR = ${FC}
207####
208#LIBS =  -lU77 -lX11 -lm
209#CFLAGS = -Ae -c +DAportable -D DOBACK -D HASTIMER -D UNDERSC
210#FC = f77
211#FFLAGS = -O +U77 +DAportable
212#LDR = ${FC} +DAportable
213
214# Convex SPP-100
215#
216#LIBS =  -lU77 -L/usr/lib/X11R5 -lX11 -lm
217#CFLAGS = -c -O -DDOBACK -DUNDERSC -I/usr/include/X11R5
218#FC = fort77
219#FFLAGS = -O +U77
220#LDR = fort77
221
222
223OBJS = atomdens.o molden.o above.o actcal.o basprt.o calc.o \
224	caldis.o calfa.o cntour.o cnvgam.o cnvgau.o convzmat.o cross.o \
225	crprod.o datin.o defpc.o defrad.o del.o denmak.o densmat.o \
226	distot.o dmat.o docent.o draw.o \
227	euler.o eulerh.o files.o fndcal.o gampoi.o gaupoi.o gaussian.o \
228	geogam.o geogau.o getmul.o getpoi.o getreal.o gmmcnv.o grdcal.o \
229	gstr.o hidedr.o impsc.o locatc.o maxmin.o mdout.o mmcnv.o \
230	mopaco.o mopin.o mulprt.o occin.o oriin.o parang.o pareul.o \
231	parfc.o parori.o parpla.o parstp.o planky.o plend.o plini.o \
232	plmol.o plotgh.o plotgr.o plotin.o plpost.o prev.o proato.o \
233	procnv.o progeo.o rdbas.o rdcor.o rdgam.o rdgaus.o rdinfo.o \
234	rdpdb.o rdvect.o reada.o readel.o readvv.o renorm.o rmomen.o \
235	rota.o rotatg.o rotb.o rotc.o rotcor.o rotd.o rotfir.o rotm.o \
236	rotmom.o scback.o search.o searchd.o setang.o setbas.o \
237	settc.o shsort.o site.o slater.o stoc.o tessa.o tk4014.o \
238	tocap.o tocapf.o tomold.o under.o vaxdum.o vclr.o vec.o vlen.o \
239	vsc1.o wrinfo.o zread.o samino.o prtcal.o actss.o actami.o \
240	plden.o heaps.o den3d.o dencnt.o plhead.o pltab.o eucmol.o pl3dm.o \
241	plbox.o selsol.o atmd.o dolift.o spaced.o snypnt.o eulstr.o \
242	calct.o coeffs.o epint.o espot.o fcij.o fmt.o genaos.o rys.o \
243	ryspol.o rysrot.o thrcen.o twocen.o ifblen.o rott.o plmolp.o \
244	wrzmat.o rdchx.o obin.o pred.o gargpl.o inferr.o freqs.o getmop.o \
245	brklin.o getzm.o xyzcoo.o geomop.o dumzm.o getxyz.o espchrg.o \
246	proxim.o rdgamu.o plvrml.o molsint.o runjob.o rdmsf.o wrmsf.o \
247	rdmolf.o adf_fun.o rotpol.o extbas.o rdcpmd.o eem.o asspmf.o srfcal.o \
248	rdqchm.o rdorca.o rdmaux.o rdnwch.o
249
250DOBJ =	dummys.o dummyc.o
251
252#
253# For The OpenGL Graphics library molden helper 'moldenogl'
254# (make moldenogl)
255# and the full opengl version of molden 'gmolden', (does not need glut)
256# (make gmolden)
257#
258LIBSOGL = -lglut -lGLU -lGL  -lX11 -lm
259#
260# on linux :
261#
262#LIBSG = -L/usr/local/lib -lglut -lGLU -lGL  -lX11 -lm
263#
264# on linux : sometimes you also need the gdk library:
265#
266#LIBSG = -L/usr/local/lib -lgdk -lglut -lGLU -lGL  -lX11 -lm
267#
268# on linux with older Mesa installations try:
269#
270#LIBSG = -L/usr/local/lib -lglut -lMesaGLU -lMesaGL  -lXi -lX11 -lm
271#
272# MacOS X "Panther" OpenGL implementation
273# Needs Xcode tools
274#
275#LIBSG = -L/usr/local/lib -framework GLUT -framework OpenGL -framework Cocoa
276#
277# From fred arnold, also OS-X
278#
279#LIBSG = -L/usr/local/lib -Wl,-framework -Wl,GLUT -Wl,-framework -Wl,OpenGL -Wl,-framework -Wl,Cocoa -lGLU -lGL  -lX11 -lm
280
281all:	molden gmolden ambfor/ambfor ambfor/ambmd surf/surf $(EXTEN)
282xwin.o:	xwin.c rots.h
283xwingl.o:	xwin.c rots.h
284
285molden:	$(OBJS) mpdum.o xwin.o
286	$(LDR) -o molden $(OBJS) mpdum.o xwin.o $(LIBS) $(LDFLAGS)
287
288gmolden:	$(OBJS) mpdum.o xwingl.o
289	$(LDR) -o gmolden $(OBJS) mpdum.o xwingl.o $(LIBSG)
290
291ambfor/ambfor:	ambfor/*.f ambfor/*.c
292	$(MAKE) -C ambfor FC=${FC} LDR="${LDR}" EXT="${EXT}"
293
294ambfor/ambmd:	ambfor/*.f ambfor/*.c
295	$(MAKE) -C ambfor ambmd FC=${FC} LDR="${LDR}" EXT="${EXT}"
296
297surf/surf:	surf/*.h surf/*.c
298#	$(MAKE) -C surf depend
299	$(MAKE) -C surf EXT="${EXT}"
300
301# noxwin will not work as long as the old ocglbck calls arent in dummys
302
303noxwin:	$(OBJS) $(DOBJ) mpdum.o
304	$(LDR) -o molden $(OBJS) $(DOBJ) mpdum.o -lm
305
306# This version allows the fitting of multipole moments to the electrostatic
307# pontential
308
309molden.mpfit:	$(OBJS) mpolefit.o xwinmp.o
310	$(LDR) -o molden $(OBJS) mpolefit.o xwinmp.o $(LIBS) $(LDFLAGS)
311
312xwinmp.o:	xwin.c
313	$(CC) $(CFLAGS) -DMPFIT xwin.c
314	mv xwin.o xwinmp.o
315
316xwingl.o:	xwin.c
317	$(CC) $(CFLAGS) -DDOGL -c xwin.c -o xwingl.o
318
319unmullik:	unmullik.o
320	$(LDR) -o unmullik unmullik.o
321
322# short_wrl removes redundant vertices from molden's VRML2 files
323# with the courtesy of Andreas Klamt of COSMOSlogic
324#
325short_wrl:	short_wrl.o
326	$(LDR) -o short_wrl short_wrl.o
327
328# Moldens OpenGL helper program
329
330moldenogl:	oglmol.o silly.o
331	$(CC) -o moldenogl oglmol.o silly.o $(LIBSOGL)
332
333# conversion of CADPAC output to molden format
334
335cad2mol:	cad2mol.o
336	$(LDR) -o cad2mol cad2mol.o
337
338clean:
339	rm -f $(OBJS) mpdum.o xwin.o xwingl.o molden gmolden ambfor/ambfor ambfor/ambmd surf/surf ambfor/*.o surf/*.o
340
341exten:
342	./register_extension.sh
343
344exten2:
345	./register_extension.sh /usr/local/bin
346
347install:	$(EXTENZ)
348	sudo install -t /usr/local/bin -m 755 molden gmolden ambfor/ambfor ambfor/ambmd surf/surf
349