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 | |
---|
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 |
---|
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 | |
---|
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) |
---|