ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-2.0/make/Makefile.in
Revision: 2101
Committed: Thu Mar 10 15:10:24 2005 UTC (19 years, 3 months ago) by chrisfen
File size: 22957 byte(s)
Log Message:
First commit of the new restraints code

File Contents

# User Rev Content
1 gezelter 1508 #---------------------------------------------------------------------------
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 1514 IS_UNIX=1
37 tim 1529
38     #packages containing libraries
39     PackageLibs = \
40 tim 1514 utils \
41 gezelter 1930 visitors \
42 tim 1514 math \
43     types \
44     primitives \
45     UseTheForce/DarkSide \
46     UseTheForce \
47     brains \
48     io \
49 gezelter 1930 integrators\
50 tim 1514 constraints \
51 chrisfen 1715 minimizers \
52 tim 1984 selection \
53 chrisfen 2101 restraints \
54 tim 1529
55     #packages containing applications
56     Applications = \
57 tim 1514 applications/oopse \
58     applications/dump2Xyz \
59 gezelter 1930 applications/simpleBuilder\
60 tim 2011 applications/staticProps \
61     applications/dynamicProps \
62 gezelter 1508
63 gezelter 1535 Samples = \
64     samples/argon \
65     samples/water/dimer \
66     samples/water/spce \
67     samples/water/ssd \
68     samples/water/ssde \
69     samples/water/tip3p_ice \
70     samples/water/tip4p \
71     samples/lipid \
72     samples/alkane \
73     samples/minimizer \
74     samples/metals \
75     samples/zcons \
76    
77 tim 1514 IncludeDirs = \
78 gezelter 1521 @MPI_INC_DIR@
79 tim 1514
80     LibraryDirs = \
81 gezelter 1521 @MPI_LIB_DIR@
82 tim 1514
83     Libraries = \
84 tim 1525 @MPI_LIB@ \
85     @MPI_F90_LIB@
86 tim 1514
87 gezelter 1521 OopseHome = @OOPSE_HOME@
88 gezelter 1552 ForceParamDir = $(OopseHome)/share/forceFields
89     SampleSimDir = $(OopseHome)/share/samples
90     InstallBinDir = $(OopseHome)/bin
91     DocDir = $(OopseHome)/doc
92 gezelter 1521 FrcDeclare = -DFRC_PATH="$(ForceParamDir)"
93 gezelter 1535 F90Declare = -D__FORTRAN90
94 gezelter 1521 ParallelDeclare = -DIS_MPI
95 tim 1525 UseMPI = @USE_MPI@
96 gezelter 1535 ModuleCase = @F90_MODULE_NAMES@
97     ModSuffix = @MOD@
98 tim 1529 LinkOptions = \
99     @F90LIBS@
100 gezelter 1521
101 tim 1529 ParallelLinkOptions = \
102     @F90LIBS@
103    
104    
105 gezelter 1508 #---------------------------------------------------------------------------
106     #
107     # Directories
108     #
109     #---------------------------------------------------------------------------
110    
111     SourceDir = $(DEV_ROOT)/src
112     TargetDir = $(DEV_ROOT)/obj
113     ParallelTargetDir = $(DEV_ROOT)/MPIobj
114     LibDir = $(DEV_ROOT)/lib
115     MakeDir = $(DEV_ROOT)/make
116     BinDir = $(DEV_ROOT)/bin
117     DocsDir = $(DEV_ROOT)/docs
118     CurrentDir = $(CURDIR)
119 tim 1529 CombinedStaticLib = $(LibDir)/libOOPSE.a
120     CombinedParallelStaticLib = $(LibDir)/libOOPSE_MPI.a
121 gezelter 1508
122     ifdef Source
123 tim 1512 #get the relative path of current package to source directory
124     # /home/maul/gezelter/src/code/src/UseTheForce/Darkside --> UseTheForce/Darkside
125     #Package = $(shell echo $(CurrentDir) | sed -e 's/^.*\/src\/\(.*\)/\1/g')
126     #use shell script to get the absolute path and then rip it off from $(CurrentDir)
127 gezelter 1951 #Package = $(subst $(shell cd $(SourceDir); pwd)/,,$(CurrentDir))
128     # REMINDER: We are now using the Package line in each subdir makefile.
129     # This avoids the strange path problem and the subshell
130 tim 1512
131 gezelter 1508 PackageList = $(Package)
132     PackageSourceDir = $(SourceDir)/$(Package)
133     PackageTargetDir = $(TargetDir)
134     PackageParallelTargetDir = $(ParallelTargetDir)
135     JavaMainClass = $(subst /,.,$(Package)).$(Main)
136     else
137 tim 1529 PackageList = $(PackageLibs) $(JavaPackages) $(Applications)
138 gezelter 1508 endif
139    
140 tim 1512 PackageListLoop = $(patsubst %,$(SourceDir)/%/.loop,$(PackageList))
141 gezelter 1508
142 tim 1512 JRE = $(JAVA_HOME)/jre/lib/rt.jar
143 gezelter 1508
144     ifdef IS_UNIX
145     X = :
146     else
147     X = \;
148     endif
149    
150     #---------------------------------------------------------------------------
151     #
152     # Classification of files
153     #
154     #---------------------------------------------------------------------------
155    
156     # Source
157     JavaFiles = $(filter %.java, $(Source))
158     CppFiles = $(filter %.cpp, $(Source))
159     CFiles = $(filter %.c, $(Source))
160     FortranFiles = $(filter %.f, $(Source))
161     F90Files = $(filter %.F90, $(Source))
162     CorbaFiles = $(filter %.idl, $(Source))
163     LexFiles = $(filter %.l, $(Source))
164     YaccFiles = $(filter %.y, $(Source))
165     OtherSourceFiles = $(filter-out $(JavaFiles) $(CppFiles) $(CFiles) \
166     $(FortranFiles) $(F90Files) $(LexFiles) \
167     $(YaccFiles) $(CorbaFiles), \
168     $(Source))
169     ManifestFile = $(PackageSourceDir)/Manifest
170    
171 tim 1512 SourceFiles = $(JavaFiles)\
172     $(CppFiles)\
173     $(CFiles)\
174     $(FortranFiles)\
175     $(F90Files)\
176     $(LexFiles)\
177     $(YaccFiles)
178 gezelter 1508
179     # Target
180     JavaClassFiles = $(JavaFiles:%.java= $(PackageTargetDir)/%.class)
181     JavaClassFilesRel = $(JavaFiles:%.java= $(Package)/%.class)
182     RmiStubFiles = $(RmiSource:%.java= $(PackageTargetDir)/%_Stub.class)
183     RmiSkeletonFiles = $(RmiSource:%.java= $(PackageTargetDir)/%_Skel.class)
184     JniClassFiles = $(JniSource:%.java= $(PackageTargetDir)/%.class)
185     JniHeaders = $(JniSource:%.java= $(PackageSourceDir)/%.h)
186     ObjectFiles = $(CFiles:%.c= $(PackageTargetDir)/%.o)\
187 tim 1512 $(CppFiles:%.cpp= $(PackageTargetDir)/%.o)\
188 tim 1525 $(FortranFiles:%.f= $(PackageTargetDir)/%.o)\
189     $(F90Files:%.F90= $(PackageTargetDir)/%.o)\
190     $(LexFiles:%.l= $(PackageTargetDir)/%.o)\
191     $(YaccFiles:%.y= $(PackageTargetDir)/%.o)
192 gezelter 1508 ParallelObjectFiles = $(CFiles:%.c= $(PackageParallelTargetDir)/%.o)\
193 tim 1525 $(CppFiles:%.cpp= $(PackageParallelTargetDir)/%.o)\
194     $(FortranFiles:%.f= $(PackageParallelTargetDir)/%.o)\
195     $(F90Files:%.F90= $(PackageParallelTargetDir)/%.o)\
196     $(LexFiles:%.l= $(PackageParallelTargetDir)/%.o)\
197     $(YaccFiles:%.y= $(PackageParallelTargetDir)/%.o)
198 gezelter 1508
199     DerivedSource = $(YaccFiles:%.y= %.h) \
200 tim 1525 $(YaccFiles:%.y= %.c) \
201     $(LexFiles:%.l= %.c)
202 gezelter 1508
203     DerivedCFiles = $(YaccFiles:%.y= %.c) \
204 tim 1525 $(LexFiles:%.l= %.c)
205 gezelter 1508
206     OtherTargetFiles = $(OtherSourceFiles:%=$(PackageTargetDir)/%)
207    
208     ThirdPartyJarsTmp = $(patsubst %,$(LibDir)/%,$(JavaLibraries))
209     ThirdPartyJars = $(subst $(Space),$(X),$(ThirdPartyJarsTmp))
210    
211     ifneq "$(words $(JavaFiles))" "0"
212     JavaPackageName = $(subst /,.,$(Package))
213     JarFile = $(LibDir)/$(subst /,,$(Package)).jar
214     endif
215    
216     #if Main is defined, do not build library. It may not be true sometimes
217     ifneq "$(words $(ObjectFiles) $(ParallelObjectFiles))" "0"
218     DependencyFile = $(PackageSourceDir)/Makedepend
219     ifneq "$(Main)" ""
220 tim 1512 Executable = $(BinDir)/$(Main)
221 gezelter 1508 ParallelExecutable = $(BinDir)/$(Main)_MPI
222     else
223 tim 1529 SharedLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package)))_UP.so
224     StaticLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package)))_UP.a
225     ParallelSharedLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package)))_MPI.so
226     ParallelStaticLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package)))_MPI.a
227 gezelter 1508 endif
228     endif
229 tim 1544
230 gezelter 1508 #
231     # Misc
232     #
233     ClassPath = $(JRE)$(X)$(TargetDir)$(X)$(ThirdPartyJars)
234     JavaPackageNames = $(subst /,.,$(JavaPackages))
235     IncludePath = -I$(SourceDir) $(IncludeDirs:%=-I%)
236     LibDirs = -L$(LibDir) $(LibraryDirs:%=-L%)
237 tim 1529 LocalLibs = $(subst /,,$(patsubst %, oopse_%_UP, $(PackageLibs)))
238     ParallelLocalLibs= $(subst /,,$(patsubst %, oopse_%_MPI, $(PackageLibs)))
239 gezelter 1521 LibList = $(LocalLibs:%=-l%) $(Libraries)
240 tim 1529 LibNames = $(LocalLibs:%=$(LibDir)/lib%.a)
241 tim 1525 ParallelLibList = $(ParallelLocalLibs:%=-l%) $(Libraries)
242 tim 1529 ParallelLibNames = $(ParallelLocalLibs:%=$(LibDir)/lib%.a)
243 gezelter 1508
244    
245     #---------------------------------------------------------------------------
246     #
247     # Tools & Options
248     #
249     #---------------------------------------------------------------------------
250     Print = @echo
251 gezelter 1930 Move = mv -f
252 gezelter 1508 Copy = cp
253     CCompiler = @CC@
254     CppCompiler = @CXX@
255     Linker = @CXX@
256     MakeDepend = makedepend
257 gezelter 1552 INSTALL = @INSTALL@
258 gezelter 1508 InstallProgram = @INSTALL_PROGRAM@
259     InstallData = @INSTALL_DATA@
260 gezelter 1938 MkDir = @MKINSTALLDIRS@
261 gezelter 1508 Delete = rm -fr
262     StaticArchiver = @AR@
263     DynamicArchiver = @CC@
264     FortranCompiler = @FC@
265     F90Compiler = @F90@
266     JavaCompiler = $(JAVA_HOME)/bin/javac
267     JavaArchiver = $(JAVA_HOME)/bin/jar
268     JarSigner = $(JAVA_HOME)/bin/jarsigner
269     JavadocGenerator = $(JAVA_HOME)/bin/javadoc
270     JniCompiler = $(JAVA_HOME)/bin/javah
271     RmiCompiler = $(JAVA_HOME)/bin/rmic
272     JavaExecute = $(JAVA_HOME)/bin/java
273     Purify = purify
274     WordCount = wc
275     List = cat
276     Yacc = @YACC@
277     Lex = @LEX@
278 tim 1529 Ranlib = @RANLIB@
279 tim 1539 Doxygen = @DOXYGEN@
280 gezelter 1508
281 tim 1514 MakeOptions = -k
282 gezelter 1508 MakeDependOptions =
283     StaticArchiverOptions = rc
284     DynamicArchiverOptions = -shared
285     JavaArchiverOptions =
286     JniOptions =
287     RmiOptions = -d $(TargetDir) -classpath $(ClassPath) \
288     -sourcepath $(SourceDir)
289 gezelter 2024 COptions = $(FrcDeclare) @CFLAGS@
290 chrisfen 1635 CParallelOptions = $(FrcDeclare) $(ParallelDeclare) @CFLAGS@
291 gezelter 1940 CppOptions = $(FrcDeclare) @CXXFLAGS@ @OOPSE_TEMPLATE_FLAGS@
292     CppParallelOptions = $(FrcDeclare) $(ParallelDeclare) @CXXFLAGS@ @OOPSE_TEMPLATE_FLAGS@
293 gezelter 1508 FortranOptions =
294 tim 1554 F90Options = @PREPFLAG@ @F90FLAGS@ @MODDIRFLAG@$(SourceDir) @MODDIRFLAG@$(TargetDir)
295     F90ParallelOptions = @PREPFLAG@ @F90FLAGS@ @MODDIRFLAG@$(SourceDir) @MODDIRFLAG@$(ParallelTargetDir) @PREPDEFFLAG@$(ParallelDeclare)
296 gezelter 1508 JavaCompilerOptions = -d $(TargetDir) -classpath $(ClassPath) \
297     -sourcepath $(SourceDir) -deprecation
298     JavaRunOptions = -classpath $(ClassPath)
299     PurifyOptions =
300     JavadocOptions = -d $(DocsDir) \
301     -sourcepath $(SourceDir) \
302     -classpath $(ClassPath) \
303     -author \
304     -package \
305     -use \
306     -splitIndex \
307     -version \
308     -link file:$(JAVA_HOME)/docs/api \
309     -windowtitle $(JavadocWindowTitle) \
310     -doctitle $(JavadocDocTitle) \
311     -header $(JavadocHeader) \
312     -bottom $(JavadocFooter)
313     WordCountOptions = --lines
314    
315     Empty =
316     Space = $(Empty) $(Empty)
317    
318    
319     #---------------------------------------------------------------------------
320     #
321 tim 1544 # Install
322     #
323     #---------------------------------------------------------------------------
324    
325     ifneq "$(words $(SampleFiles))" "0"
326 tim 1546 MySample = $(subst $(shell cd $(DEV_ROOT)/samples; pwd)/,,$(CurrentDir))
327     MyInstallDir = $(SampleSimDir)/$(MySample)
328     InstallFiles = $(SampleFiles)
329     InstallCommand = $(InstallData)
330 tim 1544 endif
331    
332     ifneq "$(words $(Main))" "0"
333 tim 1546 MyInstallDir = $(InstallBinDir)
334     ifeq "$(UseMPI)" "yes"
335     InstallFiles = $(Executable) $(ParallelExecutable)
336     else
337     InstallFiles = $(Executable)
338     endif
339     InstallCommand = $(InstallProgram)
340 tim 1544 endif
341    
342 tim 1545 ifneq "$(words $(ForcefieldFiles))" "0"
343 tim 1546 MyInstallDir = $(ForceParamDir)
344     InstallFiles = $(ForcefieldFiles)
345     InstallCommand = $(InstallData)
346 tim 1544 endif
347    
348     ifneq "$(words $(InstallFiles))" "0"
349     InstallList =
350     else
351 tim 1545 InstallList = $(patsubst %,$(DEV_ROOT)/%,$(Samples)) $(DEV_ROOT)/forceFields $(patsubst %, $(SourceDir)/%,$(Applications))
352 tim 1544 endif
353    
354     InstallListLoop = $(patsubst %,$(SourceDir)/%/.install,$(PackageList)) $(patsubst %,%/.install,$(InstallList))
355    
356    
357    
358     #---------------------------------------------------------------------------
359     #
360 gezelter 1508 # Rules
361     #
362     #---------------------------------------------------------------------------
363     default : build
364    
365     %.loop :
366     @$(MAKE) $(MakeOptions) -C $(subst .loop,,$@) _$(MAKECMDGOALS)all
367    
368     # Create target directory
369     $(PackageTargetDir) :
370 gezelter 1938 $(MkDir) $@
371 gezelter 1508
372 gezelter 1938 $(BinDir) :
373     $(MkDir) $@
374    
375 gezelter 1508 # .c -> .o
376 tim 1512 $(PackageTargetDir)/%.o : %.c
377 gezelter 1508 $(Print) $@
378 tim 1514 $(CCompiler) $(COptions) -c $(IncludePath) $< -o $@
379 gezelter 1508
380 tim 1525 $(PackageParallelTargetDir)/%.o : %.c
381     $(Print) $@
382     $(CCompiler) $(CParallelOptions) -c $(IncludePath) $< -o $@
383    
384     ifeq "$(UseMPI)" "yes"
385 tim 1512 %.o : %.c
386 gezelter 1508 $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
387 tim 1525 $(MAKE) $(MakeOptions) $(PackageParallelTargetDir)/$@
388     else
389     %.o : %.c
390     $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
391     endif
392 gezelter 1508
393     # .cpp -> .o
394 tim 1512 $(PackageTargetDir)/%.o : %.cpp
395 gezelter 1508 $(CppCompiler) $(CppOptions) -c $(IncludePath) $< -o $@
396    
397 tim 1525 $(PackageParallelTargetDir)/%.o : %.cpp
398     $(CppCompiler) $(CppParallelOptions) -c $(IncludePath) $< -o $@
399    
400     ifeq "$(UseMPI)" "yes"
401 tim 1512 %.o : %.cpp
402 gezelter 1508 $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
403 tim 1525 $(MAKE) $(MakeOptions) $(PackageParallelTargetDir)/$@
404     else
405     %.o : %.cpp
406     $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
407     endif
408 gezelter 1508
409     # .f -> .o
410 tim 1512 $(PackageTargetDir)/%.o : %.f
411 tim 1514 $(FortranCompiler) $(FortranOptions) -c $< -o $@
412 gezelter 1508
413 tim 1525 $(PackageParallelTargetDir)/%.o : %.f
414     $(FortranCompiler) $(FortranParallelOptions) -c $< -o $@
415    
416     ifeq "$(UseMPI)" "yes"
417 tim 1512 %.o : %.f
418 gezelter 1508 $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
419 tim 1525 $(MAKE) $(MakeOptions) $(PackageParallelTargetDir)/$@
420     else
421     %.o : %.f
422     $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
423     endif
424 gezelter 1508
425     # .F90 -> .o
426 tim 1512 $(PackageTargetDir)/%.o : %.F90
427 tim 1525 $(F90Compiler) $(F90Options) $(IncludePath) -c $< -o $@
428 gezelter 1930 if test -n "`ls *.$(ModSuffix)`"; then \
429     $(Move) `ls *.$(ModSuffix)` $(PackageTargetDir);\
430     fi
431 gezelter 1508
432 tim 1525 $(PackageParallelTargetDir)/%.o : %.F90
433     $(F90Compiler) $(F90ParallelOptions) $(IncludePath) -c $< -o $@
434 gezelter 1930 if test -n "`ls *.$(ModSuffix)`"; then \
435     $(Move) "`ls *.$(ModSuffix)`" $(PackageParallelTargetDir);\
436     fi
437 tim 1525
438     ifeq "$(UseMPI)" "yes"
439 tim 1512 %.o : %.F90
440 gezelter 1508 $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
441 tim 1932 if test -n "`ls *.$(ModSuffix)`"; then\
442     $(Move) "`ls *.$(ModSuffix)`" $(PackageTargetDir);\
443 chuckv 1899 fi
444 tim 1553
445 tim 1525 $(MAKE) $(MakeOptions) $(PackageParallelTargetDir)/$@
446 tim 1933 if test -n "`ls *.$(ModSuffix)`"; then\
447     $(Move) "`ls *.$(ModSuffix)`" $(PackageTargetDir);\
448     fi
449 tim 1553
450 tim 1525 else
451     %.o : %.F90
452     $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
453 tim 1932 if test -n "`ls *.$(ModSuffix)`"; then\
454     $(Move) "`ls *.$(ModSuffix)`" $(PackageTargetDir);\
455 chuckv 1899 fi
456 tim 1525 endif
457 gezelter 1508
458 tim 1525
459 gezelter 1508 # .java -> .class
460     $(PackageTargetDir)/%.class : $(PackageSourceDir)/%.java
461 tim 1514 $(JavaCompiler) $(JavaCompilerOptions) $<
462 gezelter 1508
463     %.class : $(PackageSourceDir)/%.java
464     @$(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
465    
466     # .class -> .h
467     $(PackageSourceDir)/%.h : $(PackageTargetDir)/%.class
468     $(JniCompiler) $(JniOptions) $(JavaPackageName).$*
469    
470     %.h : %.class
471     $(MAKE) $(MakeOptions) $(PackageSourceDir)/$@
472    
473     #.y -> .h
474 tim 1512 %.h : %.y
475 tim 1514 $(Yacc) -d $?
476 gezelter 1508 @$(Move) y.tab.h $*.h
477     @$(Delete) y.tab.c
478    
479     #.y -> .c
480 tim 1512 %.c : %.y
481 tim 1514 $(Yacc) -d $?
482 gezelter 1508 @$(Move) y.tab.c $*.c
483     @$(Delete) y.tab.h
484    
485     # .l -> .c
486 tim 1512 %.c : %.l
487 gezelter 1508 $(Print) $@
488     $(Print) $(Lex) -o$@ $?
489     @$(Lex) -o$@ $?
490    
491     # .o -> .a
492 tim 1525
493 tim 1529 $(LibDir)/%_UP.a : $(ObjectFiles)
494 tim 1514 $(StaticArchiver) $(StaticArchiverOptions) $@ $(ObjectFiles)
495 tim 1530 @touch $(LibDir)/.stamp_UP
496 gezelter 1508
497 tim 1529 $(LibDir)/%_MPI.a: $(ParallelObjectFiles)
498 tim 1514 $(StaticArchiver) $(StaticArchiverOptions) $@ $(ParallelObjectFiles)
499 tim 1530 @touch $(LibDir)/.stamp_MPI
500 gezelter 1508
501 tim 1529 %_UP.a : $(ObjectFiles)
502 gezelter 1508 $(MAKE) $(MakeOptions) $(LibDir)/$@
503 tim 1529
504     %_MPI.a : $(ParallelObjectFiles)
505 tim 1525 $(MAKE) $(MakeOptions) $(LibDir)/$@
506 gezelter 1508
507     # .o -> .so
508 tim 1529 $(LibDir)/%_UP.so : $(ObjectFiles)
509 gezelter 1508 $(DynamicArchiver) $(ObjectFiles) $(DynamicArchiverOptions) -o $@
510    
511 tim 1529 $(LibDir)/%_MPI.so : $(ParallelObjectFiles)
512 gezelter 1508 $(DynamicArchiver) $(ParallelObjectFiles) $(DynamicArchiverOptions) -o $@
513    
514 tim 1529 %_UP.so : $(ObjectFiles)
515 gezelter 1508 $(MAKE) $(MakeOptions) $(LibDir)/$@
516 tim 1529
517     %_MPI.so : $(ParallelObjectFiles)
518 tim 1525 $(MAKE) $(MakeOptions) $(LibDir)/$@
519 gezelter 1508
520     # .class -> .jar
521     $(LibDir)/%.jar : $(JavaClassFiles) $(OtherTargetFiles)
522     $(Print) $@
523     @cd $(TargetDir); $(JavaArchiver) -cf $@ \
524     $(JavaClassFilesRel) $(OtherTargetFiles)
525    
526     %.jar : $(JavaClassFiles) $(OtherTargetFiles)
527     $(MAKE) $(MakeOptions) $(LibDir)/$@
528    
529     # .class -> JavaDoc
530     javadoc :
531     $(Print) $(JavaPackageNames) > $(DEV_ROOT)/packages.tmp
532     $(JavadocGenerator) $(JavadocOptions) @$(DEV_ROOT)/packages.tmp
533     $(Delete) $(DEV_ROOT)/packages.tmp
534     $(Print) Done JavaDoc.
535    
536     # .class -> _Stub.class
537     $(PackageTargetDir)/%_Stub.class : $(PackageTargetDir)/%.class
538     $(Print) $@
539     $(RmiCompiler) $(RmiOptions) $(JavaPackageName).$*
540    
541     %_Stub.class : %.class
542     $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
543    
544     # .class -> _Skel.class
545     $(PackageTargetDir)/%_Skel.class : $(PackageTargetDir)/%.class
546     $(Print) $@
547     $(RmiCompiler) $(RmiOptions) $(JavaPackageName).$*
548    
549     %_Skel.class : %.class
550     $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
551    
552 tim 1539 document :
553     $(Print) Generate Documentation for OOPSE-2.0
554     @cd $(DEV_ROOT)/src
555     $(Doxygen) $(DEV_ROOT)/make/Doxyfile
556    
557 tim 1529 #GUN make funtions to merge the libraries
558     find_objs = $(shell $(StaticArchiver) -t $(1))
559     extract_objs = $(shell $(StaticArchiver) -x $(1) $(call find_objs, $(1)))
560     create_archive = $(shell $(StaticArchiver) $(StaticArchiverOptions) $(2) $(call find_objs, $(1)))
561     remove_objs = $(shell $(Delete) $(call find_objs, $(1)))
562     do_create = $(call extract_objs,$(1))$(call create_archive,$(1),$(2))$(call remove_objs,$(1))
563    
564 tim 1530 $(CombinedStaticLib) : $(LibDir)/.stamp_UP
565     $(Print) create $@
566 tim 1529 $(foreach thisLib,$(LibNames),$(call do_create,$(thisLib),$@))
567     $(Ranlib) $(CombinedStaticLib)
568    
569     $(CombinedParallelStaticLib) : $(LibDir)/.stamp_MPI
570 tim 1530 $(Print) create $@
571 tim 1529 $(foreach thisLib,$(ParallelLibNames), $(call do_create, $(thisLib), $@))
572     $(Ranlib) $(CombinedParallelStaticLib)
573    
574 gezelter 1508 # Executable
575 gezelter 1938 $(Executable) : $(CombinedStaticLib) $(ObjectFiles) $(BinDir)
576 tim 1936 $(Linker) $(ObjectFiles) $(CombinedStaticLib) $(LinkOptions) $(LibDirs) $(Libraries) -o $@
577 gezelter 1508
578 gezelter 1938 $(ParallelExecutable) : $(CombinedParallelStaticLib) $(ParallelObjectFiles) $(BinDir)
579 tim 1936 $(Linker) $(ParallelObjectFiles) $(CombinedParallelStaticLib) $(ParallelLinkOptions) $(LibDirs) $(Libraries) -o $@
580 gezelter 1508
581     # Anything else is just copied from source to target
582     $(PackageTargetDir)/% : $(PackageSourceDir)/%
583     $(Print) $@
584     $(Copy) $< $@
585    
586     # make (or make build)
587     build : $(PackageListLoop)
588     $(Print) Done build.
589    
590     _all : _buildall
591    
592 tim 1544 _buildall :
593 tim 1525 ifeq "$(UseMPI)" "yes"
594 gezelter 1508 _buildall : \
595     $(DependencyFile) \
596     $(PackageTargetDir) \
597     $(ObjectFiles) \
598 tim 1525 $(ParallelObjectFiles) \
599 gezelter 1508 $(JavaClassFiles) \
600     $(RmiStubFiles) \
601     $(RmiSkeletonFiles) \
602     $(OtherTargetFiles) \
603     $(StaticLibrary) \
604 tim 1525 $(ParallelStaticLibrary) \
605 gezelter 1508 $(JarFile) \
606 tim 1525 $(Executable) \
607     $(ParallelExecutable)
608     else
609     _buildall : \
610     $(DependencyFile) \
611     $(PackageTargetDir) \
612     $(ObjectFiles) \
613     $(JavaClassFiles) \
614     $(RmiStubFiles) \
615     $(RmiSkeletonFiles) \
616     $(OtherTargetFiles) \
617     $(StaticLibrary) \
618     $(JarFile) \
619     $(Executable)
620     endif
621 gezelter 1508
622 tim 1525
623 gezelter 1508 # make clean
624     clean : $(PackageListLoop)
625     $(Print) Done clean.
626    
627     _cleanall :
628 gezelter 2067 $(Delete) \
629     $(ObjectFiles) \
630     $(ParallelObjectFiles) \
631     $(JarFile) \
632     $(SharedLibrary) \
633     $(StaticLibrary) \
634     $(ParallelSharedLibrary) \
635     $(ParallelStaticLibrary) \
636     $(CombinedStaticLib) \
637     $(CombinedParallelStaticLib)
638 tim 1514
639     # make distclean
640     distclean : $(PackageListLoop)
641     $(Print) Done clean.
642    
643 gezelter 2067 _distcleanall : _cleanall
644     $(Delete) $(Executable) \
645 tim 1514 $(ParallelExecutable) \
646 tim 1523 $(DependencyFile)
647 gezelter 1508
648     # make depend
649     depend : $(PackageListLoop)
650     $(Print) Done dependencies.
651    
652     _dependall : $(DependencyFile)
653    
654     $(DependencyFile) : $(DerivedSource)
655     $(Print) $@
656     @cd $(PackageSourceDir)
657 tim 1510
658     ifneq "$(words $(CppFiles))" "0"
659 tim 1557 $(DEV_ROOT)/scripts/filepp -I $(DEV_ROOT)/src -od '$$(TargetDir)/' -MM $(CppFiles)>> Make.cpptemp
660     @cat Make.cpptemp >> $(DependencyFile)
661 gezelter 1535 $(Delete) Make.cpptemp
662 tim 1554
663     ifeq "$(UseMPI)" "yes"
664 tim 1557 $(DEV_ROOT)/scripts/filepp -I $(DEV_ROOT)/src -od '$$(ParallelTargetDir)/' $(ParallelDeclare) -MM $(CppFiles)>> Make.cpptemp
665     @cat Make.cpptemp >> $(DependencyFile)
666 tim 1539 @$(Delete) Make.cpptemp
667 tim 1554 endif
668    
669 gezelter 1508 endif
670 tim 1510
671     ifneq "$(words $(CFiles))" "0"
672 tim 1557 $(DEV_ROOT)/scripts/filepp -I $(DEV_ROOT)/src -od '$$(TargetDir)/' -MM $(CFiles) $(DerivedCFiles) >> Make.ctemp
673     @cat Make.ctemp >> $(DependencyFile)
674 gezelter 1535 $(Delete) Make.ctemp
675 tim 1554
676     ifeq "$(UseMPI)" "yes"
677 tim 1557 $(DEV_ROOT)/scripts/filepp -I $(DEV_ROOT)/src -od '$$(ParallelTargetDir)/' $(ParallelDeclare) -MM $(CFiles) $(DerivedCFiles) >> Make.ctemp
678     @cat Make.ctemp >> $(DependencyFile)
679 tim 1539 @$(Delete) Make.ctemp
680 tim 1554 endif
681    
682 gezelter 1508 endif
683 tim 1510
684     ifneq "$(words $(F90Files))" "0"
685 tim 1557 $(DEV_ROOT)/scripts/filepp -I $(DEV_ROOT)/src -od '$$(TargetDir)/' $(F90Declare) -MM -mc $(ModuleCase) -ms $(ModSuffix) $(F90Files) > Make.ftemp
686 tim 1554 @cat Make.ftemp >> $(DependencyFile)
687     @$(Delete) Make.ftemp
688    
689     ifeq "$(UseMPI)" "yes"
690 tim 1557 $(DEV_ROOT)/scripts/filepp -I $(DEV_ROOT)/src -od '$$(ParallelTargetDir)/' $(ParallelDeclare) $(F90Declare) -MM -mc $(ModuleCase) -ms $(ModSuffix) $(F90Files) >> Make.ftemp
691 tim 1539 @cat Make.ftemp >> $(DependencyFile)
692     @$(Delete) Make.ftemp
693 tim 1554 endif
694    
695 gezelter 1508 endif
696    
697     # make lib
698     lib : $(PackageListLoop)
699     $(Print) Libraries built.
700    
701     _liball : $(JarFile) $(SharedLibrary) $(StaticLibrary)
702    
703     jar : $(JarFile)
704    
705     jarsign : $(JarFile)
706     $(JarSigner) -keystore GeoSoftKeystore $(JarFile) myself
707    
708 tim 1544 #make install
709     %.install :
710     @$(MAKE) $(MakeOptions) -C $(subst .install,,$@) _installall
711    
712     install : $(InstallListLoop)
713     $(Print) Done Install
714    
715     _installall : _buildall _installdata
716    
717     $(MyInstallDir) :
718     $(MkDir) $@
719    
720     _installdata : $(MyInstallDir)
721     $(Print) $(InstallFiles)
722     ifneq "$(words $(InstallFiles))" "0"
723     $(InstallData) $(InstallFiles) $(MyInstallDir)
724     endif
725 gezelter 1930
726 gezelter 1508 # make statistics
727     _statisticsall :
728 tim 1530 @$(Print) $(patsubst %,$(CurrentDir)/%,$(SourceFiles)) >> $(DEV_ROOT)/files.tmp
729 gezelter 1508
730     statistics : $(PackageListLoop)
731     @$(List) $(DEV_ROOT)/files.tmp | xargs $(WordCount) $(WordCountOptions)
732     @$(Delete) $(DEV_ROOT)/files.tmp
733     $(Print) Done statistics.
734    
735     # make pure
736     $(Executable).pure :
737     $(Purify) $(PurifyOptions) $(CppCompiler) $(LinkOptions) $(LibDirs) \
738     $(LibList) $(ObjectFiles) -o $@
739    
740     pure : $(Executable).pure
741    
742 tim 1523 #make cvslog
743     cvslog:
744     $(DEV_ROOT)/scripts/cvs2cl.pl
745    
746 gezelter 1508 # Execute
747     _runexe :
748     $(Executable) $(RunParameters)
749    
750     _runjava :
751     $(JavaExecute) $(JavaRunOptions) $(JavaMainClass) $(RunParameters)
752    
753     run : _runjava
754    
755    
756     ifdef $(DependencyFile)
757     -include $(DependencyFile)
758     endif