ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-2.0/make/Makefile
(Generate patch)

Comparing trunk/OOPSE-2.0/make/Makefile (file contents):
Revision 1495 by tim, Tue Sep 28 16:14:17 2004 UTC vs.
Revision 1521 by gezelter, Mon Oct 4 16:06:18 2004 UTC

# Line 33 | Line 33
33   #  $<      - Current dependency
34   #
35   #---------------------------------------------------------------------------
36 + IS_UNIX=1
37 + #packages to be made
38 + Packages = \
39 +        utils \
40 +        math \
41 +        types \
42 +        primitives \
43 +        visitors \
44 +        UseTheForce/DarkSide \
45 +        UseTheForce \
46 +        brains \
47 +        io \
48 +        integrators \
49 +        minimizers \
50 +        constraints \
51 +        profiling \
52 +        restraints \
53 +        applications/oopse \
54 +        applications/dump2Xyz \
55 +        applications/simpleBuilder \
56 +
57 + #packages contain libraries
58 + PackageLibs = \
59 +        utils \
60 +        math \
61 +        types \
62 +        primitives \
63 +        visitors \
64 +        UseTheForce/DarkSide \
65 +        UseTheForce \
66 +        brains \
67 +        io \
68 +        integrators \
69 +        minimizers \
70 +        constraints \
71 +        profiling \
72 +        restraints \
73 +
74 + IncludeDirs = \
75 +        /usr/local/include \
76 +        
77 +
78 + LibraryDirs = \
79 +        /usr/local/lib \
80 +        
81 +
82 + Libraries = \
83 +        -lsprng \
84 +        
85 +
86 + LinkOptions = \
87 +         -L/usr/local/intel/compiler81/lib -L/usr/lib -lifport -lifcore -limf -lm -lcxa -lirc -lunwind -lirc_s
88 +
89 + OopseHome       = /usr/local/oopse
90 + ForceParamDir   = /usr/local/oopse/share/forceFields/
91 + SampleSimDir    = /usr/local/oopse/share/samples/
92 + FrcDeclare      = -DFRC_PATH="$(ForceParamDir)"
93 + ParallelDeclare = -DIS_MPI
94 +
95 +
96   #---------------------------------------------------------------------------
97   #
98   #  Directories
99   #
100   #---------------------------------------------------------------------------
41 SourceDir        = $(DEV_ROOT)/src
42 TargetDir        = $(DEV_ROOT)/obj
43 LibDir           = $(DEV_ROOT)/lib
44 MakeDir          = $(DEV_ROOT)/make
45 BinDir           = $(DEV_ROOT)/bin
46 DocsDir          = $(DEV_ROOT)/docs
47 CurrentDir       = $(CURDIR)
101  
102 + SourceDir         = $(DEV_ROOT)/src
103 + TargetDir         = $(DEV_ROOT)/obj
104 + ParallelTargetDir = $(DEV_ROOT)/MPIobj
105 + LibDir            = $(DEV_ROOT)/lib
106 + MakeDir           = $(DEV_ROOT)/make
107 + BinDir            = $(DEV_ROOT)/bin
108 + DocsDir           = $(DEV_ROOT)/docs
109 + CurrentDir        = $(CURDIR)
110 +
111   ifdef Source
112 < Package          = $(subst $(SourceDir)/,,$(CurrentDir))
113 < PackageList      = $(Package)
114 < PackageSourceDir = $(SourceDir)/$(Package)
115 < PackageTargetDir = $(TargetDir)
116 < JavaMainClass    = $(subst /,.,$(Package)).$(Main)
112 > #get the relative path of current package to source directory
113 > # /home/maul/gezelter/src/code/src/UseTheForce/Darkside --> UseTheForce/Darkside
114 > #Package          = $(shell echo $(CurrentDir) | sed -e 's/^.*\/src\/\(.*\)/\1/g')
115 > #use shell script to get the absolute path and then rip it off from $(CurrentDir)
116 > Package          = $(subst $(shell cd $(SourceDir); pwd)/,,$(CurrentDir))
117 >
118 > PackageList              = $(Package)
119 > PackageSourceDir         = $(SourceDir)/$(Package)
120 > PackageTargetDir         = $(TargetDir)
121 > PackageParallelTargetDir = $(ParallelTargetDir)
122 > JavaMainClass            = $(subst /,.,$(Package)).$(Main)
123   else
124 < PackageList      = $(Packages) $(JavaPackages)
124 > PackageList              = $(Packages) $(JavaPackages)
125   endif
126  
127 < PackageListLoop  = $(patsubst %,$(SourceDir)/%/.loop,$(PackageList))
127 > PackageListLoop          = $(patsubst %,$(SourceDir)/%/.loop,$(PackageList))
128  
129 < JRE              = $(JAVA_HOME)/jre/lib/rt.jar
129 > JRE                      = $(JAVA_HOME)/jre/lib/rt.jar
130  
131   ifdef IS_UNIX
132   X = :
# Line 86 | Line 154 | SourceFiles            = $(JavaFiles:%.java=  $(Packag
154                                        $(YaccFiles) $(CorbaFiles), \
155                                        $(Source))
156   ManifestFile           = $(PackageSourceDir)/Manifest
89 SourceFiles            = $(JavaFiles:%.java=  $(PackageSourceDir)/%.java)\
90                         $(CppFiles:%.cpp=    $(PackageSourceDir)/%.cpp)\
91                         $(CFiles:%.c=        $(PackageSourceDir)/%.c)\
92                         $(FortranFiles:%.f=  $(PackageSourceDir)/%.f)\
93                         $(F90Files:%.F90=    $(PackageSourceDir)/%.F90)\
94                         $(LexFiles:%.l=      $(PackageSourceDir)/%.l)\
95                         $(YaccFiles:%.y=     $(PackageSourceDir)/%.y)\
157  
158 + SourceFiles            = $(JavaFiles)\
159 +                         $(CppFiles)\
160 +                         $(CFiles)\
161 +                         $(FortranFiles)\
162 +                         $(F90Files)\
163 +                         $(LexFiles)\
164 +                         $(YaccFiles)
165  
166   # Target
167   JavaClassFiles         = $(JavaFiles:%.java=  $(PackageTargetDir)/%.class)
# Line 103 | Line 171 | ObjectFiles            = $(CFiles:%.c=        $(Packag
171   JniClassFiles          = $(JniSource:%.java=  $(PackageTargetDir)/%.class)
172   JniHeaders             = $(JniSource:%.java=  $(PackageSourceDir)/%.h)
173   ObjectFiles            = $(CFiles:%.c=        $(PackageTargetDir)/%.o)\
174 <                         $(CppFiles:%.cpp=    $(PackageTargetDir)/%.o)\
175 <                         $(FortranFiles:%.f=  $(PackageTargetDir)/%.o)\
176 <                         $(F90Files:%.F90=    $(PackageTargetDir)/%.o)\
177 <                         $(LexFiles:%.l=      $(PackageTargetDir)/%.o)\
178 <                         $(YaccFiles:%.y=     $(PackageTargetDir)/%.o)
174 >                         $(CppFiles:%.cpp=    $(PackageTargetDir)/%.o)\
175 >                                     $(FortranFiles:%.f=  $(PackageTargetDir)/%.o)\
176 >                                     $(F90Files:%.F90=    $(PackageTargetDir)/%.o)\
177 >                                     $(LexFiles:%.l=      $(PackageTargetDir)/%.o)\
178 >                                     $(YaccFiles:%.y=     $(PackageTargetDir)/%.o)
179 > ParallelObjectFiles    = $(CFiles:%.c=        $(PackageParallelTargetDir)/%.o)\
180 >                                     $(CppFiles:%.cpp=    $(PackageParallelTargetDir)/%.o)\
181 >                                     $(FortranFiles:%.f=  $(PackageParallelTargetDir)/%.o)\
182 >                                     $(F90Files:%.F90=    $(PackageParallelTargetDir)/%.o)\
183 >                                     $(LexFiles:%.l=      $(PackageParallelTargetDir)/%.o)\
184 >                                     $(YaccFiles:%.y=     $(PackageParallelTargetDir)/%.o)
185  
186   DerivedSource          = $(YaccFiles:%.y=    %.h) \
187 <                         $(YaccFiles:%.y=    %.c) \
188 <                         $(LexFiles:%.l=     %.c)
187 >                               $(YaccFiles:%.y=    %.c) \
188 >                               $(LexFiles:%.l=     %.c)
189  
190   DerivedCFiles          = $(YaccFiles:%.y=    %.c) \
191 <                         $(LexFiles:%.l=     %.c)
191 >                               $(LexFiles:%.l=     %.c)
192  
193   OtherTargetFiles       = $(OtherSourceFiles:%=$(PackageTargetDir)/%)
194  
# Line 125 | Line 199 | ifneq  "$(words $(ObjectFiles))" "0"
199    JavaPackageName   = $(subst /,.,$(Package))
200    JarFile           = $(LibDir)/$(subst /,,$(Package)).jar
201   endif
202 < ifneq  "$(words $(ObjectFiles))" "0"
202 >
203 > #if Main is defined, do not build library. It may not be true sometimes
204 > ifneq  "$(words $(ObjectFiles) $(ParallelObjectFiles))" "0"
205    DependencyFile    = $(PackageSourceDir)/Makedepend
130  SharedLibrary     = $(LibDir)/lib$(subst /,,$(Package)).so
131  StaticLibrary     = $(LibDir)/lib$(subst /,,$(Package)).a
206    ifneq "$(Main)" ""
207 <    Executable        = $(BinDir)/$(Main)
207 >    Executable             = $(BinDir)/$(Main)
208 >    ParallelExecutable     = $(BinDir)/$(Main)_MPI
209 >  else
210 >    SharedLibrary          = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package))).so
211 >    StaticLibrary          = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package))).a
212 >    ParallelSharedLibrary  = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package)))_MPI.so
213 >    ParallelStaticLibrary  = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package)))_MPI.a
214    endif
215   endif
216   #
# Line 140 | Line 220 | LocalLibs        = $(subst /,,$(Packages))
220   JavaPackageNames = $(subst /,.,$(JavaPackages))
221   IncludePath      = -I$(SourceDir) $(IncludeDirs:%=-I%)
222   LibDirs          = -L$(LibDir)    $(LibraryDirs:%=-L%)
223 < LocalLibs        = $(subst /,,$(Packages))
224 < LibList          = $(LocalLibs:%=-l%) $(Libraries:%=-l%)
223 > LocalLibs        = $(subst /,,$(patsubst %, oopse_%, $(PackageLibs)))
224 > LibList          = $(LocalLibs:%=-l%) $(Libraries)
225  
226  
227   #---------------------------------------------------------------------------
# Line 156 | Line 236 | MakeDir                = mkdir -p
236   CppCompiler            = icpc
237   Linker                 = icpc
238   MakeDepend             = makedepend
239 < MakeDir                = mkdir -p
239 > Install                = /usr/bin/install -c
240 > InstallProgram         = ${INSTALL}
241 > InstallData            = ${INSTALL} -m 644
242 > MakeDir                = /home/maul/gezelter/gezelter/OOPSE-2.0/ac-tools/shtool mkdir -p -f
243   Delete                 = rm -fr
244   StaticArchiver         = ar
245   DynamicArchiver        = icc
246 < FortranCompiler        = ifort
246 > FortranCompiler        = @FC@
247   F90Compiler            = ifort
248   JavaCompiler           = $(JAVA_HOME)/bin/javac
249   JavaArchiver           = $(JAVA_HOME)/bin/jar
# Line 176 | Line 259 | MakeOptions            = -k -s
259   Lex                    = flex
260  
261  
262 < MakeOptions            = -k -s
262 > MakeOptions            = -k
263   MakeDependOptions      =
264   StaticArchiverOptions  = rc
265   DynamicArchiverOptions = -shared
# Line 184 | Line 267 | FortranOptions         =
267   JniOptions             =
268   RmiOptions             = -d $(TargetDir) -classpath $(ClassPath) \
269                           -sourcepath $(SourceDir)
270 + COptions               = $(FrcDeclare)
271 + CParallelOptions       = $(FrcDeclare) $(ParallelDeclare)
272 + CppOptions             = $(FrcDeclare)
273 + CppParallelOptions     = $(FrcDeclare) $(ParallelDeclare)
274   FortranOptions         =
275 < F90Options             =  -I$(SourceDir) -module $(TargetDir)
275 > F90Options             =  -fpp1  -O -I$(SourceDir) -module $(TargetDir)
276 > F90ParallelOptions     =  -fpp1  -O -I$(SourceDir) -module $(TargetDir)   $(ParallelDeclare)
277   JavaCompilerOptions    = -d $(TargetDir) -classpath $(ClassPath) \
278                           -sourcepath $(SourceDir) -deprecation
279   JavaRunOptions         = -classpath $(ClassPath)
# Line 224 | Line 312 | $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.c
312          $(MakeDir) $@
313  
314   # .c -> .o
315 < $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.c
315 > $(PackageTargetDir)/%.o : %.c
316          $(Print) $@
317 <        @$(CCompiler) $(COptions) -c $(IncludePath) $< -o $@
317 >        $(CCompiler) $(COptions) -c $(IncludePath) $< -o $@
318  
319 < %.o : $(PackageSourceDir)/%.c
319 > %.o : %.c
320          $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
321  
322   # .cpp -> .o
323 < $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.cpp
236 <        $(Print) $@
323 > $(PackageTargetDir)/%.o : %.cpp
324          $(CppCompiler) $(CppOptions) -c $(IncludePath) $< -o $@
325  
326 < %.o : $(PackageSourceDir)/%.cpp
326 > %.o : %.cpp
327          $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
328  
329   # .f -> .o
330 < $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.f
331 <        $(Print) $@
245 <        @$(FortranCompiler) $(FortranOptions) -c $< -o $@
330 > $(PackageTargetDir)/%.o : %.f
331 >        $(FortranCompiler) $(FortranOptions) -c $< -o $@
332  
333 < %.o : $(PackageSourceDir)/%.f
333 > %.o : %.f
334          $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
335  
336   # .F90 -> .o
337 < $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.F90
338 <        $(Print) $@
253 <        @$(F90Compiler) $(F90Options) -c $< -o $@
337 > $(PackageTargetDir)/%.o : %.F90
338 >        $(F90Compiler) $(F90Options) -c $< -o $@
339  
340 < %.o : $(PackageSourceDir)/%.F90
340 > %.o : %.F90
341          $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
342  
343   # .java -> .class
344   $(PackageTargetDir)/%.class : $(PackageSourceDir)/%.java
345 <        $(Print) $@
261 <        @$(JavaCompiler) $(JavaCompilerOptions) $<
345 >        $(JavaCompiler) $(JavaCompilerOptions) $<
346  
347   %.class : $(PackageSourceDir)/%.java
348          @$(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
349  
350   # .class -> .h
351   $(PackageSourceDir)/%.h : $(PackageTargetDir)/%.class
268        $(Print) $@
352          $(JniCompiler) $(JniOptions) $(JavaPackageName).$*
353  
354   %.h : %.class
355          $(MAKE) $(MakeOptions) $(PackageSourceDir)/$@
356  
357   #.y -> .h
358 < $(PackageSourceDir)/%.h : $(PackageSourceDir)/%.y
359 <        $(Print) $@
277 <        $(Print) @$(Yacc) -d $?
278 <        @$(Yacc) -d  $?
358 > %.h : %.y
359 >        $(Yacc) -d  $?
360          @$(Move) y.tab.h $*.h
361          @$(Delete) y.tab.c
362  
363   #.y -> .c
364 < $(PackageSourceDir)/%.c : $(PackageSourceDir)/%.y
365 <        $(Print) $@
285 <        $(Print) @$(Yacc) -d $?
286 <        @$(Yacc) -d  $?
364 > %.c : %.y
365 >        $(Yacc) -d  $?
366          @$(Move) y.tab.c $*.c
367          @$(Delete) y.tab.h
368  
369   # .l -> .c
370 < $(PackageSourceDir)/%.c : $(PackageSourceDir)/%.l
370 > %.c : %.l
371          $(Print) $@
372 <        $(Print) @$(Lex) -o$@ $?
372 >        $(Print) $(Lex) -o$@ $?
373          @$(Lex) -o$@ $?
374  
375   # .o -> .a
376   $(LibDir)/%.a : $(ObjectFiles)
377 <        $(Print) $@
299 <        @$(StaticArchiver) $(StaticArchiverOptions) $@ $(ObjectFiles)
377 >        $(StaticArchiver) $(StaticArchiverOptions) $@ $(ObjectFiles)
378  
379   %.a : $(ObjectFiles)
380 +        $(MAKE) $(MakeOptions) $(LibDir)/$@
381 +
382 + $(LibDir)/%_MPI.a : $(ParallelObjectFiles)
383 +        $(StaticArchiver) $(StaticArchiverOptions) $@ $(ParallelObjectFiles)
384 +
385 + %_MPI.a : $(ParallelObjectFiles)
386          $(MAKE) $(MakeOptions) $(LibDir)/$@
387  
388   # .o -> .so
389   $(LibDir)/%.so : $(ObjectFiles)
306        $(Print) $@    
390          $(DynamicArchiver) $(ObjectFiles) $(DynamicArchiverOptions) -o $@
391  
392   %.so : $(ObjectFiles)
393          $(MAKE) $(MakeOptions) $(LibDir)/$@
394  
395 + $(LibDir)/%_MPI.so : $(ParallelObjectFiles)
396 +        $(DynamicArchiver) $(ParallelObjectFiles) $(DynamicArchiverOptions) -o $@
397 +
398 + %_MPI.so : $(ParallelObjectFiles)
399 +        $(MAKE) $(MakeOptions) $(LibDir)/$@
400 +
401   # .class -> .jar
402   $(LibDir)/%.jar : $(JavaClassFiles) $(OtherTargetFiles)
403          $(Print) $@
# Line 343 | Line 432 | $(Executable) : $(ObjectFiles)
432  
433   # Executable
434   $(Executable) : $(ObjectFiles)
346        $(Print) $@
435          $(Linker) $(LinkOptions) $(LibDirs) $(LibList) $(ObjectFiles) -o $@
436  
437 + $(ParallelExecutable) : $(ParallelObjectFiles)
438 +        $(Linker) $(LinkOptions) $(LibDirs) $(LibList) $(ParallelObjectFiles) -o $@
439 +
440   # Anything else is just copied from source to target
441   $(PackageTargetDir)/% : $(PackageSourceDir)/%
442          $(Print) $@
# Line 369 | Line 460 | _buildall : \
460          $(StaticLibrary) \
461          $(JarFile) \
462          $(Executable)
463 +        
464  
373
465   # make clean
466   clean : $(PackageListLoop)
467          $(Print) Done clean.    
468  
469   _cleanall :
470 <        $(Delete) $(PackageTargetDir)/* \
470 >        $(Delete) $(ObjectFiles) $(ParallelObjectFiles)
471 >
472 > # make distclean
473 > distclean : $(PackageListLoop)
474 >        $(Print) Done clean.    
475 >
476 > _distcleanall :
477 >        $(Delete) $(ObjectFiles) \
478 >                  $(ParallelObjectFiles) \
479                    $(JarFile) \
480                    $(SharedLibrary) \
481                    $(StaticLibrary) \
482 +                  $(ParallelSharedLibrary) \
483 +                  $(ParallelStaticLibrary) \
484                    $(Executable) \
485 +                  $(ParallelExecutable) \
486                    $(DependencyFile)
487  
488  
# Line 392 | Line 494 | $(DependencyFile) : $(DerivedSource)
494  
495   $(DependencyFile) : $(DerivedSource)
496          $(Print) $@
395        $(Print) $(DerivedSource)
497          @cd $(PackageSourceDir)
397        $(CppCompiler) $(IncludePath) -MM $(CppFiles)  > Make.temp
398        $(CCompiler)   $(IncludePath) -MM $(CFiles) $(DerivedCFiles)   >> Make.temp
399        cat Make.temp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/obj\/&/g' >> $(DependencyFile)
400        cat Make.temp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/MPIobj\/&/g' >> $(DependencyFile)
401        #$(DEV_ROOT)/scripts/sfmakedepend -I $(DEV_ROOT)/src -d $(DEV_ROOT)/obj -f ./Make.ftemp -h *.F90
402        #$(DEV_ROOT)/scripts/sfmakedepend -I $(DEV_ROOT)/src -d $(DEV_ROOT)/MPIobj -f ./Make.ftemp -h *.F90
403        #cat Make.ftemp >> $(DependencyFile)
404        $(Delete) Make.temp Make.ftemp
498  
499 +        touch Make.ctemp
500 +        touch Make.ctemp
501 +
502 + ifneq "$(words $(CppFiles))" "0"
503 +        $(CppCompiler) $(IncludePath) -MM $(CppFiles)  > Make.cpptemp
504 +        cat Make.cpptemp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/obj\/&/g' >> $(DependencyFile)
505 +        cat Make.cpptemp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/MPIobj\/&/g' >> $(DependencyFile)
506 + endif
507 +
508 + ifneq "$(words $(CFiles))" "0"
509 +        $(CCompiler)   $(IncludePath) -MM $(CFiles) $(DerivedCFiles)   > Make.ctemp
510 +        cat Make.ctemp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/obj\/&/g' >> $(DependencyFile)
511 +        cat Make.ctemp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/MPIobj\/&/g' >> $(DependencyFile)
512 +
513 + endif
514 +
515 + ifneq "$(words $(F90Files))" "0"
516 +        $(DEV_ROOT)/scripts/filepp  -I $(DEV_ROOT)/src -od '$$(DEV_ROOT)/obj/' -D__F90  *.F90 > Make.ftemp
517 +        $(DEV_ROOT)/scripts/filepp  -I $(DEV_ROOT)/src -od '$$(DEV_ROOT)/MPIobj/' -DIS_MPI -D__F90  *.F90 >> Make.ftemp
518 +        cat Make.ftemp >> $(DependencyFile)
519 + endif
520 +        $(Delete) Make.cpptemp Make.ctemp Make.ftemp
521 +
522   # make lib
523   lib    : $(PackageListLoop)
524          $(Print) Libraries built.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines