1
- # $Id: binmake.gmk,v 1.94 2003/11/18 11:28:10 hpw Exp $
1
+ # $Id: binmake.gmk,v 1.102 2004/06/11 14:07:47 gcosmo Exp $
2
2
# ----------------------------------------------------------
3
3
# Script defining rules and paths for making binaries.
4
4
# First implementation: Gabriele Cosmo, 25/06/1998.
@@ -20,6 +20,9 @@ include $(G4INSTALL)/config/G4VIS_USE.gmk
20
20
include $(G4INSTALL)/config/interactivity.gmk
21
21
include $(G4INSTALL)/config/analysis.gmk
22
22
23
+ # Verify the existance of the global static libraries first.
24
+ # if not verify the existance of global shared libraries (Unix only).
25
+ #
23
26
ifndef G4LIB_USE_GRANULAR
24
27
GLOBALLIBS := $(shell test -f $(G4LIB)/$(G4SYSTEM)/libG4global.a && echo yes)
25
28
ifndef GLOBALLIBS
@@ -28,10 +31,15 @@ ifndef G4LIB_USE_GRANULAR
28
31
endif
29
32
endif
30
33
34
+ # Verify the existance of granular shared libraries (Unix) or global DLLs (Windows)
35
+ #
31
36
ifndef SHAREDLIBS
32
37
SHAREDLIBS := $(shell test -f $(G4LIB)/$(G4SYSTEM)/libG4globman.$(SHEXT) && echo yes)
33
38
endif
34
-
39
+ ifneq (,$(findstring WIN32-VC,$(G4SYSTEM)))
40
+ SHAREDLIBS := $(shell test -f $(G4LIB)/$(G4SYSTEM)/G4global.$(SHEXT) && echo yes)
41
+ endif
42
+
35
43
ifndef INCFLAGS
36
44
ifeq ($(G4INCLUDE_EXEC),1)
37
45
INCFLAGS := -I$(G4INCLUDE)
@@ -64,44 +72,47 @@ ifndef INCFLAGS
64
72
-I$(G4BASE)/processes/electromagnetic/lowenergy/include \
65
73
-I$(G4BASE)/processes/hadronic/cross_sections/include \
66
74
-I$(G4BASE)/processes/hadronic/management/include \
75
+ -I$(G4BASE)/processes/hadronic/models/abrasion/include \
76
+ -I$(G4BASE)/processes/hadronic/models/binary_cascade/include \
67
77
-I$(G4BASE)/processes/hadronic/models/cascade/cascade/include \
68
78
-I$(G4BASE)/processes/hadronic/models/cascade/evaporation/include \
69
79
-I$(G4BASE)/processes/hadronic/models/cascade/utils/include \
70
80
-I$(G4BASE)/processes/hadronic/models/chiral_inv_phase_space/body/include \
71
81
-I$(G4BASE)/processes/hadronic/models/chiral_inv_phase_space/interface/include \
72
82
-I$(G4BASE)/processes/hadronic/models/coherent_elastic/include \
73
- -I$(G4BASE)/processes/hadronic/models/high_energy/include \
74
- -I$(G4BASE)/processes/hadronic/models/isotope_production/include \
75
- -I$(G4BASE)/processes/hadronic/models/leading_particle/include \
76
- -I$(G4BASE)/processes/hadronic/models/low_energy/include \
77
- -I$(G4BASE)/processes/hadronic/models/neutron_hp/include \
78
- -I$(G4BASE)/processes/hadronic/models/binary_cascade/include \
83
+ -I$(G4BASE)/processes/hadronic/models/de_excitation/ablation/include \
79
84
-I$(G4BASE)/processes/hadronic/models/de_excitation/evaporation/include \
80
85
-I$(G4BASE)/processes/hadronic/models/de_excitation/fermi_breakup/include \
81
- -I$(G4BASE)/processes/hadronic/models/de_excitation/fission/include \
86
+ -I$(G4BASE)/processes/hadronic/models/de_excitation/fission/include \
82
87
-I$(G4BASE)/processes/hadronic/models/de_excitation/gem_evaporation/include \
83
88
-I$(G4BASE)/processes/hadronic/models/de_excitation/handler/include \
84
89
-I$(G4BASE)/processes/hadronic/models/de_excitation/management/include \
85
90
-I$(G4BASE)/processes/hadronic/models/de_excitation/multifragmentation/include \
86
91
-I$(G4BASE)/processes/hadronic/models/de_excitation/photon_evaporation/include \
87
92
-I$(G4BASE)/processes/hadronic/models/de_excitation/util/include \
93
+ -I$(G4BASE)/processes/hadronic/models/em_dissociation/include \
94
+ -I$(G4BASE)/processes/hadronic/models/general_finalstate/include \
95
+ -I$(G4BASE)/processes/hadronic/models/high_energy/include \
96
+ -I$(G4BASE)/processes/hadronic/models/im_r_matrix/include \
88
97
-I$(G4BASE)/processes/hadronic/models/inucl/include \
98
+ -I$(G4BASE)/processes/hadronic/models/isotope_production/include \
99
+ -I$(G4BASE)/processes/hadronic/models/leading_particle/include \
100
+ -I$(G4BASE)/processes/hadronic/models/low_energy/include \
101
+ -I$(G4BASE)/processes/hadronic/models/management/include \
102
+ -I$(G4BASE)/processes/hadronic/models/neutron_hp/include \
103
+ -I$(G4BASE)/processes/hadronic/models/parton_string/diffraction/include \
104
+ -I$(G4BASE)/processes/hadronic/models/parton_string/hadronization/include \
105
+ -I$(G4BASE)/processes/hadronic/models/parton_string/management/include \
106
+ -I$(G4BASE)/processes/hadronic/models/parton_string/qgsm/include \
89
107
-I$(G4BASE)/processes/hadronic/models/photolepton_hadron/muon_nuclear/include \
90
108
-I$(G4BASE)/processes/hadronic/models/pre_equilibrium/exciton_model/include \
91
109
-I$(G4BASE)/processes/hadronic/models/quark_molecular_dynamics/body/include \
92
110
-I$(G4BASE)/processes/hadronic/models/quark_molecular_dynamics/util/include \
111
+ -I$(G4BASE)/processes/hadronic/models/radioactive_decay/include \
93
112
-I$(G4BASE)/processes/hadronic/models/relativistic_qmd/include \
94
113
-I$(G4BASE)/processes/hadronic/models/relativistic_qmd/uplusplus/include \
95
- -I$(G4BASE)/processes/hadronic/models/im_r_matrix/include \
96
- -I$(G4BASE)/processes/hadronic/models/management/include \
97
- -I$(G4BASE)/processes/hadronic/models/parton_string/diffraction/include \
98
- -I$(G4BASE)/processes/hadronic/models/parton_string/hadronization/include \
99
- -I$(G4BASE)/processes/hadronic/models/parton_string/management/include \
100
- -I$(G4BASE)/processes/hadronic/models/parton_string/qgsm/include \
101
114
-I$(G4BASE)/processes/hadronic/models/theo_high_energy/include \
102
115
-I$(G4BASE)/processes/hadronic/models/util/include \
103
- -I$(G4BASE)/processes/hadronic/models/general_finalstate/include \
104
- -I$(G4BASE)/processes/hadronic/models/radioactive_decay/include \
105
116
-I$(G4BASE)/processes/hadronic/processes/include \
106
117
-I$(G4BASE)/processes/hadronic/stopping/include \
107
118
-I$(G4BASE)/processes/hadronic/util/include \
@@ -160,23 +171,32 @@ endif
160
171
#
161
172
ifndef USER_DEFINED_LDLIBS
162
173
163
- # LDLIBS1 contains the very high level libraries ...
174
+ # TARGETLIB is the library generated for the final user application ...
164
175
#
165
176
ifdef G4EXLIB
166
- LDLIBS1 := -l$(G4TARGET)
177
+ ifeq (,$(findstring WIN32-VC,$(G4SYSTEM)))
178
+ # Unix
179
+ TARGETLIB := -l$(G4TARGET)
180
+ else
181
+ # Windows
182
+ TARGETLIB := lib$(G4TARGET).a
183
+ endif
167
184
endif
168
- LDLIBS1 += $(EXTRALIBS)
169
185
170
- # VISLIBS and UILIBS are now handled by the granular library script...
186
+ # LDLIBS1 contains the very high level libraries...
187
+ #
188
+ LDLIBS1 := $(EXTRALIBS)
189
+
190
+ # VISLIBS (and UILIBS?) is handled by the granular library script...
171
191
#
172
192
ifdef GLOBALLIBS
173
- LDLIBS1 + = $(VISLIBS) $(UILIBS) -lG4persistency
193
+ LDLIBS2 : = $(VISLIBS) -lG4interfaces -lG4persistency
174
194
175
195
ifdef G4USE_G3TOG4
176
- LDLIBS1 += -lG3toG4
196
+ LDLIBS2 += -lG3toG4
177
197
endif
178
198
179
- LDLIBS2 : = -lG4readout \
199
+ LDLIBS2 + = -lG4readout \
180
200
-lG4run \
181
201
-lG4event \
182
202
-lG4tracking \
@@ -241,13 +261,18 @@ LDLIBS_PREFINAL += $(LDLIBS4)
241
261
ifneq (,$(findstring WIN32-VC,$(G4SYSTEM)))
242
262
WIN32TMP := $(patsubst -L%,$(LIB_PATH)%,$(LDFLAGS))
243
263
LDFLAGS = $(patsubst /,$(PATH_DEL),$(WIN32TMP))
244
- LDLIBS = $(patsubst -l%,lib%.a,$(LDLIBS_PREFINAL))
264
+ WIN32TMP2 := $(patsubst -L%,$(LIB_PATH)%,$(LDLIBS_PREFINAL))
265
+ ifdef SHAREDLIBS
266
+ LDLIBS = $(TARGETLIB) $(patsubst -l%,lib%.lib,$(WIN32TMP2))
267
+ else
268
+ LDLIBS = $(TARGETLIB) $(patsubst -l%,lib%.a,$(WIN32TMP2))
269
+ endif
245
270
else
246
- LDLIBS = $(LDLIBS_PREFINAL)
271
+ LDLIBS = $(TARGETLIB) $( LDLIBS_PREFINAL)
247
272
endif
248
273
249
274
ifdef transform-RPath
250
- #invoke system specific transformation of
275
+ # Invoke system specific transformation of
251
276
include $(G4INSTALL)/config/sys/$(G4SYSTEM)-runpath.gmk
252
277
endif
253
278
@@ -279,7 +304,7 @@ ifndef USER_DEFINED_LDLIBS
279
304
echo " gmake libmap"; \
280
305
exit 1; fi
281
306
else
282
- @echo "Using global libraries."
307
+ @echo "Using global libraries .. ."
283
308
endif
284
309
endif
285
310
@if [ ! -d $(G4BINDIR) ] ; then mkdir $(G4BINDIR) ;fi
@@ -339,7 +364,7 @@ $(G4TMPDIR)/exe/$(G4TARGET).d: $(G4TARGET).cc
339
364
@if [ ! -d $(G4TMP)/$(G4SYSTEM) ] ; then mkdir $(G4TMP)/$(G4SYSTEM) ;fi
340
365
@if [ ! -d $(G4TMPDIR) ] ; then mkdir $(G4TMPDIR) ;fi
341
366
@if [ ! -d $(G4TMPDIR)/exe ] ; then mkdir $(G4TMPDIR)/exe ;fi
342
- @echo Making dependency for file $<...
367
+ @echo Making dependency for file $< ...
343
368
@set -e;\
344
369
g++ $(GPPFLAGS) $(CPPFLAGS) -w $< |\
345
370
sed 's!$(G4TARGET)\.o!$(G4TMPDIR)/exe/& $@!' >$@;\
0 commit comments