source: Makefile@ 5272e0d

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

Added ppybind target to Makefile

Added a new target for creating Python bindings that take advantage so enyshe_p
to the Makefile.
Commented out one call to the log file that broke the compile.

  • Property mode set to 100644
File size: 6.9 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=-fastsse -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 -fastsse -Mipa
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
87# partem_s.f
88
89
90pyInterface=init_molecule init_energy
91#mulcan_par mulcan_sim \
92#init_lund sgrnd energy helix zimmer rgyr rmsdfun \
93#anneal canon outpdb minim regul contacts interhbond hbond setvar\
94#enysol
95# metropolis
96# ============================================== Linking
97all: $(PROG)
98
99$(PROG): $(OBJ) $(SOBJ) main.o
100 $(F90) -o $(PROG) $(L_FLAGS) main.o $(OBJ) $(SOBJ)
101
102# Build parallel version of SMMP.
103parallel: $(OBJ) $(POBJ) main_p.o
104 $(MPIF90) -o $(PROG) $(L_FLAGS) main_p.o $(OBJ) $(POBJ)
105
106# Cross compile for BlueGene/L
107bgl: BGL_L_FLAGS = -L$(BGLSYS)/lib -lmpich.rts -lfmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts -qextname=flush
108bgl: F_FLAGS = -c -O5 -qhot -g -I$(BGLSYS)/include -L$(BGLSYS)/lib -qarch=440 -qtune=440 -qextname=flush
109bgl: BGL_F90 = blrts_xlf
110bgl: F90 = $(BGL_F90)
111bgl: MPIF90 = $(BGL_F90)
112bgl: CC = blrts_xlc
113bgl: LIBSF_MPI=-lmpich.rts -lfmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts
114
115bgl: $(OBJ) $(POBJ) main_bgl_p.o
116 $(BGL_F90) -o $(PROG).rts $(BGL_L_FLAGS) main_bgl_p.o $(OBJ) $(POBJ) $(LIBSF_MPI)
117
118# Cross compile for BlueGene/P
119bgp: BGP_SYS = /bgsys/drivers/ppcfloor/comm
120bgp: DIRCOMP = /opt/ibmcmp/xlf/bg/11.1/bin
121bgp: BGP_L_FLAGS = -O3 -qhot -g -I$(BGP_SYS)/include -qarch=440 -qtune=440 -qextname=flush
122bgp: F_FLAGS = -c -O3 -qhot -g -I$(BGP_SYS)/include -qarch=440 -qtune=440 -qextname=flush
123bgp: BGP_F90 = bgxlf
124bgp: F90 = $(BGP_F90)
125bgp: MPIF90 = $(BGP_F90)
126bgp: 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
127
128bgp: $(OBJ) $(POBJ) main_p.o
129 $(BGP_F90) -o $(PROG).rts $(BGP_L_FLAGS) main_p.o $(OBJ) $(POBJ) $(LIBS)
130
131# Build the python bindings
132# The following line includes the minimum set of files needed to fullfill all dependencies.
133#
134# f2py -c -m smmp 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
135pybind: $(FILES)
136 #./rmexclpoint.py $(FILES)
137# f2py -c -m smmp min_smmp.pyf $(FILES) --fcompiler=gnu95
138 #./restoreexclpoint.py $(FILES)
139
140# Compile bindings that include enyshe_p
141ppybind: 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
142 f2py -c -m smmp 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 -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
143
144
145newpybind: $(FILES)
146 ./rmexclpoint.py $(FILES)
147# mv smmp.pyf smmp.pyf.bak
148 f2py -h min_smmp.pyf -m smmp only: ${pyInterface} : $(FILES)
149 ./restoreexclpoint.py $(FILES)
150
151doc:
152 $(MAKE) -w -C doc/
153 doxygen pySMMP.doxygen
154
155examples: $(PROG)
156 $(MAKE) -w -C EXAMPLES/
157
158# ______________________________________________ Dependancies
159main.o: multicanonical.mod
160
161multicanonical.mod: mulcan_par_mod.f90
162 $(F90) $(F_FLAGS) mulcan_par_mod.f90
163
164# enyshe_p.o:
165# $(MPIF90) $(F_FLAGS) enyshe_p.f
166# enysol_p.o:
167# $(MPIF90) $(F_FLAGS) enysol_p.f
168# partem_p.o:
169# $(MPIF90) $(F_FLAGS) partem_p.f
170# main_p.o:
171# $(MPIF90) $(F_FLAGS) main_p.f
172
173main.o redseq.o eyring.o bldmol.o getmol.o redvar.o setvar.o \
174difang.o setmvs.o mklist.o redstr.o dihedr.o enyflx.o\
175enyshe.o addend.o opeflx.o opeshe.o minim.o minqsn.o enysol.o esolan.o\
176contacts.o hbond.o helix.o anneal.o metropolis.o rgyr.o zimmer.o\
177pdbvars.o rmsdfun.o enyreg.o opereg.o cnteny.o opesol.o\
178init_energy.o init_molecule.o gradient.o energy.o nursvr.o\
179regul.o eninteract.o bgs.o eyabgn.o enylun.o \
180canon.o mulcan_par.o mulcan_sim.o outvar.o outpdb.o partem_s.o: INCL.H
181
182pdbread.o enyreg.o opereg.o init_molecule.o regul.o: INCP.H
183
184.PHONY: clean, restore, doc
185clean:
186 $(MAKE) -w -C EXAMPLES/ clean
187 rm -f smmp core* *.o *~ *.mod
188restore:
189 ./restoreexclpoint.py $(FILES)
190
191# end
Note: See TracBrowser for help on using the repository browser.