source: trunk/config/globlib.gmk@ 1219

Last change on this file since 1219 was 1045, checked in by garnier, 17 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.