ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/make/Makefile.in
Revision: 1210
Committed: Wed Jan 23 03:45:33 2008 UTC (17 years, 6 months ago) by gezelter
Original Path: trunk/make/Makefile.in
File size: 28475 byte(s)
Log Message:
Removed older version of openbabel from our code.  We now have a
configure check to see if openbabel is installed and then we link to
the stuff we need.  Conversion to OOPSE's md format is handled by only
one application (atom2md), so most of the work went on there.
ElementsTable still needs some work to function in parallel.

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     UseTheForce/DarkSide \
46     UseTheForce \
47     brains \
48     io \
49 gezelter 246 integrators\
50 tim 25 constraints \
51 chrisfen 209 minimizers \
52 tim 300 selection \
53 chrisfen 417 restraints \
54 gezelter 479 lattice \
55 gezelter 956 hydrodynamics \
56 tim 771 antlr\
57     mdParser
58 gezelter 1210
59 tim 39 #packages containing applications
60     Applications = \
61 tim 25 applications/oopse \
62     applications/dump2Xyz \
63 tim 327 applications/staticProps \
64     applications/dynamicProps \
65 chuckv 919 applications/simpleBuilder \
66 chuckv 948 applications/randomBuilder \
67 chuckv 919 applications/nanoparticleBuilder \
68 gezelter 1083 applications/thermalizer \
69 gezelter 1021 applications/atom2md \
70 gezelter 1012 applications/hydrodynamics \
71     applications/utilities
72 gezelter 19
73 gezelter 44 Samples = \
74 gezelter 1157 samples/builders \
75 gezelter 856 samples/alkane \
76 gezelter 44 samples/argon \
77 gezelter 856 samples/cutoff \
78     samples/dipole \
79     samples/gbljtest \
80     samples/lipid \
81     samples/metals/EAM \
82     samples/metals/EAM/nanoparticle \
83     samples/metals/EAM/nanorod \
84     samples/metals/Sutton-Chen \
85     samples/minimizer \
86     samples/thermoIntegration/liquid \
87     samples/thermoIntegration/solid \
88 tim 505 samples/water/dimer \
89 gezelter 44 samples/water/spce \
90     samples/water/ssd \
91     samples/water/ssde \
92 tim 505 samples/water/ssdrf \
93     samples/water/ssd-ion \
94 gezelter 44 samples/water/tip3p_ice \
95     samples/water/tip4p \
96 gezelter 856 samples/zcons
97 gezelter 44
98 tim 25 IncludeDirs = \
99 tim 964 @MPI_INC_DIR@ \
100 gezelter 957 @FFTW_INC_DIR@ \
101 chuckv 1200 @QHULL_INC_DIR@ \
102 gezelter 1210 @OPENBABEL_INC_DIR@ \
103 tim 964 @ZLIB_INC_DIR@
104 tim 25
105     LibraryDirs = \
106 tim 964 @MPI_LIB_DIR@ \
107 gezelter 957 @FFTW_LIB_DIR@ \
108 chuckv 1200 @QHULL_LIB_DIR@ \
109 gezelter 1210 @OPENBABEL_LIB_DIR@ \
110 tim 964 @ZLIB_LIB_DIR@
111 tim 25
112     Libraries = \
113 gezelter 617 @LIBS@ \
114 tim 964 @MPI_LIB@ \
115     @MPI_F90_LIB@ \
116 gezelter 957 @FFTW_LIBS@ \
117 chuckv 1200 @QHULL@ \
118 gezelter 1210 @OPENBABEL_LIB@ \
119 tim 964 @ZLIB@
120 tim 25
121 gezelter 32 OopseHome = @OOPSE_HOME@
122 gezelter 1167 ForceParamDir = $(OopseHome)/forceFields
123     SampleSimDir = $(OopseHome)/samples
124 gezelter 60 InstallBinDir = $(OopseHome)/bin
125     DocDir = $(OopseHome)/doc
126 gezelter 32 FrcDeclare = -DFRC_PATH="$(ForceParamDir)"
127 gezelter 44 F90Declare = -D__FORTRAN90
128 gezelter 962 UseSingle = @USE_SINGLE_PRECISION@
129     ifeq "$(UseSingle)" "yes"
130     SingleDeclare = -DSINGLE_PRECISION
131     else
132     SingleDeclare =
133     endif
134 gezelter 32 ParallelDeclare = -DIS_MPI
135 gezelter 962 SinglePrecision = -DSINGLE_PRECISION
136 tim 36 UseMPI = @USE_MPI@
137 gezelter 44 ModuleCase = @F90_MODULE_NAMES@
138     ModSuffix = @MOD@
139 tim 39 LinkOptions = \
140 gezelter 956 @LDFLAGS@ \
141 gezelter 880 @FCLIBS@ \
142 gezelter 1210 @CXXFLAGS@ \
143     @CGAL_LIBS@
144 gezelter 32
145 gezelter 1086
146 gezelter 1210
147 tim 39 ParallelLinkOptions = \
148 gezelter 956 @LDFLAGS@ \
149 gezelter 880 @FCLIBS@ \
150 gezelter 1210 @CXXFLAGS@ \
151     @CGAL_LIBS@
152 tim 39
153 gezelter 19 #---------------------------------------------------------------------------
154     #
155     # Directories
156     #
157     #---------------------------------------------------------------------------
158    
159     SourceDir = $(DEV_ROOT)/src
160     TargetDir = $(DEV_ROOT)/obj
161     ParallelTargetDir = $(DEV_ROOT)/MPIobj
162     LibDir = $(DEV_ROOT)/lib
163     MakeDir = $(DEV_ROOT)/make
164 gezelter 520 MainMakefile = $(MakeDir)/Makefile
165 gezelter 19 BinDir = $(DEV_ROOT)/bin
166     DocsDir = $(DEV_ROOT)/docs
167     CurrentDir = $(CURDIR)
168 tim 39 CombinedStaticLib = $(LibDir)/libOOPSE.a
169     CombinedParallelStaticLib = $(LibDir)/libOOPSE_MPI.a
170 gezelter 19
171     ifdef Source
172 tim 23 #get the relative path of current package to source directory
173     # /home/maul/gezelter/src/code/src/UseTheForce/Darkside --> UseTheForce/Darkside
174     #Package = $(shell echo $(CurrentDir) | sed -e 's/^.*\/src\/\(.*\)/\1/g')
175     #use shell script to get the absolute path and then rip it off from $(CurrentDir)
176 gezelter 267 #Package = $(subst $(shell cd $(SourceDir); pwd)/,,$(CurrentDir))
177     # REMINDER: We are now using the Package line in each subdir makefile.
178     # This avoids the strange path problem and the subshell
179 tim 23
180 gezelter 19 PackageList = $(Package)
181     PackageSourceDir = $(SourceDir)/$(Package)
182     PackageTargetDir = $(TargetDir)
183     PackageParallelTargetDir = $(ParallelTargetDir)
184     JavaMainClass = $(subst /,.,$(Package)).$(Main)
185     else
186 tim 39 PackageList = $(PackageLibs) $(JavaPackages) $(Applications)
187 gezelter 19 endif
188    
189 tim 23 PackageListLoop = $(patsubst %,$(SourceDir)/%/.loop,$(PackageList))
190 gezelter 19
191 tim 23 JRE = $(JAVA_HOME)/jre/lib/rt.jar
192 gezelter 19
193     ifdef IS_UNIX
194     X = :
195     else
196     X = \;
197     endif
198    
199     #---------------------------------------------------------------------------
200     #
201     # Classification of files
202     #
203     #---------------------------------------------------------------------------
204    
205     # Source
206     JavaFiles = $(filter %.java, $(Source))
207     CppFiles = $(filter %.cpp, $(Source))
208     CFiles = $(filter %.c, $(Source))
209     FortranFiles = $(filter %.f, $(Source))
210     F90Files = $(filter %.F90, $(Source))
211     CorbaFiles = $(filter %.idl, $(Source))
212     LexFiles = $(filter %.l, $(Source))
213     YaccFiles = $(filter %.y, $(Source))
214     OtherSourceFiles = $(filter-out $(JavaFiles) $(CppFiles) $(CFiles) \
215     $(FortranFiles) $(F90Files) $(LexFiles) \
216     $(YaccFiles) $(CorbaFiles), \
217     $(Source))
218     ManifestFile = $(PackageSourceDir)/Manifest
219    
220 tim 23 SourceFiles = $(JavaFiles)\
221     $(CppFiles)\
222     $(CFiles)\
223     $(FortranFiles)\
224     $(F90Files)\
225     $(LexFiles)\
226     $(YaccFiles)
227 gezelter 19
228     # Target
229     JavaClassFiles = $(JavaFiles:%.java= $(PackageTargetDir)/%.class)
230     JavaClassFilesRel = $(JavaFiles:%.java= $(Package)/%.class)
231     RmiStubFiles = $(RmiSource:%.java= $(PackageTargetDir)/%_Stub.class)
232     RmiSkeletonFiles = $(RmiSource:%.java= $(PackageTargetDir)/%_Skel.class)
233     JniClassFiles = $(JniSource:%.java= $(PackageTargetDir)/%.class)
234     JniHeaders = $(JniSource:%.java= $(PackageSourceDir)/%.h)
235     ObjectFiles = $(CFiles:%.c= $(PackageTargetDir)/%.o)\
236 tim 23 $(CppFiles:%.cpp= $(PackageTargetDir)/%.o)\
237 tim 36 $(FortranFiles:%.f= $(PackageTargetDir)/%.o)\
238     $(F90Files:%.F90= $(PackageTargetDir)/%.o)\
239     $(LexFiles:%.l= $(PackageTargetDir)/%.o)\
240     $(YaccFiles:%.y= $(PackageTargetDir)/%.o)
241 gezelter 19 ParallelObjectFiles = $(CFiles:%.c= $(PackageParallelTargetDir)/%.o)\
242 tim 36 $(CppFiles:%.cpp= $(PackageParallelTargetDir)/%.o)\
243     $(FortranFiles:%.f= $(PackageParallelTargetDir)/%.o)\
244     $(F90Files:%.F90= $(PackageParallelTargetDir)/%.o)\
245     $(LexFiles:%.l= $(PackageParallelTargetDir)/%.o)\
246     $(YaccFiles:%.y= $(PackageParallelTargetDir)/%.o)
247 gezelter 19
248     DerivedSource = $(YaccFiles:%.y= %.h) \
249 tim 36 $(YaccFiles:%.y= %.c) \
250     $(LexFiles:%.l= %.c)
251 gezelter 19
252     DerivedCFiles = $(YaccFiles:%.y= %.c) \
253 tim 36 $(LexFiles:%.l= %.c)
254 gezelter 19
255     OtherTargetFiles = $(OtherSourceFiles:%=$(PackageTargetDir)/%)
256    
257 gezelter 460 ###########################################################################
258     #
259     # Figure out the names of the module files based on some work done by
260     # configure. The tr function below is from John Graham-Cumming
261     # (http://www.jgc.org).
262     #
263     # The tr function. Has three arguments:
264     #
265     # $1 The list of characters to translate from
266     # $2 The list of characters to translate to
267     # $3 The text to translate
268     #
269     # For example, $(call tr,A B C,1 2 3,CAPITAL) becomes 21PIT1L.
270    
271     tr = $(eval __t := $3) \
272     $(foreach c, \
273     $(join $(addsuffix :,$1),$2), \
274     $(eval __t := \
275     $(subst $(word 1,$(subst :, ,$c)),$(word 2,$(subst :, ,$c)), \
276     $(__t))))$(__t)
277    
278     # Common character classes for use with the tr function. Each of
279     # these is actually a variable declaration and must be wrapped with
280     # $() or ${} to be used.
281    
282     [A-Z] := A B C D E F G H I J K L M N O P Q R S T U V W X Y Z #
283     [a-z] := a b c d e f g h i j k l m n o p q r s t u v w x y z #
284     [0-9] := 0 1 2 3 4 5 6 7 8 9 #
285     [A-F] := A B C D E F #
286    
287 gezelter 461 # Figure out whether we have $(eval) or not (GNU Make 3.80 and above)
288     # if we do not then we need to use the shell version of tr, and not the
289     # faster tr function above:
290 gezelter 460
291 gezelter 461 __have_eval := $(false)
292     __ignore := $(eval __have_eval := $(true))
293 gezelter 460
294 gezelter 461 ifndef __have_eval
295 gezelter 462 uc = $(shell echo $1 | tr "a-z" "A-Z")
296 gezelter 461 lc = $(shell echo $1 | tr "A-Z" "a-z")
297     else
298     uc = $(call tr,$([a-z]),$([A-Z]),$1)
299     lc = $(call tr,$([A-Z]),$([a-z]),$1)
300     endif
301    
302 gezelter 460 # OK, now we can actually use these functions to figure out the names
303     # of the module files:
304    
305     ifneq "$(words $(Modules))" "0"
306     ifeq "$(ModuleCase)" "UPPER"
307     MODULES = $(call uc,$(Modules))
308     else
309     ifeq "$(ModuleCase)" "lower"
310     MODULES = $(call lc,$(Modules))
311     else
312     MODULES = $(Modules)
313     endif
314     endif
315     ModuleFiles = $(MODULES:%= $(PackageTargetDir)/%.$(ModSuffix))
316     ParallelModuleFiles = $(MODULES:%= $(PackageParallelTargetDir)/%.$(ModSuffix))
317     endif
318     #
319     ###########################################################################
320    
321 gezelter 19 ThirdPartyJarsTmp = $(patsubst %,$(LibDir)/%,$(JavaLibraries))
322     ThirdPartyJars = $(subst $(Space),$(X),$(ThirdPartyJarsTmp))
323    
324     ifneq "$(words $(JavaFiles))" "0"
325     JavaPackageName = $(subst /,.,$(Package))
326     JarFile = $(LibDir)/$(subst /,,$(Package)).jar
327     endif
328    
329     #if Main is defined, do not build library. It may not be true sometimes
330     ifneq "$(words $(ObjectFiles) $(ParallelObjectFiles))" "0"
331     DependencyFile = $(PackageSourceDir)/Makedepend
332 gezelter 442 ifneq "$(words $(Main))" "0"
333 tim 23 Executable = $(BinDir)/$(Main)
334 tim 447 ifeq "$(BuiltParallelExe)" "1"
335     ParallelExecutable = $(BinDir)/$(Main)_MPI
336     endif
337 gezelter 19 else
338 tim 39 SharedLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package)))_UP.so
339     StaticLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package)))_UP.a
340     ParallelSharedLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package)))_MPI.so
341     ParallelStaticLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package)))_MPI.a
342 gezelter 19 endif
343     endif
344 tim 52
345 gezelter 19 #
346     # Misc
347     #
348     ClassPath = $(JRE)$(X)$(TargetDir)$(X)$(ThirdPartyJars)
349     JavaPackageNames = $(subst /,.,$(JavaPackages))
350     IncludePath = -I$(SourceDir) $(IncludeDirs:%=-I%)
351     LibDirs = -L$(LibDir) $(LibraryDirs:%=-L%)
352 tim 39 LocalLibs = $(subst /,,$(patsubst %, oopse_%_UP, $(PackageLibs)))
353     ParallelLocalLibs= $(subst /,,$(patsubst %, oopse_%_MPI, $(PackageLibs)))
354 gezelter 32 LibList = $(LocalLibs:%=-l%) $(Libraries)
355 tim 39 LibNames = $(LocalLibs:%=$(LibDir)/lib%.a)
356 tim 36 ParallelLibList = $(ParallelLocalLibs:%=-l%) $(Libraries)
357 tim 39 ParallelLibNames = $(ParallelLocalLibs:%=$(LibDir)/lib%.a)
358 gezelter 19
359    
360     #---------------------------------------------------------------------------
361     #
362     # Tools & Options
363     #
364     #---------------------------------------------------------------------------
365     Print = @echo
366 gezelter 246 Move = mv -f
367 gezelter 19 Copy = cp
368     CCompiler = @CC@
369     CppCompiler = @CXX@
370     Linker = @CXX@
371     MakeDepend = makedepend
372 gezelter 757 LN_S = @LN_S@
373 gezelter 60 INSTALL = @INSTALL@
374 gezelter 775 EGREP = @EGREP@
375 gezelter 19 InstallProgram = @INSTALL_PROGRAM@
376 gezelter 442 InstallScript = @INSTALL_SCRIPT@
377 gezelter 19 InstallData = @INSTALL_DATA@
378 gezelter 254 MkDir = @MKINSTALLDIRS@
379 gezelter 520 Delete = rm -f
380 gezelter 19 StaticArchiver = @AR@
381     DynamicArchiver = @CC@
382     FortranCompiler = @FC@
383     JavaCompiler = $(JAVA_HOME)/bin/javac
384     JavaArchiver = $(JAVA_HOME)/bin/jar
385     JarSigner = $(JAVA_HOME)/bin/jarsigner
386     JavadocGenerator = $(JAVA_HOME)/bin/javadoc
387     JniCompiler = $(JAVA_HOME)/bin/javah
388     RmiCompiler = $(JAVA_HOME)/bin/rmic
389     JavaExecute = $(JAVA_HOME)/bin/java
390     Purify = purify
391     WordCount = wc
392     List = cat
393     Yacc = @YACC@
394     Lex = @LEX@
395 tim 39 Ranlib = @RANLIB@
396 tim 48 Doxygen = @DOXYGEN@
397 gezelter 19
398 tim 25 MakeOptions = -k
399 gezelter 19 MakeDependOptions =
400     StaticArchiverOptions = rc
401     DynamicArchiverOptions = -shared
402     JavaArchiverOptions =
403     JniOptions =
404     RmiOptions = -d $(TargetDir) -classpath $(ClassPath) \
405     -sourcepath $(SourceDir)
406 tim 964 COptions = $(FrcDeclare) $(SingleDeclare) @CFLAGS@
407     CParallelOptions = $(FrcDeclare) $(SingleDeclare) $(ParallelDeclare) @CFLAGS@
408 chuckv 1193 CppOptions = $(FrcDeclare) $(SingleDeclare) @CXXFLAGS@ @CGAL_CPPFLAGS@
409     CppParallelOptions = $(FrcDeclare) $(SingleDeclare) $(ParallelDeclare) @CXXFLAGS@ @CGAL_CPPFLAGS@
410 gezelter 962 ifeq "$(UseSingle)" "yes"
411     FortranOptions = @FCFLAGS@ @MODDIRFLAG@$(SourceDir) @MODDIRFLAG@$(TargetDir) @PREPDEFFLAG@$(SingleDeclare) @FCFLAGS_SRCEXT@
412     FortranParallelOptions = @FCFLAGS@ @MODDIRFLAG@$(SourceDir) @MODDIRFLAG@$(ParallelTargetDir) @PREPDEFFLAG@$(SingleDeclare) @PREPDEFFLAG@$(ParallelDeclare) @FCFLAGS_SRCEXT@
413     else
414 gezelter 848 FortranOptions = @FCFLAGS@ @MODDIRFLAG@$(SourceDir) @MODDIRFLAG@$(TargetDir) @FCFLAGS_SRCEXT@
415 chuckv 928 FortranParallelOptions = @FCFLAGS@ @MODDIRFLAG@$(SourceDir) @MODDIRFLAG@$(ParallelTargetDir) @PREPDEFFLAG@$(ParallelDeclare) @FCFLAGS_SRCEXT@
416 gezelter 962 endif
417 gezelter 19 JavaCompilerOptions = -d $(TargetDir) -classpath $(ClassPath) \
418     -sourcepath $(SourceDir) -deprecation
419     JavaRunOptions = -classpath $(ClassPath)
420     PurifyOptions =
421     JavadocOptions = -d $(DocsDir) \
422     -sourcepath $(SourceDir) \
423     -classpath $(ClassPath) \
424     -author \
425     -package \
426     -use \
427     -splitIndex \
428     -version \
429     -link file:$(JAVA_HOME)/docs/api \
430     -windowtitle $(JavadocWindowTitle) \
431     -doctitle $(JavadocDocTitle) \
432     -header $(JavadocHeader) \
433     -bottom $(JavadocFooter)
434     WordCountOptions = --lines
435    
436     Empty =
437     Space = $(Empty) $(Empty)
438    
439    
440     #---------------------------------------------------------------------------
441     #
442 tim 52 # Install
443     #
444     #---------------------------------------------------------------------------
445    
446     ifneq "$(words $(SampleFiles))" "0"
447 tim 54 MySample = $(subst $(shell cd $(DEV_ROOT)/samples; pwd)/,,$(CurrentDir))
448     MyInstallDir = $(SampleSimDir)/$(MySample)
449     InstallFiles = $(SampleFiles)
450     InstallCommand = $(InstallData)
451 tim 52 endif
452    
453 gezelter 1012 ifneq "$(words $(ScriptFiles))" "0"
454     MyInstallDir = $(InstallBinDir)
455     InstallFiles = $(ScriptFiles)
456     InstallCommand = $(InstallProgram)
457     endif
458    
459 gezelter 1167 ifneq "$(words $(DocFiles))" "0"
460     MyInstallDir = $(InstallDocDir)
461     InstallFiles = $(DocFiles)
462     InstallCommand = $(InstallData)
463     endif
464    
465     ifneq "$(words $(RootFiles))" "0"
466     MyInstallDir = $(OopseHome)
467     InstallFiles = $(RootFiles)
468     InstallCommand = $(InstallData)
469     endif
470    
471 tim 52 ifneq "$(words $(Main))" "0"
472 tim 54 MyInstallDir = $(InstallBinDir)
473     ifeq "$(UseMPI)" "yes"
474     InstallFiles = $(Executable) $(ParallelExecutable)
475     else
476     InstallFiles = $(Executable)
477     endif
478     InstallCommand = $(InstallProgram)
479 tim 758 ifneq "$(words $(LinkTargets))" "0"
480     MyLinkSource = $(patsubst %, $(MyInstallDir)/%,$(Main))
481     MyLinkTargets = $(patsubst %, $(MyInstallDir)/%,$(LinkTargets))
482     endif
483 tim 52 endif
484    
485 tim 53 ifneq "$(words $(ForcefieldFiles))" "0"
486 tim 54 MyInstallDir = $(ForceParamDir)
487     InstallFiles = $(ForcefieldFiles)
488     InstallCommand = $(InstallData)
489 tim 52 endif
490    
491     ifneq "$(words $(InstallFiles))" "0"
492     InstallList =
493     else
494 tim 53 InstallList = $(patsubst %,$(DEV_ROOT)/%,$(Samples)) $(DEV_ROOT)/forceFields $(patsubst %, $(SourceDir)/%,$(Applications))
495 tim 52 endif
496    
497     InstallListLoop = $(patsubst %,$(SourceDir)/%/.install,$(PackageList)) $(patsubst %,%/.install,$(InstallList))
498    
499    
500    
501     #---------------------------------------------------------------------------
502     #
503 gezelter 19 # Rules
504     #
505     #---------------------------------------------------------------------------
506     default : build
507    
508     %.loop :
509     @$(MAKE) $(MakeOptions) -C $(subst .loop,,$@) _$(MAKECMDGOALS)all
510    
511     # Create target directory
512     $(PackageTargetDir) :
513 gezelter 254 $(MkDir) $@
514 gezelter 19
515 gezelter 254 $(BinDir) :
516     $(MkDir) $@
517    
518 gezelter 19 # .c -> .o
519 gezelter 520 $(PackageTargetDir)/%.o : %.c $(MainMakefile)
520 gezelter 19 $(Print) $@
521 tim 25 $(CCompiler) $(COptions) -c $(IncludePath) $< -o $@
522 gezelter 19
523 gezelter 520 $(PackageParallelTargetDir)/%.o : %.c $(MainMakefile)
524 tim 36 $(Print) $@
525     $(CCompiler) $(CParallelOptions) -c $(IncludePath) $< -o $@
526    
527     ifeq "$(UseMPI)" "yes"
528 gezelter 520 %.o : %.c $(MainMakefile)
529 gezelter 19 $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
530 tim 36 $(MAKE) $(MakeOptions) $(PackageParallelTargetDir)/$@
531     else
532 gezelter 520 %.o : %.c $(MainMakefile)
533 tim 36 $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
534     endif
535 gezelter 19
536     # .cpp -> .o
537 gezelter 520 $(PackageTargetDir)/%.o : %.cpp $(MainMakefile)
538 gezelter 19 $(CppCompiler) $(CppOptions) -c $(IncludePath) $< -o $@
539    
540 gezelter 520 $(PackageParallelTargetDir)/%.o : %.cpp $(MainMakefile)
541 tim 36 $(CppCompiler) $(CppParallelOptions) -c $(IncludePath) $< -o $@
542    
543     ifeq "$(UseMPI)" "yes"
544 gezelter 520 %.o : %.cpp $(MainMakefile)
545 gezelter 19 $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
546 tim 36 $(MAKE) $(MakeOptions) $(PackageParallelTargetDir)/$@
547     else
548 gezelter 520 %.o : %.cpp $(MainMakefile)
549 tim 36 $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
550     endif
551 gezelter 19
552     # .f -> .o
553 gezelter 520 $(PackageTargetDir)/%.o : %.f $(MainMakefile)
554 tim 25 $(FortranCompiler) $(FortranOptions) -c $< -o $@
555 gezelter 19
556 gezelter 520 $(PackageParallelTargetDir)/%.o : %.f $(MainMakefile)
557 tim 36 $(FortranCompiler) $(FortranParallelOptions) -c $< -o $@
558    
559     ifeq "$(UseMPI)" "yes"
560 gezelter 520 %.o : %.f $(MainMakefile)
561 gezelter 19 $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
562 tim 36 $(MAKE) $(MakeOptions) $(PackageParallelTargetDir)/$@
563     else
564 gezelter 520 %.o : %.f $(MainMakefile)
565 tim 36 $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
566     endif
567 gezelter 19
568     # .F90 -> .o
569 gezelter 520 $(PackageTargetDir)/%.o : %.F90 $(MainMakefile)
570 gezelter 848 $(FortranCompiler) $(FortranOptions) $(IncludePath) -c $< -o $@
571 gezelter 246 if test -n "`ls *.$(ModSuffix)`"; then \
572     $(Move) `ls *.$(ModSuffix)` $(PackageTargetDir);\
573     fi
574 gezelter 19
575 gezelter 520 $(PackageParallelTargetDir)/%.o : %.F90 $(MainMakefile)
576 gezelter 848 $(FortranCompiler) $(FortranParallelOptions) $(IncludePath) -c $< -o $@
577 gezelter 246 if test -n "`ls *.$(ModSuffix)`"; then \
578     $(Move) "`ls *.$(ModSuffix)`" $(PackageParallelTargetDir);\
579     fi
580 tim 36
581     ifeq "$(UseMPI)" "yes"
582 gezelter 520 %.o : %.F90 $(MainMakefile)
583 gezelter 19 $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
584 tim 248 if test -n "`ls *.$(ModSuffix)`"; then\
585     $(Move) "`ls *.$(ModSuffix)`" $(PackageTargetDir);\
586 chuckv 242 fi
587 tim 61
588 tim 36 $(MAKE) $(MakeOptions) $(PackageParallelTargetDir)/$@
589 tim 249 if test -n "`ls *.$(ModSuffix)`"; then\
590     $(Move) "`ls *.$(ModSuffix)`" $(PackageTargetDir);\
591     fi
592 tim 61
593 tim 36 else
594 gezelter 520 %.o : %.F90 $(MainMakefile)
595 tim 36 $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
596 tim 248 if test -n "`ls *.$(ModSuffix)`"; then\
597     $(Move) "`ls *.$(ModSuffix)`" $(PackageTargetDir);\
598 chuckv 242 fi
599 tim 36 endif
600 gezelter 19
601 tim 36
602 gezelter 19 # .java -> .class
603     $(PackageTargetDir)/%.class : $(PackageSourceDir)/%.java
604 tim 25 $(JavaCompiler) $(JavaCompilerOptions) $<
605 gezelter 19
606     %.class : $(PackageSourceDir)/%.java
607     @$(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
608    
609     # .class -> .h
610     $(PackageSourceDir)/%.h : $(PackageTargetDir)/%.class
611     $(JniCompiler) $(JniOptions) $(JavaPackageName).$*
612    
613     %.h : %.class
614     $(MAKE) $(MakeOptions) $(PackageSourceDir)/$@
615    
616     #.y -> .h
617 tim 23 %.h : %.y
618 tim 25 $(Yacc) -d $?
619 gezelter 19 @$(Move) y.tab.h $*.h
620     @$(Delete) y.tab.c
621    
622     #.y -> .c
623 tim 23 %.c : %.y
624 tim 25 $(Yacc) -d $?
625 gezelter 19 @$(Move) y.tab.c $*.c
626     @$(Delete) y.tab.h
627    
628     # .l -> .c
629 tim 23 %.c : %.l
630 gezelter 19 $(Print) $@
631     $(Print) $(Lex) -o$@ $?
632     @$(Lex) -o$@ $?
633    
634     # .o -> .a
635 tim 36
636 tim 39 $(LibDir)/%_UP.a : $(ObjectFiles)
637 tim 25 $(StaticArchiver) $(StaticArchiverOptions) $@ $(ObjectFiles)
638 tim 40 @touch $(LibDir)/.stamp_UP
639 gezelter 19
640 tim 39 $(LibDir)/%_MPI.a: $(ParallelObjectFiles)
641 tim 25 $(StaticArchiver) $(StaticArchiverOptions) $@ $(ParallelObjectFiles)
642 tim 40 @touch $(LibDir)/.stamp_MPI
643 gezelter 19
644 tim 39 %_UP.a : $(ObjectFiles)
645 gezelter 19 $(MAKE) $(MakeOptions) $(LibDir)/$@
646 tim 39
647     %_MPI.a : $(ParallelObjectFiles)
648 tim 36 $(MAKE) $(MakeOptions) $(LibDir)/$@
649 gezelter 19
650     # .o -> .so
651 tim 39 $(LibDir)/%_UP.so : $(ObjectFiles)
652 gezelter 19 $(DynamicArchiver) $(ObjectFiles) $(DynamicArchiverOptions) -o $@
653    
654 tim 39 $(LibDir)/%_MPI.so : $(ParallelObjectFiles)
655 gezelter 19 $(DynamicArchiver) $(ParallelObjectFiles) $(DynamicArchiverOptions) -o $@
656    
657 tim 39 %_UP.so : $(ObjectFiles)
658 gezelter 19 $(MAKE) $(MakeOptions) $(LibDir)/$@
659 tim 39
660     %_MPI.so : $(ParallelObjectFiles)
661 tim 36 $(MAKE) $(MakeOptions) $(LibDir)/$@
662 gezelter 19
663     # .class -> .jar
664     $(LibDir)/%.jar : $(JavaClassFiles) $(OtherTargetFiles)
665     $(Print) $@
666     @cd $(TargetDir); $(JavaArchiver) -cf $@ \
667     $(JavaClassFilesRel) $(OtherTargetFiles)
668    
669     %.jar : $(JavaClassFiles) $(OtherTargetFiles)
670     $(MAKE) $(MakeOptions) $(LibDir)/$@
671    
672     # .class -> JavaDoc
673     javadoc :
674     $(Print) $(JavaPackageNames) > $(DEV_ROOT)/packages.tmp
675     $(JavadocGenerator) $(JavadocOptions) @$(DEV_ROOT)/packages.tmp
676     $(Delete) $(DEV_ROOT)/packages.tmp
677     $(Print) Done JavaDoc.
678    
679     # .class -> _Stub.class
680     $(PackageTargetDir)/%_Stub.class : $(PackageTargetDir)/%.class
681     $(Print) $@
682     $(RmiCompiler) $(RmiOptions) $(JavaPackageName).$*
683    
684     %_Stub.class : %.class
685     $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
686    
687     # .class -> _Skel.class
688     $(PackageTargetDir)/%_Skel.class : $(PackageTargetDir)/%.class
689     $(Print) $@
690     $(RmiCompiler) $(RmiOptions) $(JavaPackageName).$*
691    
692     %_Skel.class : %.class
693     $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
694    
695 tim 48 document :
696     $(Print) Generate Documentation for OOPSE-2.0
697     @cd $(DEV_ROOT)/src
698     $(Doxygen) $(DEV_ROOT)/make/Doxyfile
699    
700 tim 39 #GUN make funtions to merge the libraries
701 gezelter 775 find_objs = $(shell $(StaticArchiver) -t $(1) | $(EGREP) -v "SYMDEF")
702 tim 39 extract_objs = $(shell $(StaticArchiver) -x $(1) $(call find_objs, $(1)))
703     create_archive = $(shell $(StaticArchiver) $(StaticArchiverOptions) $(2) $(call find_objs, $(1)))
704     remove_objs = $(shell $(Delete) $(call find_objs, $(1)))
705     do_create = $(call extract_objs,$(1))$(call create_archive,$(1),$(2))$(call remove_objs,$(1))
706 gezelter 757 do_link = $(shell $(LN_S) $(1) $(2))
707 gezelter 775 all_objs = $(foreach thisLib,$(LibNames), $(call find_objs, $(thisLib)))
708     all_parallel_objs = $(foreach thisLib,$(ParallelLibNames), $(call find_objs, $(thisLib)))
709     all_lib_objs = $(patsubst %,$(TargetDir)/%,$(call all_objs))
710 tim 832 all_lib_parallel_objs = $(patsubst %,$(ParallelTargetDir)/%,$(call all_parallel_objs))
711 tim 39
712 tim 40 $(CombinedStaticLib) : $(LibDir)/.stamp_UP
713 gezelter 775 $(Print) creating $@
714     $(StaticArchiver) $(StaticArchiverOptions) $@ $(call all_lib_objs)
715 tim 39 $(Ranlib) $(CombinedStaticLib)
716    
717     $(CombinedParallelStaticLib) : $(LibDir)/.stamp_MPI
718 gezelter 775 $(Print) creating $@
719     $(StaticArchiver) $(StaticArchiverOptions) $@ $(call all_lib_parallel_objs)
720 tim 39 $(Ranlib) $(CombinedParallelStaticLib)
721    
722 gezelter 19 # Executable
723 gezelter 858 $(Executable) : $(CombinedStaticLib) $(ObjectFiles)
724     if test ! -d $(BinDir); then \
725     $(MkDir) $(BinDir) ;\
726     fi
727 tim 252 $(Linker) $(ObjectFiles) $(CombinedStaticLib) $(LinkOptions) $(LibDirs) $(Libraries) -o $@
728 gezelter 19
729 gezelter 858 $(ParallelExecutable) : $(CombinedParallelStaticLib) $(ParallelObjectFiles)
730     if test ! -d $(BinDir); then \
731     $(MkDir) $(BinDir) ;\
732     fi
733 tim 252 $(Linker) $(ParallelObjectFiles) $(CombinedParallelStaticLib) $(ParallelLinkOptions) $(LibDirs) $(Libraries) -o $@
734 gezelter 19
735     # Anything else is just copied from source to target
736     $(PackageTargetDir)/% : $(PackageSourceDir)/%
737     $(Print) $@
738     $(Copy) $< $@
739    
740     # make (or make build)
741     build : $(PackageListLoop)
742     $(Print) Done build.
743    
744     _all : _buildall
745    
746 tim 52 _buildall :
747 tim 36 ifeq "$(UseMPI)" "yes"
748 gezelter 19 _buildall : \
749     $(DependencyFile) \
750     $(PackageTargetDir) \
751     $(ObjectFiles) \
752 tim 36 $(ParallelObjectFiles) \
753 gezelter 19 $(JavaClassFiles) \
754     $(RmiStubFiles) \
755     $(RmiSkeletonFiles) \
756     $(OtherTargetFiles) \
757     $(StaticLibrary) \
758 tim 36 $(ParallelStaticLibrary) \
759 gezelter 19 $(JarFile) \
760 tim 36 $(Executable) \
761     $(ParallelExecutable)
762     else
763     _buildall : \
764     $(DependencyFile) \
765     $(PackageTargetDir) \
766     $(ObjectFiles) \
767     $(JavaClassFiles) \
768     $(RmiStubFiles) \
769     $(RmiSkeletonFiles) \
770     $(OtherTargetFiles) \
771     $(StaticLibrary) \
772     $(JarFile) \
773     $(Executable)
774     endif
775 gezelter 19
776 gezelter 460 echo : $(PackageListLoop)
777     $(Print) Done echo.
778 tim 36
779 gezelter 460 _echoall :
780     $(Print) $(Modules)
781    
782 gezelter 19 # make clean
783     clean : $(PackageListLoop)
784     $(Print) Done clean.
785    
786     _cleanall :
787 gezelter 383 $(Delete) \
788     $(ObjectFiles) \
789 gezelter 460 $(ModuleFiles) \
790 gezelter 383 $(ParallelObjectFiles) \
791 gezelter 460 $(ParallelModuleFiles) \
792 gezelter 383 $(JarFile) \
793     $(SharedLibrary) \
794     $(StaticLibrary) \
795     $(ParallelSharedLibrary) \
796     $(ParallelStaticLibrary) \
797     $(CombinedStaticLib) \
798     $(CombinedParallelStaticLib)
799 tim 25
800     # make distclean
801     distclean : $(PackageListLoop)
802     $(Print) Done clean.
803    
804 gezelter 383 _distcleanall : _cleanall
805     $(Delete) $(Executable) \
806 tim 25 $(ParallelExecutable) \
807 tim 34 $(DependencyFile)
808 gezelter 19
809     # make depend
810     depend : $(PackageListLoop)
811     $(Print) Done dependencies.
812    
813     _dependall : $(DependencyFile)
814    
815     $(DependencyFile) : $(DerivedSource)
816     $(Print) $@
817     @cd $(PackageSourceDir)
818 tim 21
819     ifneq "$(words $(CppFiles))" "0"
820 tim 64 $(DEV_ROOT)/scripts/filepp -I $(DEV_ROOT)/src -od '$$(TargetDir)/' -MM $(CppFiles)>> Make.cpptemp
821     @cat Make.cpptemp >> $(DependencyFile)
822 gezelter 44 $(Delete) Make.cpptemp
823 tim 62
824     ifeq "$(UseMPI)" "yes"
825 tim 64 $(DEV_ROOT)/scripts/filepp -I $(DEV_ROOT)/src -od '$$(ParallelTargetDir)/' $(ParallelDeclare) -MM $(CppFiles)>> Make.cpptemp
826     @cat Make.cpptemp >> $(DependencyFile)
827 tim 48 @$(Delete) Make.cpptemp
828 tim 62 endif
829    
830 gezelter 19 endif
831 tim 21
832     ifneq "$(words $(CFiles))" "0"
833 tim 64 $(DEV_ROOT)/scripts/filepp -I $(DEV_ROOT)/src -od '$$(TargetDir)/' -MM $(CFiles) $(DerivedCFiles) >> Make.ctemp
834     @cat Make.ctemp >> $(DependencyFile)
835 gezelter 44 $(Delete) Make.ctemp
836 tim 62
837     ifeq "$(UseMPI)" "yes"
838 tim 64 $(DEV_ROOT)/scripts/filepp -I $(DEV_ROOT)/src -od '$$(ParallelTargetDir)/' $(ParallelDeclare) -MM $(CFiles) $(DerivedCFiles) >> Make.ctemp
839     @cat Make.ctemp >> $(DependencyFile)
840 tim 48 @$(Delete) Make.ctemp
841 tim 62 endif
842    
843 gezelter 19 endif
844 tim 21
845     ifneq "$(words $(F90Files))" "0"
846 tim 64 $(DEV_ROOT)/scripts/filepp -I $(DEV_ROOT)/src -od '$$(TargetDir)/' $(F90Declare) -MM -mc $(ModuleCase) -ms $(ModSuffix) $(F90Files) > Make.ftemp
847 tim 62 @cat Make.ftemp >> $(DependencyFile)
848     @$(Delete) Make.ftemp
849    
850     ifeq "$(UseMPI)" "yes"
851 tim 64 $(DEV_ROOT)/scripts/filepp -I $(DEV_ROOT)/src -od '$$(ParallelTargetDir)/' $(ParallelDeclare) $(F90Declare) -MM -mc $(ModuleCase) -ms $(ModSuffix) $(F90Files) >> Make.ftemp
852 tim 48 @cat Make.ftemp >> $(DependencyFile)
853     @$(Delete) Make.ftemp
854 tim 62 endif
855    
856 gezelter 19 endif
857    
858     # make lib
859     lib : $(PackageListLoop)
860     $(Print) Libraries built.
861    
862     _liball : $(JarFile) $(SharedLibrary) $(StaticLibrary)
863    
864     jar : $(JarFile)
865    
866     jarsign : $(JarFile)
867     $(JarSigner) -keystore GeoSoftKeystore $(JarFile) myself
868    
869 tim 52 #make install
870     %.install :
871     @$(MAKE) $(MakeOptions) -C $(subst .install,,$@) _installall
872    
873     install : $(InstallListLoop)
874     $(Print) Done Install
875    
876 gezelter 757 _installall : _buildall _installdata _installlinks
877 tim 52
878     $(MyInstallDir) :
879     $(MkDir) $@
880    
881     _installdata : $(MyInstallDir)
882     $(Print) $(InstallFiles)
883     ifneq "$(words $(InstallFiles))" "0"
884 gezelter 442 $(InstallCommand) $(InstallFiles) $(MyInstallDir)
885 tim 52 endif
886 gezelter 246
887 gezelter 757 _installlinks : $(MyInstallDir)
888 tim 758 ifneq "$(words $(MyLinkTargets))" "0"
889 gezelter 757 @cd $(MyInstallDir)
890 tim 758 $(foreach thisLink,$(MyLinkTargets),$(call do_link,$(MyLinkSource),$(thisLink)))
891 gezelter 757 endif
892    
893 gezelter 19 # make statistics
894     _statisticsall :
895 tim 40 @$(Print) $(patsubst %,$(CurrentDir)/%,$(SourceFiles)) >> $(DEV_ROOT)/files.tmp
896 gezelter 19
897     statistics : $(PackageListLoop)
898     @$(List) $(DEV_ROOT)/files.tmp | xargs $(WordCount) $(WordCountOptions)
899     @$(Delete) $(DEV_ROOT)/files.tmp
900     $(Print) Done statistics.
901    
902     # make pure
903 tim 745 #$(Executable).pure :
904     # $(Purify) $(PurifyOptions) $(CppCompiler) $(LinkOptions) $(LibDirs) \
905     # $(LibList) $(ObjectFiles) -o $@
906     #
907     #pure : $(Executable).pure
908 gezelter 19
909 tim 34 #make cvslog
910     cvslog:
911 gezelter 502 $(DEV_ROOT)/scripts/cvs2cl
912 tim 34
913 gezelter 19 # Execute
914     _runexe :
915     $(Executable) $(RunParameters)
916    
917     _runjava :
918     $(JavaExecute) $(JavaRunOptions) $(JavaMainClass) $(RunParameters)
919    
920     run : _runjava
921    
922    
923     ifdef $(DependencyFile)
924     -include $(DependencyFile)
925     endif