| [472] | 1 | # $Id: globlib.gmk,v 1.28 2005/12/07 09:53:46 gcosmo Exp $
|
|---|
| 2 | # --------------------------------------------------------------
|
|---|
| 3 | # Script for compound libraries. Gabriele Cosmo, 25/6/98.
|
|---|
| 4 | # --------------------------------------------------------------
|
|---|
| 5 |
|
|---|
| 6 | ifndef G4INSTALL
|
|---|
| 7 | G4INSTALL = ..
|
|---|
| 8 | endif
|
|---|
| 9 |
|
|---|
| 10 | include $(G4INSTALL)/config/architecture.gmk
|
|---|
| 11 |
|
|---|
| 12 | G4LIBDIR = $(G4LIB)/$(G4SYSTEM)
|
|---|
| 13 |
|
|---|
| 14 | .PHONY : all glob global objs includes clean clean_libs wipe_libs
|
|---|
| 15 |
|
|---|
| 16 | all: makesub
|
|---|
| 17 |
|
|---|
| 18 | makesub:
|
|---|
| 19 | @for dir in $(SUBDIRS); do (cd $$dir && $(MAKE)); done
|
|---|
| 20 |
|
|---|
| 21 | g4libraries_to_build:=
|
|---|
| 22 |
|
|---|
| 23 | ifeq ($(G4LIB_NO_SHARED),)
|
|---|
| 24 | ifneq ($(G4LIB_BUILD_SHARED),)
|
|---|
| 25 | SHARED_LIB=$(G4LIBDIR)/lib$(name).$(SHEXT)
|
|---|
| 26 | g4libraries_to_build += $(SHARED_LIB)
|
|---|
| 27 | else
|
|---|
| 28 | SHARED_LIB=
|
|---|
| 29 | endif
|
|---|
| 30 | endif
|
|---|
| 31 |
|
|---|
| 32 | ifneq ($(G4LIB_BUILD_STATIC),)
|
|---|
| 33 | g4libraries_to_build += $(G4LIBDIR)/lib$(name).a
|
|---|
| 34 | endif
|
|---|
| 35 |
|
|---|
| 36 | glob global: objs wipe_libs $(g4libraries_to_build)
|
|---|
| 37 |
|
|---|
| 38 | ##
|
|---|
| 39 | ## make static libraries
|
|---|
| 40 | ##
|
|---|
| 41 | ifneq ($(G4LIB_BUILD_STATIC),)
|
|---|
| 42 | $(G4LIBDIR)/lib$(name).a: \
|
|---|
| 43 | $(foreach dir,$(SUBLIBS),$(G4TMP)/$(G4SYSTEM)/$(dir)/obj.last)
|
|---|
| 44 | @if [ ! -d $(G4LIBDIR) ] ; then mkdir $(G4LIBDIR) ; fi
|
|---|
| 45 | @echo Merging object files in $(G4LIBDIR)/lib$(name).a ...
|
|---|
| 46 | @$(RM) $(G4LIBDIR)/lib$(name).a
|
|---|
| 47 | #
|
|---|
| 48 | #
|
|---|
| 49 | #
|
|---|
| 50 | @if [ X$(G4SYSTEM) = XWIN32-VC ] ; \
|
|---|
| 51 | then \
|
|---|
| 52 | i=NO; \
|
|---|
| 53 | (( for lib in $(SUBLIBS); \
|
|---|
| 54 | do ( if [ $$i = NO ]; \
|
|---|
| 55 | then \
|
|---|
| 56 | $(AR) $(OUT_LIB)$(G4LIBDIR)/lib$(name).lib \
|
|---|
| 57 | $(G4TMP)/$(G4SYSTEM)/$$lib/*.o ; \
|
|---|
| 58 | else \
|
|---|
| 59 | $(AR) $(G4LIBDIR)/lib$(name).lib $(G4TMP)/$(G4SYSTEM)/$$lib/*.o; \
|
|---|
| 60 | fi ); \
|
|---|
| 61 | i=YES; \
|
|---|
| 62 | done ) ; \
|
|---|
| 63 | mv $(G4LIBDIR)/lib$(name).lib $(G4LIBDIR)/lib$(name).a); \
|
|---|
| 64 | else \
|
|---|
| 65 | (for lib in $(SUBLIBS); \
|
|---|
| 66 | do ($(AR) $(OUT_LIB)$(G4LIBDIR)/lib$(name).a \
|
|---|
| 67 | $(G4TMP)/$(G4SYSTEM)/$$lib/*.o); \
|
|---|
| 68 | done);\
|
|---|
| 69 | fi
|
|---|
| 70 | #
|
|---|
| 71 | #
|
|---|
| 72 | #
|
|---|
| 73 | @if [ X$(G4SYSTEM) != XWIN32-VC ] ; then \
|
|---|
| 74 | if [ -f /usr/bin/ranlib -o -f /bin/ranlib ] ; then \
|
|---|
| 75 | ranlib $(G4LIBDIR)/lib$(name).a ; fi ; fi
|
|---|
| 76 | endif
|
|---|
| 77 |
|
|---|
| 78 |
|
|---|
| 79 | ##
|
|---|
| 80 | ## make shared libraries
|
|---|
| 81 | ##
|
|---|
| 82 | ifeq ($(G4LIB_NO_SHARED),)
|
|---|
| 83 | ifneq ($(G4LIB_BUILD_SHARED),)
|
|---|
| 84 | $(SHARED_LIB): $(foreach dir,$(SUBLIBS),$(G4TMP)/$(G4SYSTEM)/$(dir)/obj.last)
|
|---|
| 85 | @if [ ! -d $(G4LIBDIR) ] ; then mkdir $(G4LIBDIR) ; fi
|
|---|
| 86 | @echo Creating global shared library $@ ...
|
|---|
| 87 | @$(RM) $@
|
|---|
| 88 | # use system specific commands to build the library
|
|---|
| 89 | $(build-global-shared-lib)
|
|---|
| 90 | endif
|
|---|
| 91 | endif
|
|---|
| 92 |
|
|---|
| 93 | objs:
|
|---|
| 94 | @for dir in $(SUBDIRS); \
|
|---|
| 95 | do (cd $$dir; $(MAKE) -q obj && ok=yes; \
|
|---|
| 96 | if [ $$ok ]; \
|
|---|
| 97 | then echo Nothing to be done for lib$(name) in $$dir/.; \
|
|---|
| 98 | else $(MAKE) clean_libs; $(MAKE) obj; \
|
|---|
| 99 | fi; ) \
|
|---|
| 100 | done
|
|---|
| 101 |
|
|---|
| 102 | includes::
|
|---|
| 103 | @for dir in $(SUBDIRS); do (cd $$dir && $(MAKE) $@ ); done
|
|---|
| 104 |
|
|---|
| 105 | wipe_libs:
|
|---|
| 106 | @for lib in $(SUBLIBS); do (rm -f $(G4LIBDIR)/lib$$lib.a); done
|
|---|
| 107 | @for lib in $(SUBLIBS); do (rm -f $(G4LIBDIR)/lib$$lib.$(SHEXT)); done
|
|---|
| 108 |
|
|---|
| 109 | clean::
|
|---|
| 110 | @echo Cleaning up ...
|
|---|
| 111 | @for lib in $(SUBLIBS); do ( \
|
|---|
| 112 | rm -rf $(G4TMP)/$(G4SYSTEM)/$$lib;\
|
|---|
| 113 | rm -f $(G4LIBDIR)/*$$lib.a;\
|
|---|
| 114 | rm -f $(G4LIBDIR)/*$$lib.lib;\
|
|---|
| 115 | rm -f $(G4LIBDIR)/*$$lib.exp;\
|
|---|
| 116 | rm -f $(G4LIBDIR)/*$$lib.$(SHEXT) );\
|
|---|
| 117 | done
|
|---|
| 118 | @rm -f $(G4LIBDIR)/*$(name).a
|
|---|
| 119 | @rm -f $(G4LIBDIR)/*$(name).lib
|
|---|
| 120 | @rm -f $(G4LIBDIR)/*$(name).exp
|
|---|
| 121 | @rm -f $(G4LIBDIR)/*$(name).$(SHEXT)
|
|---|
| 122 |
|
|---|
| 123 | clean_libs::
|
|---|
| 124 | @echo Removing lib$(name).a/.$(SHEXT) and sub-libraries ...
|
|---|
| 125 | @for lib in $(SUBLIBS); do ( \
|
|---|
| 126 | rm -f $(G4LIBDIR)/*$$lib.a;\
|
|---|
| 127 | rm -f $(G4LIBDIR)/*$$lib.lib;\
|
|---|
| 128 | rm -f $(G4LIBDIR)/*$$lib.exp;\
|
|---|
| 129 | rm -f $(G4LIBDIR)/*$$lib.$(SHEXT) );\
|
|---|
| 130 | done
|
|---|
| 131 | @rm -f $(G4LIBDIR)/*$(name).a
|
|---|
| 132 | @rm -f $(G4LIBDIR)/*$(name).lib
|
|---|
| 133 | @rm -f $(G4LIBDIR)/*$(name).exp
|
|---|
| 134 | @rm -f $(G4LIBDIR)/*$(name).$(SHEXT)
|
|---|