1 |
siliconforks |
399 |
# vim:set ts=8 sw=8 sts=8 noet: |
2 |
|
|
# |
3 |
|
|
# ***** BEGIN LICENSE BLOCK ***** |
4 |
|
|
# Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
5 |
|
|
# |
6 |
|
|
# The contents of this file are subject to the Mozilla Public License Version |
7 |
|
|
# 1.1 (the "License"); you may not use this file except in compliance with |
8 |
|
|
# the License. You may obtain a copy of the License at |
9 |
|
|
# http://www.mozilla.org/MPL/ |
10 |
|
|
# |
11 |
|
|
# Software distributed under the License is distributed on an "AS IS" basis, |
12 |
|
|
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
13 |
|
|
# for the specific language governing rights and limitations under the |
14 |
|
|
# License. |
15 |
|
|
# |
16 |
|
|
# The Original Code is mozilla.org code. |
17 |
|
|
# |
18 |
|
|
# The Initial Developer of the Original Code is |
19 |
|
|
# Netscape Communications Corporation. |
20 |
|
|
# Portions created by the Initial Developer are Copyright (C) 1998 |
21 |
|
|
# the Initial Developer. All Rights Reserved. |
22 |
|
|
# |
23 |
|
|
# Contributor(s): |
24 |
|
|
# Chase Phillips <chase@mozilla.org> |
25 |
|
|
# Benjamin Smedberg <benjamin@smedbergs.us> |
26 |
|
|
# Jeff Walden <jwalden+code@mit.edu> |
27 |
|
|
# |
28 |
|
|
# Alternatively, the contents of this file may be used under the terms of |
29 |
|
|
# either of the GNU General Public License Version 2 or later (the "GPL"), |
30 |
|
|
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
31 |
|
|
# in which case the provisions of the GPL or the LGPL are applicable instead |
32 |
|
|
# of those above. If you wish to allow use of your version of this file only |
33 |
|
|
# under the terms of either the GPL or the LGPL, and not to allow others to |
34 |
|
|
# use your version of this file under the terms of the MPL, indicate your |
35 |
|
|
# decision by deleting the provisions above and replace them with the notice |
36 |
|
|
# and other provisions required by the GPL or the LGPL. If you do not delete |
37 |
|
|
# the provisions above, a recipient may use your version of this file under |
38 |
|
|
# the terms of any one of the MPL, the GPL or the LGPL. |
39 |
|
|
# |
40 |
|
|
# ***** END LICENSE BLOCK ***** |
41 |
|
|
ifndef topsrcdir |
42 |
|
|
topsrcdir = $(DEPTH) |
43 |
|
|
endif |
44 |
|
|
|
45 |
|
|
ifndef MOZILLA_DIR |
46 |
|
|
MOZILLA_DIR = $(topsrcdir) |
47 |
|
|
endif |
48 |
|
|
|
49 |
|
|
ifndef INCLUDED_CONFIG_MK |
50 |
|
|
include $(topsrcdir)/config/config.mk |
51 |
|
|
endif |
52 |
|
|
|
53 |
|
|
ifndef INCLUDED_VERSION_MK |
54 |
|
|
include $(topsrcdir)/config/version.mk |
55 |
|
|
endif |
56 |
|
|
|
57 |
|
|
REPORT_BUILD = @echo $(notdir $<) |
58 |
|
|
|
59 |
|
|
ifeq ($(OS_ARCH),OS2) |
60 |
|
|
EXEC = |
61 |
|
|
else |
62 |
|
|
EXEC = exec |
63 |
|
|
endif |
64 |
|
|
|
65 |
siliconforks |
460 |
# Don't copy xulrunner files at install time, when using system xulrunner |
66 |
|
|
ifdef SYSTEM_LIBXUL |
67 |
|
|
SKIP_COPY_XULRUNNER=1 |
68 |
|
|
endif |
69 |
|
|
|
70 |
siliconforks |
399 |
# ELOG prints out failed command when building silently (gmake -s). |
71 |
|
|
ifneq (,$(findstring -s,$(MAKEFLAGS))) |
72 |
|
|
ELOG := $(EXEC) sh $(BUILD_TOOLS)/print-failed-commands.sh |
73 |
|
|
else |
74 |
|
|
ELOG := |
75 |
|
|
endif |
76 |
|
|
|
77 |
|
|
ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH))) |
78 |
|
|
ifndef GNU_CC |
79 |
|
|
_LIBNAME_RELATIVE_PATHS=1 |
80 |
|
|
endif |
81 |
|
|
endif |
82 |
|
|
|
83 |
|
|
ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH))) |
84 |
|
|
PWD := $(shell pwd) |
85 |
|
|
_VPATH_SRCS = $(if $(filter /%,$<),$<,$(PWD)/$<) |
86 |
|
|
else |
87 |
|
|
_VPATH_SRCS = $< |
88 |
|
|
endif |
89 |
|
|
|
90 |
|
|
# Add $(DIST)/lib to VPATH so that -lfoo dependencies are followed |
91 |
|
|
VPATH += $(DIST)/lib |
92 |
|
|
ifdef LIBXUL_SDK |
93 |
|
|
VPATH += $(LIBXUL_SDK)/lib |
94 |
|
|
endif |
95 |
|
|
|
96 |
|
|
# EXPAND_LIBNAME - $(call EXPAND_LIBNAME,foo) |
97 |
|
|
# expands to foo.lib on platforms with import libs and -lfoo otherwise |
98 |
|
|
|
99 |
|
|
# EXPAND_LIBNAME_PATH - $(call EXPAND_LIBNAME_PATH,foo,dir) |
100 |
|
|
# expands to dir/foo.lib on platforms with import libs and |
101 |
|
|
# -Ldir -lfoo otherwise |
102 |
|
|
|
103 |
|
|
# EXPAND_MOZLIBNAME - $(call EXPAND_MOZLIBNAME,foo) |
104 |
|
|
# expands to $(DIST)/lib/foo.lib on platforms with import libs and |
105 |
|
|
# -lfoo otherwise |
106 |
|
|
|
107 |
|
|
ifdef _LIBNAME_RELATIVE_PATHS |
108 |
|
|
EXPAND_LIBNAME = $(foreach lib,$(1),$(LIB_PREFIX)$(lib).$(LIB_SUFFIX)) |
109 |
|
|
EXPAND_LIBNAME_PATH = $(foreach lib,$(1),$(2)/$(LIB_PREFIX)$(lib).$(LIB_SUFFIX)) |
110 |
|
|
EXPAND_MOZLIBNAME = $(foreach lib,$(1),$(DIST)/lib/$(LIB_PREFIX)$(lib).$(LIB_SUFFIX)) |
111 |
|
|
else |
112 |
|
|
EXPAND_LIBNAME = $(addprefix -l,$(1)) |
113 |
|
|
EXPAND_LIBNAME_PATH = -L$(2) $(addprefix -l,$(1)) |
114 |
|
|
EXPAND_MOZLIBNAME = $(addprefix -l,$(1)) |
115 |
|
|
endif |
116 |
|
|
|
117 |
|
|
ifdef EXTRA_DSO_LIBS |
118 |
|
|
EXTRA_DSO_LIBS := $(call EXPAND_MOZLIBNAME,$(EXTRA_DSO_LIBS)) |
119 |
|
|
endif |
120 |
|
|
|
121 |
siliconforks |
460 |
################################################################################ |
122 |
|
|
# Testing frameworks support |
123 |
|
|
################################################################################ |
124 |
|
|
|
125 |
|
|
ifdef ENABLE_TESTS |
126 |
|
|
|
127 |
|
|
ifdef XPCSHELL_TESTS |
128 |
|
|
ifndef MODULE |
129 |
|
|
$(error Must define MODULE when defining XPCSHELL_TESTS.) |
130 |
|
|
endif |
131 |
|
|
|
132 |
|
|
testxpcobjdir = $(DEPTH)/_tests/xpcshell |
133 |
|
|
|
134 |
|
|
# Test file installation |
135 |
|
|
ifdef NSINSTALL_BIN |
136 |
|
|
# nsinstall in moztools can't recursively copy directories, so use nsinstall.py |
137 |
|
|
TEST_INSTALLER = $(PYTHON) $(topsrcdir)/config/nsinstall.py |
138 |
|
|
else |
139 |
|
|
TEST_INSTALLER = $(INSTALL) |
140 |
|
|
endif |
141 |
|
|
|
142 |
|
|
define _INSTALL_TESTS |
143 |
|
|
$(TEST_INSTALLER) $(wildcard $(srcdir)/$(dir)/*) $(testxpcobjdir)/$(MODULE)/$(dir) |
144 |
|
|
|
145 |
|
|
endef # do not remove the blank line! |
146 |
|
|
|
147 |
|
|
SOLO_FILE ?= $(error Specify a test filename in SOLO_FILE when using check-interactive or check-one) |
148 |
|
|
|
149 |
|
|
libs:: |
150 |
|
|
$(foreach dir,$(XPCSHELL_TESTS),$(_INSTALL_TESTS)) |
151 |
|
|
$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/build-list.pl \ |
152 |
|
|
$(testxpcobjdir)/all-test-dirs.list \ |
153 |
|
|
$(addprefix $(MODULE)/,$(XPCSHELL_TESTS)) |
154 |
|
|
|
155 |
|
|
testxpcsrcdir = $(topsrcdir)/testing/xpcshell |
156 |
|
|
|
157 |
|
|
# Execute all tests in the $(XPCSHELL_TESTS) directories. |
158 |
|
|
# See also testsuite-targets.mk 'xpcshell-tests' target for global execution. |
159 |
|
|
xpcshell-tests: |
160 |
|
|
$(PYTHON) -u \ |
161 |
|
|
$(testxpcsrcdir)/runxpcshelltests.py \ |
162 |
|
|
$(DIST)/bin/xpcshell \ |
163 |
|
|
$(foreach dir,$(XPCSHELL_TESTS),$(testxpcobjdir)/$(MODULE)/$(dir)) |
164 |
|
|
|
165 |
|
|
# Execute a single test, specified in $(SOLO_FILE), but don't automatically |
166 |
|
|
# start the test. Instead, present the xpcshell prompt so the user can |
167 |
|
|
# attach a debugger and then start the test. |
168 |
|
|
check-interactive: |
169 |
|
|
$(PYTHON) -u \ |
170 |
|
|
$(testxpcsrcdir)/runxpcshelltests.py \ |
171 |
|
|
--test-path=$(SOLO_FILE) \ |
172 |
|
|
--interactive \ |
173 |
|
|
$(DIST)/bin/xpcshell \ |
174 |
|
|
$(foreach dir,$(XPCSHELL_TESTS),$(testxpcobjdir)/$(MODULE)/$(dir)) |
175 |
|
|
|
176 |
|
|
# Execute a single test, specified in $(SOLO_FILE) |
177 |
|
|
check-one: |
178 |
|
|
$(PYTHON) -u \ |
179 |
|
|
$(testxpcsrcdir)/runxpcshelltests.py \ |
180 |
|
|
--test-path=$(SOLO_FILE) \ |
181 |
|
|
$(DIST)/bin/xpcshell \ |
182 |
|
|
$(foreach dir,$(XPCSHELL_TESTS),$(testxpcobjdir)/$(MODULE)/$(dir)) |
183 |
|
|
|
184 |
|
|
endif # XPCSHELL_TESTS |
185 |
|
|
|
186 |
|
|
ifdef CPP_UNIT_TESTS |
187 |
|
|
|
188 |
|
|
# Compile the tests to $(DIST)/bin. Make lots of niceties available by default |
189 |
|
|
# through TestHarness.h, by modifying the list of includes and the libs against |
190 |
|
|
# which stuff links. |
191 |
|
|
CPPSRCS += $(CPP_UNIT_TESTS) |
192 |
|
|
SIMPLE_PROGRAMS += $(CPP_UNIT_TESTS:.cpp=$(BIN_SUFFIX)) |
193 |
|
|
REQUIRES += testing xpcom |
194 |
|
|
LIBS += $(XPCOM_GLUE_LDOPTS) $(NSPR_LIBS) |
195 |
|
|
|
196 |
|
|
# ...and run them the usual way |
197 |
|
|
check:: |
198 |
|
|
@$(EXIT_ON_ERROR) \ |
199 |
|
|
for f in $(subst .cpp,,$(CPP_UNIT_TESTS)); do \ |
200 |
|
|
XPCOM_DEBUG_BREAK=stack-and-abort $(RUN_TEST_PROGRAM) $(DIST)/bin/$$f; \ |
201 |
|
|
done |
202 |
|
|
|
203 |
|
|
endif # CPP_UNIT_TESTS |
204 |
|
|
|
205 |
|
|
.PHONY: check xpcshell-tests check-interactive check-one |
206 |
|
|
|
207 |
|
|
endif # ENABLE_TESTS |
208 |
|
|
|
209 |
|
|
|
210 |
siliconforks |
399 |
# |
211 |
|
|
# Library rules |
212 |
|
|
# |
213 |
|
|
# If BUILD_STATIC_LIBS or FORCE_STATIC_LIB is set, build a static library. |
214 |
|
|
# Otherwise, build a shared library. |
215 |
|
|
# |
216 |
|
|
|
217 |
|
|
ifndef LIBRARY |
218 |
|
|
ifdef LIBRARY_NAME |
219 |
|
|
ifneq (,$(filter OS2 WINNT WINCE,$(OS_ARCH))) |
220 |
|
|
ifdef SHORT_LIBNAME |
221 |
|
|
LIBRARY_NAME := $(SHORT_LIBNAME) |
222 |
|
|
endif |
223 |
|
|
endif |
224 |
|
|
LIBRARY := $(LIB_PREFIX)$(LIBRARY_NAME).$(LIB_SUFFIX) |
225 |
|
|
endif |
226 |
|
|
endif |
227 |
|
|
|
228 |
|
|
ifndef HOST_LIBRARY |
229 |
|
|
ifdef HOST_LIBRARY_NAME |
230 |
|
|
HOST_LIBRARY := $(LIB_PREFIX)$(HOST_LIBRARY_NAME).$(LIB_SUFFIX) |
231 |
|
|
endif |
232 |
|
|
endif |
233 |
|
|
|
234 |
|
|
ifdef LIBRARY |
235 |
|
|
ifneq (_1,$(FORCE_SHARED_LIB)_$(BUILD_STATIC_LIBS)) |
236 |
|
|
ifdef MKSHLIB |
237 |
|
|
|
238 |
|
|
ifdef LIB_IS_C_ONLY |
239 |
|
|
MKSHLIB = $(MKCSHLIB) |
240 |
|
|
endif |
241 |
|
|
|
242 |
|
|
ifdef MAKE_FRAMEWORK |
243 |
|
|
SHARED_LIBRARY := $(LIBRARY_NAME) |
244 |
|
|
else |
245 |
|
|
SHARED_LIBRARY := $(DLL_PREFIX)$(LIBRARY_NAME)$(DLL_SUFFIX) |
246 |
|
|
endif |
247 |
|
|
|
248 |
|
|
ifeq ($(OS_ARCH),OS2) |
249 |
|
|
DEF_FILE := $(SHARED_LIBRARY:.dll=.def) |
250 |
|
|
endif |
251 |
|
|
|
252 |
|
|
ifneq (,$(filter OS2 WINNT WINCE,$(OS_ARCH))) |
253 |
|
|
IMPORT_LIBRARY := $(LIB_PREFIX)$(LIBRARY_NAME).$(IMPORT_LIB_SUFFIX) |
254 |
|
|
endif |
255 |
|
|
|
256 |
|
|
ifdef MOZ_ENABLE_LIBXUL |
257 |
|
|
EMBED_MANIFEST_AT=2 |
258 |
|
|
endif |
259 |
|
|
|
260 |
|
|
endif # MKSHLIB |
261 |
|
|
endif # FORCE_SHARED_LIB && !BUILD_STATIC_LIBS |
262 |
|
|
endif # LIBRARY |
263 |
|
|
|
264 |
|
|
ifeq (,$(BUILD_STATIC_LIBS)$(FORCE_STATIC_LIB)) |
265 |
|
|
LIBRARY := $(NULL) |
266 |
|
|
endif |
267 |
|
|
|
268 |
|
|
ifeq (_1,$(FORCE_SHARED_LIB)_$(BUILD_STATIC_LIBS)) |
269 |
|
|
SHARED_LIBRARY := $(NULL) |
270 |
|
|
DEF_FILE := $(NULL) |
271 |
|
|
IMPORT_LIBRARY := $(NULL) |
272 |
|
|
endif |
273 |
|
|
|
274 |
|
|
ifdef FORCE_STATIC_LIB |
275 |
|
|
ifndef FORCE_SHARED_LIB |
276 |
|
|
SHARED_LIBRARY := $(NULL) |
277 |
|
|
DEF_FILE := $(NULL) |
278 |
|
|
IMPORT_LIBRARY := $(NULL) |
279 |
|
|
endif |
280 |
|
|
endif |
281 |
|
|
|
282 |
|
|
ifdef FORCE_SHARED_LIB |
283 |
|
|
ifndef FORCE_STATIC_LIB |
284 |
|
|
LIBRARY := $(NULL) |
285 |
|
|
endif |
286 |
|
|
endif |
287 |
|
|
|
288 |
|
|
ifdef JAVA_LIBRARY_NAME |
289 |
|
|
JAVA_LIBRARY := $(JAVA_LIBRARY_NAME).jar |
290 |
|
|
endif |
291 |
|
|
|
292 |
|
|
ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH))) |
293 |
|
|
ifndef GNU_CC |
294 |
|
|
|
295 |
|
|
# |
296 |
siliconforks |
460 |
# Unless we're building SIMPLE_PROGRAMS, all C++ files share a PDB file per |
297 |
|
|
# directory. For parallel builds, this PDB file is shared and locked by |
298 |
|
|
# MSPDBSRV.EXE, starting with MSVC8 SP1. If you're using MSVC 7.1 or MSVC8 |
299 |
|
|
# without SP1, don't do parallel builds. |
300 |
siliconforks |
399 |
# |
301 |
|
|
# The final PDB for libraries and programs is created by the linker and uses |
302 |
|
|
# a different name from the single PDB file created by the compiler. See |
303 |
|
|
# bug 462740. |
304 |
|
|
# |
305 |
siliconforks |
460 |
|
306 |
|
|
ifdef SIMPLE_PROGRAMS |
307 |
|
|
COMPILE_PDBFILE = $(basename $(@F)).pdb |
308 |
|
|
else |
309 |
siliconforks |
399 |
COMPILE_PDBFILE = generated.pdb |
310 |
siliconforks |
460 |
endif |
311 |
|
|
|
312 |
siliconforks |
399 |
LINK_PDBFILE = $(basename $(@F)).pdb |
313 |
|
|
ifdef MOZ_DEBUG |
314 |
|
|
CODFILE=$(basename $(@F)).cod |
315 |
|
|
endif |
316 |
|
|
|
317 |
|
|
ifdef MOZ_MAPINFO |
318 |
|
|
ifdef LIBRARY_NAME |
319 |
|
|
MAPFILE=$(LIBRARY_NAME).map |
320 |
|
|
else |
321 |
|
|
MAPFILE=$(basename $(@F)).map |
322 |
|
|
endif # LIBRARY_NAME |
323 |
|
|
endif # MOZ_MAPINFO |
324 |
|
|
|
325 |
|
|
ifdef DEFFILE |
326 |
|
|
OS_LDFLAGS += -DEF:$(DEFFILE) |
327 |
|
|
EXTRA_DEPS += $(DEFFILE) |
328 |
|
|
endif |
329 |
|
|
|
330 |
|
|
ifdef MAPFILE |
331 |
|
|
OS_LDFLAGS += -MAP:$(MAPFILE) |
332 |
|
|
#CFLAGS += -Fm$(MAPFILE) |
333 |
|
|
#CXXFLAGS += -Fm$(MAPFILE) |
334 |
|
|
endif |
335 |
|
|
|
336 |
|
|
#ifdef CODFILE |
337 |
|
|
#CFLAGS += -Fa$(CODFILE) -FAsc |
338 |
|
|
#CFLAGS += -Fa$(CODFILE) -FAsc |
339 |
|
|
#endif |
340 |
|
|
|
341 |
|
|
endif # !GNU_CC |
342 |
|
|
|
343 |
|
|
ifdef ENABLE_CXX_EXCEPTIONS |
344 |
|
|
ifdef GNU_CC |
345 |
|
|
CXXFLAGS += -fexceptions |
346 |
|
|
else |
347 |
|
|
ifeq (,$(filter-out 1200 1300 1310,$(_MSC_VER))) |
348 |
|
|
CXXFLAGS += -GX |
349 |
|
|
else |
350 |
|
|
CXXFLAGS += -EHsc |
351 |
|
|
endif # _MSC_VER |
352 |
|
|
endif # GNU_CC |
353 |
|
|
endif # ENABLE_CXX_EXCEPTIONS |
354 |
|
|
endif # WINNT |
355 |
|
|
|
356 |
|
|
ifeq (,$(filter-out WINNT WINCE,$(HOST_OS_ARCH))) |
357 |
|
|
HOST_PDBFILE=$(basename $(@F)).pdb |
358 |
|
|
endif |
359 |
|
|
|
360 |
|
|
ifndef TARGETS |
361 |
|
|
TARGETS = $(LIBRARY) $(SHARED_LIBRARY) $(PROGRAM) $(SIMPLE_PROGRAMS) $(HOST_LIBRARY) $(HOST_PROGRAM) $(HOST_SIMPLE_PROGRAMS) $(JAVA_LIBRARY) |
362 |
|
|
endif |
363 |
|
|
|
364 |
|
|
ifndef OBJS |
365 |
|
|
_OBJS = \ |
366 |
|
|
$(JRI_STUB_CFILES) \ |
367 |
|
|
$(addsuffix .$(OBJ_SUFFIX), $(JMC_GEN)) \ |
368 |
|
|
$(CSRCS:.c=.$(OBJ_SUFFIX)) \ |
369 |
|
|
$(patsubst %.cc,%.$(OBJ_SUFFIX),$(CPPSRCS:.cpp=.$(OBJ_SUFFIX))) \ |
370 |
|
|
$(CMSRCS:.m=.$(OBJ_SUFFIX)) \ |
371 |
|
|
$(CMMSRCS:.mm=.$(OBJ_SUFFIX)) \ |
372 |
|
|
$(ASFILES:.$(ASM_SUFFIX)=.$(OBJ_SUFFIX)) |
373 |
|
|
OBJS = $(strip $(_OBJS)) |
374 |
|
|
endif |
375 |
|
|
|
376 |
|
|
ifndef HOST_OBJS |
377 |
|
|
_HOST_OBJS = \ |
378 |
|
|
$(addprefix host_,$(HOST_CSRCS:.c=.$(OBJ_SUFFIX))) \ |
379 |
|
|
$(addprefix host_,$(patsubst %.cc,%.$(OBJ_SUFFIX),$(HOST_CPPSRCS:.cpp=.$(OBJ_SUFFIX)))) \ |
380 |
|
|
$(addprefix host_,$(HOST_CMSRCS:.m=.$(OBJ_SUFFIX))) \ |
381 |
|
|
$(addprefix host_,$(HOST_CMMSRCS:.mm=.$(OBJ_SUFFIX))) |
382 |
|
|
HOST_OBJS = $(strip $(_HOST_OBJS)) |
383 |
|
|
endif |
384 |
|
|
|
385 |
|
|
LIBOBJS := $(addprefix \", $(OBJS)) |
386 |
|
|
LIBOBJS := $(addsuffix \", $(LIBOBJS)) |
387 |
|
|
|
388 |
|
|
ifndef MOZ_AUTO_DEPS |
389 |
|
|
ifneq (,$(OBJS)$(XPIDLSRCS)$(SDK_XPIDLSRCS)$(SIMPLE_PROGRAMS)) |
390 |
|
|
MDDEPFILES = $(addprefix $(MDDEPDIR)/,$(OBJS:.$(OBJ_SUFFIX)=.pp)) |
391 |
|
|
ifndef NO_GEN_XPT |
392 |
|
|
MDDEPFILES += $(addprefix $(MDDEPDIR)/,$(XPIDLSRCS:.idl=.xpt)) \ |
393 |
|
|
$(addprefix $(MDDEPDIR)/,$(SDK_XPIDLSRCS:.idl=.xpt)) |
394 |
|
|
endif |
395 |
|
|
endif |
396 |
|
|
endif |
397 |
|
|
|
398 |
|
|
ALL_TRASH = \ |
399 |
|
|
$(GARBAGE) $(TARGETS) $(OBJS) $(PROGOBJS) LOGS TAGS a.out \ |
400 |
|
|
$(filter-out $(ASFILES),$(OBJS:.$(OBJ_SUFFIX)=.s)) $(OBJS:.$(OBJ_SUFFIX)=.ii) \ |
401 |
|
|
$(OBJS:.$(OBJ_SUFFIX)=.i) \ |
402 |
|
|
$(HOST_PROGOBJS) $(HOST_OBJS) $(IMPORT_LIBRARY) $(DEF_FILE)\ |
403 |
|
|
$(EXE_DEF_FILE) so_locations _gen _stubs $(wildcard *.res) $(wildcard *.RES) \ |
404 |
|
|
$(wildcard *.pdb) $(CODFILE) $(MAPFILE) $(IMPORT_LIBRARY) \ |
405 |
|
|
$(SHARED_LIBRARY:$(DLL_SUFFIX)=.exp) $(wildcard *.ilk) \ |
406 |
|
|
$(PROGRAM:$(BIN_SUFFIX)=.exp) $(SIMPLE_PROGRAMS:$(BIN_SUFFIX)=.exp) \ |
407 |
|
|
$(PROGRAM:$(BIN_SUFFIX)=.lib) $(SIMPLE_PROGRAMS:$(BIN_SUFFIX)=.lib) \ |
408 |
|
|
$(SIMPLE_PROGRAMS:$(BIN_SUFFIX)=.$(OBJ_SUFFIX)) \ |
409 |
|
|
$(wildcard gts_tmp_*) $(LIBRARY:%.a=.%.timestamp) |
410 |
|
|
ALL_TRASH_DIRS = \ |
411 |
|
|
$(GARBAGE_DIRS) /no-such-file |
412 |
|
|
|
413 |
|
|
ifdef QTDIR |
414 |
|
|
GARBAGE += $(MOCSRCS) |
415 |
|
|
endif |
416 |
|
|
|
417 |
|
|
ifdef SIMPLE_PROGRAMS |
418 |
|
|
GARBAGE += $(SIMPLE_PROGRAMS:%=%.$(OBJ_SUFFIX)) |
419 |
|
|
endif |
420 |
|
|
|
421 |
|
|
ifdef HOST_SIMPLE_PROGRAMS |
422 |
|
|
GARBAGE += $(HOST_SIMPLE_PROGRAMS:%=%.$(OBJ_SUFFIX)) |
423 |
|
|
endif |
424 |
|
|
|
425 |
|
|
# |
426 |
|
|
# the Solaris WorkShop template repository cache. it occasionally can get |
427 |
|
|
# out of sync, so targets like clobber should kill it. |
428 |
|
|
# |
429 |
siliconforks |
460 |
ifeq ($(SOLARIS_SUNPRO_CXX),1) |
430 |
siliconforks |
399 |
GARBAGE_DIRS += SunWS_cache |
431 |
|
|
endif |
432 |
|
|
|
433 |
|
|
ifeq ($(OS_ARCH),OpenVMS) |
434 |
|
|
GARBAGE += $(wildcard *.*_defines) |
435 |
|
|
ifdef SHARED_LIBRARY |
436 |
|
|
VMS_SYMVEC_FILE = $(SHARED_LIBRARY:$(DLL_SUFFIX)=_symvec.opt) |
437 |
|
|
ifdef MOZ_DEBUG |
438 |
|
|
VMS_SYMVEC_FILE_MODULE = $(topsrcdir)/build/unix/vms/$(notdir $(SHARED_LIBRARY:$(DLL_SUFFIX)=_dbg_symvec.opt)) |
439 |
|
|
else |
440 |
|
|
VMS_SYMVEC_FILE_MODULE = $(topsrcdir)/build/unix/vms/$(notdir $(SHARED_LIBRARY:$(DLL_SUFFIX)=_symvec.opt)) |
441 |
|
|
endif |
442 |
|
|
VMS_SYMVEC_FILE_COMP = $(topsrcdir)/build/unix/vms/component_symvec.opt |
443 |
|
|
GARBAGE += $(VMS_SYMVEC_FILE) |
444 |
|
|
ifdef IS_COMPONENT |
445 |
|
|
DSO_LDOPTS := $(filter-out -auto_symvec,$(DSO_LDOPTS)) $(VMS_SYMVEC_FILE) |
446 |
|
|
endif |
447 |
|
|
endif |
448 |
|
|
endif |
449 |
|
|
|
450 |
|
|
XPIDL_GEN_DIR = _xpidlgen |
451 |
|
|
|
452 |
|
|
ifdef MOZ_UPDATE_XTERM |
453 |
|
|
# Its good not to have a newline at the end of the titlebar string because it |
454 |
|
|
# makes the make -s output easier to read. Echo -n does not work on all |
455 |
|
|
# platforms, but we can trick sed into doing it. |
456 |
|
|
UPDATE_TITLE = sed -e "s!Y!$@ in $(shell $(BUILD_TOOLS)/print-depth-path.sh)/$(dir)!" $(MOZILLA_DIR)/config/xterm.str; |
457 |
|
|
UPDATE_TITLE_export = sed -e "s!Y!export in $(shell $(BUILD_TOOLS)/print-depth-path.sh)/$*!" $(MOZILLA_DIR)/config/xterm.str; |
458 |
|
|
UPDATE_TITLE_libs = sed -e "s!Y!libs in $(shell $(BUILD_TOOLS)/print-depth-path.sh)/$*!" $(MOZILLA_DIR)/config/xterm.str; |
459 |
|
|
UPDATE_TITLE_tools = sed -e "s!Y!tools in $(shell $(BUILD_TOOLS)/print-depth-path.sh)/$*!" $(MOZILLA_DIR)/config/xterm.str; |
460 |
|
|
endif |
461 |
|
|
|
462 |
siliconforks |
460 |
ifneq (,$(strip $(DIRS))) |
463 |
siliconforks |
399 |
LOOP_OVER_DIRS = \ |
464 |
|
|
@$(EXIT_ON_ERROR) \ |
465 |
siliconforks |
460 |
$(foreach dir,$(DIRS),$(UPDATE_TITLE) $(MAKE) -C $(dir) $@; ) |
466 |
|
|
endif |
467 |
siliconforks |
399 |
|
468 |
|
|
# we only use this for the makefiles target and other stuff that doesn't matter |
469 |
siliconforks |
460 |
ifneq (,$(strip $(PARALLEL_DIRS))) |
470 |
siliconforks |
399 |
LOOP_OVER_PARALLEL_DIRS = \ |
471 |
|
|
@$(EXIT_ON_ERROR) \ |
472 |
siliconforks |
460 |
$(foreach dir,$(PARALLEL_DIRS),$(UPDATE_TITLE) $(MAKE) -C $(dir) $@; ) |
473 |
|
|
endif |
474 |
siliconforks |
399 |
|
475 |
siliconforks |
460 |
ifneq (,$(strip $(STATIC_DIRS))) |
476 |
siliconforks |
399 |
LOOP_OVER_STATIC_DIRS = \ |
477 |
|
|
@$(EXIT_ON_ERROR) \ |
478 |
siliconforks |
460 |
$(foreach dir,$(STATIC_DIRS),$(UPDATE_TITLE) $(MAKE) -C $(dir) $@; ) |
479 |
|
|
endif |
480 |
siliconforks |
399 |
|
481 |
siliconforks |
460 |
ifneq (,$(strip $(TOOL_DIRS))) |
482 |
siliconforks |
399 |
LOOP_OVER_TOOL_DIRS = \ |
483 |
|
|
@$(EXIT_ON_ERROR) \ |
484 |
siliconforks |
460 |
$(foreach dir,$(TOOL_DIRS),$(UPDATE_TITLE) $(MAKE) -C $(dir) $@; ) |
485 |
|
|
endif |
486 |
siliconforks |
399 |
|
487 |
|
|
ifdef PARALLEL_DIRS |
488 |
|
|
# create a bunch of fake targets for order-only processing |
489 |
|
|
PARALLEL_DIRS_export = $(addsuffix _export,$(PARALLEL_DIRS)) |
490 |
|
|
PARALLEL_DIRS_libs = $(addsuffix _libs,$(PARALLEL_DIRS)) |
491 |
|
|
PARALLEL_DIRS_tools = $(addsuffix _tools,$(PARALLEL_DIRS)) |
492 |
|
|
|
493 |
|
|
.PHONY: $(PARALLEL_DIRS_export) $(PARALLEL_DIRS_libs) $(PARALLEL_DIRS_tools) |
494 |
|
|
endif |
495 |
|
|
|
496 |
|
|
# |
497 |
|
|
# Now we can differentiate between objects used to build a library, and |
498 |
|
|
# objects used to build an executable in the same directory. |
499 |
|
|
# |
500 |
|
|
ifndef PROGOBJS |
501 |
|
|
PROGOBJS = $(OBJS) |
502 |
|
|
endif |
503 |
|
|
|
504 |
|
|
ifndef HOST_PROGOBJS |
505 |
|
|
HOST_PROGOBJS = $(HOST_OBJS) |
506 |
|
|
endif |
507 |
|
|
|
508 |
|
|
# MAKE_DIRS: List of directories to build while looping over directories. |
509 |
|
|
# A Makefile that needs $(MDDEPDIR) created but doesn't set any of these |
510 |
|
|
# variables we know to check can just set NEED_MDDEPDIR explicitly. |
511 |
|
|
ifneq (,$(OBJS)$(XPIDLSRCS)$(SDK_XPIDLSRCS)$(SIMPLE_PROGRAMS)$(NEED_MDDEPDIR)) |
512 |
|
|
MAKE_DIRS += $(CURDIR)/$(MDDEPDIR) |
513 |
|
|
GARBAGE_DIRS += $(MDDEPDIR) |
514 |
|
|
endif |
515 |
|
|
|
516 |
|
|
# |
517 |
|
|
# Tags: emacs (etags), vi (ctags) |
518 |
|
|
# TAG_PROGRAM := ctags -L - |
519 |
|
|
# |
520 |
|
|
TAG_PROGRAM = xargs etags -a |
521 |
|
|
|
522 |
|
|
# |
523 |
|
|
# Turn on C++ linking if we have any .cpp or .mm files |
524 |
|
|
# (moved this from config.mk so that config.mk can be included |
525 |
|
|
# before the CPPSRCS are defined) |
526 |
|
|
# |
527 |
|
|
ifneq ($(CPPSRCS)$(CMMSRCS),) |
528 |
|
|
CPP_PROG_LINK = 1 |
529 |
|
|
endif |
530 |
|
|
|
531 |
|
|
# |
532 |
|
|
# Make sure to wrap static libs inside linker specific flags to turn on & off |
533 |
|
|
# inclusion of all symbols inside the static libs |
534 |
|
|
# |
535 |
|
|
ifndef NO_LD_ARCHIVE_FLAGS |
536 |
|
|
ifdef SHARED_LIBRARY_LIBS |
537 |
|
|
EXTRA_DSO_LDOPTS := $(MKSHLIB_FORCE_ALL) $(SHARED_LIBRARY_LIBS) $(MKSHLIB_UNFORCE_ALL) $(EXTRA_DSO_LDOPTS) |
538 |
|
|
endif |
539 |
|
|
endif |
540 |
|
|
|
541 |
|
|
# |
542 |
|
|
# This will strip out symbols that the component should not be |
543 |
|
|
# exporting from the .dynsym section. |
544 |
|
|
# |
545 |
|
|
ifdef IS_COMPONENT |
546 |
|
|
EXTRA_DSO_LDOPTS += $(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS) |
547 |
|
|
endif # IS_COMPONENT |
548 |
|
|
|
549 |
|
|
# |
550 |
|
|
# Enforce the requirement that MODULE_NAME must be set |
551 |
|
|
# for components in static builds |
552 |
|
|
# |
553 |
|
|
ifdef IS_COMPONENT |
554 |
|
|
ifdef EXPORT_LIBRARY |
555 |
|
|
ifndef FORCE_SHARED_LIB |
556 |
|
|
ifndef MODULE_NAME |
557 |
|
|
$(error MODULE_NAME is required for components which may be used in static builds) |
558 |
|
|
endif |
559 |
|
|
endif |
560 |
|
|
endif |
561 |
|
|
endif |
562 |
|
|
|
563 |
|
|
# |
564 |
|
|
# MacOS X specific stuff |
565 |
|
|
# |
566 |
|
|
|
567 |
|
|
ifeq ($(OS_ARCH),Darwin) |
568 |
|
|
ifdef SHARED_LIBRARY |
569 |
|
|
ifdef IS_COMPONENT |
570 |
|
|
EXTRA_DSO_LDOPTS += -bundle |
571 |
|
|
else |
572 |
|
|
EXTRA_DSO_LDOPTS += -dynamiclib -install_name @executable_path/$(SHARED_LIBRARY) -compatibility_version 1 -current_version 1 -single_module |
573 |
|
|
endif |
574 |
|
|
endif |
575 |
|
|
endif |
576 |
|
|
|
577 |
|
|
# |
578 |
|
|
# On NetBSD a.out systems, use -Bsymbolic. This fixes what would otherwise be |
579 |
|
|
# fatal symbol name clashes between components. |
580 |
|
|
# |
581 |
|
|
ifeq ($(OS_ARCH),NetBSD) |
582 |
|
|
ifeq ($(DLL_SUFFIX),.so.1.0) |
583 |
|
|
ifdef IS_COMPONENT |
584 |
|
|
EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic |
585 |
|
|
endif |
586 |
|
|
endif |
587 |
|
|
endif |
588 |
|
|
|
589 |
|
|
ifeq ($(OS_ARCH),FreeBSD) |
590 |
|
|
ifdef IS_COMPONENT |
591 |
|
|
EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic |
592 |
|
|
endif |
593 |
|
|
endif |
594 |
|
|
|
595 |
|
|
ifeq ($(OS_ARCH),NetBSD) |
596 |
|
|
ifneq (,$(filter arc cobalt hpcmips mipsco newsmips pmax sgimips,$(OS_TEST))) |
597 |
|
|
ifeq ($(MODULE),layout) |
598 |
|
|
OS_CFLAGS += -Wa,-xgot |
599 |
|
|
OS_CXXFLAGS += -Wa,-xgot |
600 |
|
|
endif |
601 |
|
|
endif |
602 |
|
|
endif |
603 |
|
|
|
604 |
|
|
ifeq ($(OS_ARCH),Linux) |
605 |
|
|
ifneq (,$(filter mips mipsel,$(OS_TEST))) |
606 |
|
|
ifeq ($(MODULE),layout) |
607 |
|
|
OS_CFLAGS += -Wa,-xgot |
608 |
|
|
OS_CXXFLAGS += -Wa,-xgot |
609 |
|
|
endif |
610 |
|
|
endif |
611 |
|
|
endif |
612 |
|
|
|
613 |
|
|
# |
614 |
|
|
# HP-UXBeOS specific section: for COMPONENTS only, add -Bsymbolic flag |
615 |
|
|
# which uses internal symbols first |
616 |
|
|
# |
617 |
|
|
ifeq ($(OS_ARCH),HP-UX) |
618 |
|
|
ifdef IS_COMPONENT |
619 |
|
|
ifeq ($(GNU_CC)$(GNU_CXX),) |
620 |
|
|
EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic |
621 |
|
|
ifneq ($(HAS_EXTRAEXPORTS),1) |
622 |
|
|
MKSHLIB += -Wl,+eNSGetModule -Wl,+eerrno |
623 |
|
|
MKCSHLIB += +eNSGetModule +eerrno |
624 |
|
|
ifneq ($(OS_TEST),ia64) |
625 |
|
|
MKSHLIB += -Wl,+e_shlInit |
626 |
|
|
MKCSHLIB += +e_shlInit |
627 |
|
|
endif # !ia64 |
628 |
|
|
endif # !HAS_EXTRAEXPORTS |
629 |
|
|
endif # non-gnu compilers |
630 |
|
|
endif # IS_COMPONENT |
631 |
|
|
endif # HP-UX |
632 |
|
|
|
633 |
|
|
ifeq ($(OS_ARCH),AIX) |
634 |
|
|
ifdef IS_COMPONENT |
635 |
|
|
ifneq ($(HAS_EXTRAEXPORTS),1) |
636 |
|
|
MKSHLIB += -bE:$(MOZILLA_DIR)/build/unix/aix.exp -bnoexpall |
637 |
|
|
MKCSHLIB += -bE:$(MOZILLA_DIR)/build/unix/aix.exp -bnoexpall |
638 |
|
|
endif # HAS_EXTRAEXPORTS |
639 |
|
|
endif # IS_COMPONENT |
640 |
|
|
endif # AIX |
641 |
|
|
|
642 |
|
|
# |
643 |
|
|
# OSF1: add -B symbolic flag for components |
644 |
|
|
# |
645 |
|
|
ifeq ($(OS_ARCH),OSF1) |
646 |
|
|
ifdef IS_COMPONENT |
647 |
|
|
ifeq ($(GNU_CC)$(GNU_CXX),) |
648 |
|
|
EXTRA_DSO_LDOPTS += -B symbolic |
649 |
|
|
endif |
650 |
|
|
endif |
651 |
|
|
endif |
652 |
|
|
|
653 |
|
|
# |
654 |
|
|
# Linux: add -Bsymbolic flag for components |
655 |
|
|
# |
656 |
|
|
ifeq ($(OS_ARCH),Linux) |
657 |
|
|
ifdef IS_COMPONENT |
658 |
|
|
EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic |
659 |
|
|
endif |
660 |
|
|
endif |
661 |
|
|
|
662 |
|
|
# |
663 |
|
|
# MINGW32 |
664 |
|
|
# |
665 |
|
|
ifeq ($(OS_ARCH),WINNT) |
666 |
|
|
ifdef GNU_CC |
667 |
|
|
ifndef IS_COMPONENT |
668 |
|
|
DSO_LDOPTS += -Wl,--out-implib -Wl,$(IMPORT_LIBRARY) |
669 |
|
|
endif |
670 |
|
|
endif |
671 |
|
|
endif |
672 |
|
|
|
673 |
|
|
ifeq ($(USE_TVFS),1) |
674 |
|
|
IFLAGS1 = -rb |
675 |
|
|
IFLAGS2 = -rb |
676 |
|
|
else |
677 |
|
|
IFLAGS1 = -m 644 |
678 |
|
|
IFLAGS2 = -m 755 |
679 |
|
|
endif |
680 |
|
|
|
681 |
|
|
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH)) |
682 |
|
|
OUTOPTION = -Fo# eol |
683 |
|
|
else |
684 |
|
|
OUTOPTION = -o # eol |
685 |
|
|
endif # WINNT && !GNU_CC |
686 |
|
|
ifneq (,$(filter WINCE,$(OS_ARCH))) |
687 |
|
|
OUTOPTION = -Fo# eol |
688 |
|
|
endif |
689 |
|
|
|
690 |
|
|
ifeq ($(OS_TARGET), WINCE) |
691 |
|
|
OUTOPTION = -Fo# eol |
692 |
|
|
HOST_OUTOPTION = -Fo# eol |
693 |
|
|
else |
694 |
|
|
|
695 |
|
|
ifeq (,$(CROSS_COMPILE)) |
696 |
|
|
HOST_OUTOPTION = $(OUTOPTION) |
697 |
|
|
else |
698 |
|
|
HOST_OUTOPTION = -o # eol |
699 |
|
|
endif |
700 |
|
|
|
701 |
|
|
endif |
702 |
|
|
################################################################################ |
703 |
|
|
|
704 |
|
|
# SUBMAKEFILES: List of Makefiles for next level down. |
705 |
|
|
# This is used to update or create the Makefiles before invoking them. |
706 |
|
|
SUBMAKEFILES += $(addsuffix /Makefile, $(DIRS) $(TOOL_DIRS) $(PARALLEL_DIRS)) |
707 |
|
|
|
708 |
|
|
# The root makefile doesn't want to do a plain export/libs, because |
709 |
|
|
# of the tiers and because of libxul. Suppress the default rules in favor |
710 |
|
|
# of something else. Makefiles which use this var *must* provide a sensible |
711 |
|
|
# default rule before including rules.mk |
712 |
|
|
ifndef SUPPRESS_DEFAULT_RULES |
713 |
|
|
ifdef TIERS |
714 |
|
|
default all alldep:: |
715 |
|
|
$(EXIT_ON_ERROR) \ |
716 |
|
|
$(foreach tier,$(TIERS),$(MAKE) tier_$(tier); ) true |
717 |
|
|
|
718 |
|
|
else |
719 |
|
|
|
720 |
|
|
default all:: |
721 |
siliconforks |
460 |
ifneq (,$(strip $(STATIC_DIRS))) |
722 |
|
|
$(foreach dir,$(STATIC_DIRS),$(MAKE) -C $(dir); ) |
723 |
|
|
endif |
724 |
siliconforks |
399 |
$(MAKE) export |
725 |
|
|
$(MAKE) libs |
726 |
|
|
$(MAKE) tools |
727 |
|
|
|
728 |
|
|
# Do depend as well |
729 |
|
|
alldep:: |
730 |
|
|
$(MAKE) export |
731 |
|
|
$(MAKE) depend |
732 |
|
|
$(MAKE) libs |
733 |
|
|
$(MAKE) tools |
734 |
|
|
|
735 |
|
|
endif # TIERS |
736 |
|
|
endif # SUPPRESS_DEFAULT_RULES |
737 |
|
|
|
738 |
|
|
ifeq ($(filter s,$(MAKEFLAGS)),) |
739 |
|
|
ECHO := echo |
740 |
|
|
QUIET := |
741 |
|
|
else |
742 |
|
|
ECHO := true |
743 |
|
|
QUIET := -q |
744 |
|
|
endif |
745 |
|
|
|
746 |
|
|
MAKE_TIER_SUBMAKEFILES = +$(if $(tier_$*_dirs),$(MAKE) $(addsuffix /Makefile,$(tier_$*_dirs))) |
747 |
|
|
|
748 |
|
|
export_tier_%: |
749 |
|
|
@$(ECHO) "$@" |
750 |
|
|
@$(MAKE_TIER_SUBMAKEFILES) |
751 |
|
|
@$(EXIT_ON_ERROR) \ |
752 |
|
|
$(foreach dir,$(tier_$*_dirs),$(MAKE) -C $(dir) export; ) true |
753 |
|
|
|
754 |
|
|
libs_tier_%: |
755 |
|
|
@$(ECHO) "$@" |
756 |
|
|
@$(MAKE_TIER_SUBMAKEFILES) |
757 |
|
|
@$(EXIT_ON_ERROR) \ |
758 |
|
|
$(foreach dir,$(tier_$*_dirs),$(MAKE) -C $(dir) libs; ) true |
759 |
|
|
|
760 |
|
|
tools_tier_%: |
761 |
|
|
@$(ECHO) "$@" |
762 |
|
|
@$(MAKE_TIER_SUBMAKEFILES) |
763 |
|
|
@$(EXIT_ON_ERROR) \ |
764 |
|
|
$(foreach dir,$(tier_$*_dirs),$(MAKE) -C $(dir) tools; ) true |
765 |
|
|
|
766 |
|
|
$(foreach tier,$(TIERS),tier_$(tier)):: |
767 |
|
|
@$(ECHO) "$@: $($@_staticdirs) $($@_dirs)" |
768 |
|
|
@$(EXIT_ON_ERROR) \ |
769 |
|
|
$(foreach dir,$($@_staticdirs),$(MAKE) -C $(dir); ) true |
770 |
|
|
$(MAKE) export_$@ |
771 |
|
|
$(MAKE) libs_$@ |
772 |
|
|
|
773 |
|
|
# Do everything from scratch |
774 |
|
|
everything:: |
775 |
|
|
$(MAKE) clean |
776 |
|
|
$(MAKE) alldep |
777 |
|
|
|
778 |
|
|
# Add dummy depend target for tinderboxes |
779 |
|
|
depend:: |
780 |
|
|
|
781 |
|
|
ifdef ALL_PLATFORMS |
782 |
|
|
all_platforms:: $(NFSPWD) |
783 |
|
|
@d=`$(NFSPWD)`; \ |
784 |
|
|
if test ! -d LOGS; then rm -rf LOGS; mkdir LOGS; else true; fi; \ |
785 |
|
|
for h in $(PLATFORM_HOSTS); do \ |
786 |
|
|
echo "On $$h: $(MAKE) $(ALL_PLATFORMS) >& LOGS/$$h.log";\ |
787 |
|
|
rsh $$h -n "(chdir $$d; \ |
788 |
|
|
$(MAKE) $(ALL_PLATFORMS) >& LOGS/$$h.log; \ |
789 |
|
|
echo DONE) &" 2>&1 > LOGS/$$h.pid & \ |
790 |
|
|
sleep 1; \ |
791 |
|
|
done |
792 |
|
|
|
793 |
|
|
$(NFSPWD): |
794 |
|
|
cd $(@D); $(MAKE) $(@F) |
795 |
|
|
endif |
796 |
|
|
|
797 |
|
|
# Target to only regenerate makefiles |
798 |
|
|
makefiles: $(SUBMAKEFILES) |
799 |
|
|
ifneq (,$(DIRS)$(TOOL_DIRS)$(PARALLEL_DIRS)) |
800 |
|
|
+$(LOOP_OVER_PARALLEL_DIRS) |
801 |
|
|
+$(LOOP_OVER_DIRS) |
802 |
|
|
+$(LOOP_OVER_TOOL_DIRS) |
803 |
|
|
endif |
804 |
|
|
|
805 |
|
|
ifdef PARALLEL_DIRS |
806 |
|
|
export:: $(PARALLEL_DIRS_export) |
807 |
|
|
|
808 |
|
|
$(PARALLEL_DIRS_export): %_export: %/Makefile |
809 |
|
|
+@$(UPDATE_TITLE_export) $(MAKE) -C $* export |
810 |
|
|
endif |
811 |
|
|
|
812 |
|
|
export:: $(SUBMAKEFILES) $(MAKE_DIRS) $(if $(EXPORTS)$(XPIDLSRCS)$(SDK_HEADERS)$(SDK_XPIDLSRCS),$(PUBLIC)) $(if $(SDK_HEADERS)$(SDK_XPIDLSRCS),$(SDK_PUBLIC)) $(if $(XPIDLSRCS),$(IDL_DIR)) $(if $(SDK_XPIDLSRCS),$(SDK_IDL_DIR)) |
813 |
|
|
+$(LOOP_OVER_DIRS) |
814 |
|
|
+$(LOOP_OVER_TOOL_DIRS) |
815 |
|
|
|
816 |
|
|
ifdef PARALLEL_DIRS |
817 |
|
|
tools:: $(PARALLEL_DIRS_tools) |
818 |
|
|
|
819 |
|
|
$(PARALLEL_DIRS_tools): %_tools: %/Makefile |
820 |
|
|
+@$(UPDATE_TITLE_tools) $(MAKE) -C $* tools |
821 |
|
|
endif |
822 |
|
|
|
823 |
|
|
tools:: $(SUBMAKEFILES) $(MAKE_DIRS) |
824 |
|
|
+$(LOOP_OVER_DIRS) |
825 |
siliconforks |
460 |
ifneq (,$(strip $(TOOL_DIRS))) |
826 |
siliconforks |
399 |
@$(EXIT_ON_ERROR) \ |
827 |
siliconforks |
460 |
$(foreach dir,$(TOOL_DIRS),$(UPDATE_TITLE) $(MAKE) -C $(dir) libs; ) |
828 |
siliconforks |
399 |
endif |
829 |
|
|
|
830 |
|
|
# |
831 |
|
|
# Rule to create list of libraries for final link |
832 |
|
|
# |
833 |
|
|
export:: |
834 |
|
|
ifdef LIBRARY_NAME |
835 |
|
|
ifdef EXPORT_LIBRARY |
836 |
|
|
ifdef IS_COMPONENT |
837 |
|
|
ifdef BUILD_STATIC_LIBS |
838 |
|
|
@$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/build-list.pl $(FINAL_LINK_COMPS) $(LIBRARY_NAME) |
839 |
|
|
ifdef MODULE_NAME |
840 |
|
|
@$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/build-list.pl $(FINAL_LINK_COMP_NAMES) $(MODULE_NAME) |
841 |
|
|
endif |
842 |
|
|
endif |
843 |
|
|
else |
844 |
|
|
$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/build-list.pl $(FINAL_LINK_LIBS) $(LIBRARY_NAME) |
845 |
|
|
endif # IS_COMPONENT |
846 |
|
|
endif # EXPORT_LIBRARY |
847 |
|
|
endif # LIBRARY_NAME |
848 |
|
|
|
849 |
|
|
# Create dependencies on static (and shared EXTRA_DSO_LIBS) libraries |
850 |
|
|
LIBS_DEPS = $(filter %.$(LIB_SUFFIX), $(LIBS)) |
851 |
|
|
HOST_LIBS_DEPS = $(filter %.$(LIB_SUFFIX), $(HOST_LIBS)) |
852 |
|
|
DSO_LDOPTS_DEPS = $(EXTRA_DSO_LIBS) $(filter %.$(LIB_SUFFIX), $(EXTRA_DSO_LDOPTS)) |
853 |
|
|
|
854 |
siliconforks |
460 |
# Dependancies which, if modified, should cause everything to rebuild |
855 |
|
|
GLOBAL_DEPS += Makefile Makefile.in $(DEPTH)/config/autoconf.mk $(topsrcdir)/config/config.mk |
856 |
|
|
|
857 |
siliconforks |
399 |
############################################## |
858 |
|
|
ifdef PARALLEL_DIRS |
859 |
|
|
libs:: $(PARALLEL_DIRS_libs) |
860 |
|
|
|
861 |
|
|
$(PARALLEL_DIRS_libs): %_libs: %/Makefile |
862 |
|
|
+@$(UPDATE_TITLE_libs) $(MAKE) -C $* libs |
863 |
|
|
endif |
864 |
|
|
|
865 |
|
|
libs:: $(SUBMAKEFILES) $(MAKE_DIRS) $(HOST_LIBRARY) $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(HOST_PROGRAM) $(PROGRAM) $(HOST_SIMPLE_PROGRAMS) $(SIMPLE_PROGRAMS) $(JAVA_LIBRARY) |
866 |
|
|
ifndef NO_DIST_INSTALL |
867 |
|
|
ifdef LIBRARY |
868 |
|
|
ifdef EXPORT_LIBRARY # Stage libs that will be linked into a static build |
869 |
|
|
ifdef IS_COMPONENT |
870 |
|
|
$(INSTALL) $(IFLAGS1) $(LIBRARY) $(DEPTH)/staticlib/components |
871 |
|
|
else |
872 |
|
|
$(INSTALL) $(IFLAGS1) $(LIBRARY) $(DEPTH)/staticlib |
873 |
|
|
endif |
874 |
|
|
endif # EXPORT_LIBRARY |
875 |
|
|
ifdef DIST_INSTALL |
876 |
|
|
ifdef IS_COMPONENT |
877 |
|
|
$(error Shipping static component libs makes no sense.) |
878 |
|
|
else |
879 |
|
|
$(INSTALL) $(IFLAGS1) $(LIBRARY) $(DIST)/lib |
880 |
|
|
endif |
881 |
|
|
endif # DIST_INSTALL |
882 |
|
|
endif # LIBRARY |
883 |
|
|
ifdef SHARED_LIBRARY |
884 |
|
|
ifdef IS_COMPONENT |
885 |
|
|
$(INSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(FINAL_TARGET)/components |
886 |
|
|
$(ELF_DYNSTR_GC) $(FINAL_TARGET)/components/$(SHARED_LIBRARY) |
887 |
|
|
ifdef BEOS_ADDON_WORKAROUND |
888 |
|
|
( cd $(FINAL_TARGET)/components && $(CC) -nostart -o $(SHARED_LIBRARY).stub $(SHARED_LIBRARY) ) |
889 |
|
|
endif |
890 |
|
|
else # ! IS_COMPONENT |
891 |
|
|
ifneq (,$(filter OS2 WINNT WINCE,$(OS_ARCH))) |
892 |
|
|
$(INSTALL) $(IFLAGS2) $(IMPORT_LIBRARY) $(DIST)/lib |
893 |
|
|
else |
894 |
|
|
$(INSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(DIST)/lib |
895 |
|
|
endif |
896 |
|
|
$(INSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(FINAL_TARGET) |
897 |
|
|
ifdef BEOS_ADDON_WORKAROUND |
898 |
|
|
( cd $(FINAL_TARGET) && $(CC) -nostart -o $(SHARED_LIBRARY).stub $(SHARED_LIBRARY) ) |
899 |
|
|
endif |
900 |
|
|
endif # IS_COMPONENT |
901 |
|
|
endif # SHARED_LIBRARY |
902 |
|
|
ifdef PROGRAM |
903 |
|
|
$(INSTALL) $(IFLAGS2) $(PROGRAM) $(FINAL_TARGET) |
904 |
|
|
endif |
905 |
|
|
ifdef SIMPLE_PROGRAMS |
906 |
|
|
$(INSTALL) $(IFLAGS2) $(SIMPLE_PROGRAMS) $(FINAL_TARGET) |
907 |
|
|
endif |
908 |
|
|
ifdef HOST_PROGRAM |
909 |
|
|
$(INSTALL) $(IFLAGS2) $(HOST_PROGRAM) $(DIST)/host/bin |
910 |
|
|
endif |
911 |
|
|
ifdef HOST_SIMPLE_PROGRAMS |
912 |
|
|
$(INSTALL) $(IFLAGS2) $(HOST_SIMPLE_PROGRAMS) $(DIST)/host/bin |
913 |
|
|
endif |
914 |
|
|
ifdef HOST_LIBRARY |
915 |
|
|
$(INSTALL) $(IFLAGS1) $(HOST_LIBRARY) $(DIST)/host/lib |
916 |
|
|
endif |
917 |
|
|
ifdef JAVA_LIBRARY |
918 |
|
|
ifdef IS_COMPONENT |
919 |
|
|
$(INSTALL) $(IFLAGS1) $(JAVA_LIBRARY) $(FINAL_TARGET)/components |
920 |
|
|
else |
921 |
|
|
$(INSTALL) $(IFLAGS1) $(JAVA_LIBRARY) $(FINAL_TARGET) |
922 |
|
|
endif |
923 |
|
|
endif # JAVA_LIBRARY |
924 |
|
|
endif # !NO_DIST_INSTALL |
925 |
|
|
+$(LOOP_OVER_DIRS) |
926 |
|
|
|
927 |
|
|
############################################## |
928 |
|
|
|
929 |
|
|
ifndef NO_PROFILE_GUIDED_OPTIMIZE |
930 |
|
|
ifneq (,$(MOZ_PROFILE_GENERATE)$(MOZ_PROFILE_USE)) |
931 |
|
|
ifeq ($(OS_ARCH)_$(GNU_CC)$(INTERNAL_TOOLS), WINNT_) |
932 |
|
|
# Force re-linking when building with PGO, since |
933 |
|
|
# the MSVC linker does all the work. We force re-link |
934 |
|
|
# in both stages so you can do depend builds with PGO. |
935 |
|
|
ifdef SHARED_LIBRARY |
936 |
|
|
$(SHARED_LIBRARY): FORCE |
937 |
|
|
endif |
938 |
|
|
ifdef PROGRAM |
939 |
|
|
$(PROGRAM): FORCE |
940 |
|
|
endif |
941 |
|
|
|
942 |
|
|
ifdef MOZ_PROFILE_USE |
943 |
|
|
# In the second pass, we need to merge the pgc files into the pgd file. |
944 |
|
|
# The compiler would do this for us automatically if they were in the right |
945 |
|
|
# place, but they're in dist/bin. |
946 |
siliconforks |
460 |
ifneq (,$(SHARED_LIBRARY)$(PROGRAM)) |
947 |
siliconforks |
399 |
export:: |
948 |
siliconforks |
460 |
ifdef PROGRAM |
949 |
siliconforks |
399 |
$(PYTHON) $(topsrcdir)/build/win32/pgomerge.py \ |
950 |
siliconforks |
460 |
$(PROGRAM:$(BIN_SUFFIX)=) $(DIST)/bin |
951 |
siliconforks |
399 |
endif |
952 |
siliconforks |
460 |
ifdef SHARED_LIBRARY |
953 |
|
|
$(PYTHON) $(topsrcdir)/build/win32/pgomerge.py \ |
954 |
|
|
$(LIBRARY_NAME) $(DIST)/bin |
955 |
|
|
endif |
956 |
|
|
endif |
957 |
siliconforks |
399 |
endif # MOZ_PROFILE_USE |
958 |
|
|
endif # WINNT_ |
959 |
|
|
endif # MOZ_PROFILE_GENERATE || MOZ_PROFILE_USE |
960 |
|
|
endif # NO_PROFILE_GUIDED_OPTIMIZE |
961 |
|
|
|
962 |
|
|
############################################## |
963 |
|
|
|
964 |
|
|
checkout: |
965 |
|
|
$(MAKE) -C $(topsrcdir) -f client.mk checkout |
966 |
|
|
|
967 |
|
|
run_viewer: $(FINAL_TARGET)/viewer |
968 |
|
|
cd $(FINAL_TARGET); \ |
969 |
|
|
MOZILLA_FIVE_HOME=`pwd` \ |
970 |
|
|
LD_LIBRARY_PATH=".:$(LIBS_PATH):$$LD_LIBRARY_PATH" \ |
971 |
|
|
viewer |
972 |
|
|
|
973 |
|
|
clean clobber realclean clobber_all:: $(SUBMAKEFILES) |
974 |
|
|
-rm -f $(ALL_TRASH) |
975 |
|
|
-rm -rf $(ALL_TRASH_DIRS) |
976 |
|
|
+-$(LOOP_OVER_PARALLEL_DIRS) |
977 |
|
|
+-$(LOOP_OVER_DIRS) |
978 |
|
|
+-$(LOOP_OVER_STATIC_DIRS) |
979 |
|
|
+-$(LOOP_OVER_TOOL_DIRS) |
980 |
|
|
|
981 |
|
|
distclean:: $(SUBMAKEFILES) |
982 |
|
|
+-$(LOOP_OVER_PARALLEL_DIRS) |
983 |
|
|
+-$(LOOP_OVER_DIRS) |
984 |
|
|
+-$(LOOP_OVER_STATIC_DIRS) |
985 |
|
|
+-$(LOOP_OVER_TOOL_DIRS) |
986 |
|
|
-rm -rf $(ALL_TRASH_DIRS) |
987 |
|
|
-rm -f $(ALL_TRASH) \ |
988 |
|
|
Makefile .HSancillary \ |
989 |
|
|
$(wildcard *.$(OBJ_SUFFIX)) $(wildcard *.ho) $(wildcard host_*.o*) \ |
990 |
|
|
$(wildcard *.$(LIB_SUFFIX)) $(wildcard *$(DLL_SUFFIX)) \ |
991 |
|
|
$(wildcard *.$(IMPORT_LIB_SUFFIX)) |
992 |
|
|
ifeq ($(OS_ARCH),OS2) |
993 |
|
|
-rm -f $(PROGRAM:.exe=.map) |
994 |
|
|
endif |
995 |
|
|
|
996 |
|
|
alltags: |
997 |
|
|
rm -f TAGS |
998 |
|
|
find $(topsrcdir) -name dist -prune -o \( -name '*.[hc]' -o -name '*.cp' -o -name '*.cpp' -o -name '*.idl' \) -print | $(TAG_PROGRAM) |
999 |
|
|
|
1000 |
|
|
# |
1001 |
|
|
# PROGRAM = Foo |
1002 |
|
|
# creates OBJS, links with LIBS to create Foo |
1003 |
|
|
# |
1004 |
siliconforks |
460 |
$(PROGRAM): $(PROGOBJS) $(LIBS_DEPS) $(EXTRA_DEPS) $(EXE_DEF_FILE) $(RESFILE) $(GLOBAL_DEPS) |
1005 |
siliconforks |
399 |
ifeq (WINCE,$(OS_ARCH)) |
1006 |
|
|
$(LD) -NOLOGO -OUT:$@ $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(PROGOBJS) $(RESFILE) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS) |
1007 |
|
|
else |
1008 |
|
|
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH)) |
1009 |
|
|
$(LD) -NOLOGO -OUT:$@ -PDB:$(LINK_PDBFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(PROGOBJS) $(RESFILE) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS) |
1010 |
|
|
ifdef MSMANIFEST_TOOL |
1011 |
|
|
@if test -f $@.manifest; then \ |
1012 |
|
|
if test -f "$(srcdir)/$@.manifest"; then \ |
1013 |
|
|
mt.exe -NOLOGO -MANIFEST "$(win_srcdir)/$@.manifest" $@.manifest -OUTPUTRESOURCE:$@\;1; \ |
1014 |
|
|
else \ |
1015 |
|
|
mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \ |
1016 |
|
|
fi; \ |
1017 |
|
|
rm -f $@.manifest; \ |
1018 |
|
|
fi |
1019 |
|
|
endif # MSVC with manifest tool |
1020 |
|
|
else |
1021 |
|
|
ifeq ($(CPP_PROG_LINK),1) |
1022 |
|
|
$(CCC) -o $@ $(CXXFLAGS) $(WRAP_MALLOC_CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(SOLARIS_JEMALLOC_LDFLAGS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(WRAP_MALLOC_LIB) $(PROFILER_LIBS) $(EXE_DEF_FILE) |
1023 |
|
|
else # ! CPP_PROG_LINK |
1024 |
|
|
$(CC) -o $@ $(CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(SOLARIS_JEMALLOC_LDFLAGS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE) |
1025 |
|
|
endif # CPP_PROG_LINK |
1026 |
|
|
endif # WINNT && !GNU_CC |
1027 |
|
|
endif # WINCE |
1028 |
|
|
|
1029 |
|
|
ifdef ENABLE_STRIP |
1030 |
|
|
$(STRIP) $@ |
1031 |
|
|
endif |
1032 |
|
|
ifdef MOZ_POST_PROGRAM_COMMAND |
1033 |
|
|
$(MOZ_POST_PROGRAM_COMMAND) $@ |
1034 |
|
|
endif |
1035 |
|
|
ifeq ($(OS_ARCH),BeOS) |
1036 |
|
|
ifdef BEOS_PROGRAM_RESOURCE |
1037 |
|
|
xres -o $@ $(BEOS_PROGRAM_RESOURCE) |
1038 |
|
|
mimeset $@ |
1039 |
|
|
endif |
1040 |
|
|
endif # BeOS |
1041 |
|
|
|
1042 |
siliconforks |
460 |
$(HOST_PROGRAM): $(HOST_PROGOBJS) $(HOST_LIBS_DEPS) $(HOST_EXTRA_DEPS) $(GLOBAL_DEPS) |
1043 |
siliconforks |
399 |
ifeq (WINCE,$(OS_ARCH)) |
1044 |
|
|
$(HOST_LD) -NOLOGO -OUT:$@ $(HOST_OBJS) $(WIN32_EXE_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS) |
1045 |
|
|
else |
1046 |
|
|
ifeq (_WINNT,$(GNU_CC)_$(HOST_OS_ARCH)) |
1047 |
|
|
$(HOST_LD) -NOLOGO -OUT:$@ -PDB:$(HOST_PDBFILE) $(HOST_OBJS) $(WIN32_EXE_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS) |
1048 |
|
|
ifdef MSMANIFEST_TOOL |
1049 |
|
|
@if test -f $@.manifest; then \ |
1050 |
|
|
mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \ |
1051 |
|
|
rm -f $@.manifest; \ |
1052 |
|
|
fi |
1053 |
|
|
endif # MSVC with manifest tool |
1054 |
|
|
else |
1055 |
|
|
ifeq ($(CPP_PROG_LINK),1) |
1056 |
|
|
$(HOST_CXX) -o $@ $(HOST_CXXFLAGS) $(HOST_LDFLAGS) $(HOST_PROGOBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS) |
1057 |
|
|
else |
1058 |
|
|
$(HOST_CC) -o $@ $(HOST_CFLAGS) $(HOST_LDFLAGS) $(HOST_PROGOBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS) |
1059 |
|
|
endif # CPP_PROG_LINK |
1060 |
|
|
endif |
1061 |
|
|
endif |
1062 |
|
|
|
1063 |
|
|
# |
1064 |
|
|
# This is an attempt to support generation of multiple binaries |
1065 |
|
|
# in one directory, it assumes everything to compile Foo is in |
1066 |
|
|
# Foo.o (from either Foo.c or Foo.cpp). |
1067 |
|
|
# |
1068 |
|
|
# SIMPLE_PROGRAMS = Foo Bar |
1069 |
|
|
# creates Foo.o Bar.o, links with LIBS to create Foo, Bar. |
1070 |
|
|
# |
1071 |
siliconforks |
460 |
$(SIMPLE_PROGRAMS): %$(BIN_SUFFIX): %.$(OBJ_SUFFIX) $(LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS) |
1072 |
siliconforks |
399 |
ifeq (WINCE,$(OS_ARCH)) |
1073 |
|
|
$(LD) -nologo -entry:main -out:$@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS) |
1074 |
|
|
else |
1075 |
|
|
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH)) |
1076 |
|
|
$(LD) -nologo -out:$@ -pdb:$(LINK_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS) |
1077 |
|
|
ifdef MSMANIFEST_TOOL |
1078 |
|
|
@if test -f $@.manifest; then \ |
1079 |
|
|
mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \ |
1080 |
|
|
rm -f $@.manifest; \ |
1081 |
|
|
fi |
1082 |
|
|
endif # MSVC with manifest tool |
1083 |
|
|
else |
1084 |
|
|
ifeq ($(CPP_PROG_LINK),1) |
1085 |
|
|
$(CCC) $(WRAP_MALLOC_CFLAGS) $(CXXFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(SOLARIS_JEMALLOC_LDFLAGS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(WRAP_MALLOC_LIB) $(PROFILER_LIBS) $(BIN_FLAGS) |
1086 |
|
|
else |
1087 |
|
|
$(CC) $(WRAP_MALLOC_CFLAGS) $(CFLAGS) $(OUTOPTION)$@ $< $(WIN32_EXE_LDFLAGS) $(SOLARIS_JEMALLOC_LDFLAGS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(WRAP_MALLOC_LIB) $(PROFILER_LIBS) $(BIN_FLAGS) |
1088 |
|
|
endif # CPP_PROG_LINK |
1089 |
|
|
endif # WINNT && !GNU_CC |
1090 |
|
|
endif # WINCE |
1091 |
|
|
|
1092 |
|
|
ifdef ENABLE_STRIP |
1093 |
|
|
$(STRIP) $@ |
1094 |
|
|
endif |
1095 |
|
|
ifdef MOZ_POST_PROGRAM_COMMAND |
1096 |
|
|
$(MOZ_POST_PROGRAM_COMMAND) $@ |
1097 |
|
|
endif |
1098 |
|
|
|
1099 |
siliconforks |
460 |
$(HOST_SIMPLE_PROGRAMS): host_%$(HOST_BIN_SUFFIX): host_%.$(OBJ_SUFFIX) $(HOST_LIBS_DEPS) $(HOST_EXTRA_DEPS) $(GLOBAL_DEPS) |
1100 |
siliconforks |
399 |
ifeq (WINCE,$(OS_ARCH)) |
1101 |
|
|
$(HOST_LD) -NOLOGO -OUT:$@ $(WIN32_EXE_LDFLAGS) $< $(HOST_LIBS) $(HOST_EXTRA_LIBS) |
1102 |
|
|
else |
1103 |
|
|
ifeq (WINNT_,$(HOST_OS_ARCH)_$(GNU_CC)) |
1104 |
|
|
$(HOST_LD) -NOLOGO -OUT:$@ -PDB:$(HOST_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS) |
1105 |
|
|
else |
1106 |
|
|
ifneq (,$(HOST_CPPSRCS)$(USE_HOST_CXX)) |
1107 |
|
|
$(HOST_CXX) $(HOST_OUTOPTION)$@ $(HOST_CXXFLAGS) $(INCLUDES) $< $(HOST_LIBS) $(HOST_EXTRA_LIBS) |
1108 |
|
|
else |
1109 |
|
|
$(HOST_CC) $(HOST_OUTOPTION)$@ $(HOST_CFLAGS) $(INCLUDES) $< $(HOST_LIBS) $(HOST_EXTRA_LIBS) |
1110 |
|
|
endif |
1111 |
|
|
endif |
1112 |
|
|
endif |
1113 |
|
|
|
1114 |
|
|
# |
1115 |
|
|
# Purify target. Solaris/sparc only to start. |
1116 |
|
|
# Purify does not recognize "egcs" or "c++" so we go with |
1117 |
|
|
# "gcc" and "g++" for now. |
1118 |
|
|
# |
1119 |
|
|
pure: $(PROGRAM) |
1120 |
|
|
ifeq ($(CPP_PROG_LINK),1) |
1121 |
|
|
$(PURIFY) $(CCC) -o $^.pure $(CXXFLAGS) $(PROGOBJS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) |
1122 |
|
|
else |
1123 |
|
|
$(PURIFY) $(CC) -o $^.pure $(CFLAGS) $(PROGOBJS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) |
1124 |
|
|
endif |
1125 |
|
|
ifndef NO_DIST_INSTALL |
1126 |
|
|
$(INSTALL) $(IFLAGS2) $^.pure $(FINAL_TARGET) |
1127 |
|
|
endif |
1128 |
|
|
|
1129 |
|
|
quantify: $(PROGRAM) |
1130 |
|
|
ifeq ($(CPP_PROG_LINK),1) |
1131 |
|
|
$(QUANTIFY) $(CCC) -o $^.quantify $(CXXFLAGS) $(PROGOBJS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) |
1132 |
|
|
else |
1133 |
|
|
$(QUANTIFY) $(CC) -o $^.quantify $(CFLAGS) $(PROGOBJS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) |
1134 |
|
|
endif |
1135 |
|
|
ifndef NO_DIST_INSTALL |
1136 |
|
|
$(INSTALL) $(IFLAGS2) $^.quantify $(FINAL_TARGET) |
1137 |
|
|
endif |
1138 |
|
|
|
1139 |
|
|
# |
1140 |
|
|
# This allows us to create static versions of the shared libraries |
1141 |
|
|
# that are built using other static libraries. Confused...? |
1142 |
|
|
# |
1143 |
|
|
ifdef SHARED_LIBRARY_LIBS |
1144 |
|
|
ifeq (,$(GNU_LD)$(filter-out OS2 WINNT WINCE, $(OS_ARCH))) |
1145 |
|
|
ifneq (,$(BUILD_STATIC_LIBS)$(FORCE_STATIC_LIB)) |
1146 |
|
|
LOBJS += $(SHARED_LIBRARY_LIBS) |
1147 |
|
|
endif |
1148 |
|
|
else |
1149 |
|
|
ifneq (,$(filter OSF1 BSD_OS FreeBSD NetBSD OpenBSD SunOS Darwin,$(OS_ARCH))) |
1150 |
|
|
CLEANUP1 := | egrep -v '(________64ELEL_|__.SYMDEF)' |
1151 |
|
|
CLEANUP2 := rm -f ________64ELEL_ __.SYMDEF |
1152 |
|
|
else |
1153 |
|
|
CLEANUP2 := true |
1154 |
|
|
endif |
1155 |
|
|
SUB_LOBJS = $(shell for lib in $(SHARED_LIBRARY_LIBS); do $(AR_LIST) $${lib} $(CLEANUP1); done;) |
1156 |
|
|
endif |
1157 |
|
|
endif |
1158 |
|
|
ifdef MOZILLA_PROBE_LIBS |
1159 |
|
|
PROBE_LOBJS = $(shell for lib in $(MOZILLA_PROBE_LIBS); do $(AR_LIST) $${lib} $(CLEANUP1); done;) |
1160 |
|
|
endif |
1161 |
|
|
ifdef DTRACE_PROBE_OBJ |
1162 |
|
|
EXTRA_DEPS += $(DTRACE_PROBE_OBJ) |
1163 |
|
|
endif |
1164 |
|
|
|
1165 |
siliconforks |
460 |
$(LIBRARY): $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DEPS) $(GLOBAL_DEPS) |
1166 |
siliconforks |
399 |
rm -f $@ |
1167 |
|
|
ifneq (,$(GNU_LD)$(filter-out OS2 WINNT WINCE, $(OS_ARCH))) |
1168 |
|
|
ifdef SHARED_LIBRARY_LIBS |
1169 |
|
|
@rm -f $(SUB_LOBJS) |
1170 |
|
|
@for lib in $(SHARED_LIBRARY_LIBS); do $(AR_EXTRACT) $${lib}; $(CLEANUP2); done |
1171 |
|
|
endif |
1172 |
|
|
endif |
1173 |
|
|
$(AR) $(AR_FLAGS) $(OBJS) $(LOBJS) $(SUB_LOBJS) |
1174 |
|
|
$(RANLIB) $@ |
1175 |
|
|
@rm -f foodummyfilefoo $(SUB_LOBJS) |
1176 |
|
|
|
1177 |
|
|
ifeq (,$(filter-out WINNT WINCE, $(OS_ARCH))) |
1178 |
|
|
$(IMPORT_LIBRARY): $(SHARED_LIBRARY) |
1179 |
|
|
endif |
1180 |
|
|
|
1181 |
|
|
ifeq ($(OS_ARCH),OS2) |
1182 |
|
|
$(DEF_FILE): $(OBJS) $(SHARED_LIBRARY_LIBS) |
1183 |
|
|
rm -f $@ |
1184 |
|
|
echo LIBRARY $(LIBRARY_NAME) INITINSTANCE TERMINSTANCE > $@ |
1185 |
|
|
echo PROTMODE >> $@ |
1186 |
|
|
echo CODE LOADONCALL MOVEABLE DISCARDABLE >> $@ |
1187 |
|
|
echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $@ |
1188 |
|
|
echo EXPORTS >> $@ |
1189 |
|
|
ifeq ($(IS_COMPONENT),1) |
1190 |
|
|
ifeq ($(HAS_EXTRAEXPORTS),1) |
1191 |
|
|
ifndef MOZ_OS2_USE_DECLSPEC |
1192 |
|
|
$(FILTER) $(OBJS) $(SHARED_LIBRARY_LIBS) >> $@ |
1193 |
|
|
endif |
1194 |
|
|
else |
1195 |
|
|
echo _NSGetModule >> $@ |
1196 |
|
|
endif |
1197 |
|
|
else |
1198 |
|
|
ifndef MOZ_OS2_USE_DECLSPEC |
1199 |
|
|
$(FILTER) $(OBJS) $(SHARED_LIBRARY_LIBS) >> $@ |
1200 |
|
|
endif |
1201 |
|
|
endif |
1202 |
|
|
$(ADD_TO_DEF_FILE) |
1203 |
|
|
|
1204 |
|
|
ifdef MOZ_OS2_USE_DECLSPEC |
1205 |
|
|
$(IMPORT_LIBRARY): $(SHARED_LIBRARY) |
1206 |
|
|
else |
1207 |
|
|
$(IMPORT_LIBRARY): $(DEF_FILE) |
1208 |
|
|
endif |
1209 |
|
|
rm -f $@ |
1210 |
|
|
$(IMPLIB) $@ $^ |
1211 |
|
|
$(RANLIB) $@ |
1212 |
|
|
endif # OS/2 |
1213 |
|
|
|
1214 |
|
|
$(HOST_LIBRARY): $(HOST_OBJS) Makefile |
1215 |
|
|
rm -f $@ |
1216 |
|
|
$(HOST_AR) $(HOST_AR_FLAGS) $(HOST_OBJS) |
1217 |
|
|
$(HOST_RANLIB) $@ |
1218 |
|
|
|
1219 |
|
|
ifdef NO_LD_ARCHIVE_FLAGS |
1220 |
|
|
SUB_SHLOBJS = $(SUB_LOBJS) |
1221 |
|
|
endif |
1222 |
|
|
|
1223 |
|
|
ifdef HAVE_DTRACE |
1224 |
|
|
ifndef XP_MACOSX |
1225 |
|
|
ifdef DTRACE_PROBE_OBJ |
1226 |
|
|
ifndef DTRACE_LIB_DEPENDENT |
1227 |
|
|
$(DTRACE_PROBE_OBJ): $(OBJS) |
1228 |
|
|
dtrace -G -C -32 -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(OBJS) |
1229 |
|
|
endif |
1230 |
|
|
endif |
1231 |
|
|
endif |
1232 |
|
|
endif |
1233 |
|
|
|
1234 |
|
|
# On Darwin (Mac OS X), dwarf2 debugging uses debug info left in .o files, |
1235 |
|
|
# so instead of deleting .o files after repacking them into a dylib, we make |
1236 |
|
|
# symlinks back to the originals. The symlinks are a no-op for stabs debugging, |
1237 |
|
|
# so no need to conditionalize on OS version or debugging format. |
1238 |
|
|
|
1239 |
siliconforks |
460 |
$(SHARED_LIBRARY): $(OBJS) $(LOBJS) $(DEF_FILE) $(RESFILE) $(SHARED_LIBRARY_LIBS) $(EXTRA_DEPS) $(DSO_LDOPTS_DEPS) $(GLOBAL_DEPS) |
1240 |
siliconforks |
399 |
ifndef INCREMENTAL_LINKER |
1241 |
|
|
rm -f $@ |
1242 |
|
|
endif |
1243 |
|
|
ifeq ($(OS_ARCH),OpenVMS) |
1244 |
|
|
@if test ! -f $(VMS_SYMVEC_FILE); then \ |
1245 |
|
|
if test -f $(VMS_SYMVEC_FILE_MODULE); then \ |
1246 |
|
|
echo Creating specific component options file $(VMS_SYMVEC_FILE); \ |
1247 |
|
|
cp $(VMS_SYMVEC_FILE_MODULE) $(VMS_SYMVEC_FILE); \ |
1248 |
|
|
fi; \ |
1249 |
|
|
fi |
1250 |
|
|
ifdef IS_COMPONENT |
1251 |
|
|
@if test ! -f $(VMS_SYMVEC_FILE); then \ |
1252 |
|
|
echo Creating generic component options file $(VMS_SYMVEC_FILE); \ |
1253 |
|
|
cp $(VMS_SYMVEC_FILE_COMP) $(VMS_SYMVEC_FILE); \ |
1254 |
|
|
fi |
1255 |
|
|
endif |
1256 |
|
|
endif # OpenVMS |
1257 |
|
|
ifdef NO_LD_ARCHIVE_FLAGS |
1258 |
|
|
ifdef SHARED_LIBRARY_LIBS |
1259 |
|
|
@rm -f $(SUB_SHLOBJS) |
1260 |
|
|
@for lib in $(SHARED_LIBRARY_LIBS); do $(AR_EXTRACT) $${lib}; $(CLEANUP2); done |
1261 |
|
|
ifeq ($(OS_ARCH),Darwin) |
1262 |
|
|
@echo Making symlinks to the original object files in the archive libraries $(SHARED_LIBRARY_LIBS) |
1263 |
|
|
@for lib in $(SHARED_LIBRARY_LIBS); do \ |
1264 |
|
|
libdir=`echo $$lib|sed -e 's,/[^/]*\.a,,'`; \ |
1265 |
|
|
ofiles=`$(AR_LIST) $${lib}`; \ |
1266 |
|
|
for ofile in $$ofiles; do \ |
1267 |
|
|
if [ -f $$libdir/$$ofile ]; then \ |
1268 |
|
|
rm -f $$ofile; \ |
1269 |
|
|
ln -s $$libdir/$$ofile $$ofile; \ |
1270 |
|
|
fi; \ |
1271 |
|
|
done; \ |
1272 |
|
|
done |
1273 |
|
|
endif |
1274 |
|
|
endif # SHARED_LIBRARY_LIBS |
1275 |
|
|
endif # NO_LD_ARCHIVE_FLAGS |
1276 |
|
|
ifdef DTRACE_LIB_DEPENDENT |
1277 |
|
|
@rm -f $(PROBE_LOBJS) |
1278 |
|
|
@for lib in $(MOZILLA_PROBE_LIBS); do $(AR_EXTRACT) $${lib}; $(CLEANUP2); done |
1279 |
|
|
ifndef XP_MACOSX |
1280 |
|
|
dtrace -G -C -32 -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(PROBE_LOBJS) |
1281 |
|
|
endif |
1282 |
|
|
@for lib in $(MOZILLA_PROBE_LIBS); do \ |
1283 |
|
|
ofiles=`$(AR_LIST) $${lib}`; \ |
1284 |
|
|
$(AR_DELETE) $${lib} $$ofiles; \ |
1285 |
|
|
done |
1286 |
|
|
$(MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(LOBJS) $(SUB_SHLOBJS) $(DTRACE_PROBE_OBJ) $(PROBE_LOBJS) $(RESFILE) $(LDFLAGS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE) |
1287 |
|
|
@rm -f $(PROBE_LOBJS) |
1288 |
|
|
@rm -f $(DTRACE_PROBE_OBJ) |
1289 |
|
|
@for lib in $(MOZILLA_PROBE_LIBS); do \ |
1290 |
|
|
if [ -L $${lib} ]; then rm -f `readlink $${lib}`; fi; \ |
1291 |
|
|
done |
1292 |
|
|
@rm -f $(MOZILLA_PROBE_LIBS) |
1293 |
|
|
|
1294 |
|
|
else # ! DTRACE_LIB_DEPENDENT |
1295 |
|
|
$(MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(DTRACE_PROBE_OBJ) $(LOBJS) $(SUB_SHLOBJS) $(RESFILE) $(LDFLAGS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE) |
1296 |
|
|
endif # DTRACE_LIB_DEPENDENT |
1297 |
|
|
|
1298 |
|
|
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH)) |
1299 |
|
|
ifdef MSMANIFEST_TOOL |
1300 |
|
|
ifdef EMBED_MANIFEST_AT |
1301 |
|
|
@if test -f $@.manifest; then \ |
1302 |
|
|
mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;$(EMBED_MANIFEST_AT); \ |
1303 |
|
|
rm -f $@.manifest; \ |
1304 |
|
|
fi |
1305 |
|
|
endif # EMBED_MANIFEST_AT |
1306 |
|
|
endif # MSVC with manifest tool |
1307 |
|
|
endif # WINNT && !GCC |
1308 |
|
|
ifeq ($(OS_ARCH),Darwin) |
1309 |
|
|
else # non-Darwin |
1310 |
|
|
@rm -f $(SUB_SHLOBJS) |
1311 |
|
|
endif # Darwin |
1312 |
|
|
@rm -f foodummyfilefoo $(DELETE_AFTER_LINK) |
1313 |
|
|
chmod +x $@ |
1314 |
|
|
ifdef ENABLE_STRIP |
1315 |
|
|
$(STRIP) $@ |
1316 |
|
|
endif |
1317 |
|
|
ifdef MOZ_POST_DSO_LIB_COMMAND |
1318 |
|
|
$(MOZ_POST_DSO_LIB_COMMAND) $@ |
1319 |
|
|
endif |
1320 |
|
|
|
1321 |
|
|
ifdef MOZ_AUTO_DEPS |
1322 |
|
|
ifdef COMPILER_DEPEND |
1323 |
siliconforks |
460 |
ifeq ($(SOLARIS_SUNPRO_CC),1) |
1324 |
siliconforks |
399 |
_MDDEPFILE = $(MDDEPDIR)/$(@F).pp |
1325 |
|
|
|
1326 |
|
|
define MAKE_DEPS_AUTO_CC |
1327 |
|
|
if test -d $(@D); then \ |
1328 |
|
|
echo "Building deps for $< using Sun Studio cc"; \ |
1329 |
|
|
$(CC) $(COMPILE_CFLAGS) -xM $< >$(_MDDEPFILE) ; \ |
1330 |
|
|
fi |
1331 |
|
|
endef |
1332 |
|
|
define MAKE_DEPS_AUTO_CXX |
1333 |
|
|
if test -d $(@D); then \ |
1334 |
|
|
echo "Building deps for $< using Sun Studio CC"; \ |
1335 |
|
|
$(CXX) $(COMPILE_CXXFLAGS) -xM $< >$(_MDDEPFILE) ; \ |
1336 |
|
|
fi |
1337 |
|
|
endef |
1338 |
|
|
endif # Sun Studio on Solaris |
1339 |
|
|
else # COMPILER_DEPEND |
1340 |
|
|
# |
1341 |
|
|
# Generate dependencies on the fly |
1342 |
|
|
# |
1343 |
|
|
_MDDEPFILE = $(MDDEPDIR)/$(@F).pp |
1344 |
|
|
|
1345 |
|
|
define MAKE_DEPS_AUTO |
1346 |
|
|
if test -d $(@D); then \ |
1347 |
|
|
echo "Building deps for $<"; \ |
1348 |
|
|
$(MKDEPEND) -o'.$(OBJ_SUFFIX)' -f- $(DEFINES) $(ACDEFINES) $(INCLUDES) $< 2>/dev/null | sed -e "s|^[^ ]*/||" > $(_MDDEPFILE) ; \ |
1349 |
|
|
fi |
1350 |
|
|
endef |
1351 |
|
|
|
1352 |
|
|
MAKE_DEPS_AUTO_CC = $(MAKE_DEPS_AUTO) |
1353 |
|
|
MAKE_DEPS_AUTO_CXX = $(MAKE_DEPS_AUTO) |
1354 |
|
|
|
1355 |
|
|
endif # COMPILER_DEPEND |
1356 |
|
|
|
1357 |
|
|
endif # MOZ_AUTO_DEPS |
1358 |
|
|
|
1359 |
|
|
ifdef MOZ_MEMORY |
1360 |
|
|
ifeq ($(OS_ARCH),SunOS) |
1361 |
|
|
SOLARIS_JEMALLOC_LDFLAGS = $(call EXPAND_LIBNAME_PATH,jemalloc,$(DIST)/lib) |
1362 |
|
|
endif |
1363 |
|
|
endif |
1364 |
|
|
|
1365 |
|
|
# Rules for building native targets must come first because of the host_ prefix |
1366 |
siliconforks |
460 |
host_%.$(OBJ_SUFFIX): %.c $(GLOBAL_DEPS) |
1367 |
siliconforks |
399 |
$(REPORT_BUILD) |
1368 |
|
|
$(ELOG) $(HOST_CC) $(HOST_OUTOPTION)$@ -c $(HOST_CFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS) |
1369 |
|
|
|
1370 |
siliconforks |
460 |
host_%.$(OBJ_SUFFIX): %.cpp $(GLOBAL_DEPS) |
1371 |
siliconforks |
399 |
$(REPORT_BUILD) |
1372 |
|
|
$(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS) |
1373 |
|
|
|
1374 |
siliconforks |
460 |
host_%.$(OBJ_SUFFIX): %.cc $(GLOBAL_DEPS) |
1375 |
siliconforks |
399 |
$(REPORT_BUILD) |
1376 |
|
|
$(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS) |
1377 |
|
|
|
1378 |
siliconforks |
460 |
host_%.$(OBJ_SUFFIX): %.m $(GLOBAL_DEPS) |
1379 |
siliconforks |
399 |
$(REPORT_BUILD) |
1380 |
|
|
$(ELOG) $(HOST_CC) $(HOST_OUTOPTION)$@ -c $(HOST_CFLAGS) $(HOST_CMFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS) |
1381 |
|
|
|
1382 |
siliconforks |
460 |
host_%.$(OBJ_SUFFIX): %.mm $(GLOBAL_DEPS) |
1383 |
siliconforks |
399 |
$(REPORT_BUILD) |
1384 |
|
|
$(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(HOST_CMMFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS) |
1385 |
|
|
|
1386 |
siliconforks |
460 |
%: %.c $(GLOBAL_DEPS) |
1387 |
siliconforks |
399 |
$(REPORT_BUILD) |
1388 |
|
|
@$(MAKE_DEPS_AUTO_CC) |
1389 |
|
|
$(ELOG) $(CC) $(CFLAGS) $(LDFLAGS) $(OUTOPTION)$@ $(_VPATH_SRCS) |
1390 |
|
|
|
1391 |
siliconforks |
460 |
%.$(OBJ_SUFFIX): %.c $(GLOBAL_DEPS) |
1392 |
siliconforks |
399 |
$(REPORT_BUILD) |
1393 |
|
|
@$(MAKE_DEPS_AUTO_CC) |
1394 |
|
|
$(ELOG) $(CC) $(OUTOPTION)$@ -c $(COMPILE_CFLAGS) $(_VPATH_SRCS) |
1395 |
|
|
|
1396 |
siliconforks |
460 |
moc_%.cpp: %.h $(GLOBAL_DEPS) |
1397 |
siliconforks |
399 |
$(MOC) $< $(OUTOPTION)$@ |
1398 |
|
|
|
1399 |
|
|
ifdef ASFILES |
1400 |
|
|
# The AS_DASH_C_FLAG is needed cause not all assemblers (Solaris) accept |
1401 |
|
|
# a '-c' flag. |
1402 |
siliconforks |
460 |
%.$(OBJ_SUFFIX): %.$(ASM_SUFFIX) $(GLOBAL_DEPS) |
1403 |
siliconforks |
399 |
$(AS) -o $@ $(ASFLAGS) $(AS_DASH_C_FLAG) $(_VPATH_SRCS) |
1404 |
|
|
endif |
1405 |
|
|
|
1406 |
siliconforks |
460 |
%.$(OBJ_SUFFIX): %.S $(GLOBAL_DEPS) |
1407 |
siliconforks |
399 |
$(AS) -o $@ $(ASFLAGS) -c $< |
1408 |
|
|
|
1409 |
siliconforks |
460 |
%: %.cpp $(GLOBAL_DEPS) |
1410 |
siliconforks |
399 |
@$(MAKE_DEPS_AUTO_CXX) |
1411 |
|
|
$(CCC) $(OUTOPTION)$@ $(CXXFLAGS) $(_VPATH_SRCS) $(LDFLAGS) |
1412 |
|
|
|
1413 |
|
|
# |
1414 |
|
|
# Please keep the next two rules in sync. |
1415 |
|
|
# |
1416 |
siliconforks |
460 |
%.$(OBJ_SUFFIX): %.cc $(GLOBAL_DEPS) |
1417 |
siliconforks |
399 |
$(REPORT_BUILD) |
1418 |
|
|
@$(MAKE_DEPS_AUTO_CXX) |
1419 |
|
|
$(ELOG) $(CCC) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS) $(_VPATH_SRCS) |
1420 |
|
|
|
1421 |
siliconforks |
460 |
%.$(OBJ_SUFFIX): %.cpp $(GLOBAL_DEPS) |
1422 |
siliconforks |
399 |
$(REPORT_BUILD) |
1423 |
|
|
@$(MAKE_DEPS_AUTO_CXX) |
1424 |
|
|
ifdef STRICT_CPLUSPLUS_SUFFIX |
1425 |
|
|
echo "#line 1 \"$*.cpp\"" | cat - $*.cpp > t_$*.cc |
1426 |
|
|
$(ELOG) $(CCC) -o $@ -c $(COMPILE_CXXFLAGS) t_$*.cc |
1427 |
|
|
rm -f t_$*.cc |
1428 |
|
|
else |
1429 |
|
|
$(ELOG) $(CCC) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS) $(_VPATH_SRCS) |
1430 |
|
|
endif #STRICT_CPLUSPLUS_SUFFIX |
1431 |
|
|
|
1432 |
siliconforks |
460 |
$(OBJ_PREFIX)%.$(OBJ_SUFFIX): %.mm $(GLOBAL_DEPS) |
1433 |
siliconforks |
399 |
$(REPORT_BUILD) |
1434 |
|
|
@$(MAKE_DEPS_AUTO_CXX) |
1435 |
|
|
$(ELOG) $(CCC) -o $@ -c $(COMPILE_CXXFLAGS) $(COMPILE_CMMFLAGS) $(_VPATH_SRCS) |
1436 |
|
|
|
1437 |
siliconforks |
460 |
$(OBJ_PREFIX)%.$(OBJ_SUFFIX): %.m $(GLOBAL_DEPS) |
1438 |
siliconforks |
399 |
$(REPORT_BUILD) |
1439 |
|
|
@$(MAKE_DEPS_AUTO_CC) |
1440 |
|
|
$(ELOG) $(CC) -o $@ -c $(COMPILE_CFLAGS) $(COMPILE_CMFLAGS) $(_VPATH_SRCS) |
1441 |
|
|
|
1442 |
|
|
%.s: %.cpp |
1443 |
|
|
$(CCC) -S $(COMPILE_CXXFLAGS) $(_VPATH_SRCS) |
1444 |
|
|
|
1445 |
|
|
%.s: %.cc |
1446 |
|
|
$(CCC) -S $(COMPILE_CXXFLAGS) $(_VPATH_SRCS) |
1447 |
|
|
|
1448 |
|
|
%.s: %.c |
1449 |
|
|
$(CC) -S $(COMPILE_CFLAGS) $(_VPATH_SRCS) |
1450 |
|
|
|
1451 |
|
|
%.i: %.cpp |
1452 |
|
|
$(CCC) -C -E $(COMPILE_CXXFLAGS) $(_VPATH_SRCS) > $*.i |
1453 |
|
|
|
1454 |
|
|
%.i: %.cc |
1455 |
|
|
$(CCC) -C -E $(COMPILE_CXXFLAGS) $(_VPATH_SRCS) > $*.i |
1456 |
|
|
|
1457 |
|
|
%.i: %.c |
1458 |
|
|
$(CC) -C -E $(COMPILE_CFLAGS) $(_VPATH_SRCS) > $*.i |
1459 |
|
|
|
1460 |
|
|
%.i: %.mm |
1461 |
|
|
$(CCC) -C -E $(COMPILE_CXXFLAGS) $(COMPILE_CMMFLAGS) $(_VPATH_SRCS) > $*.i |
1462 |
|
|
|
1463 |
|
|
%.res: %.rc |
1464 |
|
|
@echo Creating Resource file: $@ |
1465 |
|
|
ifeq ($(OS_ARCH),OS2) |
1466 |
|
|
$(RC) $(RCFLAGS:-D%=-d %) -i $(subst /,\,$(srcdir)) -r $< $@ |
1467 |
|
|
else |
1468 |
|
|
ifdef GNU_CC |
1469 |
|
|
$(RC) $(RCFLAGS) $(filter-out -U%,$(DEFINES)) $(INCLUDES:-I%=--include-dir %) $(OUTOPTION)$@ $(_VPATH_SRCS) |
1470 |
|
|
else |
1471 |
|
|
$(RC) $(RCFLAGS) -r $(DEFINES) $(INCLUDES) $(OUTOPTION)$@ $(_VPATH_SRCS) |
1472 |
|
|
endif |
1473 |
|
|
endif |
1474 |
|
|
|
1475 |
|
|
# need 3 separate lines for OS/2 |
1476 |
|
|
%: %.pl |
1477 |
|
|
rm -f $@ |
1478 |
|
|
cp $< $@ |
1479 |
|
|
chmod +x $@ |
1480 |
|
|
|
1481 |
|
|
%: %.sh |
1482 |
|
|
rm -f $@; cp $< $@; chmod +x $@ |
1483 |
|
|
|
1484 |
|
|
# Cancel these implicit rules |
1485 |
|
|
# |
1486 |
|
|
%: %,v |
1487 |
|
|
|
1488 |
|
|
%: RCS/%,v |
1489 |
|
|
|
1490 |
|
|
%: s.% |
1491 |
|
|
|
1492 |
|
|
%: SCCS/s.% |
1493 |
|
|
|
1494 |
|
|
############################################################################### |
1495 |
|
|
# Java rules |
1496 |
|
|
############################################################################### |
1497 |
|
|
ifneq (,$(filter OS2 WINNT WINCE,$(OS_ARCH))) |
1498 |
|
|
SEP := ; |
1499 |
|
|
else |
1500 |
|
|
SEP := : |
1501 |
|
|
endif |
1502 |
|
|
|
1503 |
|
|
EMPTY := |
1504 |
|
|
SPACE := $(EMPTY) $(EMPTY) |
1505 |
|
|
|
1506 |
|
|
# Cygwin and MSYS have their own special path form, but javac expects the source |
1507 |
|
|
# and class paths to be in the DOS form (i.e. e:/builds/...). This function |
1508 |
|
|
# does the appropriate conversion on Windows, but is a noop on other systems. |
1509 |
|
|
ifeq (,$(filter-out WINNT WINCE, $(HOST_OS_ARCH))) |
1510 |
|
|
ifdef CYGWIN_WRAPPER |
1511 |
|
|
normalizepath = $(foreach p,$(1),$(shell cygpath -m $(p))) |
1512 |
|
|
else |
1513 |
|
|
# assume MSYS |
1514 |
|
|
# We use 'pwd -W' to get DOS form of the path. However, since the given path |
1515 |
|
|
# could be a file or a non-existent path, we cannot call 'pwd -W' directly |
1516 |
|
|
# on the path. Instead, we extract the root path (i.e. "c:/"), call 'pwd -W' |
1517 |
|
|
# on it, then merge with the rest of the path. |
1518 |
|
|
root-path = $(shell echo $(1) | sed -e "s|\(/[^/]*\)/\?\(.*\)|\1|") |
1519 |
|
|
non-root-path = $(shell echo $(1) | sed -e "s|\(/[^/]*\)/\?\(.*\)|\2|") |
1520 |
|
|
normalizepath = $(foreach p,$(1),$(if $(filter /%,$(1)),$(shell cd $(call root-path,$(1)) && pwd -W)$(call non-root-path,$(1)),$(1))) |
1521 |
|
|
endif |
1522 |
|
|
else |
1523 |
|
|
normalizepath = $(1) |
1524 |
|
|
endif |
1525 |
|
|
|
1526 |
|
|
_srcdir = $(call normalizepath,$(srcdir)) |
1527 |
|
|
ifdef JAVA_SOURCEPATH |
1528 |
|
|
SP = $(subst $(SPACE),$(SEP),$(call normalizepath,$(strip $(JAVA_SOURCEPATH)))) |
1529 |
|
|
_JAVA_SOURCEPATH = ".$(SEP)$(_srcdir)$(SEP)$(SP)" |
1530 |
|
|
else |
1531 |
|
|
_JAVA_SOURCEPATH = ".$(SEP)$(_srcdir)" |
1532 |
|
|
endif |
1533 |
|
|
|
1534 |
|
|
ifdef JAVA_CLASSPATH |
1535 |
|
|
CP = $(subst $(SPACE),$(SEP),$(call normalizepath,$(strip $(JAVA_CLASSPATH)))) |
1536 |
|
|
_JAVA_CLASSPATH = ".$(SEP)$(CP)" |
1537 |
|
|
else |
1538 |
|
|
_JAVA_CLASSPATH = . |
1539 |
|
|
endif |
1540 |
|
|
|
1541 |
|
|
_JAVA_DIR = _java |
1542 |
|
|
$(_JAVA_DIR):: |
1543 |
|
|
$(NSINSTALL) -D $@ |
1544 |
|
|
|
1545 |
siliconforks |
460 |
$(_JAVA_DIR)/%.class: %.java $(GLOBAL_DEPS) $(_JAVA_DIR) |
1546 |
siliconforks |
399 |
$(CYGWIN_WRAPPER) $(JAVAC) $(JAVAC_FLAGS) -classpath $(_JAVA_CLASSPATH) \ |
1547 |
|
|
-sourcepath $(_JAVA_SOURCEPATH) -d $(_JAVA_DIR) $(_VPATH_SRCS) |
1548 |
|
|
|
1549 |
siliconforks |
460 |
$(JAVA_LIBRARY): $(addprefix $(_JAVA_DIR)/,$(JAVA_SRCS:.java=.class)) $(GLOBAL_DEPS) |
1550 |
siliconforks |
399 |
$(JAR) cf $@ -C $(_JAVA_DIR) . |
1551 |
|
|
|
1552 |
|
|
GARBAGE_DIRS += $(_JAVA_DIR) |
1553 |
|
|
|
1554 |
|
|
############################################################################### |
1555 |
|
|
# Update Makefiles |
1556 |
|
|
############################################################################### |
1557 |
|
|
|
1558 |
|
|
# In GNU make 3.80, makefiles must use the /cygdrive syntax, even if we're |
1559 |
|
|
# processing them with AS perl. See bug 232003 |
1560 |
|
|
ifdef AS_PERL |
1561 |
|
|
CYGWIN_TOPSRCDIR = -nowrap -p $(topsrcdir) -wrap |
1562 |
|
|
endif |
1563 |
|
|
|
1564 |
|
|
# Note: Passing depth to make-makefile is optional. |
1565 |
|
|
# It saves the script some work, though. |
1566 |
|
|
Makefile: Makefile.in |
1567 |
|
|
@$(PERL) $(AUTOCONF_TOOLS)/make-makefile -t $(topsrcdir) -d $(DEPTH) $(CYGWIN_TOPSRCDIR) |
1568 |
|
|
|
1569 |
|
|
ifdef SUBMAKEFILES |
1570 |
|
|
# VPATH does not work on some machines in this case, so add $(srcdir) |
1571 |
|
|
$(SUBMAKEFILES): % : $(srcdir)/%.in |
1572 |
|
|
$(PERL) $(AUTOCONF_TOOLS)/make-makefile -t $(topsrcdir) -d $(DEPTH) $(CYGWIN_TOPSRCDIR) $@ |
1573 |
|
|
endif |
1574 |
|
|
|
1575 |
|
|
ifdef AUTOUPDATE_CONFIGURE |
1576 |
|
|
$(topsrcdir)/configure: $(topsrcdir)/configure.in |
1577 |
|
|
(cd $(topsrcdir) && $(AUTOCONF)) && (cd $(DEPTH) && ./config.status --recheck) |
1578 |
|
|
endif |
1579 |
|
|
|
1580 |
|
|
############################################################################### |
1581 |
|
|
# Bunch of things that extend the 'export' rule (in order): |
1582 |
|
|
############################################################################### |
1583 |
|
|
|
1584 |
|
|
################################################################################ |
1585 |
|
|
# Copy each element of EXPORTS to $(PUBLIC) |
1586 |
|
|
|
1587 |
|
|
ifneq ($(EXPORTS)$(XPIDLSRCS)$(SDK_HEADERS)$(SDK_XPIDLSRCS),) |
1588 |
siliconforks |
460 |
$(SDK_PUBLIC) $(PUBLIC): |
1589 |
siliconforks |
399 |
$(NSINSTALL) -D $@ |
1590 |
|
|
endif |
1591 |
|
|
|
1592 |
|
|
ifdef MOZ_JAVAXPCOM |
1593 |
|
|
ifneq ($(XPIDLSRCS)$(SDK_XPIDLSRCS),) |
1594 |
|
|
$(JAVA_DIST_DIR):: |
1595 |
|
|
$(NSINSTALL) -D $@ |
1596 |
|
|
endif |
1597 |
|
|
endif |
1598 |
|
|
|
1599 |
|
|
ifneq ($(XPI_NAME),) |
1600 |
|
|
$(FINAL_TARGET): |
1601 |
|
|
$(NSINSTALL) -D $@ |
1602 |
|
|
|
1603 |
|
|
export:: $(FINAL_TARGET) |
1604 |
|
|
endif |
1605 |
|
|
|
1606 |
|
|
ifndef NO_DIST_INSTALL |
1607 |
|
|
ifneq ($(EXPORTS),) |
1608 |
|
|
export:: $(EXPORTS) $(PUBLIC) |
1609 |
|
|
$(INSTALL) $(IFLAGS1) $^ |
1610 |
|
|
endif |
1611 |
|
|
|
1612 |
|
|
ifneq ($(SDK_HEADERS),) |
1613 |
|
|
export:: $(SDK_HEADERS) $(SDK_PUBLIC) |
1614 |
|
|
$(INSTALL) $(IFLAGS1) $^ |
1615 |
|
|
|
1616 |
|
|
export:: $(SDK_HEADERS) $(PUBLIC) |
1617 |
|
|
$(INSTALL) $(IFLAGS1) $^ |
1618 |
|
|
endif |
1619 |
|
|
endif # NO_DIST_INSTALL |
1620 |
|
|
|
1621 |
|
|
################################################################################ |
1622 |
|
|
# Copy each element of PREF_JS_EXPORTS |
1623 |
|
|
|
1624 |
|
|
ifdef GRE_MODULE |
1625 |
|
|
PREF_DIR = greprefs |
1626 |
|
|
else |
1627 |
|
|
ifneq (,$(XPI_NAME)$(LIBXUL_SDK)) |
1628 |
|
|
PREF_DIR = defaults/preferences |
1629 |
|
|
else |
1630 |
|
|
PREF_DIR = defaults/pref |
1631 |
|
|
endif |
1632 |
|
|
endif |
1633 |
|
|
|
1634 |
|
|
ifneq ($(PREF_JS_EXPORTS),) |
1635 |
|
|
# on win32, pref files need CRLF line endings... see bug 206029 |
1636 |
|
|
ifeq (WINNT,$(OS_ARCH)) |
1637 |
|
|
PREF_PPFLAGS = --line-endings=crlf |
1638 |
|
|
endif |
1639 |
|
|
|
1640 |
|
|
ifndef NO_DIST_INSTALL |
1641 |
|
|
$(FINAL_TARGET)/$(PREF_DIR): |
1642 |
|
|
$(NSINSTALL) -D $@ |
1643 |
|
|
|
1644 |
|
|
libs:: $(FINAL_TARGET)/$(PREF_DIR) $(PREF_JS_EXPORTS) |
1645 |
|
|
$(EXIT_ON_ERROR) \ |
1646 |
|
|
for i in $(PREF_JS_EXPORTS); do \ |
1647 |
|
|
dest=$(FINAL_TARGET)/$(PREF_DIR)/`basename $$i`; \ |
1648 |
|
|
$(RM) -f $$dest; \ |
1649 |
|
|
$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(PREF_PPFLAGS) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \ |
1650 |
|
|
done |
1651 |
|
|
endif |
1652 |
|
|
endif |
1653 |
|
|
|
1654 |
|
|
################################################################################ |
1655 |
|
|
# Copy each element of AUTOCFG_JS_EXPORTS to $(FINAL_TARGET)/defaults/autoconfig |
1656 |
|
|
|
1657 |
|
|
ifneq ($(AUTOCFG_JS_EXPORTS),) |
1658 |
|
|
$(FINAL_TARGET)/defaults/autoconfig:: |
1659 |
|
|
$(NSINSTALL) -D $@ |
1660 |
|
|
|
1661 |
|
|
ifndef NO_DIST_INSTALL |
1662 |
|
|
export:: $(AUTOCFG_JS_EXPORTS) $(FINAL_TARGET)/defaults/autoconfig |
1663 |
|
|
$(INSTALL) $(IFLAGS1) $^ |
1664 |
|
|
endif |
1665 |
|
|
|
1666 |
|
|
endif |
1667 |
|
|
################################################################################ |
1668 |
|
|
# Export the elements of $(XPIDLSRCS) & $(SDK_XPIDLSRCS), |
1669 |
|
|
# generating .h and .xpt files and moving them to the appropriate places. |
1670 |
|
|
|
1671 |
|
|
ifneq ($(XPIDLSRCS)$(SDK_XPIDLSRCS),) |
1672 |
|
|
|
1673 |
|
|
export:: $(patsubst %.idl,$(XPIDL_GEN_DIR)/%.h, $(XPIDLSRCS)) |
1674 |
|
|
|
1675 |
|
|
ifndef XPIDL_MODULE |
1676 |
|
|
XPIDL_MODULE = $(MODULE) |
1677 |
|
|
endif |
1678 |
|
|
|
1679 |
|
|
ifeq ($(XPIDL_MODULE),) # we need $(XPIDL_MODULE) to make $(XPIDL_MODULE).xpt |
1680 |
|
|
export:: FORCE |
1681 |
|
|
@echo |
1682 |
|
|
@echo "*** Error processing XPIDLSRCS:" |
1683 |
|
|
@echo "Please define MODULE or XPIDL_MODULE when defining XPIDLSRCS," |
1684 |
|
|
@echo "so we have a module name to use when creating MODULE.xpt." |
1685 |
|
|
@echo; sleep 2; false |
1686 |
|
|
endif |
1687 |
|
|
|
1688 |
|
|
$(SDK_IDL_DIR) $(IDL_DIR):: |
1689 |
|
|
$(NSINSTALL) -D $@ |
1690 |
|
|
|
1691 |
|
|
# generate .h files from into $(XPIDL_GEN_DIR), then export to $(PUBLIC); |
1692 |
|
|
# warn against overriding existing .h file. |
1693 |
|
|
$(XPIDL_GEN_DIR)/.done: |
1694 |
|
|
@if test ! -d $(XPIDL_GEN_DIR); then echo Creating $(XPIDL_GEN_DIR)/.done; rm -rf $(XPIDL_GEN_DIR); mkdir $(XPIDL_GEN_DIR); fi |
1695 |
|
|
@touch $@ |
1696 |
|
|
|
1697 |
|
|
# don't depend on $(XPIDL_GEN_DIR), because the modification date changes |
1698 |
|
|
# with any addition to the directory, regenerating all .h files -> everything. |
1699 |
|
|
|
1700 |
|
|
$(XPIDL_GEN_DIR)/%.h: %.idl $(XPIDL_COMPILE) $(XPIDL_GEN_DIR)/.done |
1701 |
|
|
$(REPORT_BUILD) |
1702 |
|
|
$(ELOG) $(XPIDL_COMPILE) -m header -w $(XPIDL_FLAGS) -o $(XPIDL_GEN_DIR)/$* $(_VPATH_SRCS) |
1703 |
|
|
@if test -n "$(findstring $*.h, $(EXPORTS) $(SDK_HEADERS))"; \ |
1704 |
|
|
then echo "*** WARNING: file $*.h generated from $*.idl overrides $(srcdir)/$*.h"; else true; fi |
1705 |
|
|
|
1706 |
|
|
ifndef NO_GEN_XPT |
1707 |
|
|
# generate intermediate .xpt files into $(XPIDL_GEN_DIR), then link |
1708 |
|
|
# into $(XPIDL_MODULE).xpt and export it to $(FINAL_TARGET)/components. |
1709 |
|
|
$(XPIDL_GEN_DIR)/%.xpt: %.idl $(XPIDL_COMPILE) $(XPIDL_GEN_DIR)/.done |
1710 |
|
|
$(REPORT_BUILD) |
1711 |
|
|
$(ELOG) $(XPIDL_COMPILE) -m typelib -w $(XPIDL_FLAGS) -e $@ -d $(MDDEPDIR)/$*.pp $(_VPATH_SRCS) |
1712 |
|
|
|
1713 |
|
|
# no need to link together if XPIDLSRCS contains only XPIDL_MODULE |
1714 |
|
|
ifneq ($(XPIDL_MODULE).idl,$(strip $(XPIDLSRCS))) |
1715 |
siliconforks |
460 |
$(XPIDL_GEN_DIR)/$(XPIDL_MODULE).xpt: $(patsubst %.idl,$(XPIDL_GEN_DIR)/%.xpt,$(XPIDLSRCS) $(SDK_XPIDLSRCS)) $(GLOBAL_DEPS) $(XPIDL_LINK) |
1716 |
siliconforks |
399 |
$(XPIDL_LINK) $(XPIDL_GEN_DIR)/$(XPIDL_MODULE).xpt $(patsubst %.idl,$(XPIDL_GEN_DIR)/%.xpt,$(XPIDLSRCS) $(SDK_XPIDLSRCS)) |
1717 |
|
|
endif # XPIDL_MODULE.xpt != XPIDLSRCS |
1718 |
|
|
|
1719 |
|
|
libs:: $(XPIDL_GEN_DIR)/$(XPIDL_MODULE).xpt |
1720 |
|
|
ifndef NO_DIST_INSTALL |
1721 |
|
|
$(INSTALL) $(IFLAGS1) $(XPIDL_GEN_DIR)/$(XPIDL_MODULE).xpt $(FINAL_TARGET)/components |
1722 |
|
|
endif |
1723 |
|
|
|
1724 |
|
|
endif # NO_GEN_XPT |
1725 |
|
|
|
1726 |
|
|
GARBAGE_DIRS += $(XPIDL_GEN_DIR) |
1727 |
|
|
|
1728 |
|
|
endif # XPIDLSRCS || SDK_XPIDLSRCS |
1729 |
|
|
|
1730 |
|
|
ifneq ($(XPIDLSRCS),) |
1731 |
|
|
# export .idl files to $(IDL_DIR) |
1732 |
|
|
ifndef NO_DIST_INSTALL |
1733 |
|
|
export:: $(XPIDLSRCS) $(IDL_DIR) |
1734 |
|
|
$(INSTALL) $(IFLAGS1) $^ |
1735 |
|
|
|
1736 |
|
|
export:: $(patsubst %.idl,$(XPIDL_GEN_DIR)/%.h, $(XPIDLSRCS)) $(PUBLIC) |
1737 |
|
|
$(INSTALL) $(IFLAGS1) $^ |
1738 |
|
|
endif # NO_DIST_INSTALL |
1739 |
|
|
|
1740 |
|
|
endif # XPIDLSRCS |
1741 |
|
|
|
1742 |
|
|
|
1743 |
|
|
|
1744 |
|
|
# |
1745 |
|
|
# General rules for exporting idl files. |
1746 |
|
|
# |
1747 |
|
|
# WORK-AROUND ONLY, for mozilla/tools/module-deps/bootstrap.pl build. |
1748 |
|
|
# Bug to fix idl dependency problems w/o this extra build pass is |
1749 |
|
|
# http://bugzilla.mozilla.org/show_bug.cgi?id=145777 |
1750 |
|
|
# |
1751 |
|
|
$(IDL_DIR):: |
1752 |
|
|
$(NSINSTALL) -D $@ |
1753 |
|
|
|
1754 |
|
|
export-idl:: $(SUBMAKEFILES) $(MAKE_DIRS) |
1755 |
|
|
|
1756 |
|
|
ifneq ($(XPIDLSRCS)$(SDK_XPIDLSRCS),) |
1757 |
|
|
ifndef NO_DIST_INSTALL |
1758 |
|
|
export-idl:: $(XPIDLSRCS) $(SDK_XPIDLSRCS) $(IDL_DIR) |
1759 |
|
|
$(INSTALL) $(IFLAGS1) $^ |
1760 |
|
|
endif |
1761 |
|
|
endif |
1762 |
|
|
+$(LOOP_OVER_PARALLEL_DIRS) |
1763 |
|
|
+$(LOOP_OVER_DIRS) |
1764 |
|
|
+$(LOOP_OVER_TOOL_DIRS) |
1765 |
|
|
|
1766 |
|
|
|
1767 |
|
|
|
1768 |
|
|
|
1769 |
|
|
ifneq ($(SDK_XPIDLSRCS),) |
1770 |
|
|
# export .idl files to $(IDL_DIR) & $(SDK_IDL_DIR) |
1771 |
|
|
ifndef NO_DIST_INSTALL |
1772 |
|
|
export:: $(SDK_XPIDLSRCS) $(IDL_DIR) |
1773 |
|
|
$(INSTALL) $(IFLAGS1) $^ |
1774 |
|
|
|
1775 |
|
|
export:: $(SDK_XPIDLSRCS) $(SDK_IDL_DIR) |
1776 |
|
|
$(INSTALL) $(IFLAGS1) $^ |
1777 |
|
|
|
1778 |
|
|
export:: $(patsubst %.idl,$(XPIDL_GEN_DIR)/%.h, $(SDK_XPIDLSRCS)) $(PUBLIC) |
1779 |
|
|
$(INSTALL) $(IFLAGS1) $^ |
1780 |
|
|
|
1781 |
|
|
export:: $(patsubst %.idl,$(XPIDL_GEN_DIR)/%.h, $(SDK_XPIDLSRCS)) $(SDK_PUBLIC) |
1782 |
|
|
$(INSTALL) $(IFLAGS1) $^ |
1783 |
|
|
endif |
1784 |
|
|
|
1785 |
|
|
endif # SDK_XPIDLSRCS |
1786 |
|
|
|
1787 |
|
|
|
1788 |
|
|
|
1789 |
|
|
ifdef MOZ_JAVAXPCOM |
1790 |
|
|
ifneq ($(XPIDLSRCS)$(SDK_XPIDLSRCS),) |
1791 |
|
|
|
1792 |
|
|
JAVA_XPIDLSRCS = $(XPIDLSRCS) $(SDK_XPIDLSRCS) |
1793 |
|
|
|
1794 |
|
|
# A single IDL file can contain multiple interfaces, which result in multiple |
1795 |
|
|
# Java interface files. So use hidden dependency files. |
1796 |
|
|
JAVADEPFILES = $(addprefix $(JAVA_GEN_DIR)/.,$(JAVA_XPIDLSRCS:.idl=.java.pp)) |
1797 |
|
|
|
1798 |
|
|
$(JAVA_GEN_DIR): |
1799 |
|
|
$(NSINSTALL) -D $@ |
1800 |
|
|
GARBAGE_DIRS += $(JAVA_GEN_DIR) |
1801 |
|
|
|
1802 |
|
|
# generate .java files into _javagen/[package name dirs] |
1803 |
|
|
_JAVA_GEN_DIR = $(JAVA_GEN_DIR)/$(JAVA_IFACES_PKG_NAME) |
1804 |
|
|
$(_JAVA_GEN_DIR): |
1805 |
|
|
$(NSINSTALL) -D $@ |
1806 |
|
|
|
1807 |
|
|
$(JAVA_GEN_DIR)/.%.java.pp: %.idl $(XPIDL_COMPILE) $(_JAVA_GEN_DIR) |
1808 |
|
|
$(REPORT_BUILD) |
1809 |
|
|
$(ELOG) $(XPIDL_COMPILE) -m java -w -I$(srcdir) -I$(IDL_DIR) -o $(_JAVA_GEN_DIR)/$* $(_VPATH_SRCS) |
1810 |
|
|
@touch $@ |
1811 |
|
|
|
1812 |
|
|
# "Install" generated Java interfaces. We segregate them based on the XPI_NAME. |
1813 |
|
|
# If XPI_NAME is not set, install into the "default" directory. |
1814 |
|
|
ifneq ($(XPI_NAME),) |
1815 |
|
|
JAVA_INSTALL_DIR = $(JAVA_DIST_DIR)/$(XPI_NAME) |
1816 |
|
|
else |
1817 |
|
|
JAVA_INSTALL_DIR = $(JAVA_DIST_DIR)/default |
1818 |
|
|
endif |
1819 |
|
|
|
1820 |
|
|
$(JAVA_INSTALL_DIR): |
1821 |
|
|
$(NSINSTALL) -D $@ |
1822 |
|
|
|
1823 |
|
|
export:: $(JAVA_DIST_DIR) $(JAVADEPFILES) $(JAVA_INSTALL_DIR) |
1824 |
|
|
(cd $(JAVA_GEN_DIR) && tar $(TAR_CREATE_FLAGS) - .) | (cd $(JAVA_INSTALL_DIR) && tar -xf -) |
1825 |
|
|
|
1826 |
|
|
endif # XPIDLSRCS || SDK_XPIDLSRCS |
1827 |
|
|
endif # MOZ_JAVAXPCOM |
1828 |
|
|
|
1829 |
|
|
################################################################################ |
1830 |
|
|
# Copy each element of EXTRA_COMPONENTS to $(FINAL_TARGET)/components |
1831 |
|
|
ifdef EXTRA_COMPONENTS |
1832 |
|
|
libs:: $(EXTRA_COMPONENTS) |
1833 |
|
|
ifndef NO_DIST_INSTALL |
1834 |
|
|
$(INSTALL) $(IFLAGS1) $^ $(FINAL_TARGET)/components |
1835 |
|
|
endif |
1836 |
|
|
|
1837 |
|
|
endif |
1838 |
|
|
|
1839 |
|
|
ifdef EXTRA_PP_COMPONENTS |
1840 |
|
|
libs:: $(EXTRA_PP_COMPONENTS) |
1841 |
|
|
ifndef NO_DIST_INSTALL |
1842 |
|
|
$(EXIT_ON_ERROR) \ |
1843 |
|
|
$(NSINSTALL) -D $(FINAL_TARGET)/components; \ |
1844 |
|
|
for i in $^; do \ |
1845 |
|
|
dest=$(FINAL_TARGET)/components/`basename $$i`; \ |
1846 |
|
|
$(RM) -f $$dest; \ |
1847 |
|
|
$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \ |
1848 |
|
|
done |
1849 |
|
|
endif |
1850 |
|
|
|
1851 |
|
|
endif |
1852 |
|
|
|
1853 |
|
|
################################################################################ |
1854 |
|
|
# Copy each element of EXTRA_JS_MODULES to $(FINAL_TARGET)/modules |
1855 |
|
|
ifdef EXTRA_JS_MODULES |
1856 |
|
|
libs:: $(EXTRA_JS_MODULES) |
1857 |
|
|
ifndef NO_DIST_INSTALL |
1858 |
|
|
$(INSTALL) $(IFLAGS1) $^ $(FINAL_TARGET)/modules |
1859 |
|
|
endif |
1860 |
|
|
|
1861 |
|
|
endif |
1862 |
|
|
|
1863 |
|
|
ifdef EXTRA_PP_JS_MODULES |
1864 |
|
|
libs:: $(EXTRA_PP_JS_MODULES) |
1865 |
|
|
ifndef NO_DIST_INSTALL |
1866 |
|
|
$(EXIT_ON_ERROR) \ |
1867 |
|
|
$(NSINSTALL) -D $(FINAL_TARGET)/modules; \ |
1868 |
|
|
for i in $^; do \ |
1869 |
|
|
dest=$(FINAL_TARGET)/modules/`basename $$i`; \ |
1870 |
|
|
$(RM) -f $$dest; \ |
1871 |
|
|
$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \ |
1872 |
|
|
done |
1873 |
|
|
endif |
1874 |
|
|
|
1875 |
|
|
endif |
1876 |
|
|
|
1877 |
|
|
################################################################################ |
1878 |
|
|
# SDK |
1879 |
|
|
|
1880 |
|
|
ifneq (,$(SDK_LIBRARY)) |
1881 |
|
|
$(SDK_LIB_DIR):: |
1882 |
|
|
$(NSINSTALL) -D $@ |
1883 |
|
|
|
1884 |
|
|
ifndef NO_DIST_INSTALL |
1885 |
|
|
libs:: $(SDK_LIBRARY) $(SDK_LIB_DIR) |
1886 |
|
|
$(INSTALL) $(IFLAGS2) $^ |
1887 |
|
|
endif |
1888 |
|
|
|
1889 |
|
|
endif # SDK_LIBRARY |
1890 |
|
|
|
1891 |
|
|
ifneq (,$(SDK_BINARY)) |
1892 |
|
|
$(SDK_BIN_DIR):: |
1893 |
|
|
$(NSINSTALL) -D $@ |
1894 |
|
|
|
1895 |
|
|
ifndef NO_DIST_INSTALL |
1896 |
|
|
libs:: $(SDK_BINARY) $(SDK_BIN_DIR) |
1897 |
|
|
$(INSTALL) $(IFLAGS2) $^ |
1898 |
|
|
endif |
1899 |
|
|
|
1900 |
|
|
endif # SDK_BINARY |
1901 |
|
|
|
1902 |
|
|
################################################################################ |
1903 |
|
|
# CHROME PACKAGING |
1904 |
|
|
|
1905 |
|
|
JAR_MANIFEST := $(srcdir)/jar.mn |
1906 |
|
|
|
1907 |
|
|
chrome:: |
1908 |
|
|
$(MAKE) realchrome |
1909 |
|
|
+$(LOOP_OVER_PARALLEL_DIRS) |
1910 |
|
|
+$(LOOP_OVER_DIRS) |
1911 |
|
|
+$(LOOP_OVER_TOOL_DIRS) |
1912 |
|
|
|
1913 |
|
|
$(FINAL_TARGET)/chrome: |
1914 |
|
|
$(NSINSTALL) -D $@ |
1915 |
|
|
|
1916 |
siliconforks |
460 |
ifneq (,$(wildcard $(JAR_MANIFEST))) |
1917 |
|
|
ifndef NO_DIST_INSTALL |
1918 |
|
|
libs realchrome:: $(CHROME_DEPS) $(FINAL_TARGET)/chrome |
1919 |
|
|
$(PYTHON) $(MOZILLA_DIR)/config/JarMaker.py \ |
1920 |
|
|
$(QUIET) -j $(FINAL_TARGET)/chrome \ |
1921 |
|
|
$(MAKE_JARS_FLAGS) $(XULPPFLAGS) $(DEFINES) $(ACDEFINES) \ |
1922 |
|
|
$(JAR_MANIFEST) |
1923 |
|
|
endif |
1924 |
|
|
endif |
1925 |
siliconforks |
399 |
|
1926 |
|
|
ifneq ($(DIST_FILES),) |
1927 |
siliconforks |
460 |
$(DIST)/bin: |
1928 |
|
|
$(NSINSTALL) -D $@ |
1929 |
|
|
|
1930 |
|
|
libs:: $(DIST_FILES) $(DIST)/bin |
1931 |
siliconforks |
399 |
@$(EXIT_ON_ERROR) \ |
1932 |
|
|
for f in $(DIST_FILES); do \ |
1933 |
|
|
dest=$(FINAL_TARGET)/`basename $$f`; \ |
1934 |
|
|
$(RM) -f $$dest; \ |
1935 |
|
|
$(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py \ |
1936 |
|
|
$(XULAPP_DEFINES) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) \ |
1937 |
|
|
$(srcdir)/$$f > $$dest; \ |
1938 |
|
|
done |
1939 |
|
|
endif |
1940 |
|
|
|
1941 |
|
|
ifneq ($(DIST_CHROME_FILES),) |
1942 |
|
|
libs:: $(DIST_CHROME_FILES) |
1943 |
|
|
@$(EXIT_ON_ERROR) \ |
1944 |
|
|
for f in $(DIST_CHROME_FILES); do \ |
1945 |
|
|
dest=$(FINAL_TARGET)/chrome/`basename $$f`; \ |
1946 |
|
|
$(RM) -f $$dest; \ |
1947 |
|
|
$(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py \ |
1948 |
|
|
$(XULAPP_DEFINES) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) \ |
1949 |
|
|
$(srcdir)/$$f > $$dest; \ |
1950 |
|
|
done |
1951 |
|
|
endif |
1952 |
|
|
|
1953 |
|
|
ifneq ($(XPI_PKGNAME),) |
1954 |
|
|
libs realchrome:: |
1955 |
|
|
ifdef STRIP_XPI |
1956 |
|
|
ifndef MOZ_DEBUG |
1957 |
|
|
@echo "Stripping $(XPI_PKGNAME) package directory..." |
1958 |
|
|
@echo $(FINAL_TARGET) |
1959 |
|
|
@cd $(FINAL_TARGET) && find . ! -type d \ |
1960 |
|
|
! -name "*.js" \ |
1961 |
|
|
! -name "*.xpt" \ |
1962 |
|
|
! -name "*.gif" \ |
1963 |
|
|
! -name "*.jpg" \ |
1964 |
|
|
! -name "*.png" \ |
1965 |
|
|
! -name "*.xpm" \ |
1966 |
|
|
! -name "*.txt" \ |
1967 |
|
|
! -name "*.rdf" \ |
1968 |
|
|
! -name "*.sh" \ |
1969 |
|
|
! -name "*.properties" \ |
1970 |
|
|
! -name "*.dtd" \ |
1971 |
|
|
! -name "*.html" \ |
1972 |
|
|
! -name "*.xul" \ |
1973 |
|
|
! -name "*.css" \ |
1974 |
|
|
! -name "*.xml" \ |
1975 |
|
|
! -name "*.jar" \ |
1976 |
|
|
! -name "*.dat" \ |
1977 |
|
|
! -name "*.tbl" \ |
1978 |
|
|
! -name "*.src" \ |
1979 |
|
|
! -name "*.reg" \ |
1980 |
|
|
$(PLATFORM_EXCLUDE_LIST) \ |
1981 |
|
|
-exec $(STRIP) $(STRIP_FLAGS) {} >/dev/null 2>&1 \; |
1982 |
|
|
endif |
1983 |
|
|
endif |
1984 |
|
|
@echo "Packaging $(XPI_PKGNAME).xpi..." |
1985 |
|
|
cd $(FINAL_TARGET) && $(ZIP) -qr ../$(XPI_PKGNAME).xpi * |
1986 |
|
|
endif |
1987 |
|
|
|
1988 |
|
|
ifdef INSTALL_EXTENSION_ID |
1989 |
|
|
ifndef XPI_NAME |
1990 |
|
|
$(error XPI_NAME must be set for INSTALL_EXTENSION_ID) |
1991 |
|
|
endif |
1992 |
|
|
|
1993 |
|
|
libs:: |
1994 |
|
|
$(RM) -rf "$(DIST)/bin/extensions/$(INSTALL_EXTENSION_ID)" |
1995 |
|
|
$(NSINSTALL) -D "$(DIST)/bin/extensions/$(INSTALL_EXTENSION_ID)" |
1996 |
|
|
cd $(FINAL_TARGET) && tar $(TAR_CREATE_FLAGS) - . | (cd "../../bin/extensions/$(INSTALL_EXTENSION_ID)" && tar -xf -) |
1997 |
|
|
|
1998 |
|
|
endif |
1999 |
|
|
|
2000 |
|
|
ifneq (,$(filter flat symlink,$(MOZ_CHROME_FILE_FORMAT))) |
2001 |
|
|
_JAR_REGCHROME_DISABLE_JAR=1 |
2002 |
|
|
else |
2003 |
|
|
_JAR_REGCHROME_DISABLE_JAR=0 |
2004 |
|
|
endif |
2005 |
|
|
|
2006 |
|
|
REGCHROME = $(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/add-chrome.pl \ |
2007 |
|
|
$(if $(filter gtk2,$(MOZ_WIDGET_TOOLKIT)),-x) \ |
2008 |
|
|
$(if $(CROSS_COMPILE),-o $(OS_ARCH)) $(FINAL_TARGET)/chrome/installed-chrome.txt \ |
2009 |
|
|
$(_JAR_REGCHROME_DISABLE_JAR) |
2010 |
|
|
|
2011 |
|
|
REGCHROME_INSTALL = $(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/add-chrome.pl \ |
2012 |
|
|
$(if $(filter gtk2,$(MOZ_WIDGET_TOOLKIT)),-x) \ |
2013 |
|
|
$(if $(CROSS_COMPILE),-o $(OS_ARCH)) $(DESTDIR)$(mozappdir)/chrome/installed-chrome.txt \ |
2014 |
|
|
$(_JAR_REGCHROME_DISABLE_JAR) |
2015 |
|
|
|
2016 |
|
|
|
2017 |
|
|
############################################################################# |
2018 |
|
|
# Dependency system |
2019 |
|
|
############################################################################# |
2020 |
|
|
ifdef COMPILER_DEPEND |
2021 |
|
|
depend:: |
2022 |
|
|
@echo "$(MAKE): No need to run depend target.\ |
2023 |
|
|
Using compiler-based depend." 1>&2 |
2024 |
|
|
ifeq ($(GNU_CC)$(GNU_CXX),) |
2025 |
|
|
# Non-GNU compilers |
2026 |
|
|
@echo "`echo '$(MAKE):'|sed 's/./ /g'`"\ |
2027 |
|
|
'(Compiler-based depend was turned on by "--enable-md".)' 1>&2 |
2028 |
|
|
else |
2029 |
|
|
# GNU compilers |
2030 |
|
|
@space="`echo '$(MAKE): '|sed 's/./ /g'`";\ |
2031 |
|
|
echo "$$space"'Since you are using a GNU compiler,\ |
2032 |
|
|
it is on by default.' 1>&2; \ |
2033 |
|
|
echo "$$space"'To turn it off, pass --disable-md to configure.' 1>&2 |
2034 |
|
|
endif |
2035 |
|
|
|
2036 |
|
|
else # ! COMPILER_DEPEND |
2037 |
|
|
|
2038 |
|
|
ifndef MOZ_AUTO_DEPS |
2039 |
|
|
|
2040 |
|
|
define MAKE_DEPS_NOAUTO |
2041 |
|
|
$(MKDEPEND) -w1024 -o'.$(OBJ_SUFFIX)' -f- $(DEFINES) $(ACDEFINES) $(INCLUDES) $< 2>/dev/null | sed -e "s|^[^ ]*/||" > $@ |
2042 |
|
|
endef |
2043 |
|
|
|
2044 |
|
|
$(MDDEPDIR)/%.pp: %.c |
2045 |
|
|
$(REPORT_BUILD) |
2046 |
|
|
@$(MAKE_DEPS_NOAUTO) |
2047 |
|
|
|
2048 |
|
|
$(MDDEPDIR)/%.pp: %.cpp |
2049 |
|
|
$(REPORT_BUILD) |
2050 |
|
|
@$(MAKE_DEPS_NOAUTO) |
2051 |
|
|
|
2052 |
|
|
$(MDDEPDIR)/%.pp: %.s |
2053 |
|
|
$(REPORT_BUILD) |
2054 |
|
|
@$(MAKE_DEPS_NOAUTO) |
2055 |
|
|
|
2056 |
|
|
ifneq (,$(OBJS)$(XPIDLSRCS)$(SDK_XPIDLSRCS)$(SIMPLE_PROGRAMS)) |
2057 |
|
|
depend:: $(SUBMAKEFILES) $(MAKE_DIRS) $(MDDEPFILES) |
2058 |
|
|
else |
2059 |
|
|
depend:: $(SUBMAKEFILES) |
2060 |
|
|
endif |
2061 |
|
|
+$(LOOP_OVER_PARALLEL_DIRS) |
2062 |
|
|
+$(LOOP_OVER_DIRS) |
2063 |
|
|
+$(LOOP_OVER_TOOL_DIRS) |
2064 |
|
|
|
2065 |
|
|
dependclean:: $(SUBMAKEFILES) |
2066 |
|
|
rm -f $(MDDEPFILES) |
2067 |
|
|
+$(LOOP_OVER_PARALLEL_DIRS) |
2068 |
|
|
+$(LOOP_OVER_DIRS) |
2069 |
|
|
+$(LOOP_OVER_TOOL_DIRS) |
2070 |
|
|
|
2071 |
|
|
endif # MOZ_AUTO_DEPS |
2072 |
|
|
|
2073 |
|
|
endif # COMPILER_DEPEND |
2074 |
|
|
|
2075 |
|
|
|
2076 |
|
|
############################################################################# |
2077 |
|
|
# MDDEPDIR is the subdirectory where all the dependency files are placed. |
2078 |
|
|
# This uses a make rule (instead of a macro) to support parallel |
2079 |
|
|
# builds (-jN). If this were done in the LOOP_OVER_DIRS macro, two |
2080 |
|
|
# processes could simultaneously try to create the same directory. |
2081 |
|
|
# |
2082 |
|
|
# We use $(CURDIR) in the rule's target to ensure that we don't find |
2083 |
|
|
# a dependency directory in the source tree via VPATH (perhaps from |
2084 |
|
|
# a previous build in the source tree) and thus neglect to create a |
2085 |
|
|
# dependency directory in the object directory, where we really need |
2086 |
|
|
# it. |
2087 |
|
|
|
2088 |
|
|
$(CURDIR)/$(MDDEPDIR): |
2089 |
|
|
@if test ! -d $@; then echo Creating $@; rm -rf $@; mkdir $@; else true; fi |
2090 |
|
|
|
2091 |
|
|
ifneq (,$(filter-out all chrome default export realchrome tools clean clobber clobber_all distclean realclean,$(MAKECMDGOALS))) |
2092 |
|
|
ifneq (,$(OBJS)$(XPIDLSRCS)$(SDK_XPIDLSRCS)$(SIMPLE_PROGRAMS)) |
2093 |
|
|
MDDEPEND_FILES := $(strip $(wildcard $(MDDEPDIR)/*.pp)) |
2094 |
|
|
|
2095 |
|
|
ifneq (,$(MDDEPEND_FILES)) |
2096 |
|
|
ifdef PERL |
2097 |
|
|
# The script mddepend.pl checks the dependencies and writes to stdout |
2098 |
|
|
# one rule to force out-of-date objects. For example, |
2099 |
|
|
# foo.o boo.o: FORCE |
2100 |
|
|
# The script has an advantage over including the *.pp files directly |
2101 |
|
|
# because it handles the case when header files are removed from the build. |
2102 |
|
|
# 'make' would complain that there is no way to build missing headers. |
2103 |
|
|
ifeq (,$(MAKE_RESTARTS)) |
2104 |
|
|
$(MDDEPDIR)/.all.pp: FORCE |
2105 |
|
|
@$(PERL) $(BUILD_TOOLS)/mddepend.pl $@ $(MDDEPEND_FILES) |
2106 |
|
|
endif |
2107 |
|
|
-include $(MDDEPDIR)/.all.pp |
2108 |
|
|
else |
2109 |
|
|
include $(MDDEPEND_FILES) |
2110 |
|
|
endif |
2111 |
|
|
endif |
2112 |
|
|
|
2113 |
|
|
endif |
2114 |
|
|
endif |
2115 |
|
|
############################################################################# |
2116 |
|
|
|
2117 |
|
|
-include $(topsrcdir)/$(MOZ_BUILD_APP)/app-rules.mk |
2118 |
|
|
-include $(MY_RULES) |
2119 |
|
|
|
2120 |
|
|
# |
2121 |
|
|
# This speeds up gmake's processing if these files don't exist. |
2122 |
|
|
# |
2123 |
|
|
$(MY_CONFIG) $(MY_RULES): |
2124 |
|
|
@touch $@ |
2125 |
|
|
|
2126 |
|
|
# |
2127 |
|
|
# Generate Emacs tags in a file named TAGS if ETAGS was set in $(MY_CONFIG) |
2128 |
|
|
# or in $(MY_RULES) |
2129 |
|
|
# |
2130 |
|
|
ifdef ETAGS |
2131 |
|
|
ifneq ($(CSRCS)$(CPPSRCS)$(HEADERS),) |
2132 |
|
|
all:: TAGS |
2133 |
|
|
TAGS:: $(CSRCS) $(CPPSRCS) $(HEADERS) |
2134 |
|
|
$(ETAGS) $(CSRCS) $(CPPSRCS) $(HEADERS) |
2135 |
|
|
endif |
2136 |
|
|
endif |
2137 |
|
|
|
2138 |
|
|
################################################################################ |
2139 |
|
|
# Special gmake rules. |
2140 |
|
|
################################################################################ |
2141 |
|
|
|
2142 |
|
|
|
2143 |
|
|
# |
2144 |
|
|
# Disallow parallel builds with MSVC < 8 |
2145 |
|
|
# |
2146 |
|
|
ifneq (,$(filter 1200 1300 1310,$(_MSC_VER))) |
2147 |
|
|
.NOTPARALLEL: |
2148 |
|
|
endif |
2149 |
|
|
|
2150 |
|
|
# |
2151 |
|
|
# Re-define the list of default suffixes, so gmake won't have to churn through |
2152 |
|
|
# hundreds of built-in suffix rules for stuff we don't need. |
2153 |
|
|
# |
2154 |
|
|
.SUFFIXES: |
2155 |
|
|
|
2156 |
|
|
# |
2157 |
|
|
# Fake targets. Always run these rules, even if a file/directory with that |
2158 |
|
|
# name already exists. |
2159 |
|
|
# |
2160 |
siliconforks |
460 |
.PHONY: all all_platforms alltags boot checkout chrome realchrome clean clobber clobber_all export install libs makefiles realclean run_viewer run_apprunner tools $(DIRS) $(TOOL_DIRS) FORCE |
2161 |
siliconforks |
399 |
|
2162 |
|
|
# Used as a dependency to force targets to rebuild |
2163 |
|
|
FORCE: |
2164 |
|
|
|
2165 |
|
|
# Delete target if error occurs when building target |
2166 |
|
|
.DELETE_ON_ERROR: |
2167 |
|
|
|
2168 |
|
|
# Properly set LIBPATTERNS for the platform |
2169 |
|
|
.LIBPATTERNS = $(if $(IMPORT_LIB_SUFFIX),$(LIB_PREFIX)%.$(IMPORT_LIB_SUFFIX)) $(LIB_PREFIX)%.$(LIB_SUFFIX) $(DLL_PREFIX)%$(DLL_SUFFIX) |
2170 |
|
|
|
2171 |
|
|
tags: TAGS |
2172 |
|
|
|
2173 |
|
|
TAGS: $(SUBMAKEFILES) $(CSRCS) $(CPPSRCS) $(wildcard *.h) |
2174 |
|
|
-etags $(CSRCS) $(CPPSRCS) $(wildcard *.h) |
2175 |
|
|
+$(LOOP_OVER_PARALLEL_DIRS) |
2176 |
|
|
+$(LOOP_OVER_DIRS) |
2177 |
|
|
|
2178 |
|
|
echo-variable-%: |
2179 |
siliconforks |
460 |
@echo "$($*)" |
2180 |
siliconforks |
399 |
|
2181 |
|
|
echo-tiers: |
2182 |
|
|
@echo $(TIERS) |
2183 |
|
|
|
2184 |
|
|
echo-dirs: |
2185 |
|
|
@echo $(DIRS) |
2186 |
|
|
|
2187 |
|
|
echo-module: |
2188 |
|
|
@echo $(MODULE) |
2189 |
|
|
|
2190 |
|
|
echo-requires: |
2191 |
|
|
@echo $(REQUIRES) |
2192 |
|
|
|
2193 |
|
|
echo-requires-recursive:: |
2194 |
|
|
ifdef _REPORT_ALL_DIRS |
2195 |
|
|
@echo $(subst $(topsrcdir)/,,$(srcdir)): $(MODULE): $(REQUIRES) |
2196 |
|
|
else |
2197 |
|
|
@$(if $(REQUIRES),echo $(subst $(topsrcdir)/,,$(srcdir)): $(MODULE): $(REQUIRES)) |
2198 |
|
|
endif |
2199 |
|
|
+$(LOOP_OVER_PARALLEL_DIRS) |
2200 |
|
|
+$(LOOP_OVER_DIRS) |
2201 |
|
|
|
2202 |
|
|
echo-depth-path: |
2203 |
|
|
@$(topsrcdir)/build/unix/print-depth-path.sh |
2204 |
|
|
|
2205 |
|
|
echo-module-name: |
2206 |
|
|
@$(topsrcdir)/build/package/rpm/print-module-name.sh |
2207 |
|
|
|
2208 |
|
|
echo-module-filelist: |
2209 |
|
|
@$(topsrcdir)/build/package/rpm/print-module-filelist.sh |
2210 |
|
|
|
2211 |
|
|
showtargs: |
2212 |
|
|
ifneq (,$(filter $(PROGRAM) $(HOST_PROGRAM) $(SIMPLE_PROGRAMS) $(HOST_LIBRARY) $(LIBRARY) $(SHARED_LIBRARY),$(TARGETS))) |
2213 |
|
|
@echo -------------------------------------------------------------------------------- |
2214 |
|
|
@echo "PROGRAM = $(PROGRAM)" |
2215 |
|
|
@echo "SIMPLE_PROGRAMS = $(SIMPLE_PROGRAMS)" |
2216 |
|
|
@echo "LIBRARY = $(LIBRARY)" |
2217 |
|
|
@echo "SHARED_LIBRARY = $(SHARED_LIBRARY)" |
2218 |
|
|
@echo "SHARED_LIBRARY_LIBS = $(SHARED_LIBRARY_LIBS)" |
2219 |
|
|
@echo "LIBS = $(LIBS)" |
2220 |
|
|
@echo "DEF_FILE = $(DEF_FILE)" |
2221 |
|
|
@echo "IMPORT_LIBRARY = $(IMPORT_LIBRARY)" |
2222 |
|
|
@echo "STATIC_LIBS = $(STATIC_LIBS)" |
2223 |
|
|
@echo "SHARED_LIBS = $(SHARED_LIBS)" |
2224 |
|
|
@echo "EXTRA_DSO_LIBS = $(EXTRA_DSO_LIBS)" |
2225 |
|
|
@echo "EXTRA_DSO_LDOPTS = $(EXTRA_DSO_LDOPTS)" |
2226 |
|
|
@echo "DEPENDENT_LIBS = $(DEPENDENT_LIBS)" |
2227 |
|
|
@echo -------------------------------------------------------------------------------- |
2228 |
|
|
endif |
2229 |
|
|
+$(LOOP_OVER_PARALLEL_DIRS) |
2230 |
|
|
+$(LOOP_OVER_DIRS) |
2231 |
|
|
|
2232 |
|
|
showbuild: |
2233 |
|
|
@echo "MOZ_BUILD_ROOT = $(MOZ_BUILD_ROOT)" |
2234 |
|
|
@echo "MOZ_WIDGET_TOOLKIT = $(MOZ_WIDGET_TOOLKIT)" |
2235 |
|
|
@echo "CC = $(CC)" |
2236 |
|
|
@echo "CXX = $(CXX)" |
2237 |
|
|
@echo "CCC = $(CCC)" |
2238 |
|
|
@echo "CPP = $(CPP)" |
2239 |
|
|
@echo "LD = $(LD)" |
2240 |
|
|
@echo "AR = $(AR)" |
2241 |
|
|
@echo "IMPLIB = $(IMPLIB)" |
2242 |
|
|
@echo "FILTER = $(FILTER)" |
2243 |
|
|
@echo "MKSHLIB = $(MKSHLIB)" |
2244 |
|
|
@echo "MKCSHLIB = $(MKCSHLIB)" |
2245 |
|
|
@echo "RC = $(RC)" |
2246 |
|
|
@echo "CFLAGS = $(CFLAGS)" |
2247 |
|
|
@echo "OS_CFLAGS = $(OS_CFLAGS)" |
2248 |
|
|
@echo "COMPILE_CFLAGS = $(COMPILE_CFLAGS)" |
2249 |
|
|
@echo "CXXFLAGS = $(CXXFLAGS)" |
2250 |
|
|
@echo "OS_CXXFLAGS = $(OS_CXXFLAGS)" |
2251 |
|
|
@echo "COMPILE_CXXFLAGS = $(COMPILE_CXXFLAGS)" |
2252 |
|
|
@echo "COMPILE_CMFLAGS = $(COMPILE_CMFLAGS)" |
2253 |
|
|
@echo "COMPILE_CMMFLAGS = $(COMPILE_CMMFLAGS)" |
2254 |
|
|
@echo "LDFLAGS = $(LDFLAGS)" |
2255 |
|
|
@echo "OS_LDFLAGS = $(OS_LDFLAGS)" |
2256 |
|
|
@echo "DSO_LDOPTS = $(DSO_LDOPTS)" |
2257 |
|
|
@echo "OS_INCLUDES = $(OS_INCLUDES)" |
2258 |
|
|
@echo "OS_LIBS = $(OS_LIBS)" |
2259 |
|
|
@echo "EXTRA_LIBS = $(EXTRA_LIBS)" |
2260 |
|
|
@echo "BIN_FLAGS = $(BIN_FLAGS)" |
2261 |
|
|
@echo "INCLUDES = $(INCLUDES)" |
2262 |
|
|
@echo "DEFINES = $(DEFINES)" |
2263 |
|
|
@echo "ACDEFINES = $(ACDEFINES)" |
2264 |
|
|
@echo "BIN_SUFFIX = $(BIN_SUFFIX)" |
2265 |
|
|
@echo "LIB_SUFFIX = $(LIB_SUFFIX)" |
2266 |
|
|
@echo "DLL_SUFFIX = $(DLL_SUFFIX)" |
2267 |
|
|
@echo "IMPORT_LIB_SUFFIX = $(IMPORT_LIB_SUFFIX)" |
2268 |
|
|
@echo "INSTALL = $(INSTALL)" |
2269 |
|
|
|
2270 |
|
|
showhost: |
2271 |
|
|
@echo "HOST_CC = $(HOST_CC)" |
2272 |
|
|
@echo "HOST_CXX = $(HOST_CXX)" |
2273 |
|
|
@echo "HOST_CFLAGS = $(HOST_CFLAGS)" |
2274 |
|
|
@echo "HOST_LDFLAGS = $(HOST_LDFLAGS)" |
2275 |
|
|
@echo "HOST_LIBS = $(HOST_LIBS)" |
2276 |
|
|
@echo "HOST_EXTRA_LIBS = $(HOST_EXTRA_LIBS)" |
2277 |
|
|
@echo "HOST_EXTRA_DEPS = $(HOST_EXTRA_DEPS)" |
2278 |
|
|
@echo "HOST_PROGRAM = $(HOST_PROGRAM)" |
2279 |
|
|
@echo "HOST_OBJS = $(HOST_OBJS)" |
2280 |
|
|
@echo "HOST_PROGOBJS = $(HOST_PROGOBJS)" |
2281 |
|
|
@echo "HOST_LIBRARY = $(HOST_LIBRARY)" |
2282 |
|
|
|
2283 |
|
|
showbuildmods:: |
2284 |
|
|
@echo "Build Modules = $(BUILD_MODULES)" |
2285 |
|
|
@echo "Module dirs = $(BUILD_MODULE_DIRS)" |
2286 |
|
|
|
2287 |
|
|
zipmakes: |
2288 |
|
|
ifneq (,$(filter $(PROGRAM) $(SIMPLE_PROGRAMS) $(LIBRARY) $(SHARED_LIBRARY),$(TARGETS))) |
2289 |
|
|
zip $(DEPTH)/makefiles $(subst $(topsrcdir),$(MOZ_SRC)/mozilla,$(srcdir)/Makefile.in) |
2290 |
|
|
endif |
2291 |
|
|
+$(LOOP_OVER_PARALLEL_DIRS) |
2292 |
|
|
+$(LOOP_OVER_DIRS) |
2293 |
|
|
|
2294 |
|
|
documentation: |
2295 |
|
|
@cd $(DEPTH) |
2296 |
|
|
$(DOXYGEN) $(DEPTH)/config/doxygen.cfg |
2297 |
|
|
|
2298 |
siliconforks |
460 |
ifdef ENABLE_TESTS |
2299 |
siliconforks |
399 |
check:: $(SUBMAKEFILES) $(MAKE_DIRS) |
2300 |
|
|
+$(LOOP_OVER_PARALLEL_DIRS) |
2301 |
|
|
+$(LOOP_OVER_DIRS) |
2302 |
|
|
+$(LOOP_OVER_TOOL_DIRS) |
2303 |
siliconforks |
460 |
endif |