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 1514 by tim, Thu Sep 30 15:41:35 2004 UTC vs.
Revision 1516 by gezelter, Fri Oct 1 21:22:27 2004 UTC

# Line 73 | Line 73 | IncludeDirs = \
73  
74   IncludeDirs = \
75          /usr/include \
76 <        /usr/local/include \
77 <        
76 >        /usr/local/include
77 >
78   LibraryDirs = \
79          /usr/lib \
80          /usr/local/mpich/lib \
81          /usr/local/lib \
82 <        /usr/local/intel/compiler80/lib \
82 >        /usr/local/intel/compiler81/lib \
83  
84   Libraries = \
85          mpich \
# Line 91 | Line 91 | SourceDir        = $(DEV_ROOT)/src
91   #  Directories
92   #
93   #---------------------------------------------------------------------------
94 SourceDir        = $(DEV_ROOT)/src
95 TargetDir        = $(DEV_ROOT)/obj
96 LibDir           = $(DEV_ROOT)/lib
97 MakeDir          = $(DEV_ROOT)/make
98 BinDir           = $(DEV_ROOT)/bin
99 DocsDir          = $(DEV_ROOT)/docs
100 CurrentDir       = $(CURDIR)
94  
95 + SourceDir         = $(DEV_ROOT)/src
96 + TargetDir         = $(DEV_ROOT)/obj
97 + ParallelTargetDir = $(DEV_ROOT)/MPIobj
98 + LibDir            = $(DEV_ROOT)/lib
99 + MakeDir           = $(DEV_ROOT)/make
100 + BinDir            = $(DEV_ROOT)/bin
101 + DocsDir           = $(DEV_ROOT)/docs
102 + CurrentDir        = $(CURDIR)
103 +
104   ifdef Source
105   #get the relative path of current package to source directory
106   # /home/maul/gezelter/src/code/src/UseTheForce/Darkside --> UseTheForce/Darkside
107   #Package          = $(shell echo $(CurrentDir) | sed -e 's/^.*\/src\/\(.*\)/\1/g')
108 + #use shell script to get the absolute path and then rip it off from $(CurrentDir)
109   Package          = $(subst $(shell cd $(SourceDir); pwd)/,,$(CurrentDir))
110  
111 < PackageList      = $(Package)
112 < PackageSourceDir = $(SourceDir)/$(Package)
113 < PackageTargetDir = $(TargetDir)
114 < JavaMainClass    = $(subst /,.,$(Package)).$(Main)
111 > PackageList              = $(Package)
112 > PackageSourceDir         = $(SourceDir)/$(Package)
113 > PackageTargetDir         = $(TargetDir)
114 > PackageParallelTargetDir = $(ParallelTargetDir)
115 > JavaMainClass            = $(subst /,.,$(Package)).$(Main)
116   else
117 < PackageList      = $(Packages) $(JavaPackages)
117 > PackageList              = $(Packages) $(JavaPackages)
118   endif
119  
120 < PackageListLoop  = $(patsubst %,$(SourceDir)/%/.loop,$(PackageList))
117 < #PackageListLoop  = $(PackageList)
120 > PackageListLoop          = $(patsubst %,$(SourceDir)/%/.loop,$(PackageList))
121  
122 < JRE              = $(JAVA_HOME)/jre/lib/rt.jar
122 > JRE                      = $(JAVA_HOME)/jre/lib/rt.jar
123  
124   ifdef IS_UNIX
125   X = :
# Line 153 | Line 156 | SourceFiles            = $(JavaFiles)\
156                           $(LexFiles)\
157                           $(YaccFiles)
158  
156 #SourceFiles            = $(JavaFiles:%.java=  $(PackageSourceDir)/%.java)\
157                         $(CppFiles:%.cpp=    $(PackageSourceDir)/%.cpp)\
158                         $(CFiles:%.c=        $(PackageSourceDir)/%.c)\
159                         $(FortranFiles:%.f=  $(PackageSourceDir)/%.f)\
160                         $(F90Files:%.F90=    $(PackageSourceDir)/%.F90)\
161                         $(LexFiles:%.l=      $(PackageSourceDir)/%.l)\
162                         $(YaccFiles:%.y=     $(PackageSourceDir)/%.y)\
163
159   # Target
160   JavaClassFiles         = $(JavaFiles:%.java=  $(PackageTargetDir)/%.class)
161   JavaClassFilesRel      = $(JavaFiles:%.java=  $(Package)/%.class)
# Line 169 | Line 164 | ObjectFiles            = $(CFiles:%.c=        $(Packag
164   JniClassFiles          = $(JniSource:%.java=  $(PackageTargetDir)/%.class)
165   JniHeaders             = $(JniSource:%.java=  $(PackageSourceDir)/%.h)
166   ObjectFiles            = $(CFiles:%.c=        $(PackageTargetDir)/%.o)\
167 <                         $(CppFiles:%.cpp=    $(PackageTargetDir)/%.o)\
168 <                         $(FortranFiles:%.f=  $(PackageTargetDir)/%.o)\
169 <                         $(F90Files:%.F90=    $(PackageTargetDir)/%.o)\
170 <                         $(LexFiles:%.l=      $(PackageTargetDir)/%.o)\
171 <                         $(YaccFiles:%.y=     $(PackageTargetDir)/%.o)
167 >                         $(CppFiles:%.cpp=    $(PackageTargetDir)/%.o)\
168 >                                     $(FortranFiles:%.f=  $(PackageTargetDir)/%.o)\
169 >                                     $(F90Files:%.F90=    $(PackageTargetDir)/%.o)\
170 >                                     $(LexFiles:%.l=      $(PackageTargetDir)/%.o)\
171 >                                     $(YaccFiles:%.y=     $(PackageTargetDir)/%.o)
172 > ParallelObjectFiles    = $(CFiles:%.c=        $(PackageParallelTargetDir)/%.o)\
173 >                                     $(CppFiles:%.cpp=    $(PackageParallelTargetDir)/%.o)\
174 >                                     $(FortranFiles:%.f=  $(PackageParallelTargetDir)/%.o)\
175 >                                     $(F90Files:%.F90=    $(PackageParallelTargetDir)/%.o)\
176 >                                     $(LexFiles:%.l=      $(PackageParallelTargetDir)/%.o)\
177 >                                     $(YaccFiles:%.y=     $(PackageParallelTargetDir)/%.o)
178  
179   DerivedSource          = $(YaccFiles:%.y=    %.h) \
180 <                         $(YaccFiles:%.y=    %.c) \
181 <                         $(LexFiles:%.l=     %.c)
180 >                               $(YaccFiles:%.y=    %.c) \
181 >                               $(LexFiles:%.l=     %.c)
182  
183   DerivedCFiles          = $(YaccFiles:%.y=    %.c) \
184 <                         $(LexFiles:%.l=     %.c)
184 >                               $(LexFiles:%.l=     %.c)
185  
186   OtherTargetFiles       = $(OtherSourceFiles:%=$(PackageTargetDir)/%)
187  
# Line 193 | Line 194 | ifneq  "$(words $(ObjectFiles))" "0"
194   endif
195  
196   #if Main is defined, do not build library. It may not be true sometimes
197 < ifneq  "$(words $(ObjectFiles))" "0"
197 > ifneq  "$(words $(ObjectFiles) $(ParallelObjectFiles))" "0"
198    DependencyFile    = $(PackageSourceDir)/Makedepend
199    ifneq "$(Main)" ""
200 <    Executable        = $(BinDir)/$(Main)
200 >    Executable             = $(BinDir)/$(Main)
201 >    ParallelExecutable     = $(BinDir)/$(Main)_MPI
202    else
203 <    SharedLibrary     = $(LibDir)/lib$(subst /,,$(Package)).so
204 <    StaticLibrary     = $(LibDir)/lib$(subst /,,$(Package)).a
203 >    SharedLibrary          = $(LibDir)/lib$(subst /,,$(Package)).so
204 >    StaticLibrary          = $(LibDir)/lib$(subst /,,$(Package)).a
205 >    ParallelSharedLibrary  = $(LibDir)/lib$(subst /,,$(Package))_MPI.so
206 >    ParallelStaticLibrary  = $(LibDir)/lib$(subst /,,$(Package))_MPI.a
207    endif
208   endif
209   #
# Line 225 | Line 229 | MakeDir                = mkdir -p
229   CppCompiler            = icpc
230   Linker                 = icpc
231   MakeDepend             = makedepend
232 < MakeDir                = mkdir -p
232 > Install                = /usr/bin/install -c
233 > InstallProgram         = ${INSTALL}
234 > InstallData            = ${INSTALL} -m 644
235 > MakeDir                = /home/maul/gezelter/gezelter/OOPSE-2.0/ac-tools/shtool mkdir -p -f
236   Delete                 = rm -fr
237   StaticArchiver         = ar
238   DynamicArchiver        = icc
239 < FortranCompiler        = ifort
239 > FortranCompiler        = @FC@
240   F90Compiler            = ifort
241   JavaCompiler           = $(JAVA_HOME)/bin/javac
242   JavaArchiver           = $(JAVA_HOME)/bin/jar
# Line 294 | Line 301 | $(PackageTargetDir)/%.o : %.c
301  
302   # .c -> .o
303   $(PackageTargetDir)/%.o : %.c
304 +        $(Print) $@
305          $(CCompiler) $(COptions) -c $(IncludePath) $< -o $@
306  
307   %.o : %.c
# Line 308 | Line 316 | $(PackageTargetDir)/%.o : %.f
316  
317   # .f -> .o
318   $(PackageTargetDir)/%.o : %.f
319 <        $(Print) $@
312 <        $(Print) $(FortranCompiler) $(FortranOptions) -c $< -o $@
313 <        @$(FortranCompiler) $(FortranOptions) -c $< -o $@
319 >        $(FortranCompiler) $(FortranOptions) -c $< -o $@
320  
321   %.o : %.f
322          $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
# Line 324 | Line 330 | $(PackageTargetDir)/%.class : $(PackageSourceDir)/%.ja
330  
331   # .java -> .class
332   $(PackageTargetDir)/%.class : $(PackageSourceDir)/%.java
333 <        $(Print) $@
328 <        $(Print) $(JavaCompiler) $(JavaCompilerOptions) $<
329 <        @$(JavaCompiler) $(JavaCompilerOptions) $<
333 >        $(JavaCompiler) $(JavaCompilerOptions) $<
334  
335   %.class : $(PackageSourceDir)/%.java
336          @$(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
337  
338   # .class -> .h
339   $(PackageSourceDir)/%.h : $(PackageTargetDir)/%.class
336        $(Print) $@
337        $(Print) $(JniCompiler) $(JniOptions) $(JavaPackageName).$*
340          $(JniCompiler) $(JniOptions) $(JavaPackageName).$*
341  
342   %.h : %.class
# Line 342 | Line 344 | $(PackageSourceDir)/%.h : $(PackageTargetDir)/%.class
344  
345   #.y -> .h
346   %.h : %.y
347 <        $(Print) $@
346 <        $(Print) @$(Yacc) -d $?
347 <        @$(Yacc) -d  $?
347 >        $(Yacc) -d  $?
348          @$(Move) y.tab.h $*.h
349          @$(Delete) y.tab.c
350  
351   #.y -> .c
352   %.c : %.y
353 <        $(Print) $@
354 <        $(Print) $(Yacc) -d $?
355 <        @$(Yacc) -d  $?
353 >        $(Yacc) -d  $?
354          @$(Move) y.tab.c $*.c
355          @$(Delete) y.tab.h
356  
# Line 364 | Line 362 | $(LibDir)/%.a : $(ObjectFiles)
362  
363   # .o -> .a
364   $(LibDir)/%.a : $(ObjectFiles)
365 <        $(Print) $@
368 <        $(Print) $(StaticArchiver) $(StaticArchiverOptions) $@ $(ObjectFiles)
369 <        @$(StaticArchiver) $(StaticArchiverOptions) $@ $(ObjectFiles)
365 >        $(StaticArchiver) $(StaticArchiverOptions) $@ $(ObjectFiles)
366  
367   %.a : $(ObjectFiles)
368          $(MAKE) $(MakeOptions) $(LibDir)/$@
369  
370 + $(LibDir)/%_MPI.a : $(ParallelObjectFiles)
371 +        $(StaticArchiver) $(StaticArchiverOptions) $@ $(ParallelObjectFiles)
372 +
373 + %_MPI.a : $(ParallelObjectFiles)
374 +        $(MAKE) $(MakeOptions) $(LibDir)/$@
375 +
376   # .o -> .so
377   $(LibDir)/%.so : $(ObjectFiles)
376        $(Print) $@    
377        $(Print) $(DynamicArchiver) $(ObjectFiles) $(DynamicArchiverOptions) -o $@
378          $(DynamicArchiver) $(ObjectFiles) $(DynamicArchiverOptions) -o $@
379  
380   %.so : $(ObjectFiles)
381          $(MAKE) $(MakeOptions) $(LibDir)/$@
382  
383 + $(LibDir)/%_MPI.so : $(ParallelObjectFiles)
384 +        $(DynamicArchiver) $(ParallelObjectFiles) $(DynamicArchiverOptions) -o $@
385 +
386 + %_MPI.so : $(ParallelObjectFiles)
387 +        $(MAKE) $(MakeOptions) $(LibDir)/$@
388 +
389   # .class -> .jar
390   $(LibDir)/%.jar : $(JavaClassFiles) $(OtherTargetFiles)
391          $(Print) $@
386        $(Print) $(JavaArchiver) -cf $@ $(JavaClassFilesRel) $(OtherTargetFiles)
392          @cd $(TargetDir); $(JavaArchiver) -cf $@ \
393          $(JavaClassFilesRel) $(OtherTargetFiles)
394  
# Line 415 | Line 420 | $(Executable) : $(ObjectFiles)
420  
421   # Executable
422   $(Executable) : $(ObjectFiles)
418        $(Print) $@
419        $(Print) $(Linker) $(LinkOptions) $(LibDirs) $(LibList) $(ObjectFiles) -o $@
423          $(Linker) $(LinkOptions) $(LibDirs) $(LibList) $(ObjectFiles) -o $@
424  
425 + $(ParallelExecutable) : $(ParallelObjectFiles)
426 +        $(Linker) $(LinkOptions) $(LibDirs) $(LibList) $(ParallelObjectFiles) -o $@
427 +
428   # Anything else is just copied from source to target
429   $(PackageTargetDir)/% : $(PackageSourceDir)/%
430          $(Print) $@
# Line 442 | Line 448 | _buildall : \
448          $(StaticLibrary) \
449          $(JarFile) \
450          $(Executable)
451 +        
452  
446
453   # make clean
454   clean : $(PackageListLoop)
455          $(Print) Done clean.    
# Line 482 | Line 488 | ifneq "$(words $(CppFiles))" "0"
488          touch Make.ctemp
489  
490   ifneq "$(words $(CppFiles))" "0"
485        $(Print) Make dependencies for $(CppFiles)
486        $(Print) $(CppCompiler) $(IncludePath) -MM $(CppFiles)  > Make.cpptemp
491          $(CppCompiler) $(IncludePath) -MM $(CppFiles)  > Make.cpptemp
492          cat Make.cpptemp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/obj\/&/g' >> $(DependencyFile)
493          cat Make.cpptemp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/MPIobj\/&/g' >> $(DependencyFile)
494   endif
495  
496   ifneq "$(words $(CFiles))" "0"
493        $(Print) Make dependencies for $(CFiles)
494        $(Print) $(CCompiler)   $(IncludePath) -MM $(CFiles) $(DerivedCFiles)   > Make.ctemp
497          $(CCompiler)   $(IncludePath) -MM $(CFiles) $(DerivedCFiles)   > Make.ctemp
498          cat Make.ctemp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/obj\/&/g' >> $(DependencyFile)
499          cat Make.ctemp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/MPIobj\/&/g' >> $(DependencyFile)
# Line 499 | Line 501 | ifneq "$(words $(F90Files))" "0"
501   endif
502  
503   ifneq "$(words $(F90Files))" "0"
502        $(Print) Make dependencies for $(F90Files)
504          $(DEV_ROOT)/scripts/sfmakedepend  -I $(DEV_ROOT)/src -d '$$(DEV_ROOT)/obj' -f ./Make.ftemp -h *.F90
505          cat Make.ftemp >> $(DependencyFile)
506   endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines