source: trunk/config/globlib.gmk @ 1349

Last change on this file since 1349 was 1349, checked in by garnier, 13 years ago

update

File size: 3.6 KB
Line 
1# $Id: globlib.gmk,v 1.30 2010/09/30 09:04:01 gcosmo Exp $
2# --------------------------------------------------------------
3# Script for compound libraries.  Gabriele Cosmo, 25/6/98.
4# --------------------------------------------------------------
5
6ifndef G4INSTALL
7  G4INSTALL = ..
8endif
9
10include $(G4INSTALL)/config/architecture.gmk
11
12G4LIBDIR = $(G4LIB)/$(G4SYSTEM)
13
14.PHONY : all glob global obj objs includes clean clean_libs wipe_libs
15
16all: makesub
17
18makesub:
19        @for dir in $(SUBDIRS); do (cd $$dir && $(MAKE)); done
20
21g4libraries_to_build:=
22
23ifeq ($(G4LIB_NO_SHARED),)
24ifneq ($(G4LIB_BUILD_SHARED),)
25  SHARED_LIB=$(G4LIBDIR)/lib$(name).$(SHEXT)
26  g4libraries_to_build += $(SHARED_LIB)
27else
28  SHARED_LIB=
29endif
30endif
31
32ifneq ($(G4LIB_BUILD_STATIC),)
33  g4libraries_to_build += $(G4LIBDIR)/lib$(name).a
34endif
35
36glob global: objs wipe_libs $(g4libraries_to_build)
37
38##
39## make static libraries
40##
41ifneq ($(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
76endif
77
78
79##
80## make shared libraries
81##
82ifeq ($(G4LIB_NO_SHARED),)
83ifneq ($(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)
90endif
91endif
92
93obj:
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) obj; \
99            fi; ) \
100          done
101
102objs:
103        @for dir in $(SUBDIRS); \
104          do (cd $$dir; $(MAKE) -q obj && ok=yes; \
105            if [ $$ok ]; \
106            then echo Nothing to be done for lib$(name) in $$dir/.; \
107            else $(MAKE) clean_libs; $(MAKE) obj; \
108            fi; ) \
109          done
110
111includes::
112        @for dir in $(SUBDIRS); do (cd $$dir && $(MAKE) $@ ); done
113       
114wipe_libs:
115        @for lib in $(SUBLIBS); do (rm -f $(G4LIBDIR)/lib$$lib.a); done
116        @for lib in $(SUBLIBS); do (rm -f $(G4LIBDIR)/lib$$lib.$(SHEXT)); done
117
118clean::
119        @echo Cleaning up ...
120        @for lib in $(SUBLIBS); do ( \
121                                 rm -rf $(G4TMP)/$(G4SYSTEM)/$$lib;\
122                                 rm -f $(G4LIBDIR)/*$$lib.a;\
123                                 rm -f $(G4LIBDIR)/*$$lib.lib;\
124                                 rm -f $(G4LIBDIR)/*$$lib.exp;\
125                                 rm -f $(G4LIBDIR)/*$$lib.$(SHEXT) );\
126                                done
127        @for dir in $(SUBDIRS); do (rm -rf $$dir/moc); done
128        @rm -f $(G4LIBDIR)/*$(name).a
129        @rm -f $(G4LIBDIR)/*$(name).lib
130        @rm -f $(G4LIBDIR)/*$(name).exp
131        @rm -f $(G4LIBDIR)/*$(name).$(SHEXT)
132
133clean_libs::
134        @echo Removing lib$(name).a/.$(SHEXT) and sub-libraries ...
135        @for lib in $(SUBLIBS); do ( \
136                                  rm -f $(G4LIBDIR)/*$$lib.a;\
137                                  rm -f $(G4LIBDIR)/*$$lib.lib;\
138                                  rm -f $(G4LIBDIR)/*$$lib.exp;\
139                                  rm -f $(G4LIBDIR)/*$$lib.$(SHEXT) );\
140                                done
141        @rm -f $(G4LIBDIR)/*$(name).a
142        @rm -f $(G4LIBDIR)/*$(name).lib
143        @rm -f $(G4LIBDIR)/*$(name).exp
144        @rm -f $(G4LIBDIR)/*$(name).$(SHEXT)
Note: See TracBrowser for help on using the repository browser.