-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile
More file actions
267 lines (222 loc) · 8.93 KB
/
Copy pathMakefile
File metadata and controls
267 lines (222 loc) · 8.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
sinclude make.sys
default :
@echo 'to install, type at the shell prompt:'
@echo ' ./configure'
@echo ' make target'
@echo 'where target is one of the following:'
@echo ' pw basic code for scf, structure optimization, MD'
@echo ' ph phonon code, Gamma-only version and third-order derivatives'
@echo ' pwcond ballistic conductance'
@echo ' neb code for Nudged Elastic Band method'
@echo ' pp postprocessing programs'
@echo ' cp CP code: CP MD with ultrasoft pseudopotentials'
@echo ' ld1 utilities for pseudopotential generation'
@echo ' upf utilities for pseudopotential conversion'
@echo ' tddfpt time dependent dft code'
@echo ' gui Graphical User Interface '
@echo ' gwl GW with Lanczos chains '
@echo ' xspectra X-ray core-hole spectroscopy calculations '
@echo ' pwall same as "make pw ph pp pwcond neb"'
@echo ' all same as "make pwall cp ld1 upf tddfpt gwl"'
@echo ' gipaw NMR and EPR spectra'
@echo ' w90 Maximally localised Wannier Functions'
@echo ' want Quantum Transport with Wannier functions'
@echo ' yambo electronic excitations with plane waves'
@echo ' plumed Metadynamics plugin for pw or cp'
@echo ' epw Electron-Phonon Coupling with wannier functions, EPW package'
@echo ' gpu Download the latest QE-GPU package'
@echo ' couple Library interface for coupling to external codes'
@echo ' clean remove executables and objects'
@echo ' veryclean revert distribution to the original status'
@echo ' tar create a tarball of the source tree'
@if test -d GUI/; then \
echo ' tar-gui create a standalone PWgui tarball from the GUI sources'; fi
@echo ' doc build documentation'
@echo ' links create links to all executables in bin/'
###########################################################
# Main targets
###########################################################
# The syntax "( cd PW ; $(MAKE) TLDEPS= all || exit 1)" below
# guarantees that error code 1 is returned in case of error and make stops
# If "|| exit 1" is not present, the error code from make in subdirectories
# is not returned and make goes on even if compilation has failed
#
pw : bindir mods liblapack libblas libs libiotk
if test -d PW ; then \
( cd PW ; $(MAKE) TLDEPS= all || exit 1) ; fi
cp : bindir mods liblapack libblas libs libiotk
if test -d CPV ; then \
( cd CPV ; $(MAKE) TLDEPS= all || exit 1) ; fi
ph : bindir mods libs pw
( cd install ; $(MAKE) -f plugins_makefile phonon || exit 1 )
neb : bindir mods libs pw
( cd install ; $(MAKE) -f plugins_makefile $@ || exit 1 )
tddfpt : bindir mods libs pw ph
( cd install ; $(MAKE) -f plugins_makefile $@ || exit 1 )
pp : bindir mods libs pw
if test -d PP ; then \
( cd PP ; $(MAKE) TLDEPS= all || exit 1 ) ; fi
pwcond : bindir mods libs pw pp
( cd install ; $(MAKE) -f plugins_makefile $@ || exit 1 )
acfdt : bindir mods libs pw ph
if test -d ACFDT ; then \
( cd ACFDT ; $(MAKE) TLDEPS= all || exit 1 ) ; fi
gwl : ph
if test -d GWW ; then \
( cd GWW ; $(MAKE) TLDEPS= all || exit 1 ) ; fi
gipaw : pw
( cd install ; $(MAKE) -f plugins_makefile $@ || exit 1 )
ld1 : bindir liblapack libblas mods libs
( cd install ; $(MAKE) -f plugins_makefile $@ || exit 1 )
upf : mods libs liblapack libblas
if test -d upftools ; then \
( cd upftools ; $(MAKE) TLDEPS= all || exit 1 ) ; fi
pw_export : libiotk bindir mods libs pw
if test -d PP ; then \
( cd PP ; $(MAKE) TLDEPS= pw_export.x || exit 1 ) ; fi
xspectra : bindir mods libs pw
( cd install ; $(MAKE) -f plugins_makefile $@ || exit 1 )
couple : pw cp
if test -d COUPLE ; then \
( cd COUPLE ; $(MAKE) TLDEPS= all || exit 1 ) ; fi
gui : touch-dummy
( cd install ; $(MAKE) -f plugins_makefile $@ || exit 1 )
pwall : pw neb ph pp pwcond acfdt
all : pwall cp ld1 upf tddfpt gwl xspectra
###########################################################
# Auxiliary targets used by main targets:
# compile modules, libraries, directory for binaries, etc
###########################################################
mods : libiotk libelpa
( cd Modules ; $(MAKE) TLDEPS= all || exit 1 )
libs : mods
( cd clib ; $(MAKE) TLDEPS= all || exit 1 )
( cd flib ; $(MAKE) TLDEPS= $(FLIB_TARGETS) || exit 1 )
bindir :
test -d bin || mkdir bin
#############################################################
# Targets for external libraries
############################################################
libblas : touch-dummy
cd install ; $(MAKE) -f extlibs_makefile $@
liblapack: touch-dummy
cd install ; $(MAKE) -f extlibs_makefile $@
libelpa: touch-dummy
cd install ; $(MAKE) -f extlibs_makefile $@
libiotk: touch-dummy
cd install ; $(MAKE) -f extlibs_makefile $@
# In case of trouble with iotk and compilers, add
# FFLAGS="$(FFLAGS_NOOPT)" after $(MFLAGS)
#########################################################
# plugins
#########################################################
w90: bindir libblas liblapack
( cd install ; $(MAKE) -f plugins_makefile $@ || exit 1 )
want : touch-dummy
( cd install ; $(MAKE) -f plugins_makefile $@ || exit 1 )
yambo: touch-dummy
( cd install ; $(MAKE) -f plugins_makefile $@ || exit 1 )
plumed: touch-dummy
( cd install ; $(MAKE) -f plugins_makefile $@ || exit 1 )
epw: touch-dummy
( cd install ; $(MAKE) -f plugins_makefile $@ || exit 1 )
gpu: touch-dummy
( cd install ; $(MAKE) -f plugins_makefile $@ || exit 1 )
touch-dummy :
$(dummy-variable)
#########################################################
# "make links" produces links to all executables in bin/
# while "make inst" INSTALLDIR=/some/place" links all
# available executables to /some/place/ (must exist and
# be writable), prepending "qe_" to all executables (e.g.:
# /some/place/qe_pw.x). This allows installation of QE
# into system directories with no danger of name conflicts
#########################################################
inst :
( for exe in */*/*.x */bin/* ; do \
file=`basename $$exe`; if test "$(INSTALLDIR)" != ""; then \
if test ! -L $(PWD)/$$exe; then ln -fs $(PWD)/$$exe $(INSTALLDIR)/qe_$$file ; fi ; \
fi ; \
done )
links : bindir
( cd bin/ ; \
rm -f *.x ; \
for exe in ../*/*/*.x ../*/bin/* ; do \
if test ! -L $$exe ; then ln -fs $$exe . ; fi \
done \
)
#########################################################
# Other targets: clean up
#########################################################
# remove object files and executables
clean : doc_clean
touch make.sys
for dir in \
CPV Modules PP PW \
ACFDT COUPLE GWW XSpectra \
clib flib pwtools upftools \
dev-tools extlibs Environ \
; do \
if test -d $$dir ; then \
( cd $$dir ; \
$(MAKE) TLDEPS= clean ) \
fi \
done
- @(cd install ; $(MAKE) -f plugins_makefile clean)
- @(cd install ; $(MAKE) -f extlibs_makefile clean)
- /bin/rm -rf bin/*.x tmp
- cd PW/tests; /bin/rm -rf CRASH *.out *.out? ; cd -
- cd CPV/tests; /bin/rm -rf CRASH *.out *.out?
# remove configuration files too
distclean veryclean : clean
- @(cd install ; $(MAKE) -f plugins_makefile veryclean)
- @(cd install ; $(MAKE) -f extlibs_makefile veryclean)
- rm -rf install/patch-plumed
- cd install ; rm -f config.log configure.msg config.status \
CPV/version.h ChangeLog* intel.pcl */intel.pcl
- cd install ; rm -fr autom4te.cache
- cd pseudo; ./clean_ps ; cd -
- cd install; ./clean.sh ; cd -
- cd include; ./clean.sh ; cd -
- rm -f espresso.tar.gz
- rm -rf make.sys
tar :
@if test -f espresso.tar.gz ; then /bin/rm espresso.tar.gz ; fi
# do not include unneeded stuff
find ./ -type f | grep -v -e /.svn/ -e'/\.' -e'\.o$$' \
-e'\.mod$$' -e'\.a$$' -e'\.d$$' -e'\.i$$' -e'\.F90$$' -e'\.x$$' \
-e'~$$' -e'\./GUI' -e '\./tempdir' | xargs tar rvf espresso.tar
gzip espresso.tar
#########################################################
# Tools for the developers
#########################################################
tar-gui :
@if test -d GUI/PWgui ; then \
cd GUI/PWgui ; \
$(MAKE) TLDEPS= clean svninit pwgui-source; \
mv PWgui-*.tgz ../.. ; \
else \
echo ; \
echo " Sorry, tar-gui works only for svn sources !!!" ; \
echo ; \
fi
# NOTICE about "make doc": in order to build the .html and .txt
# documentation in Doc, "tcl", "tcllib", "xsltproc" are needed;
# in order to build the .pdf files in Doc, "pdflatex" is needed;
# in order to build html files for user guide and developer manual,
# "latex2html" and "convert" (from Image-Magick) are needed.
doc : touch-dummy
if test -d Doc ; then \
( cd Doc ; $(MAKE) TLDEPS= all ) ; fi
for dir in */Doc; do \
( if test -f $$dir/Makefile ; then \
( cd $$dir; $(MAKE) TLDEPS= all ) ; fi ) ; done
doc_clean :
if test -d Doc ; then \
( cd Doc ; $(MAKE) TLDEPS= clean ) ; fi
for dir in */Doc; do \
( if test -f $$dir/Makefile ; then \
( cd $$dir; $(MAKE) TLDEPS= clean ) ; fi ) ; done
depend:
@echo 'Checking dependencies...'
- ( if test -x install/makedeps.sh ; then install/makedeps.sh ; fi)