[1045] | 1 | # $Id: globlib.gmk,v 1.29 2009/02/26 16:40:40 gcosmo Exp $ |
---|
[472] | 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 |
---|
[1045] | 118 | @for dir in $(SUBDIRS); do (rm -rf $$dir/moc); done |
---|
[472] | 119 | @rm -f $(G4LIBDIR)/*$(name).a |
---|
| 120 | @rm -f $(G4LIBDIR)/*$(name).lib |
---|
| 121 | @rm -f $(G4LIBDIR)/*$(name).exp |
---|
| 122 | @rm -f $(G4LIBDIR)/*$(name).$(SHEXT) |
---|
| 123 | |
---|
| 124 | clean_libs:: |
---|
| 125 | @echo Removing lib$(name).a/.$(SHEXT) and sub-libraries ... |
---|
| 126 | @for lib in $(SUBLIBS); do ( \ |
---|
| 127 | rm -f $(G4LIBDIR)/*$$lib.a;\ |
---|
| 128 | rm -f $(G4LIBDIR)/*$$lib.lib;\ |
---|
| 129 | rm -f $(G4LIBDIR)/*$$lib.exp;\ |
---|
| 130 | rm -f $(G4LIBDIR)/*$$lib.$(SHEXT) );\ |
---|
| 131 | done |
---|
| 132 | @rm -f $(G4LIBDIR)/*$(name).a |
---|
| 133 | @rm -f $(G4LIBDIR)/*$(name).lib |
---|
| 134 | @rm -f $(G4LIBDIR)/*$(name).exp |
---|
| 135 | @rm -f $(G4LIBDIR)/*$(name).$(SHEXT) |
---|