78
78
# ELOG prints out failed command when building silently (gmake -s).
79
ifneq (,$(findstring -s,$(MAKEFLAGS)))
79
ifneq (,$(findstring s, $(filter-out --%, $(MAKEFLAGS))))
80
80
ELOG := $(EXEC) sh $(BUILD_TOOLS)/print-failed-commands.sh
85
85
ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH)))
87
_LIBNAME_RELATIVE_PATHS=1
91
ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH)))
92
_VPATH_SRCS = $(if $(filter /%,$<),$<,$(CURDIR)/$<)
86
_VPATH_SRCS = $(abspath $<)
111
105
# expands to $(DIST)/lib/foo.lib on platforms with import libs and
112
106
# -lfoo otherwise
114
ifdef _LIBNAME_RELATIVE_PATHS
115
108
EXPAND_LIBNAME = $(foreach lib,$(1),$(LIB_PREFIX)$(lib).$(LIB_SUFFIX))
116
109
EXPAND_LIBNAME_PATH = $(foreach lib,$(1),$(2)/$(LIB_PREFIX)$(lib).$(LIB_SUFFIX))
117
110
EXPAND_MOZLIBNAME = $(foreach lib,$(1),$(DIST)/lib/$(LIB_PREFIX)$(lib).$(LIB_SUFFIX))
119
EXPAND_LIBNAME = $(addprefix -l,$(1))
120
EXPAND_LIBNAME_PATH = -L$(2) $(addprefix -l,$(1))
121
EXPAND_MOZLIBNAME = $(addprefix -l,$(1))
124
112
ifdef EXTRA_DSO_LIBS
125
113
EXTRA_DSO_LIBS := $(call EXPAND_MOZLIBNAME,$(EXTRA_DSO_LIBS))
129
117
# Testing frameworks support
130
118
################################################################################
120
testxpcobjdir = $(DEPTH)/_tests/xpcshell
132
122
ifdef ENABLE_TESTS
134
124
ifdef XPCSHELL_TESTS
136
$(error Must define MODULE when defining XPCSHELL_TESTS.)
125
ifndef relativesrcdir
126
$(error Must define relativesrcdir when defining XPCSHELL_TESTS.)
139
testxpcobjdir = $(DEPTH)/_tests/xpcshell
141
129
# Test file installation
142
130
ifneq (,$(filter WINNT os2-emx,$(HOST_OS_ARCH)))
143
131
# Windows and OS/2 nsinstall can't recursively copy directories, so use nsinstall.py
157
145
$(foreach dir,$(XPCSHELL_TESTS),$(_INSTALL_TESTS))
158
$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/build-list.pl \
159
$(testxpcobjdir)/all-test-dirs.list \
160
$(addprefix $(MODULE)/,$(XPCSHELL_TESTS))
146
$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py \
147
$(testxpcobjdir)/all-test-dirs.list \
148
$(addprefix $(relativesrcdir)/,$(XPCSHELL_TESTS))
162
150
testxpcsrcdir = $(topsrcdir)/testing/xpcshell
165
153
# See also testsuite-targets.mk 'xpcshell-tests' target for global execution.
167
155
$(PYTHON) -u $(topsrcdir)/config/pythonpath.py \
168
-I$(topsrcdir)/build \
169
$(testxpcsrcdir)/runxpcshelltests.py \
170
--symbols-path=$(DIST)/crashreporter-symbols \
171
$(DIST)/bin/xpcshell \
172
$(foreach dir,$(XPCSHELL_TESTS),$(testxpcobjdir)/$(MODULE)/$(dir))
156
-I$(topsrcdir)/build \
157
$(testxpcsrcdir)/runxpcshelltests.py \
158
--symbols-path=$(DIST)/crashreporter-symbols \
160
$(DIST)/bin/xpcshell \
161
$(foreach dir,$(XPCSHELL_TESTS),$(testxpcobjdir)/$(relativesrcdir)/$(dir))
174
163
# Execute a single test, specified in $(SOLO_FILE), but don't automatically
175
164
# start the test. Instead, present the xpcshell prompt so the user can
176
165
# attach a debugger and then start the test.
177
166
check-interactive:
178
167
$(PYTHON) -u $(topsrcdir)/config/pythonpath.py \
179
-I$(topsrcdir)/build \
180
$(testxpcsrcdir)/runxpcshelltests.py \
181
--symbols-path=$(DIST)/crashreporter-symbols \
182
--test-path=$(SOLO_FILE) \
184
$(DIST)/bin/xpcshell \
185
$(foreach dir,$(XPCSHELL_TESTS),$(testxpcobjdir)/$(MODULE)/$(dir))
168
-I$(topsrcdir)/build \
169
$(testxpcsrcdir)/runxpcshelltests.py \
170
--symbols-path=$(DIST)/crashreporter-symbols \
171
--test-path=$(SOLO_FILE) \
172
--profile-name=$(MOZ_APP_NAME) \
174
$(DIST)/bin/xpcshell \
175
$(foreach dir,$(XPCSHELL_TESTS),$(testxpcobjdir)/$(relativesrcdir)/$(dir))
187
177
# Execute a single test, specified in $(SOLO_FILE)
189
179
$(PYTHON) -u $(topsrcdir)/config/pythonpath.py \
190
-I$(topsrcdir)/build \
191
$(testxpcsrcdir)/runxpcshelltests.py \
192
--symbols-path=$(DIST)/crashreporter-symbols \
193
--test-path=$(SOLO_FILE) \
194
$(DIST)/bin/xpcshell \
195
$(foreach dir,$(XPCSHELL_TESTS),$(testxpcobjdir)/$(MODULE)/$(dir))
180
-I$(topsrcdir)/build \
181
$(testxpcsrcdir)/runxpcshelltests.py \
182
--symbols-path=$(DIST)/crashreporter-symbols \
183
--test-path=$(SOLO_FILE) \
184
--profile-name=$(MOZ_APP_NAME) \
187
$(DIST)/bin/xpcshell \
188
$(foreach dir,$(XPCSHELL_TESTS),$(testxpcobjdir)/$(relativesrcdir)/$(dir))
197
190
endif # XPCSHELL_TESTS
231
224
ifdef STATIC_LIBRARY_NAME
232
ifneq (,$(filter OS2 WINNT WINCE,$(OS_ARCH)))
234
STATIC_LIBRARY_NAME := $(SHORT_LIBNAME)
235
SHARED_LIBRARY_NAME := $(SHORT_LIBNAME)
238
LIBRARY := $(LIB_PREFIX)$(STATIC_LIBRARY_NAME).$(LIB_SUFFIX)
225
_LIBRARY := $(LIB_PREFIX)$(STATIC_LIBRARY_NAME).$(LIB_SUFFIX)
226
# Only build actual library if it is installed in DIST/lib or SDK
227
ifeq (,$(SDK_LIBRARY)$(DIST_INSTALL)$(NO_EXPAND_LIBS))
228
LIBRARY := $(_LIBRARY).$(LIBS_DESC_SUFFIX)
230
LIBRARY := $(_LIBRARY) $(_LIBRARY).$(LIBS_DESC_SUFFIX)
239
232
endif # STATIC_LIBRARY_NAME
350
349
ifdef ENABLE_CXX_EXCEPTIONS
352
CXXFLAGS += -fexceptions
354
ifeq (,$(filter-out 1200 1300 1310,$(_MSC_VER)))
350
CXXFLAGS += $(MOZ_EXCEPTIONS_FLAGS_ON) -DMOZ_CPP_EXCEPTIONS=1
360
351
endif # ENABLE_CXX_EXCEPTIONS
354
ifeq ($(SOLARIS_SUNPRO_CXX),1)
355
ifeq (86,$(findstring 86,$(OS_TEST)))
356
OS_LDFLAGS += -M $(topsrcdir)/config/solaris_ia32.map
358
endif # Solaris Sun Studio C++
363
360
ifeq (,$(filter-out WINNT WINCE,$(HOST_OS_ARCH)))
364
361
HOST_PDBFILE=$(basename $(@F)).pdb
373
370
$(JRI_STUB_CFILES) \
374
371
$(addsuffix .$(OBJ_SUFFIX), $(JMC_GEN)) \
375
372
$(CSRCS:.c=.$(OBJ_SUFFIX)) \
373
$(SSRCS:.S=.$(OBJ_SUFFIX)) \
376
374
$(patsubst %.cc,%.$(OBJ_SUFFIX),$(CPPSRCS:.cpp=.$(OBJ_SUFFIX))) \
377
375
$(CMSRCS:.m=.$(OBJ_SUFFIX)) \
378
376
$(CMMSRCS:.mm=.$(OBJ_SUFFIX)) \
436
434
GARBAGE_DIRS += SunWS_cache
439
ifeq ($(OS_ARCH),OpenVMS)
440
GARBAGE += $(wildcard *.*_defines)
442
VMS_SYMVEC_FILE = $(SHARED_LIBRARY:$(DLL_SUFFIX)=_symvec.opt)
444
VMS_SYMVEC_FILE_MODULE = $(topsrcdir)/build/unix/vms/$(notdir $(SHARED_LIBRARY:$(DLL_SUFFIX)=_dbg_symvec.opt))
446
VMS_SYMVEC_FILE_MODULE = $(topsrcdir)/build/unix/vms/$(notdir $(SHARED_LIBRARY:$(DLL_SUFFIX)=_symvec.opt))
448
VMS_SYMVEC_FILE_COMP = $(topsrcdir)/build/unix/vms/component_symvec.opt
449
GARBAGE += $(VMS_SYMVEC_FILE)
451
DSO_LDOPTS := $(filter-out -auto_symvec,$(DSO_LDOPTS)) $(VMS_SYMVEC_FILE)
456
437
XPIDL_GEN_DIR = _xpidlgen
458
439
ifdef MOZ_UPDATE_XTERM
532
513
ifneq ($(CPPSRCS)$(CMMSRCS),)
533
514
CPP_PROG_LINK = 1
537
# Make sure to wrap static libs inside linker specific flags to turn on & off
538
# inclusion of all symbols inside the static libs
540
ifndef NO_LD_ARCHIVE_FLAGS
541
ifdef SHARED_LIBRARY_LIBS
542
EXTRA_DSO_LDOPTS := $(MKSHLIB_FORCE_ALL) $(SHARED_LIBRARY_LIBS) $(MKSHLIB_UNFORCE_ALL) $(EXTRA_DSO_LDOPTS)
516
ifneq ($(HOST_CPPSRCS)$(HOST_CMMSRCS),)
517
HOST_CPP_PROG_LINK = 1
817
791
ifdef EXPORT_LIBRARY
818
792
ifdef IS_COMPONENT
819
793
ifdef BUILD_STATIC_LIBS
820
@$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/build-list.pl $(FINAL_LINK_COMPS) $(STATIC_LIBRARY_NAME)
794
@$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_LINK_COMPS) $(STATIC_LIBRARY_NAME)
821
795
ifdef MODULE_NAME
822
@$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/build-list.pl $(FINAL_LINK_COMP_NAMES) $(MODULE_NAME)
796
@$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_LINK_COMP_NAMES) $(MODULE_NAME)
824
798
endif # BUILD_STATIC_LIBS
826
$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/build-list.pl $(FINAL_LINK_LIBS) $(STATIC_LIBRARY_NAME)
800
$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_LINK_LIBS) $(STATIC_LIBRARY_NAME)
827
801
endif # IS_COMPONENT
828
802
endif # EXPORT_LIBRARY
829
803
endif # LIBRARY_NAME
805
ifneq (,$(filter-out %.$(LIB_SUFFIX),$(SHARED_LIBRARY_LIBS)))
806
$(error SHARED_LIBRARY_LIBS must contain .$(LIB_SUFFIX) files only)
831
809
# Create dependencies on static (and shared EXTRA_DSO_LIBS) libraries
832
LIBS_DEPS = $(filter %.$(LIB_SUFFIX), $(LIBS))
833
HOST_LIBS_DEPS = $(filter %.$(LIB_SUFFIX), $(HOST_LIBS))
834
DSO_LDOPTS_DEPS = $(EXTRA_DSO_LIBS) $(filter %.$(LIB_SUFFIX), $(EXTRA_DSO_LDOPTS))
810
DO_EXPAND_LIBS = $(foreach f,$(1),$(if $(filter %.$(LIB_SUFFIX),$(f)),$(if $(wildcard $(f).$(LIBS_DESC_SUFFIX)),$(f).$(LIBS_DESC_SUFFIX),$(if $(wildcard $(f)),$(f)))))
811
LIBS_DEPS = $(call DO_EXPAND_LIBS,$(filter %.$(LIB_SUFFIX),$(LIBS)))
812
SHARED_LIBRARY_LIBS_DEPS = $(call DO_EXPAND_LIBS,$(SHARED_LIBRARY_LIBS))
813
HOST_LIBS_DEPS = $(filter %.$(LIB_SUFFIX),$(HOST_LIBS))
814
DSO_LDOPTS_DEPS = $(call DO_EXPAND_LIBS,$(EXTRA_DSO_LIBS) $(filter %.$(LIB_SUFFIX), $(EXTRA_DSO_LDOPTS)))
836
# Dependancies which, if modified, should cause everything to rebuild
816
# Dependencies which, if modified, should cause everything to rebuild
837
817
GLOBAL_DEPS += Makefile Makefile.in $(DEPTH)/config/autoconf.mk $(topsrcdir)/config/config.mk
839
819
##############################################
844
824
+@$(call SUBMAKE,libs,$*)
828
ifeq ($(EXPORT_LIBRARY),1)
830
EXPORT_LIBRARY = $(DEPTH)/staticlib/components
832
EXPORT_LIBRARY = $(DEPTH)/staticlib
835
# If EXPORT_LIBRARY has a value, we'll be installing there. We also need to cleanup there
836
GARBAGE += $(foreach lib,$(LIBRARY),$(EXPORT_LIBRARY)/$(lib))
838
endif # EXPORT_LIBRARY
847
840
libs:: $(SUBMAKEFILES) $(MAKE_DIRS) $(HOST_LIBRARY) $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(HOST_PROGRAM) $(PROGRAM) $(HOST_SIMPLE_PROGRAMS) $(SIMPLE_PROGRAMS) $(JAVA_LIBRARY)
848
841
ifndef NO_DIST_INSTALL
850
843
ifdef EXPORT_LIBRARY # Stage libs that will be linked into a static build
852
$(INSTALL) $(IFLAGS1) $(LIBRARY) $(DEPTH)/staticlib/components
854
$(INSTALL) $(IFLAGS1) $(LIBRARY) $(DEPTH)/staticlib
844
$(INSTALL) $(IFLAGS1) $(LIBRARY) $(EXPORT_LIBRARY)
856
845
endif # EXPORT_LIBRARY
857
846
ifdef DIST_INSTALL
858
847
ifdef IS_COMPONENT
866
855
ifdef IS_COMPONENT
867
856
$(INSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(FINAL_TARGET)/components
868
857
$(ELF_DYNSTR_GC) $(FINAL_TARGET)/components/$(SHARED_LIBRARY)
869
@$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/build-list.pl $(FINAL_TARGET)/components/components.list $(SHARED_LIBRARY)
870
ifdef BEOS_ADDON_WORKAROUND
871
( cd $(FINAL_TARGET)/components && $(CC) -nostart -o $(SHARED_LIBRARY).stub $(SHARED_LIBRARY) )
858
ifndef NO_COMPONENTS_MANIFEST
859
@$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest "manifest components/components.manifest"
860
@$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/components/components.manifest "binary-component $(SHARED_LIBRARY)"
873
862
else # ! IS_COMPONENT
874
863
ifneq (,$(filter OS2 WINNT WINCE,$(OS_ARCH)))
910
896
##############################################
912
898
ifndef NO_PROFILE_GUIDED_OPTIMIZE
913
ifneq (,$(MOZ_PROFILE_GENERATE)$(MOZ_PROFILE_USE))
914
ifeq ($(OS_ARCH)_$(GNU_CC)$(INTERNAL_TOOLS), WINNT_)
915
# Force re-linking when building with PGO, since
916
# the MSVC linker does all the work. We force re-link
917
# in both stages so you can do depend builds with PGO.
919
$(SHARED_LIBRARY): FORCE
925
899
ifdef MOZ_PROFILE_USE
900
ifeq ($(OS_ARCH)_$(GNU_CC), WINNT_)
901
# When building with PGO, we have to make sure to re-link
902
# in the MOZ_PROFILE_USE phase if we linked in the
903
# MOZ_PROFILE_GENERATE phase. We'll touch this pgo.relink
904
# file in the link rule in the GENERATE phase to indicate
905
# that we need a relink.
907
$(SHARED_LIBRARY): pgo.relink
910
$(PROGRAM): pgo.relink
926
913
# In the second pass, we need to merge the pgc files into the pgd file.
927
914
# The compiler would do this for us automatically if they were in the right
928
915
# place, but they're in dist/bin.
932
919
$(PYTHON) $(topsrcdir)/build/win32/pgomerge.py \
933
$(PROGRAM:$(BIN_SUFFIX)=) $(DIST)/bin
920
$(PROGRAM:$(BIN_SUFFIX)=) $(DIST)/$(MOZ_APP_NAME)
935
922
ifdef SHARED_LIBRARY
936
923
$(PYTHON) $(topsrcdir)/build/win32/pgomerge.py \
937
$(SHARED_LIBRARY_NAME) $(DIST)/bin
940
endif # MOZ_PROFILE_USE
924
$(SHARED_LIBRARY_NAME) $(DIST)/$(MOZ_APP_NAME)
926
endif # SHARED_LIBRARY || PROGRAM
942
928
endif # MOZ_PROFILE_GENERATE || MOZ_PROFILE_USE
943
929
endif # NO_PROFILE_GUIDED_OPTIMIZE
948
934
$(MAKE) -C $(topsrcdir) -f client.mk checkout
950
936
clean clobber realclean clobber_all:: $(SUBMAKEFILES)
952
-rm -rf $(ALL_TRASH_DIRS)
938
-$(RM) -r $(ALL_TRASH_DIRS)
953
939
$(foreach dir,$(PARALLEL_DIRS) $(DIRS) $(STATIC_DIRS) $(TOOL_DIRS),-$(call SUBMAKE,$@,$(dir)))
955
941
distclean:: $(SUBMAKEFILES)
956
942
$(foreach dir,$(PARALLEL_DIRS) $(DIRS) $(STATIC_DIRS) $(TOOL_DIRS),-$(call SUBMAKE,$@,$(dir)))
957
-rm -rf $(ALL_TRASH_DIRS)
958
-rm -f $(ALL_TRASH) \
943
-$(RM) -r $(ALL_TRASH_DIRS)
944
-$(RM) $(ALL_TRASH) \
959
945
Makefile .HSancillary \
960
946
$(wildcard *.$(OBJ_SUFFIX)) $(wildcard *.ho) $(wildcard host_*.o*) \
961
947
$(wildcard *.$(LIB_SUFFIX)) $(wildcard *$(DLL_SUFFIX)) \
962
948
$(wildcard *.$(IMPORT_LIB_SUFFIX))
963
949
ifeq ($(OS_ARCH),OS2)
964
-rm -f $(PROGRAM:.exe=.map)
950
-$(RM) $(PROGRAM:.exe=.map)
969
955
find $(topsrcdir) -name dist -prune -o \( -name '*.[hc]' -o -name '*.cp' -o -name '*.cpp' -o -name '*.idl' \) -print | $(TAG_PROGRAM)
973
959
# creates OBJS, links with LIBS to create Foo
975
961
$(PROGRAM): $(PROGOBJS) $(LIBS_DEPS) $(EXTRA_DEPS) $(EXE_DEF_FILE) $(RESFILE) $(GLOBAL_DEPS)
977
963
ifeq (WINCE,$(OS_ARCH))
978
$(LD) -NOLOGO -OUT:$@ $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(PROGOBJS) $(RESFILE) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
964
$(EXPAND_LD) -NOLOGO -OUT:$@ $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(PROGOBJS) $(RESFILE) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
980
966
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
981
$(LD) -NOLOGO -OUT:$@ -PDB:$(LINK_PDBFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(PROGOBJS) $(RESFILE) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
967
$(EXPAND_LD) -NOLOGO -OUT:$@ -PDB:$(LINK_PDBFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(PROGOBJS) $(RESFILE) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
982
968
ifdef MSMANIFEST_TOOL
983
969
@if test -f $@.manifest; then \
984
970
if test -f "$(srcdir)/$@.manifest"; then \
993
979
mt.exe -NOLOGO -MANIFEST "$(win_srcdir)/$@.manifest" -OUTPUTRESOURCE:$@\;1; \
995
981
endif # MSVC with manifest tool
982
ifdef MOZ_PROFILE_GENERATE
983
# touch it a few seconds into the future to work around FAT's
984
# 2-second granularity
985
touch -t `date +%Y%m%d%H%M.%S -d "now+5seconds"` pgo.relink
987
else # !WINNT || GNU_CC
997
988
ifeq ($(CPP_PROG_LINK),1)
998
$(CCC) -o $@ $(CXXFLAGS) $(WRAP_MALLOC_CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(SOLARIS_JEMALLOC_LDFLAGS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(WRAP_MALLOC_LIB) $(PROFILER_LIBS) $(EXE_DEF_FILE)
989
$(EXPAND_CCC) -o $@ $(CXXFLAGS) $(WRAP_MALLOC_CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(WRAP_MALLOC_LIB) $(EXE_DEF_FILE)
999
990
else # ! CPP_PROG_LINK
1000
$(CC) -o $@ $(CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(SOLARIS_JEMALLOC_LDFLAGS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE)
991
$(EXPAND_CC) -o $@ $(CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE)
1001
992
endif # CPP_PROG_LINK
1002
993
endif # WINNT && !GNU_CC
1024
1009
ifdef MSMANIFEST_TOOL
1025
1010
@if test -f $@.manifest; then \
1026
1011
if test -f "$(srcdir)/$@.manifest"; then \
1012
echo "Embedding manifest from $(srcdir)/$@.manifest and $@.manifest"; \
1027
1013
mt.exe -NOLOGO -MANIFEST "$(win_srcdir)/$@.manifest" $@.manifest -OUTPUTRESOURCE:$@\;1; \
1015
echo "Embedding manifest from $@.manifest"; \
1029
1016
mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
1031
rm -f $@.manifest; \
1018
elif test -f "$(srcdir)/$@.manifest"; then \
1019
echo "Embedding manifest from $(srcdir)/$@.manifest"; \
1020
mt.exe -NOLOGO -MANIFEST "$(win_srcdir)/$@.manifest" -OUTPUTRESOURCE:$@\;1; \
1033
1022
endif # MSVC with manifest tool
1035
ifeq ($(CPP_PROG_LINK),1)
1024
ifeq ($(HOST_CPP_PROG_LINK),1)
1036
1025
$(HOST_CXX) -o $@ $(HOST_CXXFLAGS) $(HOST_LDFLAGS) $(HOST_PROGOBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
1038
1027
$(HOST_CC) -o $@ $(HOST_CFLAGS) $(HOST_LDFLAGS) $(HOST_PROGOBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
1039
endif # CPP_PROG_LINK
1028
endif # HOST_CPP_PROG_LINK
1051
1040
$(SIMPLE_PROGRAMS): %$(BIN_SUFFIX): %.$(OBJ_SUFFIX) $(LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
1052
1041
ifeq (WINCE,$(OS_ARCH))
1053
$(LD) -nologo -entry:main -out:$@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
1042
$(EXPAND_LD) -nologo -entry:mainACRTStartup -out:$@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
1055
1044
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
1056
$(LD) -nologo -out:$@ -pdb:$(LINK_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
1045
$(EXPAND_LD) -nologo -out:$@ -pdb:$(LINK_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
1057
1046
ifdef MSMANIFEST_TOOL
1058
1047
@if test -f $@.manifest; then \
1059
1048
mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
1062
1051
endif # MSVC with manifest tool
1064
1053
ifeq ($(CPP_PROG_LINK),1)
1065
$(CCC) $(WRAP_MALLOC_CFLAGS) $(CXXFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(SOLARIS_JEMALLOC_LDFLAGS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(WRAP_MALLOC_LIB) $(PROFILER_LIBS) $(BIN_FLAGS)
1054
$(EXPAND_CCC) $(WRAP_MALLOC_CFLAGS) $(CXXFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(WRAP_MALLOC_LIB) $(BIN_FLAGS)
1067
$(CC) $(WRAP_MALLOC_CFLAGS) $(CFLAGS) $(OUTOPTION)$@ $< $(WIN32_EXE_LDFLAGS) $(SOLARIS_JEMALLOC_LDFLAGS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(WRAP_MALLOC_LIB) $(PROFILER_LIBS) $(BIN_FLAGS)
1056
$(EXPAND_CC) $(WRAP_MALLOC_CFLAGS) $(CFLAGS) $(OUTOPTION)$@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(WRAP_MALLOC_LIB) $(BIN_FLAGS)
1068
1057
endif # CPP_PROG_LINK
1069
1058
endif # WINNT && !GNU_CC
1116
1105
$(INSTALL) $(IFLAGS2) $^.quantify $(FINAL_TARGET)
1120
# This allows us to create static versions of the shared libraries
1121
# that are built using other static libraries. Confused...?
1123
ifdef SHARED_LIBRARY_LIBS
1124
ifeq (,$(GNU_LD)$(filter-out OS2 WINNT WINCE, $(OS_ARCH)))
1125
ifneq (,$(BUILD_STATIC_LIBS)$(FORCE_STATIC_LIB))
1126
LOBJS += $(SHARED_LIBRARY_LIBS)
1129
ifneq (,$(filter OSF1 BSD_OS FreeBSD NetBSD OpenBSD SunOS Darwin,$(OS_ARCH)))
1130
CLEANUP1 := | egrep -v '(________64ELEL_|__.SYMDEF)'
1131
CLEANUP2 := rm -f ________64ELEL_ __.SYMDEF
1135
SUB_LOBJS = $(shell for lib in $(SHARED_LIBRARY_LIBS); do $(AR_LIST) $${lib} $(CLEANUP1); done;)
1138
ifdef MOZILLA_PROBE_LIBS
1139
PROBE_LOBJS = $(shell for lib in $(MOZILLA_PROBE_LIBS); do $(AR_LIST) $${lib} $(CLEANUP1); done;)
1141
1108
ifdef DTRACE_PROBE_OBJ
1142
1109
EXTRA_DEPS += $(DTRACE_PROBE_OBJ)
1145
$(LIBRARY): $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
1147
ifneq (,$(GNU_LD)$(filter-out OS2 WINNT WINCE, $(OS_ARCH)))
1148
ifdef SHARED_LIBRARY_LIBS
1150
@for lib in $(SHARED_LIBRARY_LIBS); do $(AR_EXTRACT) $${lib}; $(CLEANUP2); done
1153
$(AR) $(AR_FLAGS) $(OBJS) $(LOBJS) $(SUB_LOBJS)
1112
$(filter %.$(LIB_SUFFIX),$(LIBRARY)): $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
1114
$(EXPAND_AR) $(AR_FLAGS) $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS)
1155
@rm -f foodummyfilefoo $(SUB_LOBJS)
1117
$(filter-out %.$(LIB_SUFFIX),$(LIBRARY)): $(filter %.$(LIB_SUFFIX),$(LIBRARY)) $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
1118
$(EXPAND_LIBS_GEN) $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS) > $@
1157
1120
ifeq (,$(filter-out WINNT WINCE, $(OS_ARCH)))
1158
1121
$(IMPORT_LIBRARY): $(SHARED_LIBRARY)
1161
1124
ifeq ($(OS_ARCH),OS2)
1162
1125
$(DEF_FILE): $(OBJS) $(SHARED_LIBRARY_LIBS)
1164
1127
echo LIBRARY $(SHARED_LIBRARY_NAME) INITINSTANCE TERMINSTANCE > $@
1165
1128
echo PROTMODE >> $@
1166
1129
echo CODE LOADONCALL MOVEABLE DISCARDABLE >> $@
1167
1130
echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $@
1168
1131
echo EXPORTS >> $@
1169
ifeq ($(IS_COMPONENT),1)
1170
ifeq ($(HAS_EXTRAEXPORTS),1)
1171
ifndef MOZ_OS2_USE_DECLSPEC
1172
$(FILTER) $(OBJS) $(SHARED_LIBRARY_LIBS) >> $@
1175
echo _NSGetModule >> $@
1178
ifndef MOZ_OS2_USE_DECLSPEC
1179
$(FILTER) $(OBJS) $(SHARED_LIBRARY_LIBS) >> $@
1182
1133
$(ADD_TO_DEF_FILE)
1184
ifdef MOZ_OS2_USE_DECLSPEC
1185
1135
$(IMPORT_LIBRARY): $(SHARED_LIBRARY)
1187
$(IMPORT_LIBRARY): $(DEF_FILE)
1190
1137
$(IMPLIB) $@ $^
1194
1141
$(HOST_LIBRARY): $(HOST_OBJS) Makefile
1196
1143
$(HOST_AR) $(HOST_AR_FLAGS) $(HOST_OBJS)
1197
1144
$(HOST_RANLIB) $@
1199
ifdef NO_LD_ARCHIVE_FLAGS
1200
SUB_SHLOBJS = $(SUB_LOBJS)
1203
1146
ifdef HAVE_DTRACE
1204
1147
ifndef XP_MACOSX
1205
1148
ifdef DTRACE_PROBE_OBJ
1206
1149
ifndef DTRACE_LIB_DEPENDENT
1207
1150
$(DTRACE_PROBE_OBJ): $(OBJS)
1208
dtrace -G -C -32 -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(OBJS)
1151
dtrace -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(OBJS)
1216
1159
# symlinks back to the originals. The symlinks are a no-op for stabs debugging,
1217
1160
# so no need to conditionalize on OS version or debugging format.
1219
$(SHARED_LIBRARY): $(OBJS) $(LOBJS) $(DEF_FILE) $(RESFILE) $(SHARED_LIBRARY_LIBS) $(EXTRA_DEPS) $(DSO_LDOPTS_DEPS) $(GLOBAL_DEPS)
1162
$(SHARED_LIBRARY): $(OBJS) $(LOBJS) $(DEF_FILE) $(RESFILE) $(SHARED_LIBRARY_LIBS_DEPS) $(LIBRARY) $(EXTRA_DEPS) $(DSO_LDOPTS_DEPS) $(GLOBAL_DEPS)
1220
1163
ifndef INCREMENTAL_LINKER
1223
ifeq ($(OS_ARCH),OpenVMS)
1224
@if test ! -f $(VMS_SYMVEC_FILE); then \
1225
if test -f $(VMS_SYMVEC_FILE_MODULE); then \
1226
echo Creating specific component options file $(VMS_SYMVEC_FILE); \
1227
cp $(VMS_SYMVEC_FILE_MODULE) $(VMS_SYMVEC_FILE); \
1231
@if test ! -f $(VMS_SYMVEC_FILE); then \
1232
echo Creating generic component options file $(VMS_SYMVEC_FILE); \
1233
cp $(VMS_SYMVEC_FILE_COMP) $(VMS_SYMVEC_FILE); \
1237
ifdef NO_LD_ARCHIVE_FLAGS
1238
ifdef SHARED_LIBRARY_LIBS
1239
@rm -f $(SUB_SHLOBJS)
1240
@for lib in $(SHARED_LIBRARY_LIBS); do $(AR_EXTRACT) $${lib}; $(CLEANUP2); done
1241
ifeq ($(OS_ARCH),Darwin)
1242
@echo Making symlinks to the original object files in the archive libraries $(SHARED_LIBRARY_LIBS)
1243
@for lib in $(SHARED_LIBRARY_LIBS); do \
1244
libdir=`echo $$lib|sed -e 's,/[^/]*\.a,,'`; \
1245
ofiles=`$(AR_LIST) $${lib}`; \
1246
for ofile in $$ofiles; do \
1247
if [ -f $$libdir/$$ofile ]; then \
1249
ln -s $$libdir/$$ofile $$ofile; \
1254
endif # SHARED_LIBRARY_LIBS
1255
endif # NO_LD_ARCHIVE_FLAGS
1256
1166
ifdef DTRACE_LIB_DEPENDENT
1257
@rm -f $(PROBE_LOBJS)
1258
@for lib in $(MOZILLA_PROBE_LIBS); do $(AR_EXTRACT) $${lib}; $(CLEANUP2); done
1259
1167
ifndef XP_MACOSX
1260
dtrace -G -C -32 -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(PROBE_LOBJS)
1168
dtrace -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(shell $(EXPAND_LIBS) $(MOZILLA_PROBE_LIBS))
1262
@for lib in $(MOZILLA_PROBE_LIBS); do \
1263
ofiles=`$(AR_LIST) $${lib}`; \
1264
$(AR_DELETE) $${lib} $$ofiles; \
1266
$(MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(LOBJS) $(SUB_SHLOBJS) $(DTRACE_PROBE_OBJ) $(PROBE_LOBJS) $(RESFILE) $(LDFLAGS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
1267
@rm -f $(PROBE_LOBJS)
1268
@rm -f $(DTRACE_PROBE_OBJ)
1269
@for lib in $(MOZILLA_PROBE_LIBS); do \
1270
if [ -L $${lib} ]; then rm -f `readlink $${lib}`; fi; \
1272
@rm -f $(MOZILLA_PROBE_LIBS)
1170
$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(LOBJS) $(SUB_SHLOBJS) $(DTRACE_PROBE_OBJ) $(MOZILLA_PROBE_LIBS) $(RESFILE) $(LDFLAGS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
1171
@$(RM) $(DTRACE_PROBE_OBJ)
1274
1172
else # ! DTRACE_LIB_DEPENDENT
1275
$(MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(DTRACE_PROBE_OBJ) $(LOBJS) $(SUB_SHLOBJS) $(RESFILE) $(LDFLAGS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
1173
$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(DTRACE_PROBE_OBJ) $(LOBJS) $(SUB_SHLOBJS) $(RESFILE) $(LDFLAGS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
1276
1174
endif # DTRACE_LIB_DEPENDENT
1278
1176
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
1373
1264
@$(MAKE_DEPS_AUTO_CC)
1374
1265
$(ELOG) $(CC) $(OUTOPTION)$@ -c $(COMPILE_CFLAGS) $(_VPATH_SRCS)
1267
# DEFINES and ACDEFINES are needed here to enable conditional compilation of Q_OBJECTs:
1268
# 'moc' only knows about #defines it gets on the command line (-D...), not in
1269
# included headers like mozilla-config.h
1376
1270
moc_%.cpp: %.h $(GLOBAL_DEPS)
1377
$(MOC) $< $(OUTOPTION)$@
1271
$(MOC) $(DEFINES) $(ACDEFINES) $< $(OUTOPTION)$@
1273
moc_%.cc: %.cc $(GLOBAL_DEPS)
1275
$(ELOG) $(MOC) $(DEFINES) $(ACDEFINES) $(_VPATH_SRCS:.cc=.h) $(OUTOPTION)$@
1380
1278
# The AS_DASH_C_FLAG is needed cause not all assemblers (Solaris) accept
1484
1384
SPACE := $(EMPTY) $(EMPTY)
1486
# Cygwin and MSYS have their own special path form, but javac expects the source
1487
# and class paths to be in the DOS form (i.e. e:/builds/...). This function
1488
# does the appropriate conversion on Windows, but is a noop on other systems.
1386
# MSYS has its own special path form, but javac expects the source and class
1387
# paths to be in the DOS form (i.e. e:/builds/...). This function does the
1388
# appropriate conversion on Windows, but is a noop on other systems.
1489
1389
ifeq (,$(filter-out WINNT WINCE, $(HOST_OS_ARCH)))
1490
ifdef CYGWIN_WRAPPER
1491
normalizepath = $(foreach p,$(1),$(shell cygpath -m $(p)))
1494
1390
# We use 'pwd -W' to get DOS form of the path. However, since the given path
1495
1391
# could be a file or a non-existent path, we cannot call 'pwd -W' directly
1496
1392
# on the path. Instead, we extract the root path (i.e. "c:/"), call 'pwd -W'
1498
1394
root-path = $(shell echo $(1) | sed -e "s|\(/[^/]*\)/\?\(.*\)|\1|")
1499
1395
non-root-path = $(shell echo $(1) | sed -e "s|\(/[^/]*\)/\?\(.*\)|\2|")
1500
1396
normalizepath = $(foreach p,$(1),$(if $(filter /%,$(1)),$(patsubst %/,%,$(shell cd $(call root-path,$(1)) && pwd -W))/$(call non-root-path,$(1)),$(1)))
1503
1398
normalizepath = $(1)
1535
1430
# Update Makefiles
1536
1431
###############################################################################
1538
# In GNU make 3.80, makefiles must use the /cygdrive syntax, even if we're
1539
# processing them with AS perl. See bug 232003
1541
CYGWIN_TOPSRCDIR = -nowrap -p $(topsrcdir) -wrap
1544
1433
# Note: Passing depth to make-makefile is optional.
1545
1434
# It saves the script some work, though.
1546
1435
Makefile: Makefile.in
1547
@$(PERL) $(AUTOCONF_TOOLS)/make-makefile -t $(topsrcdir) -d $(DEPTH) $(CYGWIN_TOPSRCDIR)
1436
@$(PERL) $(AUTOCONF_TOOLS)/make-makefile -t $(topsrcdir) -d $(DEPTH)
1549
1438
ifdef SUBMAKEFILES
1550
1439
# VPATH does not work on some machines in this case, so add $(srcdir)
1551
1440
$(SUBMAKEFILES): % : $(srcdir)/%.in
1552
$(PERL) $(AUTOCONF_TOOLS)/make-makefile -t $(topsrcdir) -d $(DEPTH) $(CYGWIN_TOPSRCDIR) $@
1441
$(PERL) $(AUTOCONF_TOOLS)/make-makefile -t $(topsrcdir) -d $(DEPTH) $@
1555
1444
ifdef AUTOUPDATE_CONFIGURE
1667
1549
# generate .h files from into $(XPIDL_GEN_DIR), then export to $(DIST)/include;
1668
1550
# warn against overriding existing .h file.
1669
1551
$(XPIDL_GEN_DIR)/.done:
1670
@if test ! -d $(XPIDL_GEN_DIR); then echo Creating $(XPIDL_GEN_DIR)/.done; rm -rf $(XPIDL_GEN_DIR); mkdir $(XPIDL_GEN_DIR); fi
1552
$(MKDIR) -p $(XPIDL_GEN_DIR)
1673
1555
# don't depend on $(XPIDL_GEN_DIR), because the modification date changes
1674
1556
# with any addition to the directory, regenerating all .h files -> everything.
1739
1625
$(LOOP_OVER_DIRS)
1740
1626
$(LOOP_OVER_TOOL_DIRS)
1743
ifneq ($(XPIDLSRCS),)
1745
JAVA_XPIDLSRCS = $(XPIDLSRCS)
1747
# A single IDL file can contain multiple interfaces, which result in multiple
1748
# Java interface files. So use hidden dependency files.
1749
JAVADEPFILES = $(addprefix $(JAVA_GEN_DIR)/.,$(JAVA_XPIDLSRCS:.idl=.java.pp))
1753
GARBAGE_DIRS += $(JAVA_GEN_DIR)
1755
# generate .java files into _javagen/[package name dirs]
1756
_JAVA_GEN_DIR = $(JAVA_GEN_DIR)/$(JAVA_IFACES_PKG_NAME)
1760
$(JAVA_GEN_DIR)/.%.java.pp: %.idl $(XPIDL_COMPILE) $(_JAVA_GEN_DIR)
1762
$(ELOG) $(XPIDL_COMPILE) -m java -w -I$(srcdir) -I$(IDL_DIR) -o $(_JAVA_GEN_DIR)/$* $(_VPATH_SRCS)
1765
# "Install" generated Java interfaces. We segregate them based on the XPI_NAME.
1766
# If XPI_NAME is not set, install into the "default" directory.
1767
ifneq ($(XPI_NAME),)
1768
JAVA_INSTALL_DIR = $(JAVA_DIST_DIR)/$(XPI_NAME)
1770
JAVA_INSTALL_DIR = $(JAVA_DIST_DIR)/default
1773
$(JAVA_INSTALL_DIR):
1776
export:: $(JAVA_DIST_DIR) $(JAVADEPFILES) $(JAVA_INSTALL_DIR)
1777
(cd $(JAVA_GEN_DIR) && tar $(TAR_CREATE_FLAGS) - .) | (cd $(JAVA_INSTALL_DIR) && tar -xf -)
1780
endif # MOZ_JAVAXPCOM
1782
1628
################################################################################
1783
1629
# Copy each element of EXTRA_COMPONENTS to $(FINAL_TARGET)/components
1630
ifneq (,$(filter %.js,$(EXTRA_COMPONENTS) $(EXTRA_PP_COMPONENTS)))
1631
ifeq (,$(filter %.manifest,$(EXTRA_COMPONENTS) $(EXTRA_PP_COMPONENTS)))
1632
ifndef NO_JS_MANIFEST
1633
$(error .js component without matching .manifest. See https://developer.mozilla.org/en/XPCOM/XPCOM_changes_in_Gecko_2.0)
1784
1638
ifdef EXTRA_COMPONENTS
1785
1639
libs:: $(EXTRA_COMPONENTS)
1786
1640
ifndef NO_DIST_INSTALL
1787
1641
$(INSTALL) $(IFLAGS1) $^ $(FINAL_TARGET)/components
1788
@$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/build-list.pl $(FINAL_TARGET)/components/components.list $(notdir $^)
1800
1653
dest=$(FINAL_TARGET)/components/$${fname}; \
1801
1654
$(RM) -f $$dest; \
1802
1655
$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \
1803
$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/build-list.pl $(FINAL_TARGET)/components/components.list $$fname; \
1660
EXTRA_MANIFESTS = $(filter %.manifest,$(EXTRA_COMPONENTS) $(EXTRA_PP_COMPONENTS))
1661
ifneq (,$(EXTRA_MANIFESTS))
1663
$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest $(patsubst %,"manifest components/%",$(notdir $(EXTRA_MANIFESTS)))
1809
1666
################################################################################
2044
1901
$(CURDIR)/$(MDDEPDIR):
2045
@if test ! -d $@; then echo Creating $@; rm -rf $@; mkdir $@; else true; fi
2047
1904
ifneq (,$(filter-out all chrome default export realchrome tools clean clobber clobber_all distclean realclean,$(MAKECMDGOALS)))
2048
1905
ifneq (,$(OBJS)$(XPIDLSRCS)$(SIMPLE_PROGRAMS))
2049
1906
MDDEPEND_FILES := $(strip $(wildcard $(MDDEPDIR)/*.pp))
2051
1908
ifneq (,$(MDDEPEND_FILES))
2053
1909
# The script mddepend.pl checks the dependencies and writes to stdout
2054
1910
# one rule to force out-of-date objects. For example,
2055
1911
# foo.o boo.o: FORCE
2056
1912
# The script has an advantage over including the *.pp files directly
2057
1913
# because it handles the case when header files are removed from the build.
2058
1914
# 'make' would complain that there is no way to build missing headers.
2059
ifeq (,$(MAKE_RESTARTS))
2060
$(MDDEPDIR)/.all.pp: FORCE
2061
@$(PERL) $(BUILD_TOOLS)/mddepend.pl $@ $(MDDEPEND_FILES)
2063
-include $(MDDEPDIR)/.all.pp
2065
include $(MDDEPEND_FILES)
1915
ALL_PP_RESULTS = $(shell $(PERL) $(BUILD_TOOLS)/mddepend.pl - $(MDDEPEND_FILES))
1916
$(eval $(ALL_PP_RESULTS))
2150
1994
@echo $(REQUIRES)
2152
echo-requires-recursive::
2153
ifdef _REPORT_ALL_DIRS
2154
@echo $(subst $(topsrcdir)/,,$(srcdir)): $(MODULE): $(REQUIRES)
2156
@$(if $(REQUIRES),echo $(subst $(topsrcdir)/,,$(srcdir)): $(MODULE): $(REQUIRES))
2158
$(LOOP_OVER_PARALLEL_DIRS)
2161
1996
echo-depth-path:
2162
1997
@$(topsrcdir)/build/unix/print-depth-path.sh