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 1493 by tim, Mon Sep 27 20:13:04 2004 UTC vs.
Revision 1506 by tim, Wed Sep 29 17:12:15 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 50 | Line 103 | PackageTargetDir = $(TargetDir)/$(Package)
103   Package          = $(subst $(SourceDir)/,,$(CurrentDir))
104   PackageList      = $(Package)
105   PackageSourceDir = $(SourceDir)/$(Package)
106 < PackageTargetDir = $(TargetDir)/$(Package)
106 > PackageTargetDir = $(TargetDir)
107   JavaMainClass    = $(subst /,.,$(Package)).$(Main)
108   else
109   PackageList      = $(Packages) $(JavaPackages)
# Line 79 | Line 132 | OtherSourceFiles       = $(filter-out $(JavaFiles) $(C
132   FortranFiles           = $(filter %.f,     $(Source))
133   F90Files               = $(filter %.F90,   $(Source))
134   CorbaFiles             = $(filter %.idl,   $(Source))
135 + LexFiles               = $(filter %.l,     $(Source))
136 + YaccFiles              = $(filter %.y,     $(Source))
137   OtherSourceFiles       = $(filter-out $(JavaFiles) $(CppFiles) $(CFiles) \
138 <                                      $(FortranFiles) $(F90Files) \
139 <                                      $(CorbaFiles), \
138 >                                      $(FortranFiles) $(F90Files) $(LexFiles) \
139 >                                      $(YaccFiles) $(CorbaFiles), \
140                                        $(Source))
141   ManifestFile           = $(PackageSourceDir)/Manifest
142   SourceFiles            = $(JavaFiles:%.java=  $(PackageSourceDir)/%.java)\
143                           $(CppFiles:%.cpp=    $(PackageSourceDir)/%.cpp)\
144                           $(CFiles:%.c=        $(PackageSourceDir)/%.c)\
145                           $(FortranFiles:%.f=  $(PackageSourceDir)/%.f)\
146 <                         $(F90Files:%.F90=    $(PackageSourceDir)/%.F90)
146 >                         $(F90Files:%.F90=    $(PackageSourceDir)/%.F90)\
147 >                         $(LexFiles:%.l=      $(PackageSourceDir)/%.l)\
148 >                         $(YaccFiles:%.y=     $(PackageSourceDir)/%.y)\
149  
150 +
151   # Target
152   JavaClassFiles         = $(JavaFiles:%.java=  $(PackageTargetDir)/%.class)
153   JavaClassFilesRel      = $(JavaFiles:%.java=  $(Package)/%.class)
# Line 100 | Line 158 | ObjectFiles            = $(CFiles:%.c=        $(Packag
158   ObjectFiles            = $(CFiles:%.c=        $(PackageTargetDir)/%.o)\
159                           $(CppFiles:%.cpp=    $(PackageTargetDir)/%.o)\
160                           $(FortranFiles:%.f=  $(PackageTargetDir)/%.o)\
161 <                         $(F90Files:%.F90=    $(PackageTargetDir)/%.o)
161 >                         $(F90Files:%.F90=    $(PackageTargetDir)/%.o)\
162 >                         $(LexFiles:%.l=      $(PackageTargetDir)/%.o)\
163 >                         $(YaccFiles:%.y=     $(PackageTargetDir)/%.o)
164 >
165 > DerivedSource          = $(YaccFiles:%.y=    %.h) \
166 >                         $(YaccFiles:%.y=    %.c) \
167 >                         $(LexFiles:%.l=     %.c)
168 >
169 > DerivedCFiles          = $(YaccFiles:%.y=    %.c) \
170 >                         $(LexFiles:%.l=     %.c)
171 >
172   OtherTargetFiles       = $(OtherSourceFiles:%=$(PackageTargetDir)/%)
173  
174   ThirdPartyJarsTmp = $(patsubst %,$(LibDir)/%,$(JavaLibraries))
# Line 110 | Line 178 | ifneq  "$(words $(ObjectFiles))" "0"
178    JavaPackageName   = $(subst /,.,$(Package))
179    JarFile           = $(LibDir)/$(subst /,,$(Package)).jar
180   endif
181 +
182 + #if Main is defined, do not build library. It may not be true sometimes
183   ifneq  "$(words $(ObjectFiles))" "0"
184    DependencyFile    = $(PackageSourceDir)/Makedepend
115  SharedLibrary     = $(LibDir)/lib$(subst /,,$(Package)).so
116  StaticLibrary     = $(LibDir)/lib$(subst /,,$(Package)).a
185    ifneq "$(Main)" ""
186      Executable        = $(BinDir)/$(Main)
187 +  else
188 +    SharedLibrary     = $(LibDir)/lib$(subst /,,$(Package)).so
189 +    StaticLibrary     = $(LibDir)/lib$(subst /,,$(Package)).a
190    endif
191   endif
192   #
# Line 125 | Line 196 | LocalLibs        = $(subst /,,$(Packages))
196   JavaPackageNames = $(subst /,.,$(JavaPackages))
197   IncludePath      = -I$(SourceDir) $(IncludeDirs:%=-I%)
198   LibDirs          = -L$(LibDir)    $(LibraryDirs:%=-L%)
199 < LocalLibs        = $(subst /,,$(Packages))
199 > LocalLibs        = $(subst /,,$(PackageLibs))
200   LibList          = $(LocalLibs:%=-l%) $(Libraries:%=-l%)
201  
202  
# Line 135 | Line 206 | Copy                   = cp
206   #
207   #---------------------------------------------------------------------------
208   Print                  = @echo
209 + Move                   = mv
210   Copy                   = cp
211 < CCompiler              = gcc
212 < CppCompiler            = gcc
213 < Linker                 = gcc
211 > CCompiler              = icc
212 > CppCompiler            = icpc
213 > Linker                 = icpc
214   MakeDepend             = makedepend
215   MakeDir                = mkdir -p
216   Delete                 = rm -fr
217   StaticArchiver         = ar
218 < DynamicArchiver        = gcc
219 < FortranCompiler        = f77
220 < F90Compiler            = f90
218 > DynamicArchiver        = icc
219 > FortranCompiler        = ifort
220 > F90Compiler            = ifort
221   JavaCompiler           = $(JAVA_HOME)/bin/javac
222   JavaArchiver           = $(JAVA_HOME)/bin/jar
223   JarSigner              = $(JAVA_HOME)/bin/jarsigner
# Line 156 | Line 228 | List                   = cat
228   Purify                 = purify
229   WordCount              = wc
230   List                   = cat
231 + Yacc                   = bison -y
232 + Lex                    = flex
233  
234 +
235   MakeOptions            = -k -s
236   MakeDependOptions      =
237   StaticArchiverOptions  = rc
# Line 166 | Line 241 | F90Options             =
241   RmiOptions             = -d $(TargetDir) -classpath $(ClassPath) \
242                           -sourcepath $(SourceDir)
243   FortranOptions         =
244 < F90Options             =
244 > F90Options             =  -I$(SourceDir) -module $(TargetDir)
245   JavaCompilerOptions    = -d $(TargetDir) -classpath $(ClassPath) \
246                           -sourcepath $(SourceDir) -deprecation
247   JavaRunOptions         = -classpath $(ClassPath)
# Line 205 | Line 280 | $(PackageTargetDir)/%.o : $(PackageTargetDir) $(Packag
280          $(MakeDir) $@
281  
282   # .c -> .o
283 < $(PackageTargetDir)/%.o : $(PackageTargetDir) $(PackageSourceDir)/%.c
283 > $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.c
284          $(Print) $@
285 +        $(Print) $(CCompiler) $(COptions) -c $(IncludePath) $< -o $@
286          @$(CCompiler) $(COptions) -c $(IncludePath) $< -o $@
287  
288   %.o : $(PackageSourceDir)/%.c
# Line 215 | Line 291 | $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.cpp
291   # .cpp -> .o
292   $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.cpp
293          $(Print) $@
294 +        $(Print) $(CppCompiler) $(CppOptions) -c $(IncludePath) $< -o $@
295          $(CppCompiler) $(CppOptions) -c $(IncludePath) $< -o $@
296  
297   %.o : $(PackageSourceDir)/%.cpp
# Line 223 | Line 300 | $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.f
300   # .f -> .o
301   $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.f
302          $(Print) $@
303 +        $(Print) $(FortranCompiler) $(FortranOptions) -c $< -o $@
304          @$(FortranCompiler) $(FortranOptions) -c $< -o $@
305  
306   %.o : $(PackageSourceDir)/%.f
# Line 231 | Line 309 | $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.F90
309   # .F90 -> .o
310   $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.F90
311          $(Print) $@
312 +        $(Print) $(F90Compiler) $(F90Options) -c $< -o $@
313          @$(F90Compiler) $(F90Options) -c $< -o $@
314  
315   %.o : $(PackageSourceDir)/%.F90
# Line 239 | Line 318 | $(PackageTargetDir)/%.class : $(PackageSourceDir)/%.ja
318   # .java -> .class
319   $(PackageTargetDir)/%.class : $(PackageSourceDir)/%.java
320          $(Print) $@
321 +        $(Print) $(JavaCompiler) $(JavaCompilerOptions) $<
322          @$(JavaCompiler) $(JavaCompilerOptions) $<
323  
324   %.class : $(PackageSourceDir)/%.java
# Line 247 | Line 327 | $(PackageSourceDir)/%.h : $(PackageTargetDir)/%.class
327   # .class -> .h
328   $(PackageSourceDir)/%.h : $(PackageTargetDir)/%.class
329          $(Print) $@
330 +        $(Print) $(JniCompiler) $(JniOptions) $(JavaPackageName).$*
331          $(JniCompiler) $(JniOptions) $(JavaPackageName).$*
332  
333   %.h : %.class
334          $(MAKE) $(MakeOptions) $(PackageSourceDir)/$@
335 +
336 + #.y -> .h
337 + $(PackageSourceDir)/%.h : $(PackageSourceDir)/%.y
338 +        $(Print) $@
339 +        $(Print) @$(Yacc) -d $?
340 +        @$(Yacc) -d  $?
341 +        @$(Move) y.tab.h $*.h
342 +        @$(Delete) y.tab.c
343 +
344 + #.y -> .c
345 + $(PackageSourceDir)/%.c : $(PackageSourceDir)/%.y
346 +        $(Print) $@
347 +        $(Print) $(Yacc) -d $?
348 +        @$(Yacc) -d  $?
349 +        @$(Move) y.tab.c $*.c
350 +        @$(Delete) y.tab.h
351 +
352 + # .l -> .c
353 + $(PackageSourceDir)/%.c : $(PackageSourceDir)/%.l
354 +        $(Print) $@
355 +        $(Print) $(Lex) -o$@ $?
356 +        @$(Lex) -o$@ $?
357  
358   # .o -> .a
359   $(LibDir)/%.a : $(ObjectFiles)
360          $(Print) $@
361 +        $(Print) $(StaticArchiver) $(StaticArchiverOptions) $@ $(ObjectFiles)
362          @$(StaticArchiver) $(StaticArchiverOptions) $@ $(ObjectFiles)
363  
364   %.a : $(ObjectFiles)
# Line 263 | Line 367 | $(LibDir)/%.so : $(ObjectFiles)
367   # .o -> .so
368   $(LibDir)/%.so : $(ObjectFiles)
369          $(Print) $@    
370 +        $(Print) $(DynamicArchiver) $(ObjectFiles) $(DynamicArchiverOptions) -o $@
371          $(DynamicArchiver) $(ObjectFiles) $(DynamicArchiverOptions) -o $@
372  
373   %.so : $(ObjectFiles)
# Line 271 | Line 376 | $(LibDir)/%.jar : $(JavaClassFiles) $(OtherTargetFiles
376   # .class -> .jar
377   $(LibDir)/%.jar : $(JavaClassFiles) $(OtherTargetFiles)
378          $(Print) $@
379 +        $(Print) $(JavaArchiver) -cf $@ $(JavaClassFilesRel) $(OtherTargetFiles)
380          @cd $(TargetDir); $(JavaArchiver) -cf $@ \
381          $(JavaClassFilesRel) $(OtherTargetFiles)
382  
# Line 303 | Line 409 | $(Executable) : $(ObjectFiles)
409   # Executable
410   $(Executable) : $(ObjectFiles)
411          $(Print) $@
412 +        $(Print) $(Linker) $(LinkOptions) $(LibDirs) $(LibList) $(ObjectFiles) -o $@
413          $(Linker) $(LinkOptions) $(LibDirs) $(LibList) $(ObjectFiles) -o $@
414  
415   # Anything else is just copied from source to target
# Line 349 | Line 456 | $(DependencyFile) :
456  
457   _dependall : $(DependencyFile)
458  
459 < $(DependencyFile) :
460 <        $(Print) $@
461 <        @cd $(PackageSourceDir); \
355 <        $(MakeDepend) $(MakeDependOptions) -f- -p$(PackageTargetDir)/ \
356 <        $(IncludePath) $(Source) > $(DependencyFile)
459 > $(DependencyFile) : $(DerivedSource)
460 >        $(Print) $@
461 >        @cd $(PackageSourceDir)
462  
463 +        touch Make.ctemp
464 +        touch Make.ctemp
465 +
466 + ifneq "$(words $(CppFiles))" "0"
467 +        $(Print) Make dependencies for $(CppFiles)
468 +        $(Print) $(CppCompiler) $(IncludePath) -MM $(CppFiles)  > Make.cpptemp
469 +        $(CppCompiler) $(IncludePath) -MM $(CppFiles)  > Make.cpptemp
470 +        cat Make.cpptemp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/obj\/&/g' >> $(DependencyFile)
471 +        cat Make.cpptemp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/MPIobj\/&/g' >> $(DependencyFile)
472 + endif
473 +
474 + ifneq "$(words $(CFiles))" "0"
475 +        $(Print) Make dependencies for $(CFiles)
476 +        $(Print) $(CCompiler)   $(IncludePath) -MM $(CFiles) $(DerivedCFiles)   > Make.ctemp
477 +        $(CCompiler)   $(IncludePath) -MM $(CFiles) $(DerivedCFiles)   > Make.ctemp
478 +        cat Make.ctemp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/obj\/&/g' >> $(DependencyFile)
479 +        cat Make.ctemp | sed 's/^[a-zA-Z0-9]/$$\(DEV_ROOT\)\/MPIobj\/&/g' >> $(DependencyFile)
480 +
481 + endif
482 +
483 + ifneq "$(words $(F90Files))" "0"
484 +        $(Print) Make dependencies for $(F90Files)
485 +        $(DEV_ROOT)/scripts/sfmakedepend  -I $(DEV_ROOT)/src -d '$$(DEV_ROOT)/obj' -f ./Make.ftemp -h *.F90
486 +        cat Make.ftemp >> $(DependencyFile)
487 + endif
488 +        $(Delete) Make.cpptemp Make.ctemp Make.ftemp
489 +
490   # make lib
491   lib    : $(PackageListLoop)
492          $(Print) Libraries built.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines