74
74
# Testing frameworks support
75
75
################################################################################
77
testxpcobjdir = $(DEPTH)/_tests/xpcshell
77
testxpcobjdir = $(MOZDEPTH)/_tests/xpcshell
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 +="
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.
94
ifndef INCLUDED_TESTS_XPCSHELL_MK #{
95
include $(topsrcdir)/config/makefiles/xpcshell.mk
98
ifndef INCLUDED_TESTS_MOCHITEST_MK #{
99
include $(topsrcdir)/config/makefiles/mochitest.mk
83
$(error Must define relativesrcdir when defining XPCSHELL_TESTS.)
87
$(DIR_INSTALL) $(wildcard $(srcdir)/$(dir)/*) $(testxpcobjdir)/$(relativesrcdir)/$(dir)
89
endef # do not remove the blank line!
91
SOLO_FILE ?= $(error Specify a test filename in SOLO_FILE when using check-interactive or check-one)
94
$(foreach dir,$(XPCSHELL_TESTS),$(_INSTALL_TESTS))
95
$(PYTHON) $(MOZILLA_DIR)/build/xpccheck.py \
97
$(topsrcdir)/$(MOZ_BUILD_APP)/test/xpcshell.ini \
98
$(addprefix $(topsrcdir)/$(relativesrcdir)/,$(XPCSHELL_TESTS))
100
testxpcsrcdir = $(MOZILLA_SRCDIR)/testing/xpcshell
102
# Execute all tests in the $(XPCSHELL_TESTS) directories.
103
# See also $(MOZILLA_DIR)/testing/testsuite-targets.mk 'xpcshell-tests' target for global execution.
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 \
114
$(LIBXUL_DIST)/bin/xpcshell \
115
$(foreach dir,$(XPCSHELL_TESTS),$(testxpcobjdir)/$(relativesrcdir)/$(dir))
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.
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) \
129
$(LIBXUL_DIST)/bin/xpcshell \
130
$(foreach dir,$(XPCSHELL_TESTS),$(testxpcobjdir)/$(relativesrcdir)/$(dir))
132
# Execute a single test, specified in $(SOLO_FILE)
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) \
143
$(LIBXUL_DIST)/bin/xpcshell \
144
$(foreach dir,$(XPCSHELL_TESTS),$(testxpcobjdir)/$(relativesrcdir)/$(dir))
146
endif # XPCSHELL_TESTS
102
148
ifdef CPP_UNIT_TESTS
242
284
OS_LDFLAGS += -MAP:$(MAPFILE)
248
OS_LDFLAGS += $(call normalizepath,$(DEFFILE))
249
EXTRA_DEPS += $(DEFFILE)
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
260
295
endif # Solaris Sun Studio C++
262
ifeq ($(HOST_OS_ARCH),WINNT)
297
ifeq (,$(filter-out WINNT WINCE,$(HOST_OS_ARCH)))
263
298
HOST_PDBFILE=$(basename $(@F)).pdb
266
# Don't build SIMPLE_PROGRAMS during the MOZ_PROFILE_GENERATE pass
267
ifdef MOZ_PROFILE_GENERATE
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)
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))
283
_OBJS = $(COBJS) $(SOBJS) $(CCOBJS) $(CPPOBJS) $(CMOBJS) $(CMMOBJS) $(ASOBJS)
284
OBJS = $(strip $(_OBJS))
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))
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)))
293
_HOST_OBJS = $(HOST_COBJS) $(HOST_CCOBJS) $(HOST_CPPOBJS) $(HOST_CMOBJS) $(HOST_CMMOBJS)
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))
327
LIBOBJS := $(addprefix \", $(OBJS))
328
LIBOBJS := $(addsuffix \", $(LIBOBJS))
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))
300
334
MDDEPFILES += $(addprefix $(MDDEPDIR)/,$(XPIDLSRCS:.idl=.h.pp) $(XPIDLSRCS:.idl=.xpt.pp))
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) \
337
367
GARBAGE_DIRS += SunWS_cache
370
ifeq ($(OS_ARCH),OpenVMS)
371
GARBAGE += $(wildcard *.*_defines)
373
VMS_SYMVEC_FILE = $(SHARED_LIBRARY:$(DLL_SUFFIX)=_symvec.opt)
375
VMS_SYMVEC_FILE_MODULE = $(MOZILLA_SRCDIR)/build/unix/vms/$(notdir $(SHARED_LIBRARY:$(DLL_SUFFIX)=_dbg_symvec.opt))
377
VMS_SYMVEC_FILE_MODULE = $(MOZILLA_SRCDIR)/build/unix/vms/$(notdir $(SHARED_LIBRARY:$(DLL_SUFFIX)=_symvec.opt))
379
VMS_SYMVEC_FILE_COMP = $(MOZILLA_SRCDIR)/build/unix/vms/component_symvec.opt
380
GARBAGE += $(VMS_SYMVEC_FILE)
382
DSO_LDOPTS := $(filter-out -auto_symvec,$(DSO_LDOPTS)) $(VMS_SYMVEC_FILE)
340
387
XPIDL_GEN_DIR = _xpidlgen
342
389
ifdef MOZ_UPDATE_XTERM
373
420
$(foreach dir,$(TOOL_DIRS),$(call SUBMAKE,$@,$(dir)))
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))
429
.PHONY: $(PARALLEL_DIRS_export) $(PARALLEL_DIRS_libs) $(PARALLEL_DIRS_tools)
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.
598
669
MAKE_TIER_SUBMAKEFILES = +$(if $(tier_$*_dirs),$(MAKE) $(addsuffix /Makefile,$(tier_$*_dirs)))
673
@$(MAKE_TIER_SUBMAKEFILES)
674
$(foreach dir,$(tier_$*_dirs),$(call SUBMAKE,export,$(dir)))
678
@$(MAKE_TIER_SUBMAKEFILES)
679
$(foreach dir,$(tier_$*_dirs),$(call SUBMAKE,libs,$(dir)))
683
@$(MAKE_TIER_SUBMAKEFILES)
684
$(foreach dir,$(tier_$*_dirs),$(call SUBMAKE,tools,$(dir)))
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)
623
include $(topsrcdir)/config/makefiles/target_export.mk
624
include $(topsrcdir)/config/makefiles/target_tools.mk
710
export:: $(PARALLEL_DIRS_export)
712
$(PARALLEL_DIRS_export): %_export: %/Makefile
713
+@$(call SUBMAKE,export,$*)
716
export:: $(SUBMAKEFILES) $(MAKE_DIRS) $(if $(XPIDLSRCS),$(IDL_DIR))
718
$(LOOP_OVER_TOOL_DIRS)
721
tools:: $(PARALLEL_DIRS_tools)
723
$(PARALLEL_DIRS_tools): %_tools: %/Makefile
724
+@$(call SUBMAKE,tools,$*)
727
tools:: $(SUBMAKEFILES) $(MAKE_DIRS)
729
ifneq (,$(strip $(TOOL_DIRS)))
730
$(foreach dir,$(TOOL_DIRS),$(call SUBMAKE,libs,$(dir)))
734
# Rule to create list of libraries for final link
740
$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_LINK_LIBS) $(STATIC_LIBRARY_NAME)
741
endif # !IS_COMPONENT
742
endif # EXPORT_LIBRARY
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))
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
638
##############################################
639
include $(topsrcdir)/config/makefiles/target_libs.mk
641
##############################################
752
GLOBAL_DEPS += Makefile Makefile.in $(DEPTH)/config/autoconf.mk $(topsrcdir)/config/config.mk
754
##############################################
756
libs:: $(PARALLEL_DIRS_libs)
758
$(PARALLEL_DIRS_libs): %_libs: %/Makefile
759
+@$(call SUBMAKE,libs,$*)
763
ifeq ($(EXPORT_LIBRARY),1)
765
EXPORT_LIBRARY = $(MOZDEPTH)/staticlib/components
767
EXPORT_LIBRARY = $(MOZDEPTH)/staticlib
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))
773
endif # EXPORT_LIBRARY
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
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
783
$(error Shipping static component libs makes no sense.)
785
$(call install_cmd,$(IFLAGS1) $(LIBRARY) $(DIST)/lib)
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)"
797
ifdef BEOS_ADDON_WORKAROUND
798
( cd $(FINAL_TARGET)/components && $(CC) -nostart -o $(SHARED_LIBRARY).stub $(SHARED_LIBRARY) )
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)
806
$(call install_cmd,$(IFLAGS2) $(SHARED_LIBRARY) $(DIST)/lib)
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) )
813
endif # SHARED_LIBRARY
815
$(call install_cmd,$(IFLAGS2) $(PROGRAM) $(FINAL_TARGET))
817
ifdef SIMPLE_PROGRAMS
818
$(call install_cmd,$(IFLAGS2) $(SIMPLE_PROGRAMS) $(FINAL_TARGET))
821
$(call install_cmd,$(IFLAGS2) $(HOST_PROGRAM) $(DIST)/host/bin)
823
ifdef HOST_SIMPLE_PROGRAMS
824
$(call install_cmd,$(IFLAGS2) $(HOST_SIMPLE_PROGRAMS) $(DIST)/host/bin)
827
$(call install_cmd,$(IFLAGS1) $(HOST_LIBRARY) $(DIST)/host/lib)
829
endif # !NO_DIST_INSTALL
832
##############################################
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))
663
$(PYTHON) $(topsrcdir)/build/win32/pgomerge.py \
855
$(PYTHON) $(MOZILLA_SRCDIR)/build/win32/pgomerge.py \
664
856
$(PROGRAM:$(BIN_SUFFIX)=) $(DIST)/bin
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
670
862
endif # SHARED_LIBRARY || PROGRAM
672
endif # MOZ_PROFILE_USE
673
ifdef MOZ_PROFILE_GENERATE
674
# Clean up profiling data during PROFILE_GENERATE phase
676
ifeq ($(OS_ARCH)_$(GNU_CC), WINNT_)
677
$(foreach pgd,$(wildcard *.pgd),pgomgr -clear $(pgd);)
685
ifneq (,$(MOZ_PROFILE_GENERATE)$(MOZ_PROFILE_USE))
687
# Force rebuilding libraries and programs in both passes because each
688
# pass uses different object files.
689
$(PROGRAM) $(SHARED_LIBRARY) $(LIBRARY): FORCE
864
endif # MOZ_PROFILE_GENERATE || MOZ_PROFILE_USE
693
865
endif # NO_PROFILE_GUIDED_OPTIMIZE
695
867
##############################################
698
$(MAKE) -C $(topsrcdir) -f client.mk checkout
870
$(PYTHON) $(topsrcdir)/client.py checkout
700
872
clean clobber realclean clobber_all:: $(SUBMAKEFILES)
701
873
-$(RM) $(ALL_TRASH)
756
931
ifdef MOZ_POST_PROGRAM_COMMAND
757
932
$(MOZ_POST_PROGRAM_COMMAND) $@
934
ifeq ($(OS_ARCH),BeOS)
935
ifdef BEOS_PROGRAM_RESOURCE
936
xres -o $@ $(BEOS_PROGRAM_RESOURCE)
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)
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 \
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.
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
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); \
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); \
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))
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,$@)
898
1104
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
899
1105
ifdef MSMANIFEST_TOOL
956
1162
endif # MOZ_AUTO_DEPS
958
$(OBJS) $(HOST_OBJS): $(GLOBAL_DEPS)
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)
963
1167
$(ELOG) $(HOST_CC) $(HOST_OUTOPTION)$@ -c $(HOST_CFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
965
$(HOST_CPPOBJS): host_%.$(OBJ_SUFFIX): %.cpp
967
$(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
969
$(HOST_CCOBJS): host_%.$(OBJ_SUFFIX): %.cc
971
$(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
973
$(HOST_CMOBJS): host_%.$(OBJ_SUFFIX): %.m
1169
host_%.$(OBJ_SUFFIX): %.cpp $(GLOBAL_DEPS)
1171
$(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
1173
host_%.$(OBJ_SUFFIX): %.cc $(GLOBAL_DEPS)
1175
$(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
1177
host_%.$(OBJ_SUFFIX): %.m $(GLOBAL_DEPS)
975
1179
$(ELOG) $(HOST_CC) $(HOST_OUTOPTION)$@ -c $(HOST_CFLAGS) $(HOST_CMFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
977
$(HOST_CMMOBJS): host_%.$(OBJ_SUFFIX): %.mm
1181
host_%.$(OBJ_SUFFIX): %.mm $(GLOBAL_DEPS)
979
1183
$(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(HOST_CMMFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
981
$(COBJS): %.$(OBJ_SUFFIX): %.c
1185
%:: %.c $(GLOBAL_DEPS)
1187
@$(MAKE_DEPS_AUTO_CC)
1188
$(ELOG) $(CC) $(CFLAGS) $(LDFLAGS) $(OUTOPTION)$@ $(_VPATH_SRCS)
1190
%.$(OBJ_SUFFIX): %.c $(GLOBAL_DEPS)
983
1192
@$(MAKE_DEPS_AUTO_CC)
984
1193
$(ELOG) $(CC) $(OUTOPTION)$@ -c $(COMPILE_CFLAGS) $(_VPATH_SRCS)
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
990
$(ELOG) $(MOC) $(DEFINES) $(ACDEFINES) $< $(OUTOPTION)$@
993
$(ELOG) $(MOC) $(DEFINES) $(ACDEFINES) $(_VPATH_SRCS:.cc=.h) $(OUTOPTION)$@
996
$(ELOG) $(RCC) -name $* $< $(OUTOPTION)$@
999
1196
# The AS_DASH_C_FLAG is needed cause not all assemblers (Solaris) accept
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)
1005
$(SOBJS): %.$(OBJ_SUFFIX): %.S
1202
%.$(OBJ_SUFFIX): %.S $(GLOBAL_DEPS)
1006
1203
$(AS) -o $@ $(ASFLAGS) -c $<
1205
%:: %.cpp $(GLOBAL_DEPS)
1206
@$(MAKE_DEPS_AUTO_CXX)
1207
$(CCC) $(OUTOPTION)$@ $(CXXFLAGS) $(_VPATH_SRCS) $(LDFLAGS)
1009
1210
# Please keep the next two rules in sync.
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)
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
1091
###############################################################################
1093
###############################################################################
1094
ifneq (,$(filter OS2 WINNT,$(OS_ARCH)))
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)))
1101
SPACE := $(EMPTY) $(EMPTY)
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)
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)))
1115
1309
normalizepath = $(1)
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)"
1123
_JAVA_SOURCEPATH = ".$(SEP)$(_srcdir)"
1126
ifdef JAVA_CLASSPATH
1127
CP = $(subst $(SPACE),$(SEP),$(call normalizepath,$(strip $(JAVA_CLASSPATH))))
1128
_JAVA_CLASSPATH = ".$(SEP)$(CP)"
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)
1141
$(JAVA_LIBRARY): $(addprefix $(_JAVA_DIR)/,$(JAVA_SRCS:.java=.class)) $(GLOBAL_DEPS)
1142
$(JAR) cf $@ -C $(_JAVA_DIR) .
1144
GARBAGE_DIRS += $(_JAVA_DIR)
1146
1312
###############################################################################
1147
1313
# Update Makefiles
1148
1314
###############################################################################
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
1319
CYGWIN_TOPSRCDIR = -nowrap -p $(topsrcdir) -wrap
1151
1322
Makefile: Makefile.in
1152
1323
@$(PYTHON) $(DEPTH)/config.status -n --file=Makefile
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=$@
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
1170
$(DEPTH)/config/autoconf.mk: $(topsrcdir)/config/autoconf.mk.in
1171
$(PYTHON) $(DEPTH)/config.status -n --file=$(DEPTH)/config/autoconf.mk
1174
1338
###############################################################################
1175
1339
# Bunch of things that extend the 'export' rule (in order):
1176
1340
###############################################################################
1271
1450
$(LIBXUL_DIST)/sdk/bin/xpidl.py \
1275
$(call mkdir_deps,$(XPIDL_GEN_DIR)) \
1276
$(call mkdir_deps,$(MDDEPDIR)) \
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)
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
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)
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 $@
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"
1312
1488
GARBAGE_DIRS += $(XPIDL_GEN_DIR)
1317
ifndef INCLUDED_XPIDL_MK
1318
include $(topsrcdir)/config/makefiles/xpidl.mk
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) $^)
1498
export:: $(patsubst %.idl,$(XPIDL_GEN_DIR)/%.h, $(XPIDLSRCS)) $(DIST)/include
1499
$(call install_cmd,$(IFLAGS1) $^)
1500
endif # NO_DIST_INSTALL
1322
1507
# General rules for exporting idl files.
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
1324
1514
$(NSINSTALL) -D $@
1326
1516
export-idl:: $(SUBMAKEFILES) $(MAKE_DIRS)
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
1550
$(NSINSTALL) -D $(FINAL_TARGET)/components; \
1552
fname=`basename $$i`; \
1553
dest=$(FINAL_TARGET)/components/$${fname}; \
1555
$(PYTHON) $(MOZILLA_SRCDIR)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \
1363
1560
EXTRA_MANIFESTS = $(filter %.manifest,$(EXTRA_COMPONENTS) $(EXTRA_PP_COMPONENTS))
1364
1561
ifneq (,$(EXTRA_MANIFESTS))
1365
libs:: $(call mkdir_deps,$(FINAL_TARGET))
1366
1563
$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest $(patsubst %,"manifest components/%",$(notdir $(EXTRA_MANIFESTS)))
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
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)
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
1389
################################################################################
1390
# Copy testing-only JS modules to appropriate destination.
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.
1396
ifdef TESTING_JS_MODULES
1397
testmodulesdir = $(DEPTH)/_tests/modules/$(TESTING_JS_MODULE_DIR)
1399
GENERATED_DIRS += $(testmodulesdir)
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
1580
$(NSINSTALL) -D $(FINAL_TARGET)/modules; \
1582
dest=$(FINAL_TARGET)/modules/`basename $$i`; \
1584
$(PYTHON) $(MOZILLA_SRCDIR)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \
1456
1639
ifneq ($(DIST_FILES),)
1457
DIST_FILES_PATH := $(FINAL_TARGET)
1458
DIST_FILES_FLAGS := $(XULAPP_DEFINES)
1459
PP_TARGETS += DIST_FILES
1643
libs:: $(DIST_FILES) $(DIST)/bin
1645
for f in $(DIST_FILES); do \
1646
dest=$(FINAL_TARGET)/`basename $$f`; \
1648
$(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py \
1649
$(XULAPP_DEFINES) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) \
1650
$(srcdir)/$$f > $$dest; \
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)
1657
for f in $(DIST_CHROME_FILES); do \
1658
dest=$(FINAL_TARGET)/chrome/`basename $$f`; \
1660
$(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py \
1661
$(XULAPP_DEFINES) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) \
1662
$(srcdir)/$$f > $$dest; \
1468
1666
ifneq ($(XPI_PKGNAME),)
1713
ifneq (,$(filter flat symlink,$(MOZ_CHROME_FILE_FORMAT)))
1714
_JAR_REGCHROME_DISABLE_JAR=1
1716
_JAR_REGCHROME_DISABLE_JAR=0
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)
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)
1515
1730
#############################################################################
1516
1731
# Dependency system
1517
1732
#############################################################################
1621
1838
################################################################################
1622
# Install/copy rules
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.
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}
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)))\
1642
$(foreach file,$($(category)_EXECUTABLES),\
1643
$(eval $(call install_file_template,$(file),$($(category)_DEST),$(IFLAGS2)))\
1647
################################################################################
1648
# Preprocessing rules
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:
1654
# FOO_PATH := target_path
1655
# FOO_FLAGS := -Dsome_flag
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)
1663
$$(PYTHON) $$(topsrcdir)/config/Preprocessor.py $(3) $$(DEFINES) $$(ACDEFINES) $$(XULPPFLAGS) $$< > $$@
1664
libs:: $(2)/$(notdir $(1))
1667
$(foreach category,$(PP_TARGETS),\
1668
$(foreach file,$($(category)),\
1669
$(eval $(call preprocess_file_template,$(file),$($(category)_PATH),$($(category)_FLAGS)))\
1673
################################################################################
1674
1839
# Special gmake rules.
1675
1840
################################################################################
1710
1875
$(LOOP_OVER_PARALLEL_DIRS)
1711
1876
$(LOOP_OVER_DIRS)
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
1885
@$(foreach tier,$(TIERS),echo '$(tier):'; echo ' dirs: $(tier_$(tier)_dirs)'; echo ' staticdirs: $(tier_$(tier)_staticdirs)'; )
1897
@$(MOZILLA_SRCDIR)/build/unix/print-depth-path.sh
1900
@$(MOZILLA_SRCDIR)/build/package/rpm/print-module-name.sh
1902
echo-module-filelist:
1903
@$(MOZILLA_SRCDIR)/build/package/rpm/print-module-filelist.sh
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 --------------------------------------------------------------------------------
1923
$(LOOP_OVER_PARALLEL_DIRS)
1927
@echo "MOZ_BUILD_ROOT = $(MOZ_BUILD_ROOT)"
1928
@echo "MOZ_WIDGET_TOOLKIT = $(MOZ_WIDGET_TOOLKIT)"
1930
@echo "CXX = $(CXX)"
1931
@echo "CCC = $(CCC)"
1932
@echo "CPP = $(CPP)"
1935
@echo "IMPLIB = $(IMPLIB)"
1936
@echo "FILTER = $(FILTER)"
1937
@echo "MKSHLIB = $(MKSHLIB)"
1938
@echo "MKCSHLIB = $(MKCSHLIB)"
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)"
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)"
1978
@echo "Build Modules = $(BUILD_MODULES)"
1979
@echo "Module dirs = $(BUILD_MODULE_DIRS)"