source: trunk/config/globlib.gmk @ 1045

Last change on this file since 1045 was 1045, checked in by garnier, 15 years ago

maj en aussi sur CVS

File size: 3.4 KB
Line 
1# $Id: globlib.gmk,v 1.29 2009/02/26 16:40:40 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 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
93objs:
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
102includes::
103        @for dir in $(SUBDIRS); do (cd $$dir && $(MAKE) $@ ); done
104       
105wipe_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
109clean::
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        @for dir in $(SUBDIRS); do (rm -rf $$dir/moc); done
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
124clean_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)
Note: See TracBrowser for help on using the repository browser.