diff --git a/build/mozconfig.cache b/build/mozconfig.cache index d683f0c58fdd..6bbe4c160094 100644 --- a/build/mozconfig.cache +++ b/build/mozconfig.cache @@ -131,11 +131,6 @@ else # Windows builds have a default wrapper that needs to be overridden mk_add_options "export CC_WRAPPER=" mk_add_options "export CXX_WRAPPER=" - # For now, sccache doesn't support separate PDBs so force debug info to be - # in object files. - mk_add_options "export COMPILE_PDB_FLAG=" - mk_add_options "export HOST_PDB_FLAG=" - mk_add_options "export MOZ_DEBUG_FLAGS=-Z7" ;; esac fi diff --git a/config/rules.mk b/config/rules.mk index 1f974406b220..5afd1bd98c03 100644 --- a/config/rules.mk +++ b/config/rules.mk @@ -156,6 +156,10 @@ ifndef GNU_CC COMPILE_PDB_FLAG ?= -Fd$(basename $(@F)).pdb COMPILE_CFLAGS += $(COMPILE_PDB_FLAG) COMPILE_CXXFLAGS += $(COMPILE_PDB_FLAG) +ifdef MOZ_USING_SCCACHE +# We remove the PDB file before compilation so that sccache knows it's safe to cache. +RM_PDB_FILE = -$(RM) $(basename $(@F)).pdb +endif LINK_PDBFILE ?= $(basename $(@F)).pdb ifdef MOZ_DEBUG @@ -850,23 +854,28 @@ $(OBJS) $(HOST_OBJS) $(PROGOBJS) $(HOST_PROGOBJS): $(GLOBAL_DEPS) # Rules for building native targets must come first because of the host_ prefix $(HOST_COBJS): $(REPORT_BUILD_VERBOSE) + $(RM_PDB_FILE) $(ELOG) $(HOST_CC) $(HOST_OUTOPTION)$@ -c $(HOST_CPPFLAGS) $(HOST_CFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS) $(HOST_CPPOBJS): $(REPORT_BUILD_VERBOSE) $(call BUILDSTATUS,OBJECT_FILE $@) + $(RM_PDB_FILE) $(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CPPFLAGS) $(HOST_CXXFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS) $(HOST_CMOBJS): $(REPORT_BUILD_VERBOSE) + $(RM_PDB_FILE) $(ELOG) $(HOST_CC) $(HOST_OUTOPTION)$@ -c $(HOST_CPPFLAGS) $(HOST_CFLAGS) $(HOST_CMFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS) $(HOST_CMMOBJS): $(REPORT_BUILD_VERBOSE) + $(RM_PDB_FILE) $(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CPPFLAGS) $(HOST_CXXFLAGS) $(HOST_CMMFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS) $(COBJS): $(REPORT_BUILD_VERBOSE) + $(RM_PDB_FILE) $(ELOG) $(CC) $(OUTOPTION)$@ -c $(COMPILE_CFLAGS) $($(notdir $<)_FLAGS) $(_VPATH_SRCS) # DEFINES and ACDEFINES are needed here to enable conditional compilation of Q_OBJECTs: @@ -998,14 +1007,17 @@ $(SOBJS): $(CPPOBJS): $(REPORT_BUILD_VERBOSE) $(call BUILDSTATUS,OBJECT_FILE $@) + $(RM_PDB_FILE) $(ELOG) $(CCC) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS) $($(notdir $<)_FLAGS) $(_VPATH_SRCS) $(CMMOBJS): $(REPORT_BUILD_VERBOSE) + $(RM_PDB_FILE) $(ELOG) $(CCC) -o $@ -c $(COMPILE_CXXFLAGS) $(COMPILE_CMMFLAGS) $($(notdir $<)_FLAGS) $(_VPATH_SRCS) $(CMOBJS): $(REPORT_BUILD_VERBOSE) + $(RM_PDB_FILE) $(ELOG) $(CC) -o $@ -c $(COMPILE_CFLAGS) $(COMPILE_CMFLAGS) $($(notdir $<)_FLAGS) $(_VPATH_SRCS) $(filter %.s,$(CPPSRCS:%.cpp=%.s)): %.s: %.cpp $(call mkdir_deps,$(MDDEPDIR))