~ubuntu-branches/ubuntu/quantal/enigmail/quantal-security

« back to all changes in this revision

Viewing changes to config/rules.mk

  • Committer: Package Import Robot
  • Author(s): Chris Coulson
  • Date: 2013-09-13 16:02:15 UTC
  • mfrom: (0.12.16)
  • Revision ID: package-import@ubuntu.com-20130913160215-u3g8nmwa0pdwagwc
Tags: 2:1.5.2-0ubuntu0.12.10.1
* New upstream release v1.5.2 for Thunderbird 24

* Build enigmail using a stripped down Thunderbird 17 build system, as it's
  now quite difficult to build the way we were doing previously, with the
  latest Firefox build system
* Add debian/patches/no_libxpcom.patch - Don't link against libxpcom, as it
  doesn't exist anymore (but exists in the build system)
* Add debian/patches/use_sdk.patch - Use the SDK version of xpt.py and
  friends
* Drop debian/patches/ipc-pipe_rename.diff (not needed anymore)
* Drop debian/patches/makefile_depth.diff (not needed anymore)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# -*- makefile -*-
2
1
# vim:set ts=8 sw=8 sts=8 noet:
3
2
#
4
3
# This Source Code Form is subject to the terms of the Mozilla Public
11
10
endif
12
11
 
13
12
ifndef MOZILLA_DIR
14
 
MOZILLA_DIR = $(topsrcdir)
 
13
MOZILLA_DIR = $(MOZILLA_SRCDIR)
15
14
endif
16
15
 
17
16
ifndef INCLUDED_CONFIG_MK
22
21
include $(topsrcdir)/config/version.mk
23
22
endif
24
23
 
25
 
USE_AUTOTARGETS_MK = 1
26
 
include $(topsrcdir)/config/makefiles/makeutils.mk
27
 
 
28
24
ifdef SDK_XPIDLSRCS
29
25
XPIDLSRCS += $(SDK_XPIDLSRCS)
30
26
endif
58
54
  ELOG :=
59
55
endif # ifndef .PYMAKE
60
56
 
 
57
ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH)))
61
58
_VPATH_SRCS = $(abspath $<)
 
59
else
 
60
_VPATH_SRCS = $<
 
61
endif
62
62
 
63
63
# Add $(DIST)/lib to VPATH so that -lfoo dependencies are followed
64
64
VPATH += $(DIST)/lib
74
74
# Testing frameworks support
75
75
################################################################################
76
76
 
77
 
testxpcobjdir = $(DEPTH)/_tests/xpcshell
 
77
testxpcobjdir = $(MOZDEPTH)/_tests/xpcshell
78
78
 
79
79
ifdef ENABLE_TESTS
80
80
 
81
 
# Add test directories to the regular directories list. TEST_DIRS should
82
 
# arguably have the same status as TOOL_DIRS and other *_DIRS variables. It is
83
 
# coded this way until Makefiles stop using the "ifdef ENABLE_TESTS; DIRS +="
84
 
# convention.
85
 
#
86
 
# The current developer workflow expects tests to be updated when processing
87
 
# the default target. If we ever change this implementation, the behavior
88
 
# should be preserved or the change should be widely communicated. A
89
 
# consequence of not processing test dir targets during the default target is
90
 
# that changes to tests may not be updated and code could assume to pass
91
 
# locally against non-current test code.
92
 
DIRS += $(TEST_DIRS)
93
 
 
94
 
ifndef INCLUDED_TESTS_XPCSHELL_MK #{
95
 
  include $(topsrcdir)/config/makefiles/xpcshell.mk
96
 
endif #}
97
 
 
98
 
ifndef INCLUDED_TESTS_MOCHITEST_MK #{
99
 
  include $(topsrcdir)/config/makefiles/mochitest.mk
100
 
endif #}
 
81
ifdef XPCSHELL_TESTS
 
82
ifndef relativesrcdir
 
83
$(error Must define relativesrcdir when defining XPCSHELL_TESTS.)
 
84
endif
 
85
 
 
86
define _INSTALL_TESTS
 
87
$(DIR_INSTALL) $(wildcard $(srcdir)/$(dir)/*) $(testxpcobjdir)/$(relativesrcdir)/$(dir)
 
88
 
 
89
endef # do not remove the blank line!
 
90
 
 
91
SOLO_FILE ?= $(error Specify a test filename in SOLO_FILE when using check-interactive or check-one)
 
92
 
 
93
libs::
 
94
        $(foreach dir,$(XPCSHELL_TESTS),$(_INSTALL_TESTS))
 
95
        $(PYTHON) $(MOZILLA_DIR)/build/xpccheck.py \
 
96
          $(topsrcdir) \
 
97
          $(topsrcdir)/$(MOZ_BUILD_APP)/test/xpcshell.ini \
 
98
          $(addprefix $(topsrcdir)/$(relativesrcdir)/,$(XPCSHELL_TESTS))
 
99
 
 
100
testxpcsrcdir = $(MOZILLA_SRCDIR)/testing/xpcshell
 
101
 
 
102
# Execute all tests in the $(XPCSHELL_TESTS) directories.
 
103
# See also $(MOZILLA_DIR)/testing/testsuite-targets.mk 'xpcshell-tests' target for global execution.
 
104
xpcshell-tests:
 
105
        $(PYTHON) -u $(MOZILLA_DIR)/config/pythonpath.py \
 
106
          -I$(MOZILLA_DIR)/build -I$(MOZDEPTH)/_tests/mozbase/mozinfo \
 
107
          $(testxpcsrcdir)/runxpcshelltests.py \
 
108
          --symbols-path=$(DIST)/crashreporter-symbols \
 
109
          --build-info-json=$(MOZDEPTH)/mozinfo.json \
 
110
          --tests-root-dir=$(testxpcobjdir) \
 
111
          --xunit-file=$(testxpcobjdir)/$(relativesrcdir)/results.xml \
 
112
          --xunit-suite-name=xpcshell \
 
113
          $(EXTRA_TEST_ARGS) \
 
114
          $(LIBXUL_DIST)/bin/xpcshell \
 
115
          $(foreach dir,$(XPCSHELL_TESTS),$(testxpcobjdir)/$(relativesrcdir)/$(dir))
 
116
 
 
117
# Execute a single test, specified in $(SOLO_FILE), but don't automatically
 
118
# start the test. Instead, present the xpcshell prompt so the user can
 
119
# attach a debugger and then start the test.
 
120
check-interactive:
 
121
        $(PYTHON) -u $(MOZILLA_DIR)/config/pythonpath.py \
 
122
          -I$(MOZILLA_DIR)/build -I$(MOZDEPTH)/_tests/mozbase/mozinfo \
 
123
          $(testxpcsrcdir)/runxpcshelltests.py \
 
124
          --symbols-path=$(DIST)/crashreporter-symbols \
 
125
          --build-info-json=$(MOZDEPTH)/mozinfo.json \
 
126
          --test-path=$(SOLO_FILE) \
 
127
          --profile-name=$(MOZ_APP_NAME) \
 
128
          --interactive \
 
129
          $(LIBXUL_DIST)/bin/xpcshell \
 
130
          $(foreach dir,$(XPCSHELL_TESTS),$(testxpcobjdir)/$(relativesrcdir)/$(dir))
 
131
 
 
132
# Execute a single test, specified in $(SOLO_FILE)
 
133
check-one:
 
134
        $(PYTHON) -u $(MOZILLA_DIR)/config/pythonpath.py \
 
135
          -I$(MOZILLA_DIR)/build -I$(MOZDEPTH)/_tests/mozbase/mozinfo \
 
136
          $(testxpcsrcdir)/runxpcshelltests.py \
 
137
          --symbols-path=$(DIST)/crashreporter-symbols \
 
138
          --build-info-json=$(MOZDEPTH)/mozinfo.json \
 
139
          --test-path=$(SOLO_FILE) \
 
140
          --profile-name=$(MOZ_APP_NAME) \
 
141
          --verbose \
 
142
          $(EXTRA_TEST_ARGS) \
 
143
          $(LIBXUL_DIST)/bin/xpcshell \
 
144
          $(foreach dir,$(XPCSHELL_TESTS),$(testxpcobjdir)/$(relativesrcdir)/$(dir))
 
145
 
 
146
endif # XPCSHELL_TESTS
101
147
 
102
148
ifdef CPP_UNIT_TESTS
103
149
 
107
153
CPPSRCS += $(CPP_UNIT_TESTS)
108
154
SIMPLE_PROGRAMS += $(CPP_UNIT_TESTS:.cpp=$(BIN_SUFFIX))
109
155
INCLUDES += -I$(DIST)/include/testing
110
 
LIBS += $(XPCOM_GLUE_LDOPTS) $(NSPR_LIBS) $(MOZ_JS_LIBS) $(if $(JS_SHARED_LIBRARY),,$(MOZ_ZLIB_LIBS))
 
156
LIBS += $(XPCOM_GLUE_LDOPTS) $(NSPR_LIBS)
111
157
 
112
158
# ...and run them the usual way
113
159
check::
118
164
 
119
165
endif # CPP_UNIT_TESTS
120
166
 
121
 
.PHONY: check
 
167
.PHONY: check xpcshell-tests check-interactive check-one
122
168
 
123
169
endif # ENABLE_TESTS
124
170
 
156
202
MKSHLIB                 = $(MKCSHLIB)
157
203
endif
158
204
 
159
 
ifneq (,$(filter OS2 WINNT,$(OS_ARCH)))
 
205
ifneq (,$(filter OS2 WINNT WINCE,$(OS_ARCH)))
160
206
IMPORT_LIBRARY          := $(LIB_PREFIX)$(SHARED_LIBRARY_NAME).$(IMPORT_LIB_SUFFIX)
161
207
endif
162
208
 
196
242
endif
197
243
endif
198
244
 
199
 
ifdef JAVA_LIBRARY_NAME
200
 
JAVA_LIBRARY := $(JAVA_LIBRARY_NAME).jar
201
 
endif
202
 
 
203
 
ifeq ($(OS_ARCH),WINNT)
 
245
ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH)))
204
246
ifndef GNU_CC
205
247
 
206
248
#
242
284
OS_LDFLAGS += -MAP:$(MAPFILE)
243
285
endif
244
286
 
245
 
else #!GNU_CC
246
 
 
247
 
ifdef DEFFILE
248
 
OS_LDFLAGS += $(call normalizepath,$(DEFFILE))
249
 
EXTRA_DEPS += $(DEFFILE)
250
 
endif
251
 
 
252
287
endif # !GNU_CC
253
288
 
254
289
endif # WINNT
255
290
 
256
291
ifeq ($(SOLARIS_SUNPRO_CXX),1)
257
292
ifeq (86,$(findstring 86,$(OS_TEST)))
258
 
OS_LDFLAGS += -M $(topsrcdir)/config/solaris_ia32.map
 
293
OS_LDFLAGS += -M $(MOZILLA_DIR)/config/solaris_ia32.map
259
294
endif # x86
260
295
endif # Solaris Sun Studio C++
261
296
 
262
 
ifeq ($(HOST_OS_ARCH),WINNT)
 
297
ifeq (,$(filter-out WINNT WINCE,$(HOST_OS_ARCH)))
263
298
HOST_PDBFILE=$(basename $(@F)).pdb
264
299
endif
265
300
 
266
 
# Don't build SIMPLE_PROGRAMS during the MOZ_PROFILE_GENERATE pass
267
 
ifdef MOZ_PROFILE_GENERATE
268
 
SIMPLE_PROGRAMS :=
269
 
endif
270
 
 
271
301
ifndef TARGETS
272
 
TARGETS                 = $(LIBRARY) $(SHARED_LIBRARY) $(PROGRAM) $(SIMPLE_PROGRAMS) $(HOST_LIBRARY) $(HOST_PROGRAM) $(HOST_SIMPLE_PROGRAMS) $(JAVA_LIBRARY)
 
302
TARGETS                 = $(LIBRARY) $(SHARED_LIBRARY) $(PROGRAM) $(SIMPLE_PROGRAMS) $(HOST_LIBRARY) $(HOST_PROGRAM) $(HOST_SIMPLE_PROGRAMS)
273
303
endif
274
304
 
275
 
COBJS = $(CSRCS:.c=.$(OBJ_SUFFIX))
276
 
SOBJS = $(SSRCS:.S=.$(OBJ_SUFFIX))
277
 
CCOBJS = $(patsubst %.cc,%.$(OBJ_SUFFIX),$(filter %.cc,$(CPPSRCS)))
278
 
CPPOBJS = $(patsubst %.cpp,%.$(OBJ_SUFFIX),$(filter %.cpp,$(CPPSRCS)))
279
 
CMOBJS = $(CMSRCS:.m=.$(OBJ_SUFFIX))
280
 
CMMOBJS = $(CMMSRCS:.mm=.$(OBJ_SUFFIX))
281
 
ASOBJS = $(ASFILES:.$(ASM_SUFFIX)=.$(OBJ_SUFFIX))
282
305
ifndef OBJS
283
 
_OBJS = $(COBJS) $(SOBJS) $(CCOBJS) $(CPPOBJS) $(CMOBJS) $(CMMOBJS) $(ASOBJS)
284
 
OBJS = $(strip $(_OBJS))
 
306
_OBJS                   = \
 
307
        $(JRI_STUB_CFILES) \
 
308
        $(addsuffix .$(OBJ_SUFFIX), $(JMC_GEN)) \
 
309
        $(CSRCS:.c=.$(OBJ_SUFFIX)) \
 
310
        $(SSRCS:.S=.$(OBJ_SUFFIX)) \
 
311
        $(patsubst %.cc,%.$(OBJ_SUFFIX),$(CPPSRCS:.cpp=.$(OBJ_SUFFIX))) \
 
312
        $(CMSRCS:.m=.$(OBJ_SUFFIX)) \
 
313
        $(CMMSRCS:.mm=.$(OBJ_SUFFIX)) \
 
314
        $(ASFILES:.$(ASM_SUFFIX)=.$(OBJ_SUFFIX))
 
315
OBJS    = $(strip $(_OBJS))
285
316
endif
286
317
 
287
 
HOST_COBJS = $(addprefix host_,$(HOST_CSRCS:.c=.$(OBJ_SUFFIX)))
288
 
HOST_CCOBJS = $(addprefix host_,$(patsubst %.cc,%.$(OBJ_SUFFIX),$(filter %.cc,$(HOST_CPPSRCS))))
289
 
HOST_CPPOBJS = $(addprefix host_,$(patsubst %.cpp,%.$(OBJ_SUFFIX),$(filter %.cpp,$(HOST_CPPSRCS))))
290
 
HOST_CMOBJS = $(addprefix host_,$(HOST_CMSRCS:.m=.$(OBJ_SUFFIX)))
291
 
HOST_CMMOBJS = $(addprefix host_,$(HOST_CMMSRCS:.mm=.$(OBJ_SUFFIX)))
292
318
ifndef HOST_OBJS
293
 
_HOST_OBJS = $(HOST_COBJS) $(HOST_CCOBJS) $(HOST_CPPOBJS) $(HOST_CMOBJS) $(HOST_CMMOBJS)
 
319
_HOST_OBJS              = \
 
320
        $(addprefix host_,$(HOST_CSRCS:.c=.$(OBJ_SUFFIX))) \
 
321
        $(addprefix host_,$(patsubst %.cc,%.$(OBJ_SUFFIX),$(HOST_CPPSRCS:.cpp=.$(OBJ_SUFFIX)))) \
 
322
        $(addprefix host_,$(HOST_CMSRCS:.m=.$(OBJ_SUFFIX))) \
 
323
        $(addprefix host_,$(HOST_CMMSRCS:.mm=.$(OBJ_SUFFIX)))
294
324
HOST_OBJS = $(strip $(_HOST_OBJS))
295
325
endif
296
326
 
 
327
LIBOBJS                 := $(addprefix \", $(OBJS))
 
328
LIBOBJS                 := $(addsuffix \", $(LIBOBJS))
 
329
 
297
330
ifndef MOZ_AUTO_DEPS
298
331
ifneq (,$(OBJS)$(XPIDLSRCS)$(SIMPLE_PROGRAMS))
299
 
MDDEPFILES              = $(addprefix $(MDDEPDIR)/,$(OBJS:=.pp))
 
332
MDDEPFILES              = $(addprefix $(MDDEPDIR)/,$(OBJS:.$(OBJ_SUFFIX)=.pp))
 
333
ifndef NO_GEN_XPT
300
334
MDDEPFILES              += $(addprefix $(MDDEPDIR)/,$(XPIDLSRCS:.idl=.h.pp) $(XPIDLSRCS:.idl=.xpt.pp))
301
335
endif
302
336
endif
 
337
endif
303
338
 
304
339
ALL_TRASH = \
305
340
        $(GARBAGE) $(TARGETS) $(OBJS) $(PROGOBJS) LOGS TAGS a.out \
306
341
        $(filter-out $(ASFILES),$(OBJS:.$(OBJ_SUFFIX)=.s)) $(OBJS:.$(OBJ_SUFFIX)=.ii) \
307
 
        $(OBJS:.$(OBJ_SUFFIX)=.i) $(OBJS:.$(OBJ_SUFFIX)=.i_o) \
 
342
        $(OBJS:.$(OBJ_SUFFIX)=.i) \
308
343
        $(HOST_PROGOBJS) $(HOST_OBJS) $(IMPORT_LIBRARY) $(DEF_FILE)\
309
344
        $(EXE_DEF_FILE) so_locations _gen _stubs $(wildcard *.res) $(wildcard *.RES) \
310
345
        $(wildcard *.pdb) $(CODFILE) $(MAPFILE) $(IMPORT_LIBRARY) \
316
351
ALL_TRASH_DIRS = \
317
352
        $(GARBAGE_DIRS) /no-such-file
318
353
 
319
 
ifdef QTDIR
320
 
GARBAGE                 += $(MOCSRCS)
321
 
GARBAGE                 += $(RCCSRCS)
322
 
endif
323
 
 
324
354
ifdef SIMPLE_PROGRAMS
325
355
GARBAGE                 += $(SIMPLE_PROGRAMS:%=%.$(OBJ_SUFFIX))
326
356
endif
337
367
GARBAGE_DIRS += SunWS_cache
338
368
endif
339
369
 
 
370
ifeq ($(OS_ARCH),OpenVMS)
 
371
GARBAGE                 += $(wildcard *.*_defines)
 
372
ifdef SHARED_LIBRARY
 
373
VMS_SYMVEC_FILE         = $(SHARED_LIBRARY:$(DLL_SUFFIX)=_symvec.opt)
 
374
ifdef MOZ_DEBUG
 
375
VMS_SYMVEC_FILE_MODULE  = $(MOZILLA_SRCDIR)/build/unix/vms/$(notdir $(SHARED_LIBRARY:$(DLL_SUFFIX)=_dbg_symvec.opt))
 
376
else
 
377
VMS_SYMVEC_FILE_MODULE  = $(MOZILLA_SRCDIR)/build/unix/vms/$(notdir $(SHARED_LIBRARY:$(DLL_SUFFIX)=_symvec.opt))
 
378
endif
 
379
VMS_SYMVEC_FILE_COMP    = $(MOZILLA_SRCDIR)/build/unix/vms/component_symvec.opt
 
380
GARBAGE                 += $(VMS_SYMVEC_FILE)
 
381
ifdef IS_COMPONENT
 
382
DSO_LDOPTS := $(filter-out -auto_symvec,$(DSO_LDOPTS)) $(VMS_SYMVEC_FILE)
 
383
endif
 
384
endif
 
385
endif
 
386
 
340
387
XPIDL_GEN_DIR           = _xpidlgen
341
388
 
342
389
ifdef MOZ_UPDATE_XTERM
348
395
 
349
396
define SUBMAKE # $(call SUBMAKE,target,directory)
350
397
+@$(UPDATE_TITLE)
351
 
+$(MAKE) $(if $(2),-C $(2)) $(1)
 
398
+@$(MAKE) $(if $(2),-C $(2)) $(1)
352
399
 
353
400
endef # The extra line is important here! don't delete it
354
401
 
373
420
  $(foreach dir,$(TOOL_DIRS),$(call SUBMAKE,$@,$(dir)))
374
421
endif
375
422
 
 
423
ifdef PARALLEL_DIRS
 
424
# create a bunch of fake targets for order-only processing
 
425
PARALLEL_DIRS_export = $(addsuffix _export,$(PARALLEL_DIRS))
 
426
PARALLEL_DIRS_libs = $(addsuffix _libs,$(PARALLEL_DIRS))
 
427
PARALLEL_DIRS_tools = $(addsuffix _tools,$(PARALLEL_DIRS))
 
428
 
 
429
.PHONY: $(PARALLEL_DIRS_export) $(PARALLEL_DIRS_libs) $(PARALLEL_DIRS_tools)
 
430
endif
 
431
 
376
432
#
377
433
# Now we can differentiate between objects used to build a library, and
378
434
# objects used to build an executable in the same directory.
389
445
# A Makefile that needs $(MDDEPDIR) created but doesn't set any of these
390
446
# variables we know to check can just set NEED_MDDEPDIR explicitly.
391
447
ifneq (,$(OBJS)$(XPIDLSRCS)$(SIMPLE_PROGRAMS)$(NEED_MDDEPDIR))
392
 
MAKE_DIRS       += $(CURDIR)/$(MDDEPDIR)
393
 
GARBAGE_DIRS    += $(CURDIR)/$(MDDEPDIR)
 
448
MAKE_DIRS       += $(CURDIR)/$(MDDEPDIR)
 
449
GARBAGE_DIRS    += $(CURDIR)/$(MDDEPDIR)
394
450
endif
395
451
 
396
452
#
501
557
endif # AIX
502
558
 
503
559
#
 
560
# OSF1: add -B symbolic flag for components
 
561
#
 
562
ifeq ($(OS_ARCH),OSF1)
 
563
ifdef IS_COMPONENT
 
564
ifeq ($(GNU_CC)$(GNU_CXX),)
 
565
EXTRA_DSO_LDOPTS += -B symbolic
 
566
endif
 
567
endif
 
568
endif
 
569
 
 
570
#
504
571
# Linux: add -Bsymbolic flag for components
505
572
#
506
573
ifeq ($(OS_ARCH),Linux)
541
608
else
542
609
OUTOPTION = -o # eol
543
610
endif # WINNT && !GNU_CC
 
611
ifneq (,$(filter WINCE,$(OS_ARCH)))
 
612
OUTOPTION = -Fo# eol
 
613
endif
544
614
 
545
 
ifneq (,$(filter ml%,$(AS)))
546
 
ASOUTOPTION = -Fo# eol
 
615
ifeq ($(OS_ARCH), WINCE)
 
616
OUTOPTION = -Fo# eol
 
617
HOST_OUTOPTION = -Fo# eol
547
618
else
548
 
ASOUTOPTION = -o # eol
549
 
endif
550
619
 
551
620
ifeq (,$(CROSS_COMPILE))
552
621
HOST_OUTOPTION = $(OUTOPTION)
553
622
else
554
623
HOST_OUTOPTION = -o # eol
555
624
endif
 
625
 
 
626
endif
556
627
################################################################################
557
628
 
558
629
# SUBMAKEFILES: List of Makefiles for next level down.
597
668
 
598
669
MAKE_TIER_SUBMAKEFILES = +$(if $(tier_$*_dirs),$(MAKE) $(addsuffix /Makefile,$(tier_$*_dirs)))
599
670
 
 
671
export_tier_%:
 
672
        @$(ECHO) "$@"
 
673
        @$(MAKE_TIER_SUBMAKEFILES)
 
674
        $(foreach dir,$(tier_$*_dirs),$(call SUBMAKE,export,$(dir)))
 
675
 
 
676
libs_tier_%:
 
677
        @$(ECHO) "$@"
 
678
        @$(MAKE_TIER_SUBMAKEFILES)
 
679
        $(foreach dir,$(tier_$*_dirs),$(call SUBMAKE,libs,$(dir)))
 
680
 
 
681
tools_tier_%:
 
682
        @$(ECHO) "$@"
 
683
        @$(MAKE_TIER_SUBMAKEFILES)
 
684
        $(foreach dir,$(tier_$*_dirs),$(call SUBMAKE,tools,$(dir)))
 
685
 
600
686
$(foreach tier,$(TIERS),tier_$(tier))::
601
687
        @$(ECHO) "$@: $($@_staticdirs) $($@_dirs)"
602
688
        $(foreach dir,$($@_staticdirs),$(call SUBMAKE,,$(dir)))
620
706
        $(LOOP_OVER_TOOL_DIRS)
621
707
endif
622
708
 
623
 
include $(topsrcdir)/config/makefiles/target_export.mk
624
 
include $(topsrcdir)/config/makefiles/target_tools.mk
 
709
ifdef PARALLEL_DIRS
 
710
export:: $(PARALLEL_DIRS_export)
 
711
 
 
712
$(PARALLEL_DIRS_export): %_export: %/Makefile
 
713
        +@$(call SUBMAKE,export,$*)
 
714
endif
 
715
 
 
716
export:: $(SUBMAKEFILES) $(MAKE_DIRS) $(if $(XPIDLSRCS),$(IDL_DIR))
 
717
        $(LOOP_OVER_DIRS)
 
718
        $(LOOP_OVER_TOOL_DIRS)
 
719
 
 
720
ifdef PARALLEL_DIRS
 
721
tools:: $(PARALLEL_DIRS_tools)
 
722
 
 
723
$(PARALLEL_DIRS_tools): %_tools: %/Makefile
 
724
        +@$(call SUBMAKE,tools,$*)
 
725
endif
 
726
 
 
727
tools:: $(SUBMAKEFILES) $(MAKE_DIRS)
 
728
        $(LOOP_OVER_DIRS)
 
729
ifneq (,$(strip $(TOOL_DIRS)))
 
730
        $(foreach dir,$(TOOL_DIRS),$(call SUBMAKE,libs,$(dir)))
 
731
endif
 
732
 
 
733
#
 
734
# Rule to create list of libraries for final link
 
735
#
 
736
export::
 
737
ifdef LIBRARY_NAME
 
738
ifdef EXPORT_LIBRARY
 
739
ifndef IS_COMPONENT
 
740
        $(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_LINK_LIBS) $(STATIC_LIBRARY_NAME)
 
741
endif # !IS_COMPONENT
 
742
endif # EXPORT_LIBRARY
 
743
endif # LIBRARY_NAME
625
744
 
626
745
ifneq (,$(filter-out %.$(LIB_SUFFIX),$(SHARED_LIBRARY_LIBS)))
627
746
$(error SHARED_LIBRARY_LIBS must contain .$(LIB_SUFFIX) files only)
630
749
HOST_LIBS_DEPS = $(filter %.$(LIB_SUFFIX),$(HOST_LIBS))
631
750
 
632
751
# Dependencies which, if modified, should cause everything to rebuild
633
 
GLOBAL_DEPS += Makefile $(DEPTH)/config/autoconf.mk $(topsrcdir)/config/config.mk
634
 
ifndef NO_MAKEFILE_RULE
635
 
GLOBAL_DEPS += Makefile.in
636
 
endif
637
 
 
638
 
##############################################
639
 
include $(topsrcdir)/config/makefiles/target_libs.mk
640
 
 
641
 
##############################################
 
752
GLOBAL_DEPS += Makefile Makefile.in $(DEPTH)/config/autoconf.mk $(topsrcdir)/config/config.mk
 
753
 
 
754
##############################################
 
755
ifdef PARALLEL_DIRS
 
756
libs:: $(PARALLEL_DIRS_libs)
 
757
 
 
758
$(PARALLEL_DIRS_libs): %_libs: %/Makefile
 
759
        +@$(call SUBMAKE,libs,$*)
 
760
endif
 
761
 
 
762
ifdef EXPORT_LIBRARY
 
763
ifeq ($(EXPORT_LIBRARY),1)
 
764
ifdef IS_COMPONENT
 
765
EXPORT_LIBRARY = $(MOZDEPTH)/staticlib/components
 
766
else
 
767
EXPORT_LIBRARY = $(MOZDEPTH)/staticlib
 
768
endif
 
769
else
 
770
# If EXPORT_LIBRARY has a value, we'll be installing there. We also need to cleanup there
 
771
GARBAGE += $(foreach lib,$(LIBRARY),$(EXPORT_LIBRARY)/$(lib))
 
772
endif
 
773
endif # EXPORT_LIBRARY
 
774
 
 
775
libs:: $(SUBMAKEFILES) $(MAKE_DIRS) $(HOST_LIBRARY) $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(HOST_PROGRAM) $(PROGRAM) $(HOST_SIMPLE_PROGRAMS) $(SIMPLE_PROGRAMS)
 
776
ifndef NO_DIST_INSTALL
 
777
ifdef LIBRARY
 
778
ifdef EXPORT_LIBRARY # Stage libs that will be linked into a static build
 
779
        $(call install_cmd,$(IFLAGS1) $(LIBRARY) $(EXPORT_LIBRARY))
 
780
endif # EXPORT_LIBRARY
 
781
ifdef DIST_INSTALL
 
782
ifdef IS_COMPONENT
 
783
        $(error Shipping static component libs makes no sense.)
 
784
else
 
785
        $(call install_cmd,$(IFLAGS1) $(LIBRARY) $(DIST)/lib)
 
786
endif
 
787
endif # DIST_INSTALL
 
788
endif # LIBRARY
 
789
ifdef SHARED_LIBRARY
 
790
ifdef IS_COMPONENT
 
791
        $(call install_cmd,$(IFLAGS2) $(SHARED_LIBRARY) $(FINAL_TARGET)/components)
 
792
        $(ELF_DYNSTR_GC) $(FINAL_TARGET)/components/$(SHARED_LIBRARY)
 
793
ifndef NO_COMPONENTS_MANIFEST
 
794
        @$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest "manifest components/components.manifest"
 
795
        @$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/components/components.manifest "binary-component $(SHARED_LIBRARY)"
 
796
endif
 
797
ifdef BEOS_ADDON_WORKAROUND
 
798
        ( cd $(FINAL_TARGET)/components && $(CC) -nostart -o $(SHARED_LIBRARY).stub $(SHARED_LIBRARY) )
 
799
endif
 
800
else # ! IS_COMPONENT
 
801
ifneq (,$(filter OS2 WINNT WINCE,$(OS_ARCH)))
 
802
ifndef NO_INSTALL_IMPORT_LIBRARY
 
803
        $(call install_cmd,$(IFLAGS2) $(IMPORT_LIBRARY) $(DIST)/lib)
 
804
endif
 
805
else
 
806
        $(call install_cmd,$(IFLAGS2) $(SHARED_LIBRARY) $(DIST)/lib)
 
807
endif
 
808
        $(call install_cmd,$(IFLAGS2) $(SHARED_LIBRARY) $(FINAL_TARGET))
 
809
ifdef BEOS_ADDON_WORKAROUND
 
810
        ( cd $(FINAL_TARGET) && $(CC) -nostart -o $(SHARED_LIBRARY).stub $(SHARED_LIBRARY) )
 
811
endif
 
812
endif # IS_COMPONENT
 
813
endif # SHARED_LIBRARY
 
814
ifdef PROGRAM
 
815
        $(call install_cmd,$(IFLAGS2) $(PROGRAM) $(FINAL_TARGET))
 
816
endif
 
817
ifdef SIMPLE_PROGRAMS
 
818
        $(call install_cmd,$(IFLAGS2) $(SIMPLE_PROGRAMS) $(FINAL_TARGET))
 
819
endif
 
820
ifdef HOST_PROGRAM
 
821
        $(call install_cmd,$(IFLAGS2) $(HOST_PROGRAM) $(DIST)/host/bin)
 
822
endif
 
823
ifdef HOST_SIMPLE_PROGRAMS
 
824
        $(call install_cmd,$(IFLAGS2) $(HOST_SIMPLE_PROGRAMS) $(DIST)/host/bin)
 
825
endif
 
826
ifdef HOST_LIBRARY
 
827
        $(call install_cmd,$(IFLAGS1) $(HOST_LIBRARY) $(DIST)/host/lib)
 
828
endif
 
829
endif # !NO_DIST_INSTALL
 
830
        $(LOOP_OVER_DIRS)
 
831
 
 
832
##############################################
 
833
 
642
834
ifndef NO_PROFILE_GUIDED_OPTIMIZE
643
835
ifdef MOZ_PROFILE_USE
644
836
ifeq ($(OS_ARCH)_$(GNU_CC), WINNT_)
660
852
ifneq (,$(SHARED_LIBRARY)$(PROGRAM))
661
853
export::
662
854
ifdef PROGRAM
663
 
        $(PYTHON) $(topsrcdir)/build/win32/pgomerge.py \
 
855
        $(PYTHON) $(MOZILLA_SRCDIR)/build/win32/pgomerge.py \
664
856
          $(PROGRAM:$(BIN_SUFFIX)=) $(DIST)/bin
665
857
endif
666
858
ifdef SHARED_LIBRARY
667
 
        $(PYTHON) $(topsrcdir)/build/win32/pgomerge.py \
 
859
        $(PYTHON) $(MOZILLA_SRCDIR)/build/win32/pgomerge.py \
668
860
          $(SHARED_LIBRARY_NAME) $(DIST)/bin
669
861
endif
670
862
endif # SHARED_LIBRARY || PROGRAM
671
863
endif # WINNT_
672
 
endif # MOZ_PROFILE_USE
673
 
ifdef MOZ_PROFILE_GENERATE
674
 
# Clean up profiling data during PROFILE_GENERATE phase
675
 
export::
676
 
ifeq ($(OS_ARCH)_$(GNU_CC), WINNT_)
677
 
        $(foreach pgd,$(wildcard *.pgd),pgomgr -clear $(pgd);)
678
 
else
679
 
ifdef GNU_CC
680
 
        -$(RM) *.gcda
681
 
endif
682
 
endif
683
 
endif
684
 
 
685
 
ifneq (,$(MOZ_PROFILE_GENERATE)$(MOZ_PROFILE_USE))
686
 
ifdef GNU_CC
687
 
# Force rebuilding libraries and programs in both passes because each
688
 
# pass uses different object files.
689
 
$(PROGRAM) $(SHARED_LIBRARY) $(LIBRARY): FORCE
690
 
endif
691
 
endif
692
 
 
 
864
endif # MOZ_PROFILE_GENERATE || MOZ_PROFILE_USE
693
865
endif # NO_PROFILE_GUIDED_OPTIMIZE
694
866
 
695
867
##############################################
696
868
 
697
869
checkout:
698
 
        $(MAKE) -C $(topsrcdir) -f client.mk checkout
 
870
        $(PYTHON) $(topsrcdir)/client.py checkout
699
871
 
700
872
clean clobber realclean clobber_all:: $(SUBMAKEFILES)
701
873
        -$(RM) $(ALL_TRASH)
724
896
#
725
897
$(PROGRAM): $(PROGOBJS) $(EXTRA_DEPS) $(EXE_DEF_FILE) $(RESFILE) $(GLOBAL_DEPS)
726
898
        @$(RM) $@.manifest
 
899
ifeq (WINCE,$(OS_ARCH))
 
900
        $(EXPAND_LD) -NOLOGO -OUT:$@ $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_GLUE_PROGRAM_LDFLAGS) $(PROGOBJS) $(RESFILE) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
 
901
else
727
902
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
728
903
        $(EXPAND_LD) -NOLOGO -OUT:$@ -PDB:$(LINK_PDBFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_GLUE_PROGRAM_LDFLAGS) $(PROGOBJS) $(RESFILE) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
729
904
ifdef MSMANIFEST_TOOL
746
921
        touch -t `date +%Y%m%d%H%M.%S -d "now+5seconds"` pgo.relink
747
922
endif
748
923
else # !WINNT || GNU_CC
749
 
        $(EXPAND_CCC) -o $@ $(CXXFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(MOZ_GLUE_PROGRAM_LDFLAGS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE)
750
 
        @$(call CHECK_STDCXX,$@)
 
924
        $(EXPAND_CCC) -o $@ $(CXXFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(MOZ_GLUE_PROGRAM_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE)
751
925
endif # WINNT && !GNU_CC
 
926
endif # WINCE
752
927
 
753
928
ifdef ENABLE_STRIP
754
929
        $(STRIP) $@
756
931
ifdef MOZ_POST_PROGRAM_COMMAND
757
932
        $(MOZ_POST_PROGRAM_COMMAND) $@
758
933
endif
 
934
ifeq ($(OS_ARCH),BeOS)
 
935
ifdef BEOS_PROGRAM_RESOURCE
 
936
        xres -o $@ $(BEOS_PROGRAM_RESOURCE)
 
937
        mimeset $@
 
938
endif
 
939
endif # BeOS
759
940
 
760
941
$(HOST_PROGRAM): $(HOST_PROGOBJS) $(HOST_LIBS_DEPS) $(HOST_EXTRA_DEPS) $(GLOBAL_DEPS)
 
942
ifeq (WINCE,$(OS_ARCH))
 
943
        $(HOST_LD) -NOLOGO -OUT:$@ $(HOST_OBJS) $(WIN32_EXE_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
 
944
else
761
945
ifeq (_WINNT,$(GNU_CC)_$(HOST_OS_ARCH))
762
 
        $(HOST_LD) -NOLOGO -OUT:$@ -PDB:$(HOST_PDBFILE) $(HOST_OBJS) $(WIN32_EXE_LDFLAGS) $(HOST_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
 
946
        $(HOST_LD) -NOLOGO -OUT:$@ -PDB:$(HOST_PDBFILE) $(HOST_OBJS) $(WIN32_EXE_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
763
947
ifdef MSMANIFEST_TOOL
764
948
        @if test -f $@.manifest; then \
765
949
                if test -f "$(srcdir)/$@.manifest"; then \
781
965
        $(HOST_CC) -o $@ $(HOST_CFLAGS) $(HOST_LDFLAGS) $(HOST_PROGOBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
782
966
endif # HOST_CPP_PROG_LINK
783
967
endif
 
968
endif
784
969
 
785
970
#
786
971
# This is an attempt to support generation of multiple binaries
791
976
# creates Foo.o Bar.o, links with LIBS to create Foo, Bar.
792
977
#
793
978
$(SIMPLE_PROGRAMS): %$(BIN_SUFFIX): %.$(OBJ_SUFFIX) $(EXTRA_DEPS) $(GLOBAL_DEPS)
 
979
ifeq (WINCE,$(OS_ARCH))
 
980
        $(EXPAND_LD) -nologo  -entry:mainACRTStartup -out:$@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_GLUE_PROGRAM_LDFLAGS) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
 
981
else
794
982
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
795
983
        $(EXPAND_LD) -nologo -out:$@ -pdb:$(LINK_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_GLUE_PROGRAM_LDFLAGS) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
796
984
ifdef MSMANIFEST_TOOL
800
988
        fi
801
989
endif   # MSVC with manifest tool
802
990
else
803
 
        $(EXPAND_CCC) $(CXXFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(MOZ_GLUE_PROGRAM_LDFLAGS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS)
804
 
        @$(call CHECK_STDCXX,$@)
 
991
        $(EXPAND_CCC) $(CXXFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_GLUE_PROGRAM_LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS)
805
992
endif # WINNT && !GNU_CC
 
993
endif # WINCE
806
994
 
807
995
ifdef ENABLE_STRIP
808
996
        $(STRIP) $@
812
1000
endif
813
1001
 
814
1002
$(HOST_SIMPLE_PROGRAMS): host_%$(HOST_BIN_SUFFIX): host_%.$(OBJ_SUFFIX) $(HOST_LIBS_DEPS) $(HOST_EXTRA_DEPS) $(GLOBAL_DEPS)
 
1003
ifeq (WINCE,$(OS_ARCH))
 
1004
        $(HOST_LD) -NOLOGO -OUT:$@ $(WIN32_EXE_LDFLAGS) $< $(HOST_LIBS) $(HOST_EXTRA_LIBS)
 
1005
else
815
1006
ifeq (WINNT_,$(HOST_OS_ARCH)_$(GNU_CC))
816
1007
        $(HOST_LD) -NOLOGO -OUT:$@ -PDB:$(HOST_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
817
1008
else
821
1012
        $(HOST_CC) $(HOST_OUTOPTION)$@ $(HOST_CFLAGS) $(INCLUDES) $< $(HOST_LIBS) $(HOST_EXTRA_LIBS)
822
1013
endif
823
1014
endif
 
1015
endif
824
1016
 
825
1017
ifdef DTRACE_PROBE_OBJ
826
1018
EXTRA_DEPS += $(DTRACE_PROBE_OBJ)
827
 
OBJS += $(DTRACE_PROBE_OBJ)
828
1019
endif
829
1020
 
830
1021
$(filter %.$(LIB_SUFFIX),$(LIBRARY)): $(OBJS) $(LOBJS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
837
1028
        $(if $(filter %.$(LIB_SUFFIX),$(LIBRARY)),,$(RM) $(REAL_LIBRARY) $(EXPORT_LIBRARY:%=%/$(REAL_LIBRARY)))
838
1029
        $(EXPAND_LIBS_GEN) -o $@ $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS)
839
1030
 
840
 
ifeq ($(OS_ARCH),WINNT)
 
1031
ifeq (,$(filter-out WINNT WINCE, $(OS_ARCH)))
841
1032
$(IMPORT_LIBRARY): $(SHARED_LIBRARY)
842
1033
endif
843
1034
 
852
1043
 
853
1044
        $(ADD_TO_DEF_FILE)
854
1045
 
 
1046
ifdef MOZ_OS2_USE_DECLSPEC
855
1047
$(IMPORT_LIBRARY): $(SHARED_LIBRARY)
 
1048
else
 
1049
$(IMPORT_LIBRARY): $(DEF_FILE)
 
1050
endif
856
1051
        $(RM) $@
857
1052
        $(IMPLIB) $@ $^
858
1053
        $(RANLIB) $@
867
1062
ifndef XP_MACOSX
868
1063
ifdef DTRACE_PROBE_OBJ
869
1064
ifndef DTRACE_LIB_DEPENDENT
870
 
NON_DTRACE_OBJS := $(filter-out $(DTRACE_PROBE_OBJ),$(OBJS))
871
 
$(DTRACE_PROBE_OBJ): $(NON_DTRACE_OBJS)
872
 
        dtrace -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(NON_DTRACE_OBJS)
 
1065
$(DTRACE_PROBE_OBJ): $(OBJS)
 
1066
        dtrace -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(OBJS)
873
1067
endif
874
1068
endif
875
1069
endif
880
1074
# symlinks back to the originals. The symlinks are a no-op for stabs debugging,
881
1075
# so no need to conditionalize on OS version or debugging format.
882
1076
 
883
 
$(SHARED_LIBRARY): $(OBJS) $(LOBJS) $(DEF_FILE) $(RESFILE) $(LIBRARY) $(EXTRA_DEPS) $(GLOBAL_DEPS)
 
1077
$(SHARED_LIBRARY): $(OBJS) $(LOBJS) $(DEF_FILE) $(RESFILE) $(LIBRARY) $(EXTRA_DEPS) $(DSO_LDOPTS_DEPS) $(GLOBAL_DEPS)
884
1078
ifndef INCREMENTAL_LINKER
885
 
        $(RM) $@
886
 
endif
 
1079
        rm -f $@
 
1080
endif
 
1081
ifeq ($(OS_ARCH),OpenVMS)
 
1082
        @if test ! -f $(VMS_SYMVEC_FILE); then \
 
1083
          if test -f $(VMS_SYMVEC_FILE_MODULE); then \
 
1084
            echo Creating specific component options file $(VMS_SYMVEC_FILE); \
 
1085
            cp $(VMS_SYMVEC_FILE_MODULE) $(VMS_SYMVEC_FILE); \
 
1086
          fi; \
 
1087
        fi
 
1088
ifdef IS_COMPONENT
 
1089
        @if test ! -f $(VMS_SYMVEC_FILE); then \
 
1090
          echo Creating generic component options file $(VMS_SYMVEC_FILE); \
 
1091
          cp $(VMS_SYMVEC_FILE_COMP) $(VMS_SYMVEC_FILE); \
 
1092
        fi
 
1093
endif
 
1094
endif # OpenVMS
887
1095
ifdef DTRACE_LIB_DEPENDENT
888
1096
ifndef XP_MACOSX
889
1097
        dtrace -G -C -s $(MOZILLA_DTRACE_SRC) -o  $(DTRACE_PROBE_OBJ) $(shell $(EXPAND_LIBS) $(MOZILLA_PROBE_LIBS))
890
1098
endif
891
 
        $(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(LOBJS) $(SUB_SHLOBJS) $(DTRACE_PROBE_OBJ) $(MOZILLA_PROBE_LIBS) $(RESFILE) $(LDFLAGS) $(WRAP_LDFLAGS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DSO_LDOPTS) $(MOZ_GLUE_LDFLAGS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
892
 
        @$(RM) $(DTRACE_PROBE_OBJ)
 
1099
        $(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(LOBJS) $(SUB_SHLOBJS) $(DTRACE_PROBE_OBJ) $(MOZILLA_PROBE_LIBS) $(RESFILE) $(LDFLAGS) $(MOZ_GLUE_LDFLAGS) $(WRAP_LDFLAGS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
893
1100
else # ! DTRACE_LIB_DEPENDENT
894
 
        $(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(LOBJS) $(SUB_SHLOBJS) $(RESFILE) $(LDFLAGS) $(WRAP_LDFLAGS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DSO_LDOPTS) $(MOZ_GLUE_LDFLAGS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
 
1101
        $(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(DTRACE_PROBE_OBJ) $(LOBJS) $(SUB_SHLOBJS) $(RESFILE) $(LDFLAGS) $(MOZ_GLUE_LDFLAGS) $(WRAP_LDFLAGS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
895
1102
endif # DTRACE_LIB_DEPENDENT
896
 
        @$(call CHECK_STDCXX,$@)
897
1103
 
898
1104
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
899
1105
ifdef MSMANIFEST_TOOL
955
1161
 
956
1162
endif # MOZ_AUTO_DEPS
957
1163
 
958
 
$(OBJS) $(HOST_OBJS): $(GLOBAL_DEPS)
959
 
 
960
1164
# Rules for building native targets must come first because of the host_ prefix
961
 
$(HOST_COBJS): host_%.$(OBJ_SUFFIX): %.c
 
1165
host_%.$(OBJ_SUFFIX): %.c $(GLOBAL_DEPS)
962
1166
        $(REPORT_BUILD)
963
1167
        $(ELOG) $(HOST_CC) $(HOST_OUTOPTION)$@ -c $(HOST_CFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
964
1168
 
965
 
$(HOST_CPPOBJS): host_%.$(OBJ_SUFFIX): %.cpp
966
 
        $(REPORT_BUILD)
967
 
        $(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
968
 
 
969
 
$(HOST_CCOBJS): host_%.$(OBJ_SUFFIX): %.cc
970
 
        $(REPORT_BUILD)
971
 
        $(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
972
 
 
973
 
$(HOST_CMOBJS): host_%.$(OBJ_SUFFIX): %.m
 
1169
host_%.$(OBJ_SUFFIX): %.cpp $(GLOBAL_DEPS)
 
1170
        $(REPORT_BUILD)
 
1171
        $(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
 
1172
 
 
1173
host_%.$(OBJ_SUFFIX): %.cc $(GLOBAL_DEPS)
 
1174
        $(REPORT_BUILD)
 
1175
        $(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
 
1176
 
 
1177
host_%.$(OBJ_SUFFIX): %.m $(GLOBAL_DEPS)
974
1178
        $(REPORT_BUILD)
975
1179
        $(ELOG) $(HOST_CC) $(HOST_OUTOPTION)$@ -c $(HOST_CFLAGS) $(HOST_CMFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
976
1180
 
977
 
$(HOST_CMMOBJS): host_%.$(OBJ_SUFFIX): %.mm
 
1181
host_%.$(OBJ_SUFFIX): %.mm $(GLOBAL_DEPS)
978
1182
        $(REPORT_BUILD)
979
1183
        $(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(HOST_CMMFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
980
1184
 
981
 
$(COBJS): %.$(OBJ_SUFFIX): %.c
 
1185
%:: %.c $(GLOBAL_DEPS)
 
1186
        $(REPORT_BUILD)
 
1187
        @$(MAKE_DEPS_AUTO_CC)
 
1188
        $(ELOG) $(CC) $(CFLAGS) $(LDFLAGS) $(OUTOPTION)$@ $(_VPATH_SRCS)
 
1189
 
 
1190
%.$(OBJ_SUFFIX): %.c $(GLOBAL_DEPS)
982
1191
        $(REPORT_BUILD)
983
1192
        @$(MAKE_DEPS_AUTO_CC)
984
1193
        $(ELOG) $(CC) $(OUTOPTION)$@ -c $(COMPILE_CFLAGS) $(_VPATH_SRCS)
985
1194
 
986
 
# DEFINES and ACDEFINES are needed here to enable conditional compilation of Q_OBJECTs:
987
 
# 'moc' only knows about #defines it gets on the command line (-D...), not in
988
 
# included headers like mozilla-config.h
989
 
moc_%.cpp: %.h
990
 
        $(ELOG) $(MOC) $(DEFINES) $(ACDEFINES) $< $(OUTOPTION)$@
991
 
 
992
 
moc_%.cc: %.cc
993
 
        $(ELOG) $(MOC) $(DEFINES) $(ACDEFINES) $(_VPATH_SRCS:.cc=.h) $(OUTOPTION)$@
994
 
 
995
 
qrc_%.cpp: %.qrc
996
 
        $(ELOG) $(RCC) -name $* $< $(OUTOPTION)$@
997
 
 
998
1195
ifdef ASFILES
999
1196
# The AS_DASH_C_FLAG is needed cause not all assemblers (Solaris) accept
1000
1197
# a '-c' flag.
1001
 
$(ASOBJS): %.$(OBJ_SUFFIX): %.$(ASM_SUFFIX)
1002
 
        $(AS) $(ASOUTOPTION)$@ $(ASFLAGS) $(AS_DASH_C_FLAG) $(_VPATH_SRCS)
 
1198
%.$(OBJ_SUFFIX): %.$(ASM_SUFFIX) $(GLOBAL_DEPS)
 
1199
        $(AS) -o $@ $(ASFLAGS) $(AS_DASH_C_FLAG) $(_VPATH_SRCS)
1003
1200
endif
1004
1201
 
1005
 
$(SOBJS): %.$(OBJ_SUFFIX): %.S
 
1202
%.$(OBJ_SUFFIX): %.S $(GLOBAL_DEPS)
1006
1203
        $(AS) -o $@ $(ASFLAGS) -c $<
1007
1204
 
 
1205
%:: %.cpp $(GLOBAL_DEPS)
 
1206
        @$(MAKE_DEPS_AUTO_CXX)
 
1207
        $(CCC) $(OUTOPTION)$@ $(CXXFLAGS) $(_VPATH_SRCS) $(LDFLAGS)
 
1208
 
1008
1209
#
1009
1210
# Please keep the next two rules in sync.
1010
1211
#
1011
 
$(CCOBJS): %.$(OBJ_SUFFIX): %.cc
 
1212
%.$(OBJ_SUFFIX): %.cc $(GLOBAL_DEPS)
1012
1213
        $(REPORT_BUILD)
1013
1214
        @$(MAKE_DEPS_AUTO_CXX)
1014
1215
        $(ELOG) $(CCC) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS) $(_VPATH_SRCS)
1015
1216
 
1016
 
$(CPPOBJS): %.$(OBJ_SUFFIX): %.cpp
 
1217
%.$(OBJ_SUFFIX): %.cpp $(GLOBAL_DEPS)
1017
1218
        $(REPORT_BUILD)
1018
1219
        @$(MAKE_DEPS_AUTO_CXX)
1019
1220
ifdef STRICT_CPLUSPLUS_SUFFIX
1024
1225
        $(ELOG) $(CCC) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS) $(_VPATH_SRCS)
1025
1226
endif #STRICT_CPLUSPLUS_SUFFIX
1026
1227
 
1027
 
$(CMMOBJS): $(OBJ_PREFIX)%.$(OBJ_SUFFIX): %.mm
 
1228
$(OBJ_PREFIX)%.$(OBJ_SUFFIX): %.mm $(GLOBAL_DEPS)
1028
1229
        $(REPORT_BUILD)
1029
1230
        @$(MAKE_DEPS_AUTO_CXX)
1030
1231
        $(ELOG) $(CCC) -o $@ -c $(COMPILE_CXXFLAGS) $(COMPILE_CMMFLAGS) $(_VPATH_SRCS)
1031
1232
 
1032
 
$(CMOBJS): $(OBJ_PREFIX)%.$(OBJ_SUFFIX): %.m
 
1233
$(OBJ_PREFIX)%.$(OBJ_SUFFIX): %.m $(GLOBAL_DEPS)
1033
1234
        $(REPORT_BUILD)
1034
1235
        @$(MAKE_DEPS_AUTO_CC)
1035
1236
        $(ELOG) $(CC) -o $@ -c $(COMPILE_CFLAGS) $(COMPILE_CMFLAGS) $(_VPATH_SRCS)
1088
1289
 
1089
1290
%: SCCS/s.%
1090
1291
 
1091
 
###############################################################################
1092
 
# Java rules
1093
 
###############################################################################
1094
 
ifneq (,$(filter OS2 WINNT,$(OS_ARCH)))
1095
 
SEP := ;
 
1292
# Cygwin and MSYS have their own special path form, but javac expects the source
 
1293
# and class paths to be in the DOS form (i.e. e:/builds/...).  This function
 
1294
# does the appropriate conversion on Windows, but is a noop on other systems.
 
1295
ifeq (,$(filter-out WINNT WINCE, $(HOST_OS_ARCH)))
 
1296
ifdef CYGWIN_WRAPPER
 
1297
normalizepath = $(foreach p,$(1),$(shell cygpath -m $(p)))
1096
1298
else
1097
 
SEP := :
1098
 
endif
1099
 
 
1100
 
EMPTY :=
1101
 
SPACE := $(EMPTY) $(EMPTY)
1102
 
 
1103
 
# MSYS has its own special path form, but javac expects the source and class
1104
 
# paths to be in the DOS form (i.e. e:/builds/...).  This function does the
1105
 
# appropriate conversion on Windows, but is a noop on other systems.
1106
 
ifeq ($(HOST_OS_ARCH),WINNT)
 
1299
# assume MSYS
1107
1300
#  We use 'pwd -W' to get DOS form of the path.  However, since the given path
1108
1301
#  could be a file or a non-existent path, we cannot call 'pwd -W' directly
1109
1302
#  on the path.  Instead, we extract the root path (i.e. "c:/"), call 'pwd -W'
1111
1304
root-path = $(shell echo $(1) | sed -e "s|\(/[^/]*\)/\?\(.*\)|\1|")
1112
1305
non-root-path = $(shell echo $(1) | sed -e "s|\(/[^/]*\)/\?\(.*\)|\2|")
1113
1306
normalizepath = $(foreach p,$(1),$(if $(filter /%,$(1)),$(patsubst %/,%,$(shell cd $(call root-path,$(1)) && pwd -W))/$(call non-root-path,$(1)),$(1)))
 
1307
endif
1114
1308
else
1115
1309
normalizepath = $(1)
1116
1310
endif
1117
1311
 
1118
 
_srcdir = $(call normalizepath,$(srcdir))
1119
 
ifdef JAVA_SOURCEPATH
1120
 
SP = $(subst $(SPACE),$(SEP),$(call normalizepath,$(strip $(JAVA_SOURCEPATH))))
1121
 
_JAVA_SOURCEPATH = ".$(SEP)$(_srcdir)$(SEP)$(SP)"
1122
 
else
1123
 
_JAVA_SOURCEPATH = ".$(SEP)$(_srcdir)"
1124
 
endif
1125
 
 
1126
 
ifdef JAVA_CLASSPATH
1127
 
CP = $(subst $(SPACE),$(SEP),$(call normalizepath,$(strip $(JAVA_CLASSPATH))))
1128
 
_JAVA_CLASSPATH = ".$(SEP)$(CP)"
1129
 
else
1130
 
_JAVA_CLASSPATH = .
1131
 
endif
1132
 
 
1133
 
_JAVA_DIR = _java
1134
 
$(_JAVA_DIR)::
1135
 
        $(NSINSTALL) -D $@
1136
 
 
1137
 
$(_JAVA_DIR)/%.class: %.java $(GLOBAL_DEPS) $(_JAVA_DIR)
1138
 
        $(JAVAC) $(JAVAC_FLAGS) -classpath $(_JAVA_CLASSPATH) \
1139
 
                        -sourcepath $(_JAVA_SOURCEPATH) -d $(_JAVA_DIR) $(_VPATH_SRCS)
1140
 
 
1141
 
$(JAVA_LIBRARY): $(addprefix $(_JAVA_DIR)/,$(JAVA_SRCS:.java=.class)) $(GLOBAL_DEPS)
1142
 
        $(JAR) cf $@ -C $(_JAVA_DIR) .
1143
 
 
1144
 
GARBAGE_DIRS += $(_JAVA_DIR)
1145
 
 
1146
1312
###############################################################################
1147
1313
# Update Makefiles
1148
1314
###############################################################################
1149
1315
 
1150
 
ifndef NO_MAKEFILE_RULE
 
1316
# In GNU make 3.80, makefiles must use the /cygdrive syntax, even if we're
 
1317
# processing them with AS perl. See bug 232003
 
1318
ifdef AS_PERL
 
1319
CYGWIN_TOPSRCDIR = -nowrap -p $(topsrcdir) -wrap
 
1320
endif
 
1321
 
1151
1322
Makefile: Makefile.in
1152
1323
        @$(PYTHON) $(DEPTH)/config.status -n --file=Makefile
1153
1324
        @$(TOUCH) $@
1154
 
endif
1155
1325
 
1156
 
ifndef NO_SUBMAKEFILES_RULE
1157
1326
ifdef SUBMAKEFILES
1158
1327
# VPATH does not work on some machines in this case, so add $(srcdir)
1159
1328
$(SUBMAKEFILES): % : $(srcdir)/%.in
1160
 
        $(PYTHON) $(DEPTH)$(addprefix /,$(subsrcdir))/config.status -n --file=$@
 
1329
        $(PYTHON) $(DEPTH)/config.status -n --file=$@
1161
1330
        @$(TOUCH) $@
1162
1331
endif
1163
 
endif
1164
1332
 
1165
1333
ifdef AUTOUPDATE_CONFIGURE
1166
1334
$(topsrcdir)/configure: $(topsrcdir)/configure.in
1167
 
        (cd $(topsrcdir) && $(AUTOCONF)) && $(PYTHON) $(DEPTH)/config.status -n --recheck)
 
1335
        (cd $(topsrcdir) && $(AUTOCONF)) && $(PYTHON) $(DEPTH)/config.status -n --recheck
1168
1336
endif
1169
1337
 
1170
 
$(DEPTH)/config/autoconf.mk: $(topsrcdir)/config/autoconf.mk.in
1171
 
        $(PYTHON) $(DEPTH)/config.status -n --file=$(DEPTH)/config/autoconf.mk
1172
 
        $(TOUCH) $@
1173
 
 
1174
1338
###############################################################################
1175
1339
# Bunch of things that extend the 'export' rule (in order):
1176
1340
###############################################################################
1207
1371
ifdef GRE_MODULE
1208
1372
PREF_DIR = greprefs
1209
1373
else
1210
 
ifneq (,$(XPI_NAME)$(LIBXUL_SDK)$(MOZ_PHOENIX))
 
1374
ifneq (,$(XPI_NAME)$(LIBXUL_SDK))
1211
1375
PREF_DIR = defaults/preferences
1212
1376
else
1213
1377
PREF_DIR = defaults/pref
1221
1385
endif
1222
1386
 
1223
1387
ifndef NO_DIST_INSTALL
1224
 
PREF_JS_EXPORTS_PATH := $(FINAL_TARGET)/$(PREF_DIR)
1225
 
PREF_JS_EXPORTS_FLAGS := $(PREF_PPFLAGS)
1226
 
PP_TARGETS += PREF_JS_EXPORTS
 
1388
$(FINAL_TARGET)/$(PREF_DIR):
 
1389
        $(NSINSTALL) -D $@
 
1390
 
 
1391
libs:: $(FINAL_TARGET)/$(PREF_DIR) $(PREF_JS_EXPORTS)
 
1392
        $(EXIT_ON_ERROR)  \
 
1393
        for i in $(PREF_JS_EXPORTS); do \
 
1394
          dest=$(FINAL_TARGET)/$(PREF_DIR)/`basename $$i`; \
 
1395
          $(RM) -f $$dest; \
 
1396
          $(PYTHON) $(MOZILLA_SRCDIR)/config/Preprocessor.py $(PREF_PPFLAGS) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \
 
1397
        done
1227
1398
endif
1228
1399
endif
1229
1400
 
1240
1411
endif
1241
1412
 
1242
1413
endif
1243
 
 
1244
1414
################################################################################
1245
1415
# Export the elements of $(XPIDLSRCS)
1246
1416
# generating .h and .xpt files and moving them to the appropriate places.
1247
1417
 
1248
 
ifneq ($(XPIDLSRCS),) #{
 
1418
ifneq ($(XPIDLSRCS),)
1249
1419
 
1250
1420
export:: $(patsubst %.idl,$(XPIDL_GEN_DIR)/%.h, $(XPIDLSRCS))
1251
1421
 
1262
1432
        @echo; sleep 2; false
1263
1433
endif
1264
1434
 
 
1435
$(IDL_DIR)::
 
1436
        $(NSINSTALL) -D $@
 
1437
 
1265
1438
# generate .h files from into $(XPIDL_GEN_DIR), then export to $(DIST)/include;
1266
1439
# warn against overriding existing .h file.
 
1440
$(XPIDL_GEN_DIR)/.done:
 
1441
        $(MKDIR) -p $(XPIDL_GEN_DIR)
 
1442
        @$(TOUCH) $@
 
1443
 
 
1444
# don't depend on $(XPIDL_GEN_DIR), because the modification date changes
 
1445
# with any addition to the directory, regenerating all .h files -> everything.
1267
1446
 
1268
1447
XPIDL_DEPS = \
1269
1448
  $(LIBXUL_DIST)/sdk/bin/header.py \
1271
1450
  $(LIBXUL_DIST)/sdk/bin/xpidl.py \
1272
1451
  $(NULL)
1273
1452
 
1274
 
xpidl-preqs = \
1275
 
  $(call mkdir_deps,$(XPIDL_GEN_DIR)) \
1276
 
  $(call mkdir_deps,$(MDDEPDIR)) \
1277
 
  $(NULL)
1278
 
 
1279
 
$(XPIDL_GEN_DIR)/%.h: %.idl $(XPIDL_DEPS) $(xpidl-preqs)
 
1453
$(XPIDL_GEN_DIR)/%.h: %.idl $(XPIDL_DEPS) $(XPIDL_GEN_DIR)/.done
1280
1454
        $(REPORT_BUILD)
1281
 
        $(PYTHON_PATH) \
 
1455
        $(PYTHON) -u $(MOZILLA_DIR)/config/pythonpath.py \
1282
1456
          $(PLY_INCLUDE) \
1283
1457
          $(LIBXUL_DIST)/sdk/bin/header.py $(XPIDL_FLAGS) $(_VPATH_SRCS) -d $(MDDEPDIR)/$(@F).pp -o $@
1284
1458
        @if test -n "$(findstring $*.h, $(EXPORTS))"; \
1285
1459
          then echo "*** WARNING: file $*.h generated from $*.idl overrides $(srcdir)/$*.h"; else true; fi
1286
1460
 
 
1461
ifndef NO_GEN_XPT
1287
1462
# generate intermediate .xpt files into $(XPIDL_GEN_DIR), then link
1288
1463
# into $(XPIDL_MODULE).xpt and export it to $(FINAL_TARGET)/components.
1289
 
$(XPIDL_GEN_DIR)/%.xpt: %.idl $(XPIDL_DEPS) $(xpidl-preqs)
 
1464
$(XPIDL_GEN_DIR)/%.xpt: %.idl $(XPIDL_DEPS) $(XPIDL_GEN_DIR)/.done
1290
1465
        $(REPORT_BUILD)
1291
 
        $(PYTHON_PATH) \
 
1466
        $(PYTHON) -u $(MOZILLA_DIR)/config/pythonpath.py \
1292
1467
          $(PLY_INCLUDE) \
1293
 
          -I$(topsrcdir)/xpcom/typelib/xpt/tools \
 
1468
          -I$(MOZILLA_DIR)/xpcom/typelib/xpt/tools \
1294
1469
          $(LIBXUL_DIST)/sdk/bin/typelib.py $(XPIDL_FLAGS) $(_VPATH_SRCS) -d $(MDDEPDIR)/$(@F).pp -o $@
1295
1470
 
1296
1471
# no need to link together if XPIDLSRCS contains only XPIDL_MODULE
1303
1478
ifndef NO_DIST_INSTALL
1304
1479
        $(call install_cmd,$(IFLAGS1) $(XPIDL_GEN_DIR)/$(XPIDL_MODULE).xpt $(FINAL_TARGET)/components)
1305
1480
ifndef NO_INTERFACES_MANIFEST
1306
 
libs:: $(call mkdir_deps,$(FINAL_TARGET)/components)
1307
1481
        @$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/components/interfaces.manifest "interfaces $(XPIDL_MODULE).xpt"
1308
1482
        @$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest "manifest components/interfaces.manifest"
1309
1483
endif
1310
1484
endif
1311
1485
 
 
1486
endif # NO_GEN_XPT
 
1487
 
1312
1488
GARBAGE_DIRS            += $(XPIDL_GEN_DIR)
1313
1489
 
1314
 
endif #} XPIDLSRCS
1315
 
 
1316
 
 
1317
 
ifndef INCLUDED_XPIDL_MK
1318
 
  include $(topsrcdir)/config/makefiles/xpidl.mk
1319
 
endif
1320
 
 
1321
 
 
 
1490
endif # XPIDLSRCS
 
1491
 
 
1492
ifneq ($(XPIDLSRCS),)
 
1493
# export .idl files to $(IDL_DIR)
 
1494
ifndef NO_DIST_INSTALL
 
1495
export:: $(XPIDLSRCS) $(IDL_DIR)
 
1496
        $(call install_cmd,$(IFLAGS1) $^)
 
1497
 
 
1498
export:: $(patsubst %.idl,$(XPIDL_GEN_DIR)/%.h, $(XPIDLSRCS)) $(DIST)/include
 
1499
        $(call install_cmd,$(IFLAGS1) $^)
 
1500
endif # NO_DIST_INSTALL
 
1501
 
 
1502
endif # XPIDLSRCS
 
1503
 
 
1504
 
 
1505
 
 
1506
#
1322
1507
# General rules for exporting idl files.
1323
 
$(IDL_DIR):
 
1508
#
 
1509
# WORK-AROUND ONLY, for mozilla/tools/module-deps/bootstrap.pl build.
 
1510
# Bug to fix idl dependency problems w/o this extra build pass is
 
1511
#   http://bugzilla.mozilla.org/show_bug.cgi?id=145777
 
1512
#
 
1513
$(IDL_DIR)::
1324
1514
        $(NSINSTALL) -D $@
1325
1515
 
1326
1516
export-idl:: $(SUBMAKEFILES) $(MAKE_DIRS)
1354
1544
endif
1355
1545
 
1356
1546
ifdef EXTRA_PP_COMPONENTS
 
1547
libs:: $(EXTRA_PP_COMPONENTS)
1357
1548
ifndef NO_DIST_INSTALL
1358
 
EXTRA_PP_COMPONENTS_PATH := $(FINAL_TARGET)/components
1359
 
PP_TARGETS += EXTRA_PP_COMPONENTS
 
1549
        $(EXIT_ON_ERROR) \
 
1550
        $(NSINSTALL) -D $(FINAL_TARGET)/components; \
 
1551
        for i in $^; do \
 
1552
          fname=`basename $$i`; \
 
1553
          dest=$(FINAL_TARGET)/components/$${fname}; \
 
1554
          $(RM) -f $$dest; \
 
1555
          $(PYTHON) $(MOZILLA_SRCDIR)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \
 
1556
        done
1360
1557
endif
1361
1558
endif
1362
1559
 
1363
1560
EXTRA_MANIFESTS = $(filter %.manifest,$(EXTRA_COMPONENTS) $(EXTRA_PP_COMPONENTS))
1364
1561
ifneq (,$(EXTRA_MANIFESTS))
1365
 
libs:: $(call mkdir_deps,$(FINAL_TARGET))
 
1562
libs::
1366
1563
        $(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest $(patsubst %,"manifest components/%",$(notdir $(EXTRA_MANIFESTS)))
1367
1564
endif
1368
1565
 
1369
1566
################################################################################
1370
 
# Copy each element of EXTRA_JS_MODULES to JS_MODULES_PATH, or
1371
 
# $(FINAL_TARGET)/modules if that isn't defined.
1372
 
JS_MODULES_PATH ?= $(FINAL_TARGET)/modules
1373
 
 
 
1567
# Copy each element of EXTRA_JS_MODULES to $(FINAL_TARGET)/modules
1374
1568
ifdef EXTRA_JS_MODULES
1375
1569
libs:: $(EXTRA_JS_MODULES)
1376
1570
ifndef NO_DIST_INSTALL
1377
 
        $(call install_cmd,$(IFLAGS1) $^ $(JS_MODULES_PATH))
 
1571
        $(call install_cmd,$(IFLAGS1) $^ $(FINAL_TARGET)/modules)
1378
1572
endif
1379
1573
 
1380
1574
endif
1381
1575
 
1382
1576
ifdef EXTRA_PP_JS_MODULES
1383
 
ifndef NO_DIST_INSTALL
1384
 
EXTRA_PP_JS_MODULES_PATH := $(JS_MODULES_PATH)
1385
 
PP_TARGETS += EXTRA_PP_JS_MODULES
1386
 
endif
1387
 
endif
1388
 
 
1389
 
################################################################################
1390
 
# Copy testing-only JS modules to appropriate destination.
1391
 
#
1392
 
# For each file defined in TESTING_JS_MODULES, copy it to
1393
 
# objdir/_tests/modules/. If TESTING_JS_MODULE_DIR is defined, that path
1394
 
# wlll be appended to the output directory.
1395
 
 
1396
 
ifdef TESTING_JS_MODULES
1397
 
testmodulesdir = $(DEPTH)/_tests/modules/$(TESTING_JS_MODULE_DIR)
1398
 
 
1399
 
GENERATED_DIRS += $(testmodulesdir)
1400
 
 
1401
 
libs:: $(TESTING_JS_MODULES)
1402
 
ifndef NO_DIST_INSTALL
1403
 
        $(call install_cmd,$(IFLAGS) $^ $(testmodulesdir))
 
1577
libs:: $(EXTRA_PP_JS_MODULES)
 
1578
ifndef NO_DIST_INSTALL
 
1579
        $(EXIT_ON_ERROR) \
 
1580
        $(NSINSTALL) -D $(FINAL_TARGET)/modules; \
 
1581
        for i in $^; do \
 
1582
          dest=$(FINAL_TARGET)/modules/`basename $$i`; \
 
1583
          $(RM) -f $$dest; \
 
1584
          $(PYTHON) $(MOZILLA_SRCDIR)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \
 
1585
        done
1404
1586
endif
1405
1587
 
1406
1588
endif
1419
1601
 
1420
1602
endif # SDK_LIBRARY
1421
1603
 
1422
 
ifneq (,$(strip $(SDK_BINARY)))
 
1604
ifneq (,$(SDK_BINARY))
1423
1605
$(SDK_BIN_DIR)::
1424
1606
        $(NSINSTALL) -D $@
1425
1607
 
1441
1623
        $(LOOP_OVER_DIRS)
1442
1624
        $(LOOP_OVER_TOOL_DIRS)
1443
1625
 
1444
 
$(FINAL_TARGET)/chrome: $(call mkdir_deps,$(FINAL_TARGET)/chrome)
 
1626
$(FINAL_TARGET)/chrome:
 
1627
        $(NSINSTALL) -D $@
1445
1628
 
 
1629
libs realchrome:: $(CHROME_DEPS) $(FINAL_TARGET)/chrome
1446
1630
ifneq (,$(wildcard $(JAR_MANIFEST)))
1447
1631
ifndef NO_DIST_INSTALL
1448
 
libs realchrome:: $(CHROME_DEPS) $(FINAL_TARGET)/chrome
1449
1632
        $(PYTHON) $(MOZILLA_DIR)/config/JarMaker.py \
1450
1633
          $(QUIET) -j $(FINAL_TARGET)/chrome \
1451
1634
          $(MAKE_JARS_FLAGS) $(XULPPFLAGS) $(DEFINES) $(ACDEFINES) \
1454
1637
endif
1455
1638
 
1456
1639
ifneq ($(DIST_FILES),)
1457
 
DIST_FILES_PATH := $(FINAL_TARGET)
1458
 
DIST_FILES_FLAGS := $(XULAPP_DEFINES)
1459
 
PP_TARGETS += DIST_FILES
 
1640
$(DIST)/bin:
 
1641
        $(NSINSTALL) -D $@
 
1642
 
 
1643
libs:: $(DIST_FILES) $(DIST)/bin
 
1644
        @$(EXIT_ON_ERROR) \
 
1645
        for f in $(DIST_FILES); do \
 
1646
          dest=$(FINAL_TARGET)/`basename $$f`; \
 
1647
          $(RM) -f $$dest; \
 
1648
          $(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py \
 
1649
            $(XULAPP_DEFINES) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) \
 
1650
            $(srcdir)/$$f > $$dest; \
 
1651
        done
1460
1652
endif
1461
1653
 
1462
1654
ifneq ($(DIST_CHROME_FILES),)
1463
 
DIST_CHROME_FILES_PATH := $(FINAL_TARGET)/chrome
1464
 
DIST_CHROME_FILES_FLAGS := $(XULAPP_DEFINES)
1465
 
PP_TARGETS += DIST_CHROME_FILES
 
1655
libs:: $(DIST_CHROME_FILES)
 
1656
        @$(EXIT_ON_ERROR) \
 
1657
        for f in $(DIST_CHROME_FILES); do \
 
1658
          dest=$(FINAL_TARGET)/chrome/`basename $$f`; \
 
1659
          $(RM) -f $$dest; \
 
1660
          $(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py \
 
1661
            $(XULAPP_DEFINES) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) \
 
1662
            $(srcdir)/$$f > $$dest; \
 
1663
        done
1466
1664
endif
1467
1665
 
1468
1666
ifneq ($(XPI_PKGNAME),)
1512
1710
 
1513
1711
endif
1514
1712
 
 
1713
ifneq (,$(filter flat symlink,$(MOZ_CHROME_FILE_FORMAT)))
 
1714
_JAR_REGCHROME_DISABLE_JAR=1
 
1715
else
 
1716
_JAR_REGCHROME_DISABLE_JAR=0
 
1717
endif
 
1718
 
 
1719
REGCHROME = $(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/add-chrome.pl \
 
1720
        $(if $(filter gtk2,$(MOZ_WIDGET_TOOLKIT)),-x) \
 
1721
        $(if $(CROSS_COMPILE),-o $(OS_ARCH)) $(FINAL_TARGET)/chrome/installed-chrome.txt \
 
1722
        $(_JAR_REGCHROME_DISABLE_JAR)
 
1723
 
 
1724
REGCHROME_INSTALL = $(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/add-chrome.pl \
 
1725
        $(if $(filter gtk2,$(MOZ_WIDGET_TOOLKIT)),-x) \
 
1726
        $(if $(CROSS_COMPILE),-o $(OS_ARCH)) $(DESTDIR)$(mozappdir)/chrome/installed-chrome.txt \
 
1727
        $(_JAR_REGCHROME_DISABLE_JAR)
 
1728
 
 
1729
 
1515
1730
#############################################################################
1516
1731
# Dependency system
1517
1732
#############################################################################
1587
1802
        $(MKDIR) -p $@
1588
1803
 
1589
1804
ifneq (,$(filter-out all chrome default export realchrome tools clean clobber clobber_all distclean realclean,$(MAKECMDGOALS)))
 
1805
ifneq (,$(OBJS)$(XPIDLSRCS)$(SIMPLE_PROGRAMS))
1590
1806
MDDEPEND_FILES          := $(strip $(wildcard $(MDDEPDIR)/*.pp))
1591
1807
 
1592
1808
ifneq (,$(MDDEPEND_FILES))
1601
1817
endif
1602
1818
 
1603
1819
endif
 
1820
endif
1604
1821
#############################################################################
1605
1822
 
1606
1823
-include $(topsrcdir)/$(MOZ_BUILD_APP)/app-rules.mk
1619
1836
endif
1620
1837
 
1621
1838
################################################################################
1622
 
# Install/copy rules
1623
 
#
1624
 
# The INSTALL_TARGETS variable contains a list of all install target
1625
 
# categories. Each category defines a list of files, an install destination,
1626
 
# and whether the files are executables or not.
1627
 
#
1628
 
# FOO_FILES := foo bar
1629
 
# FOO_EXECUTABLES := baz
1630
 
# FOO_DEST := target_path
1631
 
# INSTALL_TARGETS += FOO
1632
 
define install_file_template
1633
 
libs:: $(2)/$(notdir $(1))
1634
 
$(2)/$(notdir $(1)): $(1) $$(call mkdir_deps,$(2))
1635
 
        $(INSTALL) $(3) $$< $${@D}
1636
 
endef
1637
 
$(foreach category,$(INSTALL_TARGETS),\
1638
 
  $(if $($(category)_DEST),,$(error Missing $(category)_DEST))\
1639
 
  $(foreach file,$($(category)_FILES),\
1640
 
    $(eval $(call install_file_template,$(file),$($(category)_DEST),$(IFLAGS1)))\
1641
 
  )\
1642
 
  $(foreach file,$($(category)_EXECUTABLES),\
1643
 
    $(eval $(call install_file_template,$(file),$($(category)_DEST),$(IFLAGS2)))\
1644
 
  )\
1645
 
)
1646
 
 
1647
 
################################################################################
1648
 
# Preprocessing rules
1649
 
#
1650
 
# The PP_TARGETS variable contains a list of all preprocessing target
1651
 
# categories. Each category defines a target path, and optional extra flags
1652
 
# like the following:
1653
 
#
1654
 
# FOO_PATH := target_path
1655
 
# FOO_FLAGS := -Dsome_flag
1656
 
# PP_TARGETS += FOO
1657
 
 
1658
 
# preprocess_file_template defines preprocessing rules.
1659
 
# $(call preprocess_file_template, source_file, target_path, extra_flags)
1660
 
define preprocess_file_template
1661
 
$(2)/$(notdir $(1)): $(1) $$(call mkdir_deps,$(2)) $$(GLOBAL_DEPS)
1662
 
        $$(RM) $$@
1663
 
        $$(PYTHON) $$(topsrcdir)/config/Preprocessor.py $(3) $$(DEFINES) $$(ACDEFINES) $$(XULPPFLAGS) $$< > $$@
1664
 
libs:: $(2)/$(notdir $(1))
1665
 
endef
1666
 
 
1667
 
$(foreach category,$(PP_TARGETS),\
1668
 
  $(foreach file,$($(category)),\
1669
 
    $(eval $(call preprocess_file_template,$(file),$($(category)_PATH),$($(category)_FLAGS)))\
1670
 
   )\
1671
 
 )
1672
 
 
1673
 
################################################################################
1674
1839
# Special gmake rules.
1675
1840
################################################################################
1676
1841
 
1710
1875
        $(LOOP_OVER_PARALLEL_DIRS)
1711
1876
        $(LOOP_OVER_DIRS)
1712
1877
 
1713
 
ifndef INCLUDED_DEBUGMAKE_MK #{
1714
 
  ## Only parse when an echo* or show* target is requested
1715
 
  ifneq (,$(call isTargetStem,echo,show))
1716
 
    include $(topsrcdir)/config/makefiles/debugmake.mk
1717
 
  endif #}
1718
 
endif #}
 
1878
echo-variable-%:
 
1879
        @echo "$($*)"
 
1880
 
 
1881
echo-tiers:
 
1882
        @echo $(TIERS)
 
1883
 
 
1884
echo-tier-dirs:
 
1885
        @$(foreach tier,$(TIERS),echo '$(tier):'; echo '  dirs: $(tier_$(tier)_dirs)'; echo '  staticdirs: $(tier_$(tier)_staticdirs)'; )
 
1886
 
 
1887
echo-dirs:
 
1888
        @echo $(DIRS)
 
1889
 
 
1890
echo-module:
 
1891
        @echo $(MODULE)
 
1892
 
 
1893
echo-requires:
 
1894
        @echo $(REQUIRES)
 
1895
 
 
1896
echo-depth-path:
 
1897
        @$(MOZILLA_SRCDIR)/build/unix/print-depth-path.sh
 
1898
 
 
1899
echo-module-name:
 
1900
        @$(MOZILLA_SRCDIR)/build/package/rpm/print-module-name.sh
 
1901
 
 
1902
echo-module-filelist:
 
1903
        @$(MOZILLA_SRCDIR)/build/package/rpm/print-module-filelist.sh
 
1904
 
 
1905
showtargs:
 
1906
ifneq (,$(filter $(PROGRAM) $(HOST_PROGRAM) $(SIMPLE_PROGRAMS) $(HOST_LIBRARY) $(LIBRARY) $(SHARED_LIBRARY),$(TARGETS)))
 
1907
        @echo --------------------------------------------------------------------------------
 
1908
        @echo "PROGRAM             = $(PROGRAM)"
 
1909
        @echo "SIMPLE_PROGRAMS     = $(SIMPLE_PROGRAMS)"
 
1910
        @echo "LIBRARY             = $(LIBRARY)"
 
1911
        @echo "SHARED_LIBRARY      = $(SHARED_LIBRARY)"
 
1912
        @echo "SHARED_LIBRARY_LIBS = $(SHARED_LIBRARY_LIBS)"
 
1913
        @echo "LIBS                = $(LIBS)"
 
1914
        @echo "DEF_FILE            = $(DEF_FILE)"
 
1915
        @echo "IMPORT_LIBRARY      = $(IMPORT_LIBRARY)"
 
1916
        @echo "STATIC_LIBS         = $(STATIC_LIBS)"
 
1917
        @echo "SHARED_LIBS         = $(SHARED_LIBS)"
 
1918
        @echo "EXTRA_DSO_LIBS      = $(EXTRA_DSO_LIBS)"
 
1919
        @echo "EXTRA_DSO_LDOPTS    = $(EXTRA_DSO_LDOPTS)"
 
1920
        @echo "DEPENDENT_LIBS      = $(DEPENDENT_LIBS)"
 
1921
        @echo --------------------------------------------------------------------------------
 
1922
endif
 
1923
        $(LOOP_OVER_PARALLEL_DIRS)
 
1924
        $(LOOP_OVER_DIRS)
 
1925
 
 
1926
showbuild:
 
1927
        @echo "MOZ_BUILD_ROOT     = $(MOZ_BUILD_ROOT)"
 
1928
        @echo "MOZ_WIDGET_TOOLKIT = $(MOZ_WIDGET_TOOLKIT)"
 
1929
        @echo "CC                 = $(CC)"
 
1930
        @echo "CXX                = $(CXX)"
 
1931
        @echo "CCC                = $(CCC)"
 
1932
        @echo "CPP                = $(CPP)"
 
1933
        @echo "LD                 = $(LD)"
 
1934
        @echo "AR                 = $(AR)"
 
1935
        @echo "IMPLIB             = $(IMPLIB)"
 
1936
        @echo "FILTER             = $(FILTER)"
 
1937
        @echo "MKSHLIB            = $(MKSHLIB)"
 
1938
        @echo "MKCSHLIB           = $(MKCSHLIB)"
 
1939
        @echo "RC                 = $(RC)"
 
1940
        @echo "CFLAGS             = $(CFLAGS)"
 
1941
        @echo "OS_CFLAGS          = $(OS_CFLAGS)"
 
1942
        @echo "COMPILE_CFLAGS     = $(COMPILE_CFLAGS)"
 
1943
        @echo "CXXFLAGS           = $(CXXFLAGS)"
 
1944
        @echo "OS_CXXFLAGS        = $(OS_CXXFLAGS)"
 
1945
        @echo "COMPILE_CXXFLAGS   = $(COMPILE_CXXFLAGS)"
 
1946
        @echo "COMPILE_CMFLAGS    = $(COMPILE_CMFLAGS)"
 
1947
        @echo "COMPILE_CMMFLAGS   = $(COMPILE_CMMFLAGS)"
 
1948
        @echo "LDFLAGS            = $(LDFLAGS)"
 
1949
        @echo "OS_LDFLAGS         = $(OS_LDFLAGS)"
 
1950
        @echo "DSO_LDOPTS         = $(DSO_LDOPTS)"
 
1951
        @echo "OS_INCLUDES        = $(OS_INCLUDES)"
 
1952
        @echo "OS_LIBS            = $(OS_LIBS)"
 
1953
        @echo "EXTRA_LIBS         = $(EXTRA_LIBS)"
 
1954
        @echo "BIN_FLAGS          = $(BIN_FLAGS)"
 
1955
        @echo "INCLUDES           = $(INCLUDES)"
 
1956
        @echo "DEFINES            = $(DEFINES)"
 
1957
        @echo "ACDEFINES          = $(ACDEFINES)"
 
1958
        @echo "BIN_SUFFIX         = $(BIN_SUFFIX)"
 
1959
        @echo "LIB_SUFFIX         = $(LIB_SUFFIX)"
 
1960
        @echo "DLL_SUFFIX         = $(DLL_SUFFIX)"
 
1961
        @echo "IMPORT_LIB_SUFFIX  = $(IMPORT_LIB_SUFFIX)"
 
1962
        @echo "INSTALL            = $(INSTALL)"
 
1963
 
 
1964
showhost:
 
1965
        @echo "HOST_CC            = $(HOST_CC)"
 
1966
        @echo "HOST_CXX           = $(HOST_CXX)"
 
1967
        @echo "HOST_CFLAGS        = $(HOST_CFLAGS)"
 
1968
        @echo "HOST_LDFLAGS       = $(HOST_LDFLAGS)"
 
1969
        @echo "HOST_LIBS          = $(HOST_LIBS)"
 
1970
        @echo "HOST_EXTRA_LIBS    = $(HOST_EXTRA_LIBS)"
 
1971
        @echo "HOST_EXTRA_DEPS    = $(HOST_EXTRA_DEPS)"
 
1972
        @echo "HOST_PROGRAM       = $(HOST_PROGRAM)"
 
1973
        @echo "HOST_OBJS          = $(HOST_OBJS)"
 
1974
        @echo "HOST_PROGOBJS      = $(HOST_PROGOBJS)"
 
1975
        @echo "HOST_LIBRARY       = $(HOST_LIBRARY)"
 
1976
 
 
1977
showbuildmods::
 
1978
        @echo "Build Modules    = $(BUILD_MODULES)"
 
1979
        @echo "Module dirs      = $(BUILD_MODULE_DIRS)"
1719
1980
 
1720
1981
documentation:
1721
1982
        @cd $(DEPTH)
1737
1998
  DIRS \
1738
1999
  LIBRARY \
1739
2000
  MODULE \
 
2001
  REQUIRES \
1740
2002
  SHORT_LIBNAME \
1741
2003
  TIERS \
1742
2004
  EXTRA_COMPONENTS \
1743
2005
  EXTRA_PP_COMPONENTS \
1744
 
  MOCHITEST_FILES \
1745
 
  MOCHITEST_FILES_PARTS \
1746
 
  MOCHITEST_CHROME_FILES \
1747
 
  MOCHITEST_BROWSER_FILES \
1748
 
  MOCHITEST_BROWSER_FILES_PARTS \
1749
 
  MOCHITEST_A11Y_FILES \
1750
 
  MOCHITEST_WEBAPPRT_CHROME_FILES \
1751
2006
  $(NULL)
1752
2007
 
1753
2008
$(foreach var,$(FREEZE_VARIABLES),$(eval $(var)_FROZEN := '$($(var))'))
1760
2015
 
1761
2016
default all::
1762
2017
        if test -d $(DIST)/bin ; then touch $(DIST)/bin/.purgecaches ; fi
1763
 
 
1764
 
.DEFAULT_GOAL ?= default
1765
 
 
1766
 
#############################################################################
1767
 
# Derived targets and dependencies
1768
 
 
1769
 
include $(topsrcdir)/config/makefiles/autotargets.mk
1770
 
ifneq ($(NULL),$(AUTO_DEPS))
1771
 
  default all libs tools export:: $(AUTO_DEPS)
1772
 
endif