#########################################
# Molecular Dynamics Simulation of Zr/C #
# Jun. 18, 2000 Ju Li <liju99@mit.edu>. #
#########################################

PROG = ZrC
HEADER = MD.h
OBJS = main.o  # plural
SRCS = $(addsuffix .c, $(basename ${OBJS}))
INPUT  = input
USE_SYSTEM_LIB = -lm
USE_MY_LIB = -lMin -lPhonon -lAtoms -lVecMat3 -lVecMat -lIO -lSSpectral \
	-lScalar -lTimer -lsrfftw -lsfftw -llapack -lblas -lm
SHELL = sh
GDBTMP = /tmp/${PROG}.gdb

ifndef SYS
 SYS = Linux
endif
ifdef INC_PATH
 MY_INC_DIR = $(INC_PATH)
else
 MY_INC_DIR = ~/Co/Include
endif
ifdef LIB_PATH
 MY_LIB_DIR = $(LIB_PATH)
else
 MY_LIB_DIR = ~/Co/Lib
endif
ifdef BIN_PATH
 MY_BIN_DIR = $(BIN_PATH)
else
 MY_BIN_DIR = ~/Co/Bin
endif

ifeq ($(SYS), IRIX64)
 CC = cc
 LD = f77 # if we link to f77 compiled libraries
 CCFLAGS = -64 -r10000 -TARG:proc=r10000:platform=IP27 -O3\
  -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_sqrt=ON
 BACKUPDIRS = /home/Moon/Bak /usr/people/liju99/Bak
else
#  CC = /usr/local/pgcc/bin/gcc #
#  LD = /usr/local/pgcc/bin/g77   #
# if we link to g77 compiled libraries
#  CCFLAGS = -O6 -mpentiumpro -march=pentiumpro -ffast-math \ #
# 	-funroll-all-loops -inline-functions #
 CC = icc -w
 LD = icc -static
 CCFLAGS = -O2 -axKWNBP
#  CCFLAGS = -g #
 USE_MY_LIB = -lMin -lPhonon -lAtoms -lVecMat3 -lVecMat -lIO -lSSpectral \
	-lScalar -lTimer -lsrfftw -lsfftw -L/opt/intel/mkl70/lib/32/ \
	-lmkl_lapack -lmkl_ia32 -lguide -lsvml -ldl -lpthread 
 BACKUPDIRS = /home/Moon/Bak /Home/Sun/Bak
endif

CFLAGS = -D_$(SYS) ${CCFLAGS} -I${MY_INC_DIR}
LDFLAGS = ${SYSTEM_LIB_FLAG} ${USE_SYSTEM_LIB} -L${MY_LIB_DIR} ${USE_MY_LIB}

.PHONY: all  c clean  b backup  run t test icon  g  r relink

all:	test

%.o:	%.c ${HEADER} Makefile
	${CC} ${CFLAGS} -c $< -o $@

$(PROG):$(OBJS) Makefile
	${LD} ${CFLAGS} ${OBJS} -o $@ ${LDFLAGS}
	-@if [ "${CCFLAGS}" != "-g" ] ; then strip $@; fi;

i:	install
install:$(PROG)
	-@cp -f $< ${MY_BIN_DIR}; \
	chmod a+rx ${MY_BIN_DIR}/$<; \
	dump=`ls -ld ${MY_BIN_DIR}/$< | sed 's/    */  /g'`; \
	month=`echo $$dump | cut -d' ' -f 6`; \
	prev=`echo "$$dump" | sed "s/$$month.*//"`; \
	let l=`echo "$$prev" | wc -c | sed 's/ //g'`-1; \
	machine_name=`hostname | cut -f 1 -d .`:"               "; \
	machine_name=`echo Current time on "$$machine_name" | cut -c1-$$l`; \
	echo "$$machine_name`date '+%b %d %H:%M' | sed 's/    */  /g'`"; \
	a=`echo $$HOME | sed 's/\//~/g'`; \
	ls -l ${MY_BIN_DIR}/$< | sed 's/    */  /g' | sed 's/\//~/g' | \
	sed "s/$$a//" | sed -e "s/~/\//g" | sed "s/\//~\//"

g:
	@export CC=gcc; export LD=g77; export CCFLAGS=-g; \
	make --environment-overrides --no-print-directory \
	`echo "${MAKECMDGOALS}" | sed -e 's/^g //' | sed -e 's/^g$///' `; \
	exit 99

run:	test
t:	test
test:	$(PROG)
	-@echo ' '; \
	echo ========== Running \"$(PROG) \< $(INPUT)\" ==========; \
	if [ "${CCFLAGS}" = "-g" ] ; then \
	 echo run \< $(INPUT) > ${GDBTMP}; gdb ./$(PROG) -x ${GDBTMP}; \
	else \
	 ./$(PROG) < $(INPUT); \
	fi; \
	echo ======== Done running \"$(PROG) \< $(INPUT)\" =======; \
	echo ' '

r:	relink
relink:	
	rm -f $(PROG)

c:      clean
clean:
	@echo
	-rm -f $(PROG); \
	rm -f \#*\#; \
	rm -f *~; \
	rm -f *.o; \
	rm -f *.out; \
	rm -f *_TEST
	@echo

b:	backup
backup: clean
	@tmp=/tmp/backupto.tar; \
	echo "taring the directory $(PWD) ..."; \
	dir=`echo $(PWD) | sed -e "s/.*\///g"`; \
	cd ..; \
	echo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%; \
	tar cvf $$tmp $$dir/* \
	`ls -d $$dir/.* | sed -e "s/$$dir\/\.\.$$//" | \
	sed -e "s/$$dir\/\.$$//"`; \
	echo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%; \
	echo compressing $$tmp with gzip ...; \
	gzip --verbose -c $$tmp > $$tmp.gz; \
	echo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%; \
	nbytes=`ls -l $$tmp.gz | sed -e 's/  */ /g' | cut -d' ' -f 5`; \
	echo $$tmp.gz = $$nbytes bytes.; \
	for backup in $(BACKUPDIRS); do \
	 if [ -d $$backup ]; then \
	  echo ' '; \
	  echo "copying $$tmp.gz to $$backup/$$dir.tar.gz ..."; \
	  cp -i $$tmp.gz $$backup/$$dir.tar.gz; \
	 fi; \
	done; \
	echo

%_TEST:	${SRCS} ${HEADER} Makefile
	${CC} -D_TEST -D_$@ ${CFLAGS} -c ${SRCS}
	${LD} ${CFLAGS} ${OBJS} -o $@ ${LDFLAGS}
	chmod u+x $@

%:	%.c
%:	%.o
%:	%_TEST Makefile
	-@echo ' '; \
	echo ============ Running \"$@_TEST\" ============; \
	if [ "${CCFLAGS}" = "-g" ] ; then \
	 echo run > ${GDBTMP}; gdb ./$@_TEST -x ${GDBTMP}; \
	else \
	 ./$@_TEST; \
	fi; \
	echo ========== Done running \"$@_TEST\" =========; \
	echo ' '

.PRECIOUS:	%_TEST
Makefile: ;
