|
对makefile不是很懂
有一个程序,需要在linux-intel-mpich上运行,是一个
cluster,但是所带的makefile没有这个系统,企图看明白
makefile里写的是什么,发现根本就云里雾里,因为不是学
fortran的,linux也是刚用没多久,又急着用这个程序,哪位好心的高手能否帮个忙,写一个相应的makefile,不是偶偷懒,实在是等不起,回头一定好好学的说。makefile全部内容如下:
# Define default settings
#=======================================================================
.SUFFIXES:
.SUFFIXES: .f .c .f90 .o
BINROOT = ../execute
CPP = /lib/cpp
EX = DLPOLY.Y
EXE = $(BINROOT)/$(EX)
FC=undefined
PVM_EX=\'$(EX)\'
SHELL=/bin/sh
STRESS=STRESS
TYPE=master
# Define object files
#=====================================================================
OBJ_ALL = timeperiods.o \
angfrc.o bndfrc.o cfgbcast.o cfgscan.o conscan.o corshl.o \
coul0.o coul2.o coul3.o coul4.o dblstr.o dcell.o denloc.o \
dihfrc.o dlpoly.o domain.o duni.o gcheck.o \
erfcgen.o error.o ewald2.o ewald3.o ewald_spme.o exchange.o \
exclude.o exitcomms.o export.o extnfld.o fbpfrc.o fcap.o \
fldscan.o forces.o forgen.o fortab.o freeze.o gauss.o gdmax.o \
gdsum.o getrec.o gimax.o gisum.o gstate.o images.o \
deport.o initcomms.o intlist.o intstr.o invert.o invfrc.o \
lafind.o lowcase.o lrcmetal.o lrcorrect.o metgen.o npt_b1.o \
nst_b1.o npt_h1.o nst_h1.o nve_1.o nvt_b1.o nvt_e1.o nvt_h1.o \
parlink.o parset.o rdf0.o rdf1.o relocate.o result.o revive.o \
scdens.o shellsort2.o shlfrc.o shlqnch.o simdef.o spme_for.o \
spme_pak.o srfrce.o static.o strip.o strucopt.o suttchen.o \
sysbook.o sysdef.o sysgen.o sysinit.o systemp.o \
thbfrc.o timchk.o traject.o vscaleg.o warning.o xscale.o \
zden0.o zden1.o addexcl.o chkdih14.o passrho.o passdens.o \
pack_bonds.o unpk_bonds.o tag.o passcon.o shmove_1.o shmove_2.o\
ddshake.o shellsort.o quench.o dlpfft3.o \
cputimecc.o
OBJ_EXT = etime.o crecv.o csend.o gsync.o mynode.o nodedim.o numnodes.o \
fft_module.o gpfa.o daxpby.o rappers.o exchange_grid.o
OBJ_COM = cfgbcast.o deport.o exitcomms.o export.o gdmax.o gdsum.o \
gimax.o gisum.o initcomms.o passcon.o passrho.o revive.o \
shmove_1.o shmove_2.o sysinit.o timchk.o traject.o
# Define targets
#=====================================================================
all:
@echo "Error - please specify a target machine!"
@echo " ermissible targets for this Makefile are:"
@echo " "
@echo "beowulf-absoft"
@echo "cray-t3e"
@echo "cray-t3e-totalview"
@echo "dec-alpha-ev6"
@echo "hitachi-sr2201"
@echo "hpcx"
@echo "linux-alpha"
@echo "loki"
@echo "loki-timer"
@echo "loki-vampir"
@echo "sg2k-shmem"
@echo "sg8k-mpi"
@echo "sg8k-mpi-f"
@echo "sp2-mpi"
@echo "sp2-mpi-fix"
@echo " "
@echo " lease examine Makefile for details"
# system specific targets follow :
#========== DEC Alpha ev6 (RAL) ===========================================
dec-alpha-ev6:
$(MAKE) LD="f90 -o" F90="f90" FC="f90" FFLAGS="-c -arch ev6 -tune ev6 -fast" \
LDFLAGS="-lcxml -arch ev6 -math_library fast -assume noaccuracy_sensitive -hpf -hpf_target smpi" \
CPFLAGS="-D$(STRESS) -DMPI -D'POINTER=integer*8'-DDAFT -I/usr/include" \
TIMER="" EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#================== HPCx SP Power 4 =======================================
hpcx:
$(MAKE) LD="mpxlf -o" FC=mpxlf CC="cc -O -DNOC_" \
F90="mpxlf90 -qsuffix=f=f90" CPP=/lib/cpp \
LDFLAGS="-O2 -qmaxmem=-1 -bmaxdata:0x80000000 -lessl" \
FFLAGS="-c -O2 -qmaxmem=-1 -qarch=pwr4 -qtune=pwr4 -qnosave" \
CPFLAGS="-D$(STRESS) -DMPI -DRS6000 -DDAFT -I/usr/lpp/ppe.poe/include" \
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#================== IBM SP2 version ====================================
sp2-mpi:
$(MAKE) LD="mpxlf -o" LDFLAGS="-lesslp2" FC=mpxlf \
FFLAGS="-c -O3 -NS2048 -qarch=pwr2 -qnosave" \
CPP=/lib/cpp CPFLAGS="-D$(STRESS) -DMPI -DESSL -D'POINTER=integer' -I/usr/lpp/ppe.poe/include" \
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#================== IBM SP2 Fix version ===============================
sp2-mpi-fix:
$(MAKE) LD="mpxlf -o" LDFLAGS="-lesslp2" FC=mpxlf \
FFLAGS="-c -g -C -NS2048 -qarch=pwr2 -qnosave" \
CPP=/lib/cpp CPFLAGS="-D$(STRESS) -DMPI -DESSL -D'POINTER=integer' -I/usr/lpp/ppe.poe/include" \
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#===== Cray t3e (Manchester) ===========================================
cray-t3e:
$(MAKE) FC="f90" FFLAGS="-c -dp -lmpi" CPP="f90 -eP " \
CPFLAGS="-Wp' -DCRAY -D'POINTER=integer' -DMPI -DSHMEM -D$(STRESS)'" \
lowcase.o
$(MAKE) LD="f90 -o" FC="f90" FFLAGS="-c -dp -lmpi" LDFLAGS="-lmpi" \
CPP="f90 -eP " CPFLAGS="-Wp' -DCRAY -D'POINTER=integer' -DMPI -DSHMEM -D$(STRESS)'" \
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#===== Cray t3e (Manchester) with totalview flags ======================
cray-t3e-totalview:
$(MAKE) FC="f90" FFLAGS="-c -dp -lmpi -g -X8" \
CPFLAGS="-DCRAY -D'POINTER=integer' -DMPI -DSHMEM -D$(STRESS)" \
lowcase.o
$(MAKE) LD="f90 -o" FC="f90" FFLAGS="-c -dp -lmpi -g -X8" \
LDFLAGS="-lmpi -g -X8" \
CPFLAGS="-DCRAY -D'POINTER=integer' \
-DMPI -DSHMEM -D$(STRESS)" TIMER="" EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#======== Hitachi SR2201 Multiprocessor (no SPME) ========================
hitachi-sr2201:
$(MAKE) FC=xf90 \
FFLAGS="-c -W0,'form(fixed),opt(o(3)),langlvl(save(0))' -s,TRACE" \
CPFLAGS="-D$(STRESS) -DMPI -D'POINTER=integer'" intlist.o
$(MAKE) LDFLAGS="" LDLIBS="-lfmpi -lmpi" LD="xf90 -o" FC=xf90 \
FFLAGS="-c -W0, 'form(fixed),opt(o(3)),langlvl(save(0))' -s,TRACE" \
CC=xcc TIMER="" CPFLAGS="-D$(STRESS) -DMPI
-D'POINTER=integer'" OBJ_SPME="" EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#========= Silicon Graphics 8000 (parallel) ==========================
sg8k-mpi:
$(MAKE) LD="f90 -O3 -64 -o" FC=f90 LDFLAGS="-lmpi" TIMER="" \
FFLAGS="-c -O3 -64 " CPFLAGS="-D$(STRESS) -DMPI \
-DCRAY -D'POINTER=integer'" EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#========= Silicon Graphics 8000 (parallel) ==========================
sg8k-mpi-f:
$(MAKE) LD="f90 -Ofast -64 -o" FC=f90 LDFLAGS="-lmpi" TIMER=""\
FFLAGS="-c -Ofast -64" CPFLAGS="-D$(STRESS) -DMPI \
-DCRAY -D'POINTER=integer'" EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#======= Silicon Graphics Origin 2000 (parallel/SHMEM) ===============
sg2k-shmem:
$(MAKE) LD="f90 -o" FC=f90 \
FFLAGS="-c -64 -mips4 -Ofast=ip27 -OPT:Olimit=0 " \
LDFLAGS="-64 -mips4 -Ofast=ip27 -OPT:Olimit=0 -lsma -lmpi -lblas" \
OBJ_EXT="gsync.o mynode.o nodedim.o numnodes.o" TIMER="" \
CPFLAGS="-DMPI -D$(STRESS) -D'SGICRAY' -DCRAY -D'POINTER=integer'" \
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#========= Daresbury Beowulf (Absoft compiler) =======================
beowulf-absoft:
$(MAKE) LD="/usr/bin/f90 -o" \
LDFLAGS="-L/home/kcm/mpich-absoft/mpich/lib/LINUX/ch_p4/ -lmpich" \
FC=/usr/bin/f90 FFLAGS="-c -O -B100" TIMER="" OBJ_SPME="" \
CPFLAGS="-D$(STRESS) -DMPI -P -D'POINTER=integer' \
-I/home/kcm/mpich-absoft/mpich/include" \
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#========== Beowulf Linux pgf90 + mpich *Chemnitzer) ==============================
PGI-mpich2:
$(MAKE) LD="pgf90 -o "\
CPFLAGS="-D$(STRESS) -DPENTIUM -DMPI -D'POINTER=integer' -nostdinc -traditional -I/afs/tu-chemnitz.de/global/@sys/packages/pgi-3.2/linux86/include" \
FC=pgf90 FFLAGS="-I/afs/tu-chemnitz.de/global/@sys/packages/pgi-3.2/linux86/include -c -fast -Knoieee -Mdalign " \
LDFLAGS="-L/afs/tu-chemnitz.de/global/@sys/packages/pgi-3.2/linux86/lib -lmpich -lmpichf" \
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#========== Beowulf Linux pgf90 + Lam (6.3.2) =============================
PGI-lam.6.3.2:
$(MAKE) LD="pgf90 -o "\
CPFLAGS="-D$(STRESS) -DPENTIUM -DMPI -P -traditional -I/afs/tu-chemnitz.de/global/@sys/packages/lam-6.3-b2/h -D'POINTER=integer'" \
FC=pgf90 FFLAGS="-I/afs/tu-chemnitz.de/global/@sys/packages/lam-6.3-b2/h -c -fast -Knoieee -Mdalign -Msecond_underscore" \
LDFLAGS="-L/afs/tu-chemnitz.de/global/@sys/packages/lam-6.3-b2/lib -lmpi -ltstdio -ltrillium -lt -largs" \
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#========== Alpha linux + MPI ==============================
linux-alpha:
$(MAKE) LD="mpif90 -o" LDFLAGS="-fast -arch ev67 -tune ev67 -lmpif" LDLIBS="/usr/lib/libcxml.a" FC=mpif90 FFLAGS="-c -fast -arch ev67 -tune ev67" CC=ccc \
CPP=/lib/cpp CPFLAGS="-D$(STRESS) -DMPI -D'POINTER=integer' -traditional -DALPHA -I/usr/lib/mpi/include" \
CFLAGS=" -O -Ae " \
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#================ loki + MPI ================================
loki:
$(MAKE) LD="mpif90 -o" LDFLAGS="-fast -arch ev67 -tune ev67 -lmpif" LDLIBS="/usr/lib/libcxml.a" FC=mpif90 FFLAGS="-c -fast -arch ev67 -tune ev67" CC=ccc \
CPP=/lib/cpp CPFLAGS="-D$(STRESS) -DDAFT -DMPI -D'POINTER=integer' -traditional -DALPHA -I/usr/lib/mpi/include" \
CFLAGS=" -O -Ae " \
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#================ loki + timer ==============================
loki-timer:
$(MAKE) LD="mpif90 -o" LDFLAGS="-fast -arch ev67 -tune ev67 -lmpif" LDLIBS="/usr/lib/libcxml.a" FC=mpif90 FFLAGS="-c -fast -arch ev67 -tune ev67" CC=ccc \
CPP=/lib/cpp CPFLAGS="-D$(STRESS) -DBMARK -DDAFT -DMPI -D'POINTER=integer' -traditional -DALPHA -I/usr/lib/mpi/include" \
CFLAGS=" -O -Ae " \
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#================ loki + VAMPIR =============================
loki-vampir:
$(MAKE) LD="mpif90 -o" LDFLAGS="-fast -arch ev67 -tune ev67 -lmpif" LDLIBS="/usr/lib/libcxml.a" FC=mpif90 FFLAGS="-c -fast -arch ev67 -tune ev67" CC=ccc \
CPP=/lib/cpp CPFLAGS="-D$(STRESS) -DVAMPIR -DDAFT -DMPI -D'POINTER=integer' -traditional -DALPHA -I/usr/lib/mpi/include" \
CFLAGS=" -O -Ae " \
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#========== UKCP Linux pgf90 + mpich (6.3.2) =============================
UKCP:
$(MAKE) LD="pgf90 -o "\
CPFLAGS="-D$(STRESS) -DPENTIUM -DMPI -P -traditional -I/opt/scali/include -D'POINTER=integer'" \
FC=pgf90 FFLAGS="-c -O2 -Munroll -Knoieee -Mdalign -I/opt/scali/include" \
LDFLAGS="-L /opt/scali/lib -L /usr/local/pgi/linux86/lib -lfmpi -lmpi -lblas " \
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#========== UKCP Linux pgf90 + mpich (6.3.2) + parrallel FFT =============================
UKCP_DAFT:
$(MAKE) LD="pgf90 -o "\
CPFLAGS="-D$(STRESS) -DDAFT -DPENTIUM -DMPI -P -traditional -I/opt/scali/include -D'POINTER=integer'" \
FC=pgf90 FFLAGS="-c -O2 -Munroll -Knoieee -Mdalign -I/opt/scali/include" \
LDFLAGS="-L /opt/scali/lib -L /usr/local/pgi/linux86/lib -lfmpi -lmpi -lblas " \
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
#=====================================================================
# Default code.
master: check $(OBJ_ALL) $(OBJ_EXT)
$(LD) $(EXE) $(OBJ_ALL) $(OBJ_EXT) $(LDFLAGS) $(LDLIBS)
#=====================================================================
# Check that a machine has been specified
check:
@if test $(FC) = "undefined";\
then echo "You must specify a target machine!"; \
exit 99;\
fi
#=====================================================================
# Clean up the source directory
clean:
rm -f $(OBJ_ALL) $(OBJ_EXT) *.tmp.f
#=====================================================================
# Declare dependencies : c preprocess all .f files
.f90.o:
$(F90) $(FFLAGS) $*.f90
.f.o:
$(CPP) $(CPFLAGS) $*.f > $*.i
sed '/^#/D' < $*.i > $*.tmp.f
$(FC) $(FFLAGS) $*.tmp.f
mv $*.tmp.o $*.o
rm $*.i
.c.o:
$(CC) -c $*.c
#=====================================================================
# Declare dependency on parameters file
$(OBJ_ALL): dl_params.inc
$(OBJ_EXT): dl_params.inc
$(OBJ_EXT): comms.inc
$(OBJ_COM): comms.inc
fft_module.o: fft_module.f90
daxpby.o: daxpby.f90
rappers.o: rappers.f90
exchange_grid.o: exchange_grid.f90
$(OBJ_ALL): fft_module.o
:thank :thank :thank |
|