source: trunk/config/globlib.gmk@ 1350

Last change on this file since 1350 was 1349, checked in by garnier, 15 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.