# ================================================================
# DISCUS Diffuse Scattering and defect structure simulation   V3.4
# ================================================================
#
# This is the Makefile for DISCUS on platforms using a fortran
# compiler such as f77, g77 or f90 ...
#
# Uncomment the compiler options etc. for your platform from
# the list below. If you platform is not listed and you succeed
# installing the program, please send us a short notice.
#
# (c) Th. Proffen    (proffen@pa.msu.edu)
#     R.B. Neder     (reinhard.neder@mail.uni-wuerzburg.de)
#

# Where to install the binary and help file and a backup location

BINDIR  = /usr/local/bin
BACKDIR = $(HOME)/linux/backup/

# Your compiler name and install program

F77     = g77
CC      = gcc

# Permission for installed binaries and aux files

BMOD    = 755
FMOD    = 644

# ================================================================
# Here are the platform specific definitions
#
# If you want line editing add -DREADLINE on
# the CFLAGS line. If you have trouble with interactiv
# input, remove -DREADLINE.
# 
# Simply remove the comment signs '#' for your 
# platform and check for uncommented other platforms.
# ================================================================

# ================================================================
# LINUX Redhat 5.x, 6.x
# ================================================================

CFLAGS  = -DREADLINE
FFLAGS  = -w -O -malign-double
LDFLAGS = -lm
SYSOBJ  = appl_unix.o sys_g77.o
SYSSRC  = appl_unix.f sys_g77.f

# ================================================================
# LINUX S.u.S.e 5.x
# ================================================================

#CFLAGS  = -DREADLINE -w
#FFLAGS  = -O -malign-double
#LDFLAGS = -lm
#SYSOBJ  = appl_unix.o sys_g77.o sys_f2cc.o
#SYSSRC  = appl_unix.f sys_g77.f

# ================================================================
# SUN Sparc Workstation
# ================================================================

#CFLAGS  = -DREADLINE
#FFLAGS  = -Nl80 -C -g
#LDFLAGS = -lm -lV77
#SYSOBJ  = appl_unix.o sys_sun.o
#SYSSRC  = appl_unix.f sys_sun.f

# ================================================================
# HP/UX Workstation
# ================================================================

#CFLAGS  = -DREADLINE
#FFLAGS  = -C -O +Obb2048 +E1
#FFLAGS  = -C +E1 -g
#LDFLAGS =
#SYSOBJ  = appl_unix.o sys_hpu.o
#SYSSRC  = appl_unix.f sys_hpu.f

# ================================================================
# DEC Alpha
# ================================================================

#CFLAGS  = -DREADLINE
#FFLAGS  = -O
#LDFLAGS = 
#SYSOBJ  = appl_unix.o sys_sun.o
#SYSSRC  = appl_unix.f sys_sun.f

# ================================================================
# SGI Power Challange
# ================================================================

#CFLAGS  = 
#FFLAGS  = -C  -O -Olimit 3000
#LDFLAGS = 
#SYSOBJ  = appl_unix.o sys_hpu.o
#SYSSRC  = appl_unix.f sys_hpu.f

# ================================================================
# SGI Workstations IRIS
# ================================================================

#CFLAGS  = 
#FFLAGS  = -O3
#LDFLAGS = 
#SYSOBJ  = appl_unix.o sys_sun.o
#SYSSRC  = appl_unix.f sys_sun.f

# ================================================================
# VPP300 Computer
# ================================================================

#CFLAGS  = -DREADLINE
#FFLAGS  = -Wv,-qv -Ob -X9
#LDFLAGS = 
#SYSOBJ  = appl_unix.o sys_vpp.o
#SYSSRC  = appl_unix.f sys_vpp.f
#F77     = frt

# ================================================================
# There should be no need to change anything below this line
# ================================================================

OBJ   =	discus.o addfile.o blk_appl.o blockdat.o dkdo.o \
        err_appl.o errlist.o exit.o fourier.o graphic.o help.o kdo.o \
        lazy.o learn.o macro.o metric.o interpret.o micro.o modify.o \
        patters.o plot.o powder.o random.o save.o show.o stack.o \
        spcgr_setup.o structur.o \
        sup.o symm.o tensors.o  thermal.o trafo.o transfrm.o \
        upd_par.o waves.o chem.o rmc.o readline.o extrmc.o mc.o mmc.o \
        pdf.o $(SYSOBJ)

discus: date.inc $(OBJ)
	$(F77) $(FFLAGS) $(LDFLAGS) -o discus $(OBJ)
	rm date.inc

.f.o:
	$(F77) -c $(FFLAGS) $<

date.inc:
	./makedate

clean: 
	rm -f discus $(OBJ) 

install: discus appl_dis.hlp lib_f77.hlp color.map
	rm -f discus.hlp
	cat appl_dis.hlp lib_f77.hlp > discus.hlp
	cp discus     $(BINDIR)/
	cp discus.hlp $(BINDIR)/
	cp color.map  $(BINDIR)/
	chmod $(BMOD) $(BINDIR)/discus
	chmod $(FMOD) $(BINDIR)/discus.hlp
	chmod $(FMOD) $(BINDIR)/color.map
	if [ ! -d "$(BINDIR)/mac/" ] ; then \
	  mkdir $(BINDIR)/mac/; chmod $(BMOD) $(BINDIR)/mac/; \
	fi
	if [ ! -d "$(BINDIR)/mac/discus" ] ; then \
	  mkdir -m $(BMOD) $(BINDIR)/mac/discus; \
	  chmod $(BMOD) $(BINDIR)/mac/discus;\
	fi
	cd sysmac; for i in *.mac ; do \
	  (cp $$i $(BINDIR)/mac/discus/; \
	  chmod $(FMOD) $(BINDIR)/mac/discus/$$i;) \
	done

backup: *.f sys_*cc.c read*.c *.inc *.cmm *.hlp *.map *ake* CHANGES.*
	tar -cvf discus.tar *.f read*.c sys_*cc.c *.inc *.cmm *.hlp  \
	                       *.map *ake* CHANGES.* sysmac/*.mac
	gzip discus.tar
	mv discus.tar.gz $(BACKDIR)

# ================================================================
# DO NOT DELETE THIS LINE -- make  depend  depends  on it.
# ================================================================

addfile.o: config.inc prompt.inc diffuse.inc errlist.inc
appl_unix.o: envir.inc prompt.inc
appl_vax.o: errlist.inc envir.inc prompt.inc
blk_appl.o: config.inc atom_env.inc crystal.inc crystal.cmm \
	 errlist.inc gen_add.inc microdis.inc microsta.inc \
	 molecule.inc output.inc patters.inc powder.inc \
	 plot.inc save.inc stack.inc sym_add.inc \
	 symm.inc transfrm.inc waves.inc rmc.inc \
	 pdf.inc mc.inc mmc.inc chem.inc diffuse.inc \
	 envir.inc param.inc
blockdat.o: charact.inc debug.inc doloop.inc learn.inc \
	 macro.inc param.inc prompt.inc
chem.o: config.inc crystal.inc crystal.cmm doact.inc \
	 macro.inc errlist.inc learn.inc param.inc \
	 prompt.inc chem.inc diffuse.inc atom_env.inc \
	 molecule.inc mc.inc mmc.inc
discus.o: errlist.inc doact.inc learn.inc macro.inc \
	 prompt.inc wink.inc date.inc
dkdo.o: doact.inc doloop.inc doexec.inc errlist.inc \
	 learn.inc macro.inc prompt.inc charact.inc \
	 random.inc wink.inc
err_appl.o: errlist.inc
errlist.o: errlist.inc prompt.inc
extrmc.o: config.inc crystal.inc crystal.cmm errlist.inc \
	 random.inc chem.inc rmc.inc
fourier.o: config.inc crystal.inc crystal.cmm doact.inc \
	 learn.inc macro.inc output.inc diffuse.inc \
	 prompt.inc errlist.inc random.inc
graphic.o: config.inc doact.inc errlist.inc learn.inc \
	 macro.inc output.inc prompt.inc diffuse.inc \
	 envir.inc crystal.inc crystal.cmm random.inc \
	 patters.inc
help.o: prompt.inc envir.inc doact.inc macro.inc \
	 errlist.inc
kdo.o: learn.inc errlist.inc inverse.inc
learn.o: errlist.inc prompt.inc learn.inc
macro.o: errlist.inc envir.inc macro.inc prompt.inc \
	 charact.inc doact.inc
mc.o: config.inc crystal.inc crystal.cmm doact.inc \
	 macro.inc errlist.inc learn.inc param.inc \
	 prompt.inc mc.inc chem.inc molecule.inc \
	 random.inc
mmc.o: config.inc crystal.inc crystal.cmm doact.inc \
	 macro.inc errlist.inc learn.inc param.inc \
	 prompt.inc mc.inc mmc.inc chem.inc molecule.inc \
	 random.inc
metric.o: config.inc crystal.inc crystal.cmm errlist.inc \
	 wink.inc param.inc
micro.o: config.inc crystal.inc crystal.cmm doact.inc \
	 errlist.inc learn.inc macro.inc microdis.inc \
	 prompt.inc micro.inc wink.inc random.inc
modify.o: config.inc crystal.inc crystal.cmm random.inc \
	 molecule.inc errlist.inc charact.inc atom_env.inc \
	 param.inc microsta.inc mole_env.inc
patters.o: config.inc crystal.inc crystal.cmm doact.inc \
	 intens.inc inverse.inc learn.inc macro.inc \
	 output.inc patters.inc prompt.inc diffuse.inc \
	 errlist.inc recipro.inc
pdf.o: config.inc crystal.inc crystal.cmm doact.inc \
	 macro.inc errlist.inc learn.inc param.inc \
	 prompt.inc chem.inc pdf.inc rmc.inc \
	 debug.inc diffuse.inc wink.inc random.inc \
	 molecule.inc atom_env.inc
plot.o: config.inc crystal.inc crystal.cmm doact.inc \
	 errlist.inc learn.inc macro.inc plot.inc \
	 prompt.inc microsta.inc molecule.inc microdis.inc \
	 wink.inc
powder.o: config.inc crystal.inc crystal.cmm doact.inc \
	 diffuse.inc errlist.inc learn.inc macro.inc \
	 prompt.inc powder.inc wink.inc output.inc
random.o: random.inc
rmc.o: config.inc crystal.inc crystal.cmm random.inc \
	 doact.inc macro.inc errlist.inc learn.inc \
	 param.inc prompt.inc molecule.inc rmc.inc \
	 diffuse.inc chem.inc debug.inc atom_env.inc \
	 generate.inc
save.o: config.inc prompt.inc crystal.inc crystal.cmm \
	 doact.inc errlist.inc learn.inc macro.inc \
	 save.inc microsta.inc gen_add.inc microdis.inc \
	 molecule.inc sym_add.inc
show.o: config.inc prompt.inc crystal.inc crystal.cmm \
	 errlist.inc param.inc macro.inc envir.inc \
	 atom_env.inc mole_env.inc chem.inc molecule.inc \
	 diffuse.inc
spcgr_setup.o: spcgr.inc
stack.o: config.inc crystal.inc crystal.cmm diffuse.inc \
	 doact.inc errlist.inc learn.inc macro.inc \
	 prompt.inc stack.inc microsta.inc param.inc \
	 random.inc stack_cr.inc gen_add.inc sym_add.inc \
	 symm.inc
structur.o: config.inc crystal.inc crystal.cmm doact.inc \
	 errlist.inc learn.inc macro.inc molecule.inc \
	 spcgr.inc \
	 prompt.inc save.inc crystal2.inc gen_add.inc \
	 sym_add.inc generate.inc crystal3.inc recipro.inc
sup.o: random.inc macro.inc doact.inc learn.inc \
	 errlist.inc prompt.inc debug.inc param.inc \
	 envir.inc
symm.o: config.inc crystal.inc crystal.cmm doact.inc \
	 errlist.inc learn.inc macro.inc molecule.inc \
	 prompt.inc symm.inc microsta.inc microdis.inc \
	 atom_env.inc param.inc
sys_f2c.o: wink.inc errlist.inc envir.inc
sys_f90.o: wink.inc
sys_g77.o: wink.inc errlist.inc envir.inc
sys_hpu.o: errlist.inc envir.inc
sys_sun.o: errlist.inc envir.inc
sys_vax.o: errlist.inc envir.inc
sys_vpp.o: errlist.inc envir.inc wink.inc
tensors.o: errlist.inc wink.inc
thermal.o: config.inc prompt.inc crystal.inc crystal.cmm \
	 molecule.inc errlist.inc random.inc
transfrm.o: config.inc crystal.inc crystal.cmm doact.inc \
	 errlist.inc learn.inc macro.inc prompt.inc \
	 transfrm.inc microsta.inc microdis.inc param.inc \
	 gen_add.inc sym_add.inc generate.inc
upd_par.o: config.inc crystal.inc crystal.cmm atom_env.inc \
	 mole_env.inc errlist.inc microdis.inc molecule.inc \
	 param.inc
waves.o: config.inc crystal.inc crystal.cmm doact.inc \
	 errlist.inc microsta.inc learn.inc macro.inc \
	 prompt.inc molecule.inc waves.inc wink.inc \
	 symm.inc random.inc microdis.inc charact.inc
