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 \ |
37 |
|
|
38 |
< |
#packages contain libraries |
38 |
> |
#packages containing libraries |
39 |
|
PackageLibs = \ |
40 |
|
utils \ |
41 |
|
math \ |
52 |
|
profiling \ |
53 |
|
restraints \ |
54 |
|
|
55 |
+ |
#packages containing applications |
56 |
+ |
Applications = \ |
57 |
+ |
applications/oopse \ |
58 |
+ |
applications/dump2Xyz \ |
59 |
+ |
applications/simpleBuilder |
60 |
+ |
|
61 |
|
IncludeDirs = \ |
62 |
|
@SPRNG_INC_DIR@ \ |
63 |
|
@MPI_INC_DIR@ |
70 |
|
@SPRNG_LIB@ \ |
71 |
|
@MPI_LIB@ \ |
72 |
|
@MPI_F90_LIB@ |
86 |
– |
|
87 |
– |
LinkOptions = \ |
88 |
– |
@F90LIBS@ |
73 |
|
|
74 |
|
OopseHome = @OOPSE_HOME@ |
75 |
|
ForceParamDir = @OOPSE_HOME@/share/forceFields/ |
77 |
|
FrcDeclare = -DFRC_PATH="$(ForceParamDir)" |
78 |
|
ParallelDeclare = -DIS_MPI |
79 |
|
UseMPI = @USE_MPI@ |
80 |
+ |
LinkOptions = \ |
81 |
+ |
@F90LIBS@ |
82 |
|
|
83 |
+ |
ParallelLinkOptions = \ |
84 |
+ |
@F90LIBS@ |
85 |
+ |
|
86 |
+ |
|
87 |
|
#--------------------------------------------------------------------------- |
88 |
|
# |
89 |
|
# Directories |
99 |
|
BinDir = $(DEV_ROOT)/bin |
100 |
|
DocsDir = $(DEV_ROOT)/docs |
101 |
|
CurrentDir = $(CURDIR) |
102 |
+ |
CombinedStaticLib = $(LibDir)/libOOPSE.a |
103 |
+ |
CombinedParallelStaticLib = $(LibDir)/libOOPSE_MPI.a |
104 |
|
|
105 |
|
ifdef Source |
106 |
|
#get the relative path of current package to source directory |
115 |
|
PackageParallelTargetDir = $(ParallelTargetDir) |
116 |
|
JavaMainClass = $(subst /,.,$(Package)).$(Main) |
117 |
|
else |
118 |
< |
PackageList = $(Packages) $(JavaPackages) |
118 |
> |
PackageList = $(PackageLibs) $(JavaPackages) $(Applications) |
119 |
|
endif |
120 |
|
|
121 |
|
PackageListLoop = $(patsubst %,$(SourceDir)/%/.loop,$(PackageList)) |
201 |
|
Executable = $(BinDir)/$(Main) |
202 |
|
ParallelExecutable = $(BinDir)/$(Main)_MPI |
203 |
|
else |
204 |
< |
SharedLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package))).so |
205 |
< |
StaticLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package))).a |
206 |
< |
ParallelSharedLibrary = $(ParallelLibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package))).so |
207 |
< |
ParallelStaticLibrary = $(ParallelLibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package))).a |
204 |
> |
SharedLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package)))_UP.so |
205 |
> |
StaticLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package)))_UP.a |
206 |
> |
ParallelSharedLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package)))_MPI.so |
207 |
> |
ParallelStaticLibrary = $(LibDir)/lib$(subst /,,$(patsubst %,oopse_%,$(Package)))_MPI.a |
208 |
|
endif |
209 |
|
endif |
210 |
|
# |
214 |
|
JavaPackageNames = $(subst /,.,$(JavaPackages)) |
215 |
|
IncludePath = -I$(SourceDir) $(IncludeDirs:%=-I%) |
216 |
|
LibDirs = -L$(LibDir) $(LibraryDirs:%=-L%) |
217 |
< |
ParallelLibDirs = -L$(ParallelLibDir) $(LibraryDirs:%=-L%) |
218 |
< |
LocalLibs = $(subst /,,$(patsubst %, oopse_%, $(PackageLibs))) |
227 |
< |
ParallelLocalLibs= $(subst /,,$(patsubst %, oopse_%, $(PackageLibs))) |
217 |
> |
LocalLibs = $(subst /,,$(patsubst %, oopse_%_UP, $(PackageLibs))) |
218 |
> |
ParallelLocalLibs= $(subst /,,$(patsubst %, oopse_%_MPI, $(PackageLibs))) |
219 |
|
LibList = $(LocalLibs:%=-l%) $(Libraries) |
220 |
+ |
LibNames = $(LocalLibs:%=$(LibDir)/lib%.a) |
221 |
|
ParallelLibList = $(ParallelLocalLibs:%=-l%) $(Libraries) |
222 |
+ |
ParallelLibNames = $(ParallelLocalLibs:%=$(LibDir)/lib%.a) |
223 |
|
|
224 |
|
|
225 |
|
#--------------------------------------------------------------------------- |
255 |
|
List = cat |
256 |
|
Yacc = @YACC@ |
257 |
|
Lex = @LEX@ |
258 |
+ |
Ranlib = @RANLIB@ |
259 |
|
|
260 |
|
|
261 |
|
MakeOptions = -k |
411 |
|
|
412 |
|
# .o -> .a |
413 |
|
|
414 |
< |
$(LibDir)/%.a : $(ObjectFiles) |
414 |
> |
$(LibDir)/%_UP.a : $(ObjectFiles) |
415 |
|
$(StaticArchiver) $(StaticArchiverOptions) $@ $(ObjectFiles) |
416 |
+ |
touch $(LibDir)/.stamp_UP |
417 |
|
|
418 |
< |
$(ParallelLibDir)/%.a: $(ParallelObjectFiles) |
418 |
> |
$(LibDir)/%_MPI.a: $(ParallelObjectFiles) |
419 |
|
$(StaticArchiver) $(StaticArchiverOptions) $@ $(ParallelObjectFiles) |
420 |
+ |
touch $(LibDir)/.stamp_MPI |
421 |
|
|
422 |
< |
ifeq "$(UseMPI)" "yes" |
427 |
< |
%.a : $(ObjectFiles) $(ParallelObjectFiles) |
422 |
> |
%_UP.a : $(ObjectFiles) |
423 |
|
$(MAKE) $(MakeOptions) $(LibDir)/$@ |
424 |
< |
$(MAKE) $(MakeOptions) $(ParallelLibDir)/$@ |
425 |
< |
else |
431 |
< |
%.a : $(ObjectFiles) |
424 |
> |
|
425 |
> |
%_MPI.a : $(ParallelObjectFiles) |
426 |
|
$(MAKE) $(MakeOptions) $(LibDir)/$@ |
433 |
– |
endif |
427 |
|
|
428 |
|
# .o -> .so |
429 |
< |
$(LibDir)/%.so : $(ObjectFiles) |
429 |
> |
$(LibDir)/%_UP.so : $(ObjectFiles) |
430 |
|
$(DynamicArchiver) $(ObjectFiles) $(DynamicArchiverOptions) -o $@ |
431 |
|
|
432 |
< |
$(ParallelLibDir)/%.so : $(ParallelObjectFiles) |
432 |
> |
$(LibDir)/%_MPI.so : $(ParallelObjectFiles) |
433 |
|
$(DynamicArchiver) $(ParallelObjectFiles) $(DynamicArchiverOptions) -o $@ |
434 |
|
|
435 |
< |
ifeq "$(UseMPI)" "yes" |
443 |
< |
%.so : $(ObjectFiles) $(ParallelObjectFiles) |
435 |
> |
%_UP.so : $(ObjectFiles) |
436 |
|
$(MAKE) $(MakeOptions) $(LibDir)/$@ |
437 |
< |
$(MAKE) $(MakeOptions) $(ParallelLibDir)/$@ |
438 |
< |
else |
447 |
< |
%.so : $(ObjectFiles) |
437 |
> |
|
438 |
> |
%_MPI.so : $(ParallelObjectFiles) |
439 |
|
$(MAKE) $(MakeOptions) $(LibDir)/$@ |
449 |
– |
endif |
440 |
|
|
441 |
|
# .class -> .jar |
442 |
|
$(LibDir)/%.jar : $(JavaClassFiles) $(OtherTargetFiles) |
470 |
|
%_Skel.class : %.class |
471 |
|
$(MAKE) $(MakeOptions) $(PackageTargetDir)/$@ |
472 |
|
|
473 |
+ |
#GUN make funtions to merge the libraries |
474 |
+ |
find_objs = $(shell $(StaticArchiver) -t $(1)) |
475 |
+ |
extract_objs = $(shell $(StaticArchiver) -x $(1) $(call find_objs, $(1))) |
476 |
+ |
create_archive = $(shell $(StaticArchiver) $(StaticArchiverOptions) $(2) $(call find_objs, $(1))) |
477 |
+ |
remove_objs = $(shell $(Delete) $(call find_objs, $(1))) |
478 |
+ |
do_create = $(call extract_objs,$(1))$(call create_archive,$(1),$(2))$(call remove_objs,$(1)) |
479 |
+ |
|
480 |
+ |
$(CombinedStaticLib) : $(LibDir)/.stamp_UP |
481 |
+ |
$(foreach thisLib,$(LibNames),$(call do_create,$(thisLib),$@)) |
482 |
+ |
$(Ranlib) $(CombinedStaticLib) |
483 |
+ |
|
484 |
+ |
$(CombinedParallelStaticLib) : $(LibDir)/.stamp_MPI |
485 |
+ |
$(foreach thisLib,$(ParallelLibNames), $(call do_create, $(thisLib), $@)) |
486 |
+ |
$(Ranlib) $(CombinedParallelStaticLib) |
487 |
+ |
|
488 |
|
# Executable |
489 |
< |
$(Executable) : $(ObjectFiles) |
490 |
< |
$(Linker) $(ObjectFiles) $(LinkOptions) $(LibDirs) $(LibList) $(LibList) $(LibList) -o $@ |
489 |
> |
$(Executable) : $(CombinedStaticLib) $(ObjectFiles) |
490 |
> |
$(Linker) $(ObjectFiles) $(LinkOptions) $(LibDirs) $(CombinedStaticLib) $(Libraries) -o $@ |
491 |
|
|
492 |
< |
$(ParallelExecutable) : $(ParallelObjectFiles) |
493 |
< |
$(Linker) $(ParallelObjectFiles) $(LinkOptions) $(ParallelLibDirs) $(ParallelLibList) $(ParallelLibList) $(ParallelLibList) -o $@ |
492 |
> |
$(ParallelExecutable) : $(CombinedParallelStaticLib) $(ParallelObjectFiles) |
493 |
> |
$(Linker) $(ParallelObjectFiles) $(ParallelLinkOptions) $(LibDirs) $(CombinedParallelStaticLib) $(Libraries) -o $@ |
494 |
|
|
495 |
|
# Anything else is just copied from source to target |
496 |
|
$(PackageTargetDir)/% : $(PackageSourceDir)/% |