source: Makefile

Last change on this file was 5fef0d7, checked in by Jan Meinke <j.meinke@…>, 14 years ago

Changed module name from smmp to smmp_p.

Fixed conversion to residue and atom names.

  • Property mode set to 100644
File size: 7.3 KB
Line 
1# Makefile: smmp
2
3#.SILENT:
4
5%_p.o : %_p.f
6 $(MPIF90) $(F_FLAGS) $<
7
8%_p.o : %_p.F
9 $(MPIF90) $(F_FLAGS) $<
10
11.SUFFIXES: .o .f
12.f.o:
13 $(F90) $(F_FLAGS) $<
14
15.SUFFIXES: .o .f90
16.f90.o:
17 $(F90) $(F_FLAGS) $<
18
19.SUFFIXES: .o .F90
20.F90.o:
21 $(F90) $(F_FLAGS) $<
22# ==================================== Variables for compiling and linking
23L_FLAGS=-g
24# Linker flags
25# Default flags, e.g., for gfortran, g77
26L_FLAGS=-O2 -g
27
28# Flags for Intel's ifort
29#L_FLAGS=-O3 -axT -g
30#L_FLAGS=-fast -parallel
31# FLAGS for Cray
32# L_FLAGS=-fast -Mipa
33
34# Flags for xlf
35# L_FLAGS=-O3 -qhot -q64 -qipa -qextname=flush
36
37# Optimized flag for gfortran on an i686 platform
38# L_FLAGS=-fPIC -O3 -funroll-loops -mmmx -msse2 -msse -march=i686 -malign-double -fomit-frame-pointer
39
40# Compiler flags
41# Default flags, e.g., for gfortran, g77
42F_FLAGS=-c -O2 -g
43# Flags for Intel's ifort
44#F_FLAGS=-c -O3 -axT -g
45#F_FLAGS=-c -fast -parallel
46# Flags for debugging build
47# F_FLAGS=-c -O0 -g
48# FLAGS for Cray
49#F_FLAGS=-c -fast -Mipa -Minfo
50# Flags for xlf
51#F_FLAGS=-c -O3 -qhot -q64 -qipa -qextname=flush
52
53# Optimized flag for gfortran on an i686 platform
54# F_FLAGS=-c -fPIC -O3 -funroll-loops -mmmx -msse2 -msse -march=i686 -malign-double -fomit-frame-pointer
55
56# Select your compiler
57#F90=ifort
58#F90=pgf90
59#F90=xlf
60F90=gfortran
61MPIF90=mpif90
62
63
64# ______________________________________________ Name of program
65PROG=smmp
66# ______________________________________________ Objects
67OBJ=redseq.o bldmol.o getmol.o redvar.o setvar.o \
68difang.o setmvs.o mklist.o redstr.o dihedr.o enyflx.o addend.o opeflx.o opeshe.o minim.o minqsn.o\
69contacts.o hbond.o helix.o anneal.o metropolis.o rgyr.o zimmer.o \
70canon.o mulcan_par_mod.o outvar.o outpdb.o \
71pdbread.o rmsdfun.o enyreg.o opereg.o mincjg.o cnteny.o \
72init_energy.o init_molecule.o gradient.o energy.o \
73regul.o nursvr.o twister.o eninteract.o bgs.o eyabgn.o enylun.o utilities.o\
74partem_s.o esolan.o opesol.o init_lund.o enyshe_simple.o timer.o
75#_________Serial implementation of ECEPP/3 and solvent
76SOBJ=enyshe.o enysol.o
77#_________Parallel implementation of ECEPP/3 and solvent
78POBJ=enyshe_p.o enysol_p.o partem_p.o
79
80FILES=metropolis.f energy.f enyflx.f enyreg.f enyshe.f enysol.f redseq.f bldmol.f \
81getmol.f redvar.f setvar.f difang.f setmvs.f mklist.f redstr.f dihedr.f addend.f \
82opeflx.f opeshe.f minim.f minqsn.f contacts.f hbond.f helix.f anneal.f rgyr.f \
83zimmer.f canon.f outvar.f outpdb.f \
84pdbread.f rmsdfun.f opereg.f mincjg.f cnteny.f init_energy.f init_molecule.f \
85gradient.f regul.f nursvr.f twister.f eninteract.f bgs.f eyabgn.f enylun.f \
86mulcan_par_mod.f90 esolan.f opesol.f init_lund.f90
87# partem_s.f
88
89
90pyInterface=init_molecule init_energy \
91init_lund sgrnd energy helix zimmer rgyr rmsdfun \
92anneal outpdb minim regul contacts interhbond hbond setvar\
93enysol
94#canon mulcan_par mulcan_sim metropolis
95# ============================================== Linking
96all: $(PROG)
97
98$(PROG): $(OBJ) $(SOBJ) main.o
99 $(F90) -o $(PROG) $(L_FLAGS) main.o $(OBJ) $(SOBJ)
100
101# Build parallel version of SMMP.
102parallel: $(OBJ) $(POBJ) main_p.o
103 $(MPIF90) -o $(PROG) $(L_FLAGS) main_p.o $(OBJ) $(POBJ)
104
105# Cross compile for BlueGene/L
106bgl: BGL_L_FLAGS = -L$(BGLSYS)/lib -lmpich.rts -lfmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts -qextname=flush
107bgl: F_FLAGS = -c -O5 -qhot -g -I$(BGLSYS)/include -L$(BGLSYS)/lib -qarch=440 -qtune=440 -qextname=flush
108bgl: BGL_F90 = blrts_xlf
109bgl: F90 = $(BGL_F90)
110bgl: MPIF90 = $(BGL_F90)
111bgl: CC = blrts_xlc
112bgl: LIBSF_MPI=-lmpich.rts -lfmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts
113
114bgl: $(OBJ) $(POBJ) main_bgl_p.o
115 $(BGL_F90) -o $(PROG).rts $(BGL_L_FLAGS) main_bgl_p.o $(OBJ) $(POBJ) $(LIBSF_MPI)
116
117# Cross compile for BlueGene/P
118bgp: BGP_SYS = /bgsys/drivers/ppcfloor/comm
119bgp: DIRCOMP = /opt/ibmcmp/xlf/bg/11.1/bin
120bgp: BGP_L_FLAGS = -O3 -qhot -g -I$(BGP_SYS)/include -qarch=440 -qtune=440 -qextname=flush
121bgp: F_FLAGS = -c -O3 -qhot -g -I$(BGP_SYS)/include -qarch=440 -qtune=440 -qextname=flush
122bgp: BGP_F90 = bgxlf
123bgp: F90 = $(BGP_F90)
124bgp: MPIF90 = $(BGP_F90)
125bgp: LIBS=-Wl,-allow-multiple-definition $(MASS) $(ESSL) -L$(BGP_SYS)/lib -lmpich.cnk -ldcmfcoll.cnk -ldcmf.cnk -L/bgsys/drivers/ppcfloor/runtime/SPI -lSPI.cna -lrt -lpthread
126
127bgp: $(OBJ) $(POBJ) main_p.o
128 $(BGP_F90) -o $(PROG).rts $(BGP_L_FLAGS) main_p.o $(OBJ) $(POBJ) $(LIBS)
129
130# Build the python bindings
131#
132# The following line creates a minimal interface
133#
134# f2py --overwrite-signature -h basic_smmp.pyf -m smmp init_molecule.f init_energy.f energy.f utilities.f
135#
136# The following line includes the minimum set of files needed to fullfill all dependencies.
137#
138# f2py -c -m smmp_p basic_smmp.pyf init_molecule.f init_energy.f bldmol.f nursvr.f pdbread.f redvar.f redseq.f outvar.f redstr.f enysol.f setmvs.f mklist.f getmol.f helix.f contacts.f dihedr.f setvar.f init_lund.f90 rmsdfun.f addend.f difang.f
139pybind: $(FILES)
140 #./rmexclpoint.py $(FILES)
141 f2py -c -m smmp smmp.pyf $(FILES) --fcompiler=gnu95
142 #./restoreexclpoint.py $(FILES)
143
144# Compile bindings that include enyshe_p
145ppybind: basic_smmp.pyf init_molecule.f init_energy.f bldmol.f nursvr.f pdbread.f redvar.f redseq.f outvar.f redstr.f enysol.f setmvs.f mklist.f getmol.f helix.f contacts.f dihedr.f setvar.f init_lund.f90 rmsdfun.f addend.f difang.f energy.f enyshe_p.f enyflx.f enylun.f eninteract.f enyreg.f eyabgn.f esolan.f gradient.f twister.f opesol.f opeflx.f opereg.f opeshe.f utilities.f
146 f2py -c -m smmp_p basic_smmp.pyf init_molecule.f init_energy.f bldmol.f nursvr.f pdbread.f redvar.f redseq.f outvar.f redstr.f enysol_p.f setmvs.f mklist.f getmol.f helix.f contacts.f dihedr.f setvar.f init_lund.f90 rmsdfun.f addend.f difang.f energy.f enyshe_p.f enyflx.f enylun.f eninteract.f enyreg.f eyabgn.f esolan.f gradient.f twister.f opesol.f opeflx.f opereg.f opeshe.f utilities.f -I/usr/lib/mpi/gcc/openmpi/include -I/usr/lib/mpi/gcc/openmpi/lib -L/usr/lib/mpi/gcc/openmpi/lib -lmpi_f90 -lmpi_f77 -lmpi -lopen-rte -lopen-pal -ldl -lutil -lm -ldl
147
148newbasicpybind: init_molecule.f init_energy.f energy.f utilities.f
149 f2py --overwrite-signature -h basic_smmp.pyf -m smmp_p init_molecule.f init_energy.f energy.f utilities.f
150
151newpybind: $(FILES)
152 ./rmexclpoint.py $(FILES)
153# mv smmp.pyf smmp.pyf.bak
154 f2py -h min_smmp.pyf -m smmp only: ${pyInterface} : $(FILES)
155 ./restoreexclpoint.py $(FILES)
156
157doc:
158 $(MAKE) -w -C doc/
159 doxygen pySMMP.doxygen
160
161examples: $(PROG)
162 $(MAKE) -w -C EXAMPLES/
163
164# ______________________________________________ Dependancies
165main.o: multicanonical.mod
166
167multicanonical.mod: mulcan_par_mod.f90
168 $(F90) $(F_FLAGS) mulcan_par_mod.f90
169
170# enyshe_p.o:
171# $(MPIF90) $(F_FLAGS) enyshe_p.f
172# enysol_p.o:
173# $(MPIF90) $(F_FLAGS) enysol_p.f
174# partem_p.o:
175# $(MPIF90) $(F_FLAGS) partem_p.f
176# main_p.o:
177# $(MPIF90) $(F_FLAGS) main_p.f
178
179main.o redseq.o eyring.o bldmol.o getmol.o redvar.o setvar.o \
180difang.o setmvs.o mklist.o redstr.o dihedr.o enyflx.o\
181enyshe.o addend.o opeflx.o opeshe.o minim.o minqsn.o enysol.o esolan.o\
182contacts.o hbond.o helix.o anneal.o metropolis.o rgyr.o zimmer.o\
183pdbvars.o rmsdfun.o enyreg.o opereg.o cnteny.o opesol.o\
184init_energy.o init_molecule.o gradient.o energy.o nursvr.o\
185regul.o eninteract.o bgs.o eyabgn.o enylun.o \
186canon.o mulcan_par.o mulcan_sim.o outvar.o outpdb.o partem_s.o: INCL.H
187
188pdbread.o enyreg.o opereg.o init_molecule.o regul.o: INCP.H
189
190.PHONY: clean, restore, doc
191clean:
192 $(MAKE) -w -C EXAMPLES/ clean
193 rm -f smmp core* *.o *~ *.mod
194restore:
195 ./restoreexclpoint.py $(FILES)
196
197# end
Note: See TracBrowser for help on using the repository browser.