###########################################################
# Makefile - SimFrame V1.0				  #
#							  #
# Dongyi Liao <liaody@mit.edu>				  #
# 							  #
# Before make, set environment variable SYS to `uname`.	  #
###########################################################

PROG = simframe

# Machine options:
# DEC alpha
CCOMPILER.OSF1 = cc
OPFLAGS.OSF1 = -g3
MACHFLAGS.OSF1 = -O5 -ifo -migrate -inline speed -fp_reorder -non_shared
LINK.OSF1 = -lm
# SGI IRIX
CCOMPILER.IRIX = cc
OPFLAGS.IRIX = -g3
MACHFLAGS.IRIX = -mips2 -O3 -kpicopt -Xcpluscomm
LINK.IRIX = -lm
# SGI IRIX64
CCOMPILER.IRIX64 = cc
OPFLAGS.IRIX64 = -g3
MACHFLAGS.IRIX64 = -64 -r10000 -TARG:proc=r10000:platform=IP27 -O3 -Ofast=IP27 -IPA -LNO:opt=1:fission=2:fusion=2:cs1=32K:cs2=4M:cs2=1024M:ou_further=3:pwr2=ON -OPT:Olimit=0:div_split=ON:roundoff=3:fast_exp=ON:fast_io=ON:fast_sqrt=ON -Xcpluscomm 
LINK.IRIX64 = -lm
# Pentium Linux 
CCOMPILER.Linux = cc
OPFLAGS.Linux = -g3
MACHFLAGS.Linux = -O3 -fforce-mem -fforce-addr -finline-functions -ffast-math \
	 -fstrength-reduce -fthread-jumps -funroll-loops -fcse-follow-jumps \
	-fcse-skip-blocks -frerun-cse-after-loop -fexpensive-optimizations \
	-fdelayed-branch -fschedule-insns -fschedule-insns2
LINK.Linux = -lm
# Xolas SunOS
CCOMPILER.SunOS = cc
OPFLAGS.SunOS = -g
MACHFLAGS.SunOS = -xO5 -xCC -xdepend -xarch=v8plus -xchip=ultra \
	-fsimple -dalign
LINK.SunOS = -lm

MYFLAGS = 

CC = $(CCOMPILER.$(SYS))
CFLAGS = -D_$(SYS) $(MYFLAGS) $(OPFLAGS.$(SYS)) $(MACHFLAGS.$(SYS))

default: simframe

$(PROG): SimFrame.c spec.h Property.h Mng.c Mng.h
	$(CC) $(CFLAGS) SimFrame.c -o $(PROG) $(LINK.$(SYS))

clean: 
	rm -f *~ *.o $(PROG)

run:    $(PROG)
	@semchk -d; shmchk -d 
	@echo \\n ================== OUTPUT OF $(PROG) \
	==================\\n
	@$(PROG)

SO = output
longrun: $(PROG)
#	@semchk -d; shmchk -d 
	@mv $(SO) $(SO).old
	@echo start time = `date` | tee -a  $(SO)
	@echo \\n ================== OUTPUT OF $(PROG) \
	==================\\n | tee -a $(SO)
	@nohup nice $(PROG) | tee -a $(SO); echo end time = `date` \
	| tee -a $(SO) &

kill:
	kill -9 `ps -e | grep $(PROG) | cut -c1-6`

help:
	@echo
	@echo The machine is at `uname -n`, of `uname -m`. 
	@echo The operating system is `uname` `uname -r`.
	@echo In order to make the program for this machine, type
	@echo \\n% "setenv SYS `uname`"\\n
	@echo and then 
	@echo \\n% make \\n 
	@echo you can also add your own flags such as
	@echo \\n% make MYFLAGS=\"-DSMALL_FLOAT=1.E-12\" \\n
	@echo To run the program, type
	@echo \\n% make run\\n
	@echo To submit a long job, type
	@echo \\n% make longrun \& \\n
	@echo \* SGI users use gmake\\n


