121 lines
3.0 KiB
Plaintext
121 lines
3.0 KiB
Plaintext
# $Id: globlib.gmk,v 1.20 2003/01/22 18:02:04 gcosmo 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
|
|
|
|
makesub:
|
|
@for dir in $(SUBDIRS); do (cd $$dir && $(MAKE)); done
|
|
|
|
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 -o X$(G4SYSTEM) = XWIN32-VC7 ] ; \
|
|
then \
|
|
i=NO; \
|
|
(( 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
|
|
|
|
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)
|