| 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@ |
| 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 |
< |
RPath = $(shell cd $(DEV_ROOT); pwd)/lib:$(OopseHome)/lib |
| 103 |
< |
ParallelRPath = $(shell cd $(DEV_ROOT); pwd)/MPIlib:$(OopseHome)/MPIlib |
| 111 |
< |
LinkOptions = \ |
| 112 |
< |
@F90LIBS@ \ |
| 113 |
< |
-Wl,-R$(RPath) |
| 102 |
> |
CombinedStaticLib = $(LibDir)/libOOPSE.a |
| 103 |
> |
CombinedParallelStaticLib = $(LibDir)/libOOPSE_MPI.a |
| 104 |
|
|
| 115 |
– |
ParallelLinkOptions = \ |
| 116 |
– |
@F90LIBS@ \ |
| 117 |
– |
-Wl,-R$(ParallelRPath) |
| 118 |
– |
|
| 105 |
|
ifdef Source |
| 106 |
|
#get the relative path of current package to source directory |
| 107 |
|
# /home/maul/gezelter/src/code/src/UseTheForce/Darkside --> UseTheForce/Darkside |
| 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))) |
| 233 |
< |
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" |
| 433 |
< |
%.a : $(ObjectFiles) $(ParallelObjectFiles) |
| 422 |
> |
%_UP.a : $(ObjectFiles) |
| 423 |
|
$(MAKE) $(MakeOptions) $(LibDir)/$@ |
| 424 |
< |
$(MAKE) $(MakeOptions) $(ParallelLibDir)/$@ |
| 425 |
< |
else |
| 437 |
< |
%.a : $(ObjectFiles) |
| 424 |
> |
|
| 425 |
> |
%_MPI.a : $(ParallelObjectFiles) |
| 426 |
|
$(MAKE) $(MakeOptions) $(LibDir)/$@ |
| 439 |
– |
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" |
| 449 |
< |
%.so : $(ObjectFiles) $(ParallelObjectFiles) |
| 435 |
> |
%_UP.so : $(ObjectFiles) |
| 436 |
|
$(MAKE) $(MakeOptions) $(LibDir)/$@ |
| 437 |
< |
$(MAKE) $(MakeOptions) $(ParallelLibDir)/$@ |
| 438 |
< |
else |
| 453 |
< |
%.so : $(ObjectFiles) |
| 437 |
> |
|
| 438 |
> |
%_MPI.so : $(ParallelObjectFiles) |
| 439 |
|
$(MAKE) $(MakeOptions) $(LibDir)/$@ |
| 455 |
– |
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) -o $@ |
| 489 |
> |
$(Executable) : $(CombinedStaticLib) $(ObjectFiles) |
| 490 |
> |
$(Linker) $(ObjectFiles) $(LinkOptions) $(LibDirs) $(CombinedStaticLib) $(Libraries) -o $@ |
| 491 |
|
|
| 492 |
< |
$(ParallelExecutable) : $(ParallelObjectFiles) |
| 493 |
< |
$(Linker) $(ParallelObjectFiles) $(ParallelLinkOptions) $(ParallelLibDirs) $(LibList) -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)/% |
| 513 |
|
$(RmiStubFiles) \ |
| 514 |
|
$(RmiSkeletonFiles) \ |
| 515 |
|
$(OtherTargetFiles) \ |
| 517 |
– |
$(SharedLibrary) \ |
| 516 |
|
$(StaticLibrary) \ |
| 519 |
– |
$(ParallelSharedLibrary) \ |
| 517 |
|
$(ParallelStaticLibrary) \ |
| 518 |
|
$(JarFile) \ |
| 519 |
|
$(Executable) \ |
| 527 |
|
$(RmiStubFiles) \ |
| 528 |
|
$(RmiSkeletonFiles) \ |
| 529 |
|
$(OtherTargetFiles) \ |
| 533 |
– |
$(SharedLibrary) \ |
| 530 |
|
$(StaticLibrary) \ |
| 531 |
|
$(JarFile) \ |
| 532 |
|
$(Executable) |