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

Comparing trunk/OOPSE-4/make/Makefile (file contents):
Revision 1490 by gezelter, Fri Sep 24 04:16:43 2004 UTC vs.
Revision 1514 by tim, Thu Sep 30 15:41:35 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/include \
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 \
83 +
84 + Libraries = \
85 +        mpich \
86 +        sprng \
87 +        ifcore \
88 +
89   #---------------------------------------------------------------------------
90   #
91   #  Directories
# Line 47 | Line 100 | Package          = $(subst $(SourceDir)/,,$(CurrentDir
100   CurrentDir       = $(CURDIR)
101  
102   ifdef Source
103 < Package          = $(subst $(SourceDir)/,,$(CurrentDir))
103 > #get the relative path of current package to source directory
104 > # /home/maul/gezelter/src/code/src/UseTheForce/Darkside --> UseTheForce/Darkside
105 > #Package          = $(shell echo $(CurrentDir) | sed -e 's/^.*\/src\/\(.*\)/\1/g')
106 > Package          = $(subst $(shell cd $(SourceDir); pwd)/,,$(CurrentDir))
107 >
108   PackageList      = $(Package)
109   PackageSourceDir = $(SourceDir)/$(Package)
110 < PackageTargetDir = $(TargetDir)/$(Package)
110 > PackageTargetDir = $(TargetDir)
111   JavaMainClass    = $(subst /,.,$(Package)).$(Main)
112   else
113   PackageList      = $(Packages) $(JavaPackages)
114   endif
115  
116   PackageListLoop  = $(patsubst %,$(SourceDir)/%/.loop,$(PackageList))
117 + #PackageListLoop  = $(PackageList)
118  
119   JRE              = $(JAVA_HOME)/jre/lib/rt.jar
120  
# Line 79 | Line 137 | OtherSourceFiles       = $(filter-out $(JavaFiles) $(C
137   FortranFiles           = $(filter %.f,     $(Source))
138   F90Files               = $(filter %.F90,   $(Source))
139   CorbaFiles             = $(filter %.idl,   $(Source))
140 + LexFiles               = $(filter %.l,     $(Source))
141 + YaccFiles              = $(filter %.y,     $(Source))
142   OtherSourceFiles       = $(filter-out $(JavaFiles) $(CppFiles) $(CFiles) \
143 <                                      $(FortranFiles) $(F90Files) \
144 <                                      $(CorbaFiles), \
143 >                                      $(FortranFiles) $(F90Files) $(LexFiles) \
144 >                                      $(YaccFiles) $(CorbaFiles), \
145                                        $(Source))
146   ManifestFile           = $(PackageSourceDir)/Manifest
147 < SourceFiles            = $(JavaFiles:%.java=  $(PackageSourceDir)/%.java)\
147 >
148 > SourceFiles            = $(JavaFiles)\
149 >                         $(CppFiles)\
150 >                         $(CFiles)\
151 >                         $(FortranFiles)\
152 >                         $(F90Files)\
153 >                         $(LexFiles)\
154 >                         $(YaccFiles)
155 >
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)
160 >                         $(F90Files:%.F90=    $(PackageSourceDir)/%.F90)\
161 >                         $(LexFiles:%.l=      $(PackageSourceDir)/%.l)\
162 >                         $(YaccFiles:%.y=     $(PackageSourceDir)/%.y)\
163  
164   # Target
165   JavaClassFiles         = $(JavaFiles:%.java=  $(PackageTargetDir)/%.class)
# Line 100 | Line 171 | ObjectFiles            = $(CFiles:%.c=        $(Packag
171   ObjectFiles            = $(CFiles:%.c=        $(PackageTargetDir)/%.o)\
172                           $(CppFiles:%.cpp=    $(PackageTargetDir)/%.o)\
173                           $(FortranFiles:%.f=  $(PackageTargetDir)/%.o)\
174 <                         $(F90Files:%.F90=    $(PackageTargetDir)/%.o)
174 >                         $(F90Files:%.F90=    $(PackageTargetDir)/%.o)\
175 >                         $(LexFiles:%.l=      $(PackageTargetDir)/%.o)\
176 >                         $(YaccFiles:%.y=     $(PackageTargetDir)/%.o)
177 >
178 > DerivedSource          = $(YaccFiles:%.y=    %.h) \
179 >                         $(YaccFiles:%.y=    %.c) \
180 >                         $(LexFiles:%.l=     %.c)
181 >
182 > DerivedCFiles          = $(YaccFiles:%.y=    %.c) \
183 >                         $(LexFiles:%.l=     %.c)
184 >
185   OtherTargetFiles       = $(OtherSourceFiles:%=$(PackageTargetDir)/%)
186  
187   ThirdPartyJarsTmp = $(patsubst %,$(LibDir)/%,$(JavaLibraries))
# Line 110 | Line 191 | ifneq  "$(words $(ObjectFiles))" "0"
191    JavaPackageName   = $(subst /,.,$(Package))
192    JarFile           = $(LibDir)/$(subst /,,$(Package)).jar
193   endif
194 +
195 + #if Main is defined, do not build library. It may not be true sometimes
196   ifneq  "$(words $(ObjectFiles))" "0"
197    DependencyFile    = $(PackageSourceDir)/Makedepend
115  SharedLibrary     = $(LibDir)/lib$(subst /,,$(Package)).so
116  StaticLibrary     = $(LibDir)/lib$(subst /,,$(Package)).a
198    ifneq "$(Main)" ""
199      Executable        = $(BinDir)/$(Main)
200 +  else
201 +    SharedLibrary     = $(LibDir)/lib$(subst /,,$(Package)).so
202 +    StaticLibrary     = $(LibDir)/lib$(subst /,,$(Package)).a
203    endif
204   endif
205   #
# Line 125 | Line 209 | LocalLibs        = $(subst /,,$(Packages))
209   JavaPackageNames = $(subst /,.,$(JavaPackages))
210   IncludePath      = -I$(SourceDir) $(IncludeDirs:%=-I%)
211   LibDirs          = -L$(LibDir)    $(LibraryDirs:%=-L%)
212 < LocalLibs        = $(subst /,,$(Packages))
212 > LocalLibs        = $(subst /,,$(PackageLibs))
213   LibList          = $(LocalLibs:%=-l%) $(Libraries:%=-l%)
214  
215  
# Line 135 | Line 219 | Copy                   = cp
219   #
220   #---------------------------------------------------------------------------
221   Print                  = @echo
222 + Move                   = mv
223   Copy                   = cp
224 < CCompiler              = gcc
225 < CppCompiler            = gcc
226 < Linker                 = gcc
224 > CCompiler              = icc
225 > CppCompiler            = icpc
226 > Linker                 = icpc
227   MakeDepend             = makedepend
228   MakeDir                = mkdir -p
229   Delete                 = rm -fr
230   StaticArchiver         = ar
231 < DynamicArchiver        = gcc
232 < FortranCompiler        = f77
233 < F90Compiler            = f90
231 > DynamicArchiver        = icc
232 > FortranCompiler        = ifort
233 > F90Compiler            = ifort
234   JavaCompiler           = $(JAVA_HOME)/bin/javac
235   JavaArchiver           = $(JAVA_HOME)/bin/jar
236   JarSigner              = $(JAVA_HOME)/bin/jarsigner
# Line 156 | Line 241 | List                   = cat
241   Purify                 = purify
242   WordCount              = wc
243   List                   = cat
244 + Yacc                   = bison -y
245 + Lex                    = flex
246  
247 < MakeOptions            = -k -s
247 >
248 > MakeOptions            = -k
249   MakeDependOptions      =
250   StaticArchiverOptions  = rc
251   DynamicArchiverOptions = -shared
# Line 166 | Line 254 | F90Options             =
254   RmiOptions             = -d $(TargetDir) -classpath $(ClassPath) \
255                           -sourcepath $(SourceDir)
256   FortranOptions         =
257 < F90Options             =
257 > F90Options             =  -I$(SourceDir) -module $(TargetDir)
258   JavaCompilerOptions    = -d $(TargetDir) -classpath $(ClassPath) \
259                           -sourcepath $(SourceDir) -deprecation
260   JavaRunOptions         = -classpath $(ClassPath)
# Line 205 | Line 293 | $(PackageTargetDir)/%.o : $(PackageTargetDir) $(Packag
293          $(MakeDir) $@
294  
295   # .c -> .o
296 < $(PackageTargetDir)/%.o : $(PackageTargetDir) $(PackageSourceDir)/%.c
297 <        $(Print) $@
210 <        @$(CCompiler) $(COptions) -c $(IncludePath) $< -o $@
296 > $(PackageTargetDir)/%.o : %.c
297 >        $(CCompiler) $(COptions) -c $(IncludePath) $< -o $@
298  
299 < %.o : $(PackageSourceDir)/%.c
299 > %.o : %.c
300          $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
301  
302 < # .cc -> .o
303 < $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.cc
217 <        $(Print) $@
302 > # .cpp -> .o
303 > $(PackageTargetDir)/%.o : %.cpp
304          $(CppCompiler) $(CppOptions) -c $(IncludePath) $< -o $@
305  
306 < %.o : $(PackageSourceDir)/%.cc
306 > %.o : %.cpp
307          $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
308  
309   # .f -> .o
310 < $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.f
310 > $(PackageTargetDir)/%.o : %.f
311          $(Print) $@
312 +        $(Print) $(FortranCompiler) $(FortranOptions) -c $< -o $@
313          @$(FortranCompiler) $(FortranOptions) -c $< -o $@
314  
315 < %.o : $(PackageSourceDir)/%.f
315 > %.o : %.f
316          $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
317  
318   # .F90 -> .o
319 < $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.F90
320 <        $(Print) $@
234 <        @$(F90Compiler) $(F90Options) -c $< -o $@
319 > $(PackageTargetDir)/%.o : %.F90
320 >        $(F90Compiler) $(F90Options) -c $< -o $@
321  
322 < %.o : $(PackageSourceDir)/%.F90
322 > %.o : %.F90
323          $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
324  
325   # .java -> .class
326   $(PackageTargetDir)/%.class : $(PackageSourceDir)/%.java
327          $(Print) $@
328 +        $(Print) $(JavaCompiler) $(JavaCompilerOptions) $<
329          @$(JavaCompiler) $(JavaCompilerOptions) $<
330  
331   %.class : $(PackageSourceDir)/%.java
# Line 247 | Line 334 | $(PackageSourceDir)/%.h : $(PackageTargetDir)/%.class
334   # .class -> .h
335   $(PackageSourceDir)/%.h : $(PackageTargetDir)/%.class
336          $(Print) $@
337 +        $(Print) $(JniCompiler) $(JniOptions) $(JavaPackageName).$*
338          $(JniCompiler) $(JniOptions) $(JavaPackageName).$*
339  
340   %.h : %.class
341          $(MAKE) $(MakeOptions) $(PackageSourceDir)/$@
342  
343 + #.y -> .h
344 + %.h : %.y
345 +        $(Print) $@
346 +        $(Print) @$(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  $?
356 +        @$(Move) y.tab.c $*.c
357 +        @$(Delete) y.tab.h
358 +
359 + # .l -> .c
360 + %.c : %.l
361 +        $(Print) $@
362 +        $(Print) $(Lex) -o$@ $?
363 +        @$(Lex) -o$@ $?
364 +
365   # .o -> .a
366   $(LibDir)/%.a : $(ObjectFiles)
367          $(Print) $@
368 +        $(Print) $(StaticArchiver) $(StaticArchiverOptions) $@ $(ObjectFiles)
369          @$(StaticArchiver) $(StaticArchiverOptions) $@ $(ObjectFiles)
370  
371   %.a : $(ObjectFiles)
# Line 263 | Line 374 | $(LibDir)/%.so : $(ObjectFiles)
374   # .o -> .so
375   $(LibDir)/%.so : $(ObjectFiles)
376          $(Print) $@    
377 +        $(Print) $(DynamicArchiver) $(ObjectFiles) $(DynamicArchiverOptions) -o $@
378          $(DynamicArchiver) $(ObjectFiles) $(DynamicArchiverOptions) -o $@
379  
380   %.so : $(ObjectFiles)
# Line 271 | Line 383 | $(LibDir)/%.jar : $(JavaClassFiles) $(OtherTargetFiles
383   # .class -> .jar
384   $(LibDir)/%.jar : $(JavaClassFiles) $(OtherTargetFiles)
385          $(Print) $@
386 +        $(Print) $(JavaArchiver) -cf $@ $(JavaClassFilesRel) $(OtherTargetFiles)
387          @cd $(TargetDir); $(JavaArchiver) -cf $@ \
388          $(JavaClassFilesRel) $(OtherTargetFiles)
389  
# Line 303 | Line 416 | $(Executable) : $(ObjectFiles)
416   # Executable
417   $(Executable) : $(ObjectFiles)
418          $(Print) $@
419 +        $(Print) $(Linker) $(LinkOptions) $(LibDirs) $(LibList) $(ObjectFiles) -o $@
420          $(Linker) $(LinkOptions) $(LibDirs) $(LibList) $(ObjectFiles) -o $@
421  
422   # Anything else is just copied from source to target
# Line 335 | Line 449 | _cleanall :
449          $(Print) Done clean.    
450  
451   _cleanall :
452 <        $(Delete) $(PackageTargetDir)/* \
452 >        $(Delete) $(ObjectFiles) $(ParallelObjectFiles)
453 >
454 > # make distclean
455 > distclean : $(PackageListLoop)
456 >        $(Print) Done clean.    
457 >
458 > _distcleanall :
459 >        $(Delete) $(ObjectFiles) \
460 >                  $(ParallelObjectFiles) \
461                    $(JarFile) \
462                    $(SharedLibrary) \
463                    $(StaticLibrary) \
464 +                  $(ParallelSharedLibrary) \
465 +                  $(ParallelStaticLibrary) \
466                    $(Executable) \
467 +                  $(ParallelExecutable) \
468                    $(DependencyFile)
469  
470  
# Line 349 | Line 474 | $(DependencyFile) :
474  
475   _dependall : $(DependencyFile)
476  
477 < $(DependencyFile) :
478 <        $(Print) $@
479 <        @cd $(PackageSourceDir); \
355 <        $(MakeDepend) $(MakeDependOptions) -f- -p$(PackageTargetDir)/ \
356 <        $(IncludePath) $(Source) > $(DependencyFile)
477 > $(DependencyFile) : $(DerivedSource)
478 >        $(Print) $@
479 >        @cd $(PackageSourceDir)
480  
481 +        touch Make.ctemp
482 +        touch Make.ctemp
483 +
484 + ifneq "$(words $(CppFiles))" "0"
485 +        $(Print) Make dependencies for $(CppFiles)
486 +        $(Print) $(CppCompiler) $(IncludePath) -MM $(CppFiles)  > Make.cpptemp
487 +        $(CppCompiler) $(IncludePath) -MM $(CppFiles)  > Make.cpptemp
488 +        cat Make.cpptemp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/obj\/&/g' >> $(DependencyFile)
489 +        cat Make.cpptemp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/MPIobj\/&/g' >> $(DependencyFile)
490 + endif
491 +
492 + ifneq "$(words $(CFiles))" "0"
493 +        $(Print) Make dependencies for $(CFiles)
494 +        $(Print) $(CCompiler)   $(IncludePath) -MM $(CFiles) $(DerivedCFiles)   > Make.ctemp
495 +        $(CCompiler)   $(IncludePath) -MM $(CFiles) $(DerivedCFiles)   > Make.ctemp
496 +        cat Make.ctemp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/obj\/&/g' >> $(DependencyFile)
497 +        cat Make.ctemp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/MPIobj\/&/g' >> $(DependencyFile)
498 +
499 + endif
500 +
501 + ifneq "$(words $(F90Files))" "0"
502 +        $(Print) Make dependencies for $(F90Files)
503 +        $(DEV_ROOT)/scripts/sfmakedepend  -I $(DEV_ROOT)/src -d '$$(DEV_ROOT)/obj' -f ./Make.ftemp -h *.F90
504 +        cat Make.ftemp >> $(DependencyFile)
505 + endif
506 +        $(Delete) Make.cpptemp Make.ctemp Make.ftemp
507 +
508   # make lib
509   lib    : $(PackageListLoop)
510          $(Print) Libraries built.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines