ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/make/Makefile.in
Revision: 1602
Committed: Thu Aug 4 21:01:29 2011 UTC (14 years ago) by gezelter
File size: 23835 byte(s)
Log Message:
Fortran begone!

File Contents

# User Rev Content
1 gezelter 19 #---------------------------------------------------------------------------
2     # (C) 1999 - 2002 Jacob Dreyer - Geotechnical Software Services
3     # jacob.dreyer@geosoft.no - http://geosoft.no
4     #
5     # This program is free software; you can redistribute it and/or
6     # modify it under the terms of the GNU General Public License
7     # as published by the Free Software Foundation; either version 2
8     # of the License, or (at your option) any later version.
9     #
10     # This program is distributed in the hope that it will be useful,
11     # but WITHOUT ANY WARRANTY; without even the implied warranty of
12     # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13     # GNU General Public License for more details.
14     #
15     # You should have received a copy of the GNU General Public License
16     # along with this program; if not, write to the Free Software
17     # Foundation, Inc., 59 Temple Place - Suite 330, Boston,
18     # MA 02111-1307, USA.
19     #---------------------------------------------------------------------------
20     #---------------------------------------------------------------------------
21     #
22     # GnuMake crash course:
23     #
24     # target : depends
25     # rule
26     #
27     # target - the parameter given to make. I.e. what to build
28     # depends - file or other targets target depends on
29     # rule - how to create target (note that rule is preceeded by a TAB char)
30     # $(VAR) - environment variable or variable defined above
31     # $@ - Current target
32     # $* - Current target without extension
33     # $< - Current dependency
34     #
35     #---------------------------------------------------------------------------
36 tim 25 IS_UNIX=1
37 tim 39
38     #packages containing libraries
39     PackageLibs = \
40 tim 25 utils \
41 gezelter 246 visitors \
42 tim 25 math \
43     types \
44     primitives \
45 gezelter 1468 nonbonded \
46 gezelter 1544 parallel \
47 tim 25 UseTheForce \
48     brains \
49     io \
50 gezelter 1468 integrators \
51 tim 25 constraints \
52 chrisfen 209 minimizers \
53 tim 300 selection \
54 chrisfen 417 restraints \
55 gezelter 479 lattice \
56 gezelter 956 hydrodynamics \
57 gezelter 1602 antlr \
58     mdParser
59 gezelter 1210
60 tim 39 #packages containing applications
61     Applications = \
62 gezelter 1390 applications/openmd \
63 tim 25 applications/dump2Xyz \
64 tim 327 applications/staticProps \
65     applications/dynamicProps \
66 chuckv 919 applications/simpleBuilder \
67 chuckv 948 applications/randomBuilder \
68 chuckv 919 applications/nanoparticleBuilder \
69 gezelter 1083 applications/thermalizer \
70 gezelter 1021 applications/atom2md \
71 gezelter 1012 applications/hydrodynamics \
72     applications/utilities
73 gezelter 19
74 gezelter 44 Samples = \
75 gezelter 1157 samples/builders \
76 gezelter 856 samples/alkane \
77 gezelter 44 samples/argon \
78 gezelter 856 samples/cutoff \
79     samples/dipole \
80     samples/gbljtest \
81     samples/lipid \
82     samples/metals/EAM \
83     samples/metals/EAM/nanoparticle \
84     samples/metals/EAM/nanorod \
85     samples/metals/Sutton-Chen \
86 chuckv 1233 samples/metals/surfaces \
87 chuckv 1251 samples/metals/minimizer \
88 gezelter 856 samples/minimizer \
89     samples/thermoIntegration/liquid \
90     samples/thermoIntegration/solid \
91 gezelter 1602 samples/water/dimer \
92 gezelter 44 samples/water/spce \
93     samples/water/ssd \
94     samples/water/ssde \
95 tim 505 samples/water/ssdrf \
96     samples/water/ssd-ion \
97 gezelter 44 samples/water/tip3p_ice \
98     samples/water/tip4p \
99 gezelter 1405 samples/zcons \
100     samples/bond-order \
101     samples/Madelung \
102     samples/RNEMD \
103     samples/SMIPD \
104     samples/zeolite
105 gezelter 44
106 gezelter 1405
107 tim 25 IncludeDirs = \
108 gezelter 957 @FFTW_INC_DIR@ \
109 chuckv 1200 @QHULL_INC_DIR@ \
110 gezelter 1210 @OPENBABEL_INC_DIR@ \
111 tim 964 @ZLIB_INC_DIR@
112 tim 25
113     LibraryDirs = \
114 gezelter 957 @FFTW_LIB_DIR@ \
115 chuckv 1200 @QHULL_LIB_DIR@ \
116 gezelter 1210 @OPENBABEL_LIB_DIR@ \
117 tim 964 @ZLIB_LIB_DIR@
118 tim 25
119     Libraries = \
120 gezelter 617 @LIBS@ \
121 gezelter 957 @FFTW_LIBS@ \
122 chuckv 1200 @QHULL@ \
123 gezelter 1210 @OPENBABEL_LIB@ \
124 tim 964 @ZLIB@
125 tim 25
126 gezelter 1390 OpenMDHome = @OPENMD_HOME@
127     ForceParamDir = $(OpenMDHome)/forceFields
128     SampleSimDir = $(OpenMDHome)/samples
129     InstallBinDir = $(OpenMDHome)/bin
130 gezelter 1395 InstallDocDir = $(OpenMDHome)/doc
131 gezelter 1461 SvnDeclare :=-DSVN_REV="$(shell svnversion -n . | sed -e "s/.*://" -e "s/\([0-9]*\).*/\1/" | grep "[0-9]")"
132 gezelter 32 FrcDeclare = -DFRC_PATH="$(ForceParamDir)"
133 gezelter 962 UseSingle = @USE_SINGLE_PRECISION@
134     ifeq "$(UseSingle)" "yes"
135     SingleDeclare = -DSINGLE_PRECISION
136     else
137     SingleDeclare =
138     endif
139 gezelter 32 ParallelDeclare = -DIS_MPI
140 gezelter 962 SinglePrecision = -DSINGLE_PRECISION
141 tim 36 UseMPI = @USE_MPI@
142 tim 39 LinkOptions = \
143 gezelter 956 @LDFLAGS@ \
144 gezelter 1379 @CXXFLAGS@
145 gezelter 32
146 tim 39 ParallelLinkOptions = \
147 gezelter 956 @LDFLAGS@ \
148 gezelter 1379 @CXXFLAGS@
149 tim 39
150 gezelter 19 #---------------------------------------------------------------------------
151     #
152     # Directories
153     #
154     #---------------------------------------------------------------------------
155    
156     SourceDir = $(DEV_ROOT)/src
157     TargetDir = $(DEV_ROOT)/obj
158     ParallelTargetDir = $(DEV_ROOT)/MPIobj
159     LibDir = $(DEV_ROOT)/lib
160     MakeDir = $(DEV_ROOT)/make
161 gezelter 520 MainMakefile = $(MakeDir)/Makefile
162 gezelter 19 BinDir = $(DEV_ROOT)/bin
163 gezelter 1395 DocDir = $(DEV_ROOT)/doc
164 gezelter 19 CurrentDir = $(CURDIR)
165 gezelter 1390 CombinedStaticLib = $(LibDir)/libopenmd.a
166     CombinedParallelStaticLib = $(LibDir)/libopenmd_MPI.a
167 gezelter 19
168     ifdef Source
169 tim 23 #get the relative path of current package to source directory
170     # /home/maul/gezelter/src/code/src/UseTheForce/Darkside --> UseTheForce/Darkside
171     #Package = $(shell echo $(CurrentDir) | sed -e 's/^.*\/src\/\(.*\)/\1/g')
172     #use shell script to get the absolute path and then rip it off from $(CurrentDir)
173 gezelter 267 #Package = $(subst $(shell cd $(SourceDir); pwd)/,,$(CurrentDir))
174     # REMINDER: We are now using the Package line in each subdir makefile.
175     # This avoids the strange path problem and the subshell
176 tim 23
177 gezelter 19 PackageList = $(Package)
178     PackageSourceDir = $(SourceDir)/$(Package)
179     PackageTargetDir = $(TargetDir)
180     PackageParallelTargetDir = $(ParallelTargetDir)
181     JavaMainClass = $(subst /,.,$(Package)).$(Main)
182     else
183 tim 39 PackageList = $(PackageLibs) $(JavaPackages) $(Applications)
184 gezelter 19 endif
185    
186 tim 23 PackageListLoop = $(patsubst %,$(SourceDir)/%/.loop,$(PackageList))
187 gezelter 19
188 tim 23 JRE = $(JAVA_HOME)/jre/lib/rt.jar
189 gezelter 19
190     ifdef IS_UNIX
191     X = :
192     else
193     X = \;
194     endif
195    
196     #---------------------------------------------------------------------------
197     #
198     # Classification of files
199     #
200     #---------------------------------------------------------------------------
201    
202     # Source
203     JavaFiles = $(filter %.java, $(Source))
204     CppFiles = $(filter %.cpp, $(Source))
205     CFiles = $(filter %.c, $(Source))
206     FortranFiles = $(filter %.f, $(Source))
207     F90Files = $(filter %.F90, $(Source))
208     CorbaFiles = $(filter %.idl, $(Source))
209     LexFiles = $(filter %.l, $(Source))
210     YaccFiles = $(filter %.y, $(Source))
211     OtherSourceFiles = $(filter-out $(JavaFiles) $(CppFiles) $(CFiles) \
212     $(FortranFiles) $(F90Files) $(LexFiles) \
213     $(YaccFiles) $(CorbaFiles), \
214     $(Source))
215     ManifestFile = $(PackageSourceDir)/Manifest
216    
217 tim 23 SourceFiles = $(JavaFiles)\
218     $(CppFiles)\
219     $(CFiles)\
220     $(FortranFiles)\
221     $(F90Files)\
222     $(LexFiles)\
223     $(YaccFiles)
224 gezelter 19
225     # Target
226     JavaClassFiles = $(JavaFiles:%.java= $(PackageTargetDir)/%.class)
227     JavaClassFilesRel = $(JavaFiles:%.java= $(Package)/%.class)
228     RmiStubFiles = $(RmiSource:%.java= $(PackageTargetDir)/%_Stub.class)
229     RmiSkeletonFiles = $(RmiSource:%.java= $(PackageTargetDir)/%_Skel.class)
230     JniClassFiles = $(JniSource:%.java= $(PackageTargetDir)/%.class)
231     JniHeaders = $(JniSource:%.java= $(PackageSourceDir)/%.h)
232     ObjectFiles = $(CFiles:%.c= $(PackageTargetDir)/%.o)\
233 tim 23 $(CppFiles:%.cpp= $(PackageTargetDir)/%.o)\
234 tim 36 $(FortranFiles:%.f= $(PackageTargetDir)/%.o)\
235     $(F90Files:%.F90= $(PackageTargetDir)/%.o)\
236     $(LexFiles:%.l= $(PackageTargetDir)/%.o)\
237     $(YaccFiles:%.y= $(PackageTargetDir)/%.o)
238 gezelter 19 ParallelObjectFiles = $(CFiles:%.c= $(PackageParallelTargetDir)/%.o)\
239 tim 36 $(CppFiles:%.cpp= $(PackageParallelTargetDir)/%.o)\
240     $(FortranFiles:%.f= $(PackageParallelTargetDir)/%.o)\
241     $(F90Files:%.F90= $(PackageParallelTargetDir)/%.o)\
242     $(LexFiles:%.l= $(PackageParallelTargetDir)/%.o)\
243     $(YaccFiles:%.y= $(PackageParallelTargetDir)/%.o)
244 gezelter 19
245     DerivedSource = $(YaccFiles:%.y= %.h) \
246 tim 36 $(YaccFiles:%.y= %.c) \
247     $(LexFiles:%.l= %.c)
248 gezelter 19
249     DerivedCFiles = $(YaccFiles:%.y= %.c) \
250 tim 36 $(LexFiles:%.l= %.c)
251 gezelter 19
252     OtherTargetFiles = $(OtherSourceFiles:%=$(PackageTargetDir)/%)
253    
254     ThirdPartyJarsTmp = $(patsubst %,$(LibDir)/%,$(JavaLibraries))
255     ThirdPartyJars = $(subst $(Space),$(X),$(ThirdPartyJarsTmp))
256    
257     ifneq "$(words $(JavaFiles))" "0"
258     JavaPackageName = $(subst /,.,$(Package))
259     JarFile = $(LibDir)/$(subst /,,$(Package)).jar
260     endif
261    
262     #if Main is defined, do not build library. It may not be true sometimes
263     ifneq "$(words $(ObjectFiles) $(ParallelObjectFiles))" "0"
264     DependencyFile = $(PackageSourceDir)/Makedepend
265 gezelter 442 ifneq "$(words $(Main))" "0"
266 tim 23 Executable = $(BinDir)/$(Main)
267 tim 447 ifeq "$(BuiltParallelExe)" "1"
268     ParallelExecutable = $(BinDir)/$(Main)_MPI
269     endif
270 gezelter 19 else
271 gezelter 1390 SharedLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,openmd_%,$(Package)))_UP.so
272     StaticLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,openmd_%,$(Package)))_UP.a
273     ParallelSharedLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,openmd_%,$(Package)))_MPI.so
274     ParallelStaticLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,openmd_%,$(Package)))_MPI.a
275 gezelter 19 endif
276     endif
277 tim 52
278 gezelter 19 #
279     # Misc
280     #
281     ClassPath = $(JRE)$(X)$(TargetDir)$(X)$(ThirdPartyJars)
282     JavaPackageNames = $(subst /,.,$(JavaPackages))
283     IncludePath = -I$(SourceDir) $(IncludeDirs:%=-I%)
284     LibDirs = -L$(LibDir) $(LibraryDirs:%=-L%)
285 gezelter 1390 LocalLibs = $(subst /,,$(patsubst %, openmd_%_UP, $(PackageLibs)))
286     ParallelLocalLibs= $(subst /,,$(patsubst %, openmd_%_MPI, $(PackageLibs)))
287 gezelter 32 LibList = $(LocalLibs:%=-l%) $(Libraries)
288 tim 39 LibNames = $(LocalLibs:%=$(LibDir)/lib%.a)
289 tim 36 ParallelLibList = $(ParallelLocalLibs:%=-l%) $(Libraries)
290 tim 39 ParallelLibNames = $(ParallelLocalLibs:%=$(LibDir)/lib%.a)
291 gezelter 19
292    
293     #---------------------------------------------------------------------------
294     #
295     # Tools & Options
296     #
297     #---------------------------------------------------------------------------
298     Print = @echo
299 gezelter 246 Move = mv -f
300 gezelter 19 Copy = cp
301     CCompiler = @CC@
302     CppCompiler = @CXX@
303     Linker = @CXX@
304     MakeDepend = makedepend
305 gezelter 757 LN_S = @LN_S@
306 gezelter 60 INSTALL = @INSTALL@
307 gezelter 775 EGREP = @EGREP@
308 gezelter 19 InstallProgram = @INSTALL_PROGRAM@
309 gezelter 442 InstallScript = @INSTALL_SCRIPT@
310 gezelter 19 InstallData = @INSTALL_DATA@
311 gezelter 1396 MkDir = @MKINSTALLDIRS@
312 gezelter 520 Delete = rm -f
313 gezelter 19 StaticArchiver = @AR@
314     DynamicArchiver = @CC@
315     FortranCompiler = @FC@
316     JavaCompiler = $(JAVA_HOME)/bin/javac
317     JavaArchiver = $(JAVA_HOME)/bin/jar
318     JarSigner = $(JAVA_HOME)/bin/jarsigner
319     JavadocGenerator = $(JAVA_HOME)/bin/javadoc
320     JniCompiler = $(JAVA_HOME)/bin/javah
321     RmiCompiler = $(JAVA_HOME)/bin/rmic
322     JavaExecute = $(JAVA_HOME)/bin/java
323     Purify = purify
324     WordCount = wc
325     List = cat
326     Yacc = @YACC@
327     Lex = @LEX@
328 tim 39 Ranlib = @RANLIB@
329 tim 48 Doxygen = @DOXYGEN@
330 gezelter 19
331 tim 25 MakeOptions = -k
332 gezelter 19 MakeDependOptions =
333     StaticArchiverOptions = rc
334     DynamicArchiverOptions = -shared
335     JavaArchiverOptions =
336     JniOptions =
337     RmiOptions = -d $(TargetDir) -classpath $(ClassPath) \
338     -sourcepath $(SourceDir)
339 gezelter 1461 COptions = $(SvnDeclare) $(FrcDeclare) $(SingleDeclare) @CFLAGS@
340     CParallelOptions = $(SvnDeclare) $(FrcDeclare) $(SingleDeclare) $(ParallelDeclare) @CFLAGS@
341     CppOptions = $(SvnDeclare) $(FrcDeclare) $(SingleDeclare) @CXXFLAGS@
342     CppParallelOptions = $(SvnDeclare) $(FrcDeclare) $(SingleDeclare) $(ParallelDeclare) @CXXFLAGS@
343 gezelter 19 JavaCompilerOptions = -d $(TargetDir) -classpath $(ClassPath) \
344     -sourcepath $(SourceDir) -deprecation
345     JavaRunOptions = -classpath $(ClassPath)
346     PurifyOptions =
347 gezelter 1395 JavadocOptions = -d $(DocDir) \
348 gezelter 19 -sourcepath $(SourceDir) \
349     -classpath $(ClassPath) \
350     -author \
351     -package \
352     -use \
353     -splitIndex \
354     -version \
355     -link file:$(JAVA_HOME)/docs/api \
356     -windowtitle $(JavadocWindowTitle) \
357     -doctitle $(JavadocDocTitle) \
358     -header $(JavadocHeader) \
359     -bottom $(JavadocFooter)
360 gezelter 1397 WordCountOptions = -l
361 gezelter 19
362     Empty =
363     Space = $(Empty) $(Empty)
364    
365    
366     #---------------------------------------------------------------------------
367     #
368 tim 52 # Install
369     #
370     #---------------------------------------------------------------------------
371    
372     ifneq "$(words $(SampleFiles))" "0"
373 tim 54 MySample = $(subst $(shell cd $(DEV_ROOT)/samples; pwd)/,,$(CurrentDir))
374     MyInstallDir = $(SampleSimDir)/$(MySample)
375     InstallFiles = $(SampleFiles)
376     InstallCommand = $(InstallData)
377 tim 52 endif
378    
379 gezelter 1012 ifneq "$(words $(ScriptFiles))" "0"
380     MyInstallDir = $(InstallBinDir)
381     InstallFiles = $(ScriptFiles)
382     InstallCommand = $(InstallProgram)
383     endif
384    
385 gezelter 1167 ifneq "$(words $(DocFiles))" "0"
386     MyInstallDir = $(InstallDocDir)
387     InstallFiles = $(DocFiles)
388     InstallCommand = $(InstallData)
389     endif
390    
391     ifneq "$(words $(RootFiles))" "0"
392 gezelter 1390 MyInstallDir = $(OpenMDHome)
393 gezelter 1167 InstallFiles = $(RootFiles)
394     InstallCommand = $(InstallData)
395     endif
396    
397 tim 52 ifneq "$(words $(Main))" "0"
398 tim 54 MyInstallDir = $(InstallBinDir)
399     ifeq "$(UseMPI)" "yes"
400     InstallFiles = $(Executable) $(ParallelExecutable)
401     else
402     InstallFiles = $(Executable)
403     endif
404     InstallCommand = $(InstallProgram)
405 tim 758 ifneq "$(words $(LinkTargets))" "0"
406     MyLinkSource = $(patsubst %, $(MyInstallDir)/%,$(Main))
407     MyLinkTargets = $(patsubst %, $(MyInstallDir)/%,$(LinkTargets))
408     endif
409 tim 52 endif
410    
411 tim 53 ifneq "$(words $(ForcefieldFiles))" "0"
412 tim 54 MyInstallDir = $(ForceParamDir)
413     InstallFiles = $(ForcefieldFiles)
414     InstallCommand = $(InstallData)
415 tim 52 endif
416    
417 gezelter 1395 ifeq "$(words $(InstallFiles))" "0"
418 tim 52 InstallList =
419     else
420 gezelter 1397 InstallList = $(patsubst %,$(DEV_ROOT)/%,$(Samples)) $(DEV_ROOT)/forceFields $(DocDir) $(patsubst %, $(SourceDir)/%,$(Applications)) $(DEV_ROOT)
421 tim 52 endif
422    
423 gezelter 1395 InstallListLoop = $(patsubst %,$(SourceDir)/%/.install,$(PackageList)) $(patsubst %,%/.install,$(InstallList))
424 tim 52
425    
426    
427     #---------------------------------------------------------------------------
428     #
429 gezelter 19 # Rules
430     #
431     #---------------------------------------------------------------------------
432     default : build
433    
434     %.loop :
435     @$(MAKE) $(MakeOptions) -C $(subst .loop,,$@) _$(MAKECMDGOALS)all
436    
437     # Create target directory
438     $(PackageTargetDir) :
439 gezelter 254 $(MkDir) $@
440 gezelter 19
441 gezelter 254 $(BinDir) :
442     $(MkDir) $@
443    
444 gezelter 19 # .c -> .o
445 gezelter 520 $(PackageTargetDir)/%.o : %.c $(MainMakefile)
446 gezelter 19 $(Print) $@
447 tim 25 $(CCompiler) $(COptions) -c $(IncludePath) $< -o $@
448 gezelter 19
449 gezelter 520 $(PackageParallelTargetDir)/%.o : %.c $(MainMakefile)
450 tim 36 $(Print) $@
451     $(CCompiler) $(CParallelOptions) -c $(IncludePath) $< -o $@
452    
453     ifeq "$(UseMPI)" "yes"
454 gezelter 520 %.o : %.c $(MainMakefile)
455 gezelter 19 $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
456 tim 36 $(MAKE) $(MakeOptions) $(PackageParallelTargetDir)/$@
457     else
458 gezelter 520 %.o : %.c $(MainMakefile)
459 tim 36 $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
460     endif
461 gezelter 19
462     # .cpp -> .o
463 gezelter 520 $(PackageTargetDir)/%.o : %.cpp $(MainMakefile)
464 gezelter 19 $(CppCompiler) $(CppOptions) -c $(IncludePath) $< -o $@
465    
466 gezelter 520 $(PackageParallelTargetDir)/%.o : %.cpp $(MainMakefile)
467 tim 36 $(CppCompiler) $(CppParallelOptions) -c $(IncludePath) $< -o $@
468    
469     ifeq "$(UseMPI)" "yes"
470 gezelter 520 %.o : %.cpp $(MainMakefile)
471 gezelter 19 $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
472 tim 36 $(MAKE) $(MakeOptions) $(PackageParallelTargetDir)/$@
473     else
474 gezelter 520 %.o : %.cpp $(MainMakefile)
475 tim 36 $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
476     endif
477 gezelter 19
478    
479     # .java -> .class
480     $(PackageTargetDir)/%.class : $(PackageSourceDir)/%.java
481 tim 25 $(JavaCompiler) $(JavaCompilerOptions) $<
482 gezelter 19
483     %.class : $(PackageSourceDir)/%.java
484     @$(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
485    
486     # .class -> .h
487     $(PackageSourceDir)/%.h : $(PackageTargetDir)/%.class
488     $(JniCompiler) $(JniOptions) $(JavaPackageName).$*
489    
490     %.h : %.class
491     $(MAKE) $(MakeOptions) $(PackageSourceDir)/$@
492    
493     #.y -> .h
494 tim 23 %.h : %.y
495 tim 25 $(Yacc) -d $?
496 gezelter 19 @$(Move) y.tab.h $*.h
497     @$(Delete) y.tab.c
498    
499     #.y -> .c
500 tim 23 %.c : %.y
501 tim 25 $(Yacc) -d $?
502 gezelter 19 @$(Move) y.tab.c $*.c
503     @$(Delete) y.tab.h
504    
505     # .l -> .c
506 tim 23 %.c : %.l
507 gezelter 19 $(Print) $@
508     $(Print) $(Lex) -o$@ $?
509     @$(Lex) -o$@ $?
510    
511     # .o -> .a
512 tim 36
513 tim 39 $(LibDir)/%_UP.a : $(ObjectFiles)
514 tim 25 $(StaticArchiver) $(StaticArchiverOptions) $@ $(ObjectFiles)
515 tim 40 @touch $(LibDir)/.stamp_UP
516 gezelter 19
517 tim 39 $(LibDir)/%_MPI.a: $(ParallelObjectFiles)
518 tim 25 $(StaticArchiver) $(StaticArchiverOptions) $@ $(ParallelObjectFiles)
519 tim 40 @touch $(LibDir)/.stamp_MPI
520 gezelter 19
521 tim 39 %_UP.a : $(ObjectFiles)
522 gezelter 19 $(MAKE) $(MakeOptions) $(LibDir)/$@
523 tim 39
524     %_MPI.a : $(ParallelObjectFiles)
525 tim 36 $(MAKE) $(MakeOptions) $(LibDir)/$@
526 gezelter 19
527     # .o -> .so
528 tim 39 $(LibDir)/%_UP.so : $(ObjectFiles)
529 gezelter 19 $(DynamicArchiver) $(ObjectFiles) $(DynamicArchiverOptions) -o $@
530    
531 tim 39 $(LibDir)/%_MPI.so : $(ParallelObjectFiles)
532 gezelter 19 $(DynamicArchiver) $(ParallelObjectFiles) $(DynamicArchiverOptions) -o $@
533    
534 tim 39 %_UP.so : $(ObjectFiles)
535 gezelter 19 $(MAKE) $(MakeOptions) $(LibDir)/$@
536 tim 39
537     %_MPI.so : $(ParallelObjectFiles)
538 tim 36 $(MAKE) $(MakeOptions) $(LibDir)/$@
539 gezelter 19
540     # .class -> .jar
541     $(LibDir)/%.jar : $(JavaClassFiles) $(OtherTargetFiles)
542     $(Print) $@
543     @cd $(TargetDir); $(JavaArchiver) -cf $@ \
544     $(JavaClassFilesRel) $(OtherTargetFiles)
545    
546     %.jar : $(JavaClassFiles) $(OtherTargetFiles)
547     $(MAKE) $(MakeOptions) $(LibDir)/$@
548    
549     # .class -> JavaDoc
550     javadoc :
551     $(Print) $(JavaPackageNames) > $(DEV_ROOT)/packages.tmp
552     $(JavadocGenerator) $(JavadocOptions) @$(DEV_ROOT)/packages.tmp
553     $(Delete) $(DEV_ROOT)/packages.tmp
554     $(Print) Done JavaDoc.
555    
556     # .class -> _Stub.class
557     $(PackageTargetDir)/%_Stub.class : $(PackageTargetDir)/%.class
558     $(Print) $@
559     $(RmiCompiler) $(RmiOptions) $(JavaPackageName).$*
560    
561     %_Stub.class : %.class
562     $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
563    
564     # .class -> _Skel.class
565     $(PackageTargetDir)/%_Skel.class : $(PackageTargetDir)/%.class
566     $(Print) $@
567     $(RmiCompiler) $(RmiOptions) $(JavaPackageName).$*
568    
569     %_Skel.class : %.class
570     $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
571    
572 tim 48 document :
573 gezelter 1390 $(Print) Generate Documentation for OpenMD
574 tim 48 @cd $(DEV_ROOT)/src
575     $(Doxygen) $(DEV_ROOT)/make/Doxyfile
576    
577 tim 39 #GUN make funtions to merge the libraries
578 gezelter 775 find_objs = $(shell $(StaticArchiver) -t $(1) | $(EGREP) -v "SYMDEF")
579 tim 39 extract_objs = $(shell $(StaticArchiver) -x $(1) $(call find_objs, $(1)))
580     create_archive = $(shell $(StaticArchiver) $(StaticArchiverOptions) $(2) $(call find_objs, $(1)))
581     remove_objs = $(shell $(Delete) $(call find_objs, $(1)))
582     do_create = $(call extract_objs,$(1))$(call create_archive,$(1),$(2))$(call remove_objs,$(1))
583 gezelter 1399 do_link = $(shell umask 022; $(LN_S) $(1) $(2))
584 gezelter 775 all_objs = $(foreach thisLib,$(LibNames), $(call find_objs, $(thisLib)))
585     all_parallel_objs = $(foreach thisLib,$(ParallelLibNames), $(call find_objs, $(thisLib)))
586     all_lib_objs = $(patsubst %,$(TargetDir)/%,$(call all_objs))
587 tim 832 all_lib_parallel_objs = $(patsubst %,$(ParallelTargetDir)/%,$(call all_parallel_objs))
588 tim 39
589 tim 40 $(CombinedStaticLib) : $(LibDir)/.stamp_UP
590 gezelter 775 $(Print) creating $@
591     $(StaticArchiver) $(StaticArchiverOptions) $@ $(call all_lib_objs)
592 tim 39 $(Ranlib) $(CombinedStaticLib)
593    
594     $(CombinedParallelStaticLib) : $(LibDir)/.stamp_MPI
595 gezelter 775 $(Print) creating $@
596     $(StaticArchiver) $(StaticArchiverOptions) $@ $(call all_lib_parallel_objs)
597 tim 39 $(Ranlib) $(CombinedParallelStaticLib)
598    
599 gezelter 19 # Executable
600 gezelter 858 $(Executable) : $(CombinedStaticLib) $(ObjectFiles)
601     if test ! -d $(BinDir); then \
602     $(MkDir) $(BinDir) ;\
603     fi
604 tim 252 $(Linker) $(ObjectFiles) $(CombinedStaticLib) $(LinkOptions) $(LibDirs) $(Libraries) -o $@
605 gezelter 19
606 gezelter 858 $(ParallelExecutable) : $(CombinedParallelStaticLib) $(ParallelObjectFiles)
607     if test ! -d $(BinDir); then \
608     $(MkDir) $(BinDir) ;\
609     fi
610 tim 252 $(Linker) $(ParallelObjectFiles) $(CombinedParallelStaticLib) $(ParallelLinkOptions) $(LibDirs) $(Libraries) -o $@
611 gezelter 19
612     # Anything else is just copied from source to target
613     $(PackageTargetDir)/% : $(PackageSourceDir)/%
614     $(Print) $@
615     $(Copy) $< $@
616    
617     # make (or make build)
618     build : $(PackageListLoop)
619     $(Print) Done build.
620    
621     _all : _buildall
622    
623 tim 52 _buildall :
624 tim 36 ifeq "$(UseMPI)" "yes"
625 gezelter 19 _buildall : \
626     $(DependencyFile) \
627     $(PackageTargetDir) \
628     $(ObjectFiles) \
629 tim 36 $(ParallelObjectFiles) \
630 gezelter 19 $(JavaClassFiles) \
631     $(RmiStubFiles) \
632     $(RmiSkeletonFiles) \
633     $(OtherTargetFiles) \
634     $(StaticLibrary) \
635 tim 36 $(ParallelStaticLibrary) \
636 gezelter 19 $(JarFile) \
637 tim 36 $(Executable) \
638     $(ParallelExecutable)
639     else
640     _buildall : \
641     $(DependencyFile) \
642     $(PackageTargetDir) \
643     $(ObjectFiles) \
644     $(JavaClassFiles) \
645     $(RmiStubFiles) \
646     $(RmiSkeletonFiles) \
647     $(OtherTargetFiles) \
648     $(StaticLibrary) \
649     $(JarFile) \
650     $(Executable)
651     endif
652 gezelter 19
653 gezelter 460 echo : $(PackageListLoop)
654     $(Print) Done echo.
655 tim 36
656 gezelter 460 _echoall :
657     $(Print) $(Modules)
658    
659 gezelter 19 # make clean
660     clean : $(PackageListLoop)
661     $(Print) Done clean.
662    
663     _cleanall :
664 gezelter 383 $(Delete) \
665     $(ObjectFiles) \
666 gezelter 460 $(ModuleFiles) \
667 gezelter 383 $(ParallelObjectFiles) \
668 gezelter 460 $(ParallelModuleFiles) \
669 gezelter 383 $(JarFile) \
670     $(SharedLibrary) \
671     $(StaticLibrary) \
672     $(ParallelSharedLibrary) \
673     $(ParallelStaticLibrary) \
674     $(CombinedStaticLib) \
675     $(CombinedParallelStaticLib)
676 tim 25
677     # make distclean
678     distclean : $(PackageListLoop)
679     $(Print) Done clean.
680    
681 gezelter 383 _distcleanall : _cleanall
682     $(Delete) $(Executable) \
683 tim 25 $(ParallelExecutable) \
684 tim 34 $(DependencyFile)
685 gezelter 19
686     # make depend
687     depend : $(PackageListLoop)
688     $(Print) Done dependencies.
689    
690     _dependall : $(DependencyFile)
691    
692     $(DependencyFile) : $(DerivedSource)
693     $(Print) $@
694     @cd $(PackageSourceDir)
695 tim 21
696     ifneq "$(words $(CppFiles))" "0"
697 tim 64 $(DEV_ROOT)/scripts/filepp -I $(DEV_ROOT)/src -od '$$(TargetDir)/' -MM $(CppFiles)>> Make.cpptemp
698     @cat Make.cpptemp >> $(DependencyFile)
699 gezelter 44 $(Delete) Make.cpptemp
700 tim 62
701     ifeq "$(UseMPI)" "yes"
702 tim 64 $(DEV_ROOT)/scripts/filepp -I $(DEV_ROOT)/src -od '$$(ParallelTargetDir)/' $(ParallelDeclare) -MM $(CppFiles)>> Make.cpptemp
703     @cat Make.cpptemp >> $(DependencyFile)
704 tim 48 @$(Delete) Make.cpptemp
705 tim 62 endif
706    
707 gezelter 19 endif
708 tim 21
709     ifneq "$(words $(CFiles))" "0"
710 tim 64 $(DEV_ROOT)/scripts/filepp -I $(DEV_ROOT)/src -od '$$(TargetDir)/' -MM $(CFiles) $(DerivedCFiles) >> Make.ctemp
711     @cat Make.ctemp >> $(DependencyFile)
712 gezelter 44 $(Delete) Make.ctemp
713 tim 62
714     ifeq "$(UseMPI)" "yes"
715 tim 64 $(DEV_ROOT)/scripts/filepp -I $(DEV_ROOT)/src -od '$$(ParallelTargetDir)/' $(ParallelDeclare) -MM $(CFiles) $(DerivedCFiles) >> Make.ctemp
716     @cat Make.ctemp >> $(DependencyFile)
717 tim 48 @$(Delete) Make.ctemp
718 tim 62 endif
719    
720 gezelter 19 endif
721 tim 21
722 gezelter 19 # make lib
723     lib : $(PackageListLoop)
724     $(Print) Libraries built.
725    
726     _liball : $(JarFile) $(SharedLibrary) $(StaticLibrary)
727    
728     jar : $(JarFile)
729    
730     jarsign : $(JarFile)
731     $(JarSigner) -keystore GeoSoftKeystore $(JarFile) myself
732    
733 tim 52 #make install
734     %.install :
735     @$(MAKE) $(MakeOptions) -C $(subst .install,,$@) _installall
736    
737 gezelter 1397 .install :
738     @$(MAKE) $(MakeOptions) _installall
739    
740 tim 52 install : $(InstallListLoop)
741     $(Print) Done Install
742    
743 gezelter 757 _installall : _buildall _installdata _installlinks
744 tim 52
745     $(MyInstallDir) :
746     $(MkDir) $@
747    
748     _installdata : $(MyInstallDir)
749     $(Print) $(InstallFiles)
750     ifneq "$(words $(InstallFiles))" "0"
751 gezelter 442 $(InstallCommand) $(InstallFiles) $(MyInstallDir)
752 tim 52 endif
753 gezelter 246
754 gezelter 757 _installlinks : $(MyInstallDir)
755 tim 758 ifneq "$(words $(MyLinkTargets))" "0"
756 gezelter 757 @cd $(MyInstallDir)
757 tim 758 $(foreach thisLink,$(MyLinkTargets),$(call do_link,$(MyLinkSource),$(thisLink)))
758 gezelter 757 endif
759    
760 gezelter 19 # make statistics
761     _statisticsall :
762 tim 40 @$(Print) $(patsubst %,$(CurrentDir)/%,$(SourceFiles)) >> $(DEV_ROOT)/files.tmp
763 gezelter 19
764     statistics : $(PackageListLoop)
765     @$(List) $(DEV_ROOT)/files.tmp | xargs $(WordCount) $(WordCountOptions)
766     @$(Delete) $(DEV_ROOT)/files.tmp
767     $(Print) Done statistics.
768    
769     # make pure
770 tim 745 #$(Executable).pure :
771     # $(Purify) $(PurifyOptions) $(CppCompiler) $(LinkOptions) $(LibDirs) \
772     # $(LibList) $(ObjectFiles) -o $@
773     #
774     #pure : $(Executable).pure
775 gezelter 19
776 gezelter 1397 #make ChangeLog
777     ChangeLog:
778     $(DEV_ROOT)/scripts/svn2cl
779 tim 34
780 gezelter 19 # Execute
781     _runexe :
782     $(Executable) $(RunParameters)
783    
784     _runjava :
785     $(JavaExecute) $(JavaRunOptions) $(JavaMainClass) $(RunParameters)
786    
787     run : _runjava
788    
789    
790     ifdef $(DependencyFile)
791     -include $(DependencyFile)
792     endif