Files
geant4/config/globlib.gmk
T
2016-06-08 16:10:37 +02:00

128 lines
3.2 KiB
Plaintext

# $Id: globlib.gmk,v 1.18 2001/06/26 02:16:10 morita Exp $
# --------------------------------------------------------------
# Script for compound libraries. Gabriele Cosmo, 25/6/98.
# --------------------------------------------------------------
ifndef G4INSTALL
G4INSTALL = ..
endif
include $(G4INSTALL)/config/architecture.gmk
G4LIBDIR = $(G4LIB)/$(G4SYSTEM)
.PHONY : all glob global objs includes clean clean_libs wipe_libs
all: makesub $(G4SCHEMA_BOOT)
makesub:
@for dir in $(SUBDIRS); do (cd $$dir && $(MAKE)); done
ifdef G4ODBMS
@echo Copying tmp schema header from G4TMPDIR to $(G4SCHEMA_INCLUDE)
@rm -f $(G4SCHEMA_INCLUDE)/*.hh
@for dir in $(SUBDIRS); do (cd $$dir && $(MAKE) install_schema); done
endif
g4libraries_to_build:=
ifneq ($(G4LIB_BUILD_SHARED),)
SHARED_LIB=$(G4LIBDIR)/lib$(name).$(SHEXT)
g4libraries_to_build += $(SHARED_LIB)
else
SHARED_LIB=
endif
ifneq ($(G4LIB_BUILD_STATIC),)
g4libraries_to_build += $(G4LIBDIR)/lib$(name).a
endif
glob global: objs wipe_libs $(g4libraries_to_build)
##
## make static libraries
##
ifneq ($(G4LIB_BUILD_STATIC),)
$(G4LIBDIR)/lib$(name).a: \
$(foreach dir,$(SUBLIBS),$(G4TMP)/$(G4SYSTEM)/$(dir)/obj.last)
@if [ ! -d $(G4LIBDIR) ] ; then mkdir $(G4LIBDIR) ; fi
@echo Merging object files in $(G4LIBDIR)/lib$(name).a
@$(RM) $(G4LIBDIR)/lib$(name).a
#
#
#
@if [ X$(G4SYSTEM) = XWIN32-VC ] ; i=NO; \
then \
(( for lib in $(SUBLIBS); \
do ( if [ $$i = NO ]; \
then \
$(AR) $(OUT_LIB)$(G4LIBDIR)/lib$(name).lib \
$(G4TMP)/$(G4SYSTEM)/$$lib/*.o ; \
else \
$(AR) $(G4LIBDIR)/lib$(name).lib $(G4TMP)/$(G4SYSTEM)/$$lib/*.o; \
fi ); \
i=YES; \
done ) ; \
mv $(G4LIBDIR)/lib$(name).lib $(G4LIBDIR)/lib$(name).a); \
else \
(for lib in $(SUBLIBS); \
do ($(AR) $(OUT_LIB)$(G4LIBDIR)/lib$(name).a \
$(G4TMP)/$(G4SYSTEM)/$$lib/*.o); \
done);\
fi
#
#
#
@if [ -f /usr/bin/ranlib -o -f /bin/ranlib ] ; then \
ranlib $(G4LIBDIR)/lib$(name).a ; fi
endif
##
## make shared libraries
##
ifneq ($(G4LIB_BUILD_SHARED),)
$(SHARED_LIB): $(foreach dir,$(SUBLIBS),$(G4TMP)/$(G4SYSTEM)/$(dir)/obj.last)
@if [ ! -d $(G4LIBDIR) ] ; then mkdir $(G4LIBDIR) ; fi
@echo Creating global shared library $@
@$(RM) $@
# use system specific commands to build the library
$(build-global-shared-lib)
endif
objs:
@for dir in $(SUBDIRS); \
do (cd $$dir; $(MAKE) -q obj && ok=yes; \
if [ $$ok ]; \
then echo Nothing to be done for lib$(name) in $$dir/.; \
else $(MAKE) clean_libs; $(MAKE) obj; \
fi; ) \
done
includes::
@for dir in $(SUBDIRS); do (cd $$dir && $(MAKE) $@ ); done
ifdef G4ODBMS
-@cp -p $(G4SCHEMA_INCLUDE)/*.hh $(G4INCLUDE)/
endif
wipe_libs:
@for lib in $(SUBLIBS); do (rm -f $(G4LIBDIR)/lib$$lib.a); done
@for lib in $(SUBLIBS); do (rm -f $(G4LIBDIR)/lib$$lib.$(SHEXT)); done
clean:
@echo Cleaning up ...
@for lib in $(SUBLIBS); do ( \
rm -rf $(G4TMP)/$(G4SYSTEM)/$$lib;\
rm -f $(G4LIBDIR)/lib$$lib.a;\
rm -f $(G4LIBDIR)/lib$$lib.$(SHEXT) );\
done
@rm -f $(G4LIBDIR)/lib$(name).a
clean_libs:
@echo Removing lib$(name).a/.$(SHEXT) and sub-libraries ...
@for lib in $(SUBLIBS); do ( \
rm -f $(G4LIBDIR)/lib$$lib.a;\
rm -f $(G4LIBDIR)/lib$$lib.$(SHEXT) );\
done
@rm -f $(G4LIBDIR)/lib$(name).a
@rm -f $(G4LIBDIR)/lib$(name).$(SHEXT)