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 1518 by tim, Sat Oct 2 04:22:07 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/compiler81/lib \
83 +
84 + Libraries = \
85 +        mpich \
86 +        sprng \
87 +        ifcore \
88 +
89   #---------------------------------------------------------------------------
90   #
91   #  Directories
92   #
93   #---------------------------------------------------------------------------
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)
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 < Package          = $(subst $(SourceDir)/,,$(CurrentDir))
106 < PackageList      = $(Package)
107 < PackageSourceDir = $(SourceDir)/$(Package)
108 < PackageTargetDir = $(TargetDir)/$(Package)
109 < JavaMainClass    = $(subst /,.,$(Package)).$(Main)
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 > 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))
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 79 | Line 140 | OtherSourceFiles       = $(filter-out $(JavaFiles) $(C
140   FortranFiles           = $(filter %.f,     $(Source))
141   F90Files               = $(filter %.F90,   $(Source))
142   CorbaFiles             = $(filter %.idl,   $(Source))
143 + LexFiles               = $(filter %.l,     $(Source))
144 + YaccFiles              = $(filter %.y,     $(Source))
145   OtherSourceFiles       = $(filter-out $(JavaFiles) $(CppFiles) $(CFiles) \
146 <                                      $(FortranFiles) $(F90Files) \
147 <                                      $(CorbaFiles), \
146 >                                      $(FortranFiles) $(F90Files) $(LexFiles) \
147 >                                      $(YaccFiles) $(CorbaFiles), \
148                                        $(Source))
149   ManifestFile           = $(PackageSourceDir)/Manifest
87 SourceFiles            = $(JavaFiles:%.java=  $(PackageSourceDir)/%.java)\
88                         $(CppFiles:%.cpp=    $(PackageSourceDir)/%.cpp)\
89                         $(CFiles:%.c=        $(PackageSourceDir)/%.c)\
90                         $(FortranFiles:%.f=  $(PackageSourceDir)/%.f)\
91                         $(F90Files:%.F90=    $(PackageSourceDir)/%.F90)
150  
151 + SourceFiles            = $(JavaFiles)\
152 +                         $(CppFiles)\
153 +                         $(CFiles)\
154 +                         $(FortranFiles)\
155 +                         $(F90Files)\
156 +                         $(LexFiles)\
157 +                         $(YaccFiles)
158 +
159   # Target
160   JavaClassFiles         = $(JavaFiles:%.java=  $(PackageTargetDir)/%.class)
161   JavaClassFilesRel      = $(JavaFiles:%.java=  $(Package)/%.class)
# Line 98 | 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)
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)
182 >
183 > DerivedCFiles          = $(YaccFiles:%.y=    %.c) \
184 >                               $(LexFiles:%.l=     %.c)
185 >
186   OtherTargetFiles       = $(OtherSourceFiles:%=$(PackageTargetDir)/%)
187  
188   ThirdPartyJarsTmp = $(patsubst %,$(LibDir)/%,$(JavaLibraries))
# Line 110 | Line 192 | ifneq  "$(words $(ObjectFiles))" "0"
192    JavaPackageName   = $(subst /,.,$(Package))
193    JarFile           = $(LibDir)/$(subst /,,$(Package)).jar
194   endif
195 < ifneq  "$(words $(ObjectFiles))" "0"
195 >
196 > #if Main is defined, do not build library. It may not be true sometimes
197 > ifneq  "$(words $(ObjectFiles) $(ParallelObjectFiles))" "0"
198    DependencyFile    = $(PackageSourceDir)/Makedepend
115  SharedLibrary     = $(LibDir)/lib$(subst /,,$(Package)).so
116  StaticLibrary     = $(LibDir)/lib$(subst /,,$(Package)).a
199    ifneq "$(Main)" ""
200 <    Executable        = $(BinDir)/$(Main)
200 >    Executable             = $(BinDir)/$(Main)
201 >    ParallelExecutable     = $(BinDir)/$(Main)_MPI
202 >  else
203 >    SharedLibrary          = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package))).so
204 >    StaticLibrary          = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package))).a
205 >    ParallelSharedLibrary  = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package)))_MPI.so
206 >    ParallelStaticLibrary  = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package)))_MPI.a
207    endif
208   endif
209   #
# Line 125 | Line 213 | LocalLibs        = $(subst /,,$(Packages))
213   JavaPackageNames = $(subst /,.,$(JavaPackages))
214   IncludePath      = -I$(SourceDir) $(IncludeDirs:%=-I%)
215   LibDirs          = -L$(LibDir)    $(LibraryDirs:%=-L%)
216 < LocalLibs        = $(subst /,,$(Packages))
216 > LocalLibs        = $(subst /,,$(patsubst %, oopse_%, $(PackageLibs)))
217   LibList          = $(LocalLibs:%=-l%) $(Libraries:%=-l%)
218  
219  
# Line 135 | Line 223 | Copy                   = cp
223   #
224   #---------------------------------------------------------------------------
225   Print                  = @echo
226 + Move                   = mv
227   Copy                   = cp
228 < CCompiler              = gcc
229 < CppCompiler            = gcc
230 < Linker                 = gcc
228 > CCompiler              = icc
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/tim/code/OOPSE-2.0/ac-tools/shtool mkdir -p -f
236   Delete                 = rm -fr
237   StaticArchiver         = ar
238 < DynamicArchiver        = gcc
239 < FortranCompiler        = f77
240 < F90Compiler            = f90
238 > DynamicArchiver        = icc
239 > FortranCompiler        = @FC@
240 > F90Compiler            = ifort
241   JavaCompiler           = $(JAVA_HOME)/bin/javac
242   JavaArchiver           = $(JAVA_HOME)/bin/jar
243   JarSigner              = $(JAVA_HOME)/bin/jarsigner
# Line 156 | Line 248 | List                   = cat
248   Purify                 = purify
249   WordCount              = wc
250   List                   = cat
251 + Yacc                   = bison -y
252 + Lex                    = flex
253  
254 < MakeOptions            = -k -s
254 >
255 > MakeOptions            = -k
256   MakeDependOptions      =
257   StaticArchiverOptions  = rc
258   DynamicArchiverOptions = -shared
# Line 166 | Line 261 | F90Options             =
261   RmiOptions             = -d $(TargetDir) -classpath $(ClassPath) \
262                           -sourcepath $(SourceDir)
263   FortranOptions         =
264 < F90Options             =
264 > F90Options             =  -I$(SourceDir) -module $(TargetDir)
265   JavaCompilerOptions    = -d $(TargetDir) -classpath $(ClassPath) \
266                           -sourcepath $(SourceDir) -deprecation
267   JavaRunOptions         = -classpath $(ClassPath)
# Line 205 | Line 300 | $(PackageTargetDir)/%.o : $(PackageTargetDir) $(Packag
300          $(MakeDir) $@
301  
302   # .c -> .o
303 < $(PackageTargetDir)/%.o : $(PackageTargetDir) $(PackageSourceDir)/%.c
303 > $(PackageTargetDir)/%.o : %.c
304          $(Print) $@
305 <        @$(CCompiler) $(COptions) -c $(IncludePath) $< -o $@
305 >        $(CCompiler) $(COptions) -c $(IncludePath) $< -o $@
306  
307 < %.o : $(PackageSourceDir)/%.c
307 > %.o : %.c
308          $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
309  
310   # .cpp -> .o
311 < $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.cpp
217 <        $(Print) $@
311 > $(PackageTargetDir)/%.o : %.cpp
312          $(CppCompiler) $(CppOptions) -c $(IncludePath) $< -o $@
313  
314 < %.o : $(PackageSourceDir)/%.cpp
314 > %.o : %.cpp
315          $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
316  
317   # .f -> .o
318 < $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.f
319 <        $(Print) $@
226 <        @$(FortranCompiler) $(FortranOptions) -c $< -o $@
318 > $(PackageTargetDir)/%.o : %.f
319 >        $(FortranCompiler) $(FortranOptions) -c $< -o $@
320  
321 < %.o : $(PackageSourceDir)/%.f
321 > %.o : %.f
322          $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
323  
324   # .F90 -> .o
325 < $(PackageTargetDir)/%.o : $(PackageSourceDir)/%.F90
326 <        $(Print) $@
234 <        @$(F90Compiler) $(F90Options) -c $< -o $@
325 > $(PackageTargetDir)/%.o : %.F90
326 >        $(F90Compiler) $(F90Options) -c $< -o $@
327  
328 < %.o : $(PackageSourceDir)/%.F90
328 > %.o : %.F90
329          $(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
330  
331   # .java -> .class
332   $(PackageTargetDir)/%.class : $(PackageSourceDir)/%.java
333 <        $(Print) $@
242 <        @$(JavaCompiler) $(JavaCompilerOptions) $<
333 >        $(JavaCompiler) $(JavaCompilerOptions) $<
334  
335   %.class : $(PackageSourceDir)/%.java
336          @$(MAKE) $(MakeOptions) $(PackageTargetDir)/$@
337  
338   # .class -> .h
339   $(PackageSourceDir)/%.h : $(PackageTargetDir)/%.class
249        $(Print) $@
340          $(JniCompiler) $(JniOptions) $(JavaPackageName).$*
341  
342   %.h : %.class
343          $(MAKE) $(MakeOptions) $(PackageSourceDir)/$@
344  
345 < # .o -> .a
346 < $(LibDir)/%.a : $(ObjectFiles)
345 > #.y -> .h
346 > %.h : %.y
347 >        $(Yacc) -d  $?
348 >        @$(Move) y.tab.h $*.h
349 >        @$(Delete) y.tab.c
350 >
351 > #.y -> .c
352 > %.c : %.y
353 >        $(Yacc) -d  $?
354 >        @$(Move) y.tab.c $*.c
355 >        @$(Delete) y.tab.h
356 >
357 > # .l -> .c
358 > %.c : %.l
359          $(Print) $@
360 <        @$(StaticArchiver) $(StaticArchiverOptions) $@ $(ObjectFiles)
360 >        $(Print) $(Lex) -o$@ $?
361 >        @$(Lex) -o$@ $?
362 >
363 > # .o -> .a
364 > $(LibDir)/%.a : $(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)
265        $(Print) $@    
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) $@
# Line 302 | Line 420 | $(Executable) : $(ObjectFiles)
420  
421   # Executable
422   $(Executable) : $(ObjectFiles)
305        $(Print) $@
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 328 | Line 448 | _buildall : \
448          $(StaticLibrary) \
449          $(JarFile) \
450          $(Executable)
451 +        
452  
332
453   # make clean
454   clean : $(PackageListLoop)
455          $(Print) Done clean.    
456  
457   _cleanall :
458 <        $(Delete) $(PackageTargetDir)/* \
458 >        $(Delete) $(ObjectFiles) $(ParallelObjectFiles)
459 >
460 > # make distclean
461 > distclean : $(PackageListLoop)
462 >        $(Print) Done clean.    
463 >
464 > _distcleanall :
465 >        $(Delete) $(ObjectFiles) \
466 >                  $(ParallelObjectFiles) \
467                    $(JarFile) \
468                    $(SharedLibrary) \
469                    $(StaticLibrary) \
470 +                  $(ParallelSharedLibrary) \
471 +                  $(ParallelStaticLibrary) \
472                    $(Executable) \
473 +                  $(ParallelExecutable) \
474                    $(DependencyFile)
475  
476  
# Line 349 | Line 480 | $(DependencyFile) :
480  
481   _dependall : $(DependencyFile)
482  
483 < $(DependencyFile) :
484 <        $(Print) $@
485 <        @cd $(PackageSourceDir); \
355 <        $(MakeDepend) $(MakeDependOptions) -f- -p$(PackageTargetDir)/ \
356 <        $(IncludePath) $(Source) > $(DependencyFile)
483 > $(DependencyFile) : $(DerivedSource)
484 >        $(Print) $@
485 >        @cd $(PackageSourceDir)
486  
487 +        touch Make.ctemp
488 +        touch Make.ctemp
489 +
490 + ifneq "$(words $(CppFiles))" "0"
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"
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)
500 +
501 + endif
502 +
503 + ifneq "$(words $(F90Files))" "0"
504 +        $(DEV_ROOT)/scripts/filepp  -I $(DEV_ROOT)/src -od '$$(DEV_ROOT)/obj/' -D__F90  *.F90 > Make.ftemp
505 +        $(DEV_ROOT)/scripts/filepp  -I $(DEV_ROOT)/src -od '$$(DEV_ROOT)/MPIobj/' -DIS_MPI -D__F90  *.F90 >> Make.ftemp
506 +        cat Make.ftemp >> $(DependencyFile)
507 + endif
508 +        $(Delete) Make.cpptemp Make.ctemp Make.ftemp
509 +
510   # make lib
511   lib    : $(PackageListLoop)
512          $(Print) Libraries built.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines