Author: hyperion Date: Sun Jan 25 10:19:45 2009 New Revision: 39093
URL: http://svn.reactos.org/svn/reactos?rev=39093&view=rev Log: Implement full dependencies for rbuild: changing a header file will now automatically rebuild all modules that include it, directly or indirectly. Very slow, but an irreplaceable tool for header fixing Full dependencies can be enabled by setting ROS_RBUILDFLAGS=-df Whether initially enabled or not, once makefile.auto is generated, full dependencies can be enabled or disabled by setting ROS_BUILDDEPS=full or ROS_BUILDDEPS=auto
In case you missed it, full dependencies are VERY SLOW
Modified: trunk/reactos/Makefile trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp trunk/reactos/tools/rbuild/configuration.cpp trunk/reactos/tools/rbuild/rbuild.cpp trunk/reactos/tools/rbuild/rbuild.h
Modified: trunk/reactos/Makefile URL: http://svn.reactos.org/svn/reactos/trunk/reactos/Makefile?rev=39093&r1=3... ============================================================================== --- trunk/reactos/Makefile [iso-8859-1] (original) +++ trunk/reactos/Makefile [iso-8859-1] Sun Jan 25 10:19:45 2009 @@ -117,6 +117,8 @@ # -v Be verbose. # -c Clean as you go. Delete generated files as soon as they are not needed anymore. # -dd Disable automatic dependencies. +# -da Enable automatic dependencies. +# -df Enable full dependencies. # -dm{module} Check only automatic dependencies for this module. # -hd Disable precompiled headers. # -mi Let make handle creation of install directories. Rbuild will not generate the directories. @@ -244,6 +246,7 @@ ECHO_GENDIB =@echo $(QUOTE)[GENDIB] $@$(QUOTE) ECHO_STRIP =@echo $(QUOTE)[STRIP] $@$(QUOTE) ECHO_RGENSTAT=@echo $(QUOTE)[RGENSTAT] $@$(QUOTE) + ECHO_DEPENDS =@echo $(QUOTE)[DEPENDS] $<$(QUOTE) else ECHO_CP = ECHO_MKDIR = @@ -278,6 +281,7 @@ ECHO_GENDIB = ECHO_STRIP = ECHO_RGENSTAT= + ECHO_DEPENDS = endif
# Set host compiler/linker
Modified: trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/... ============================================================================== --- trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp [iso-8859-1] Sun Jan 25 10:19:45 2009 @@ -313,7 +313,7 @@ void MingwBackend::CheckAutomaticDependenciesForModuleOnly () { - if ( configuration.AutomaticDependencies ) + if ( configuration.Dependencies == AutomaticDependencies ) { Module* module = ProjectNode.LocateModule ( configuration.CheckDependenciesForModuleOnlyModule ); if ( module == NULL ) @@ -519,6 +519,15 @@ void MingwBackend::GenerateGlobalVariables () const { + if ( configuration.Dependencies == FullDependencies ) + { + fprintf ( fMakefile, + "ifeq ($(ROS_BUILDDEPS),)\n" + "ROS_BUILDDEPS:=%s\n" + "endif\n", + "full" ); + } + fprintf ( fMakefile, "PREFIX := %s\n", compilerPrefix.c_str () ); @@ -715,7 +724,7 @@ void MingwBackend::CheckAutomaticDependencies () { - if ( configuration.AutomaticDependencies ) + if ( configuration.Dependencies == AutomaticDependencies ) { printf ( "Checking automatic dependencies..." ); AutomaticDependency automaticDependency ( ProjectNode );
Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/... ============================================================================== --- trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp [iso-8859-1] Sun Jan 25 10:19:45 2009 @@ -1059,10 +1059,17 @@ "\t${host_ar} -rc $@ $($(module_name)_OBJS)\n", NULL ); Rule gasRule ( "$(source): ${$(module_name)_precondition}\n" - "$(intermediate_path_unique).o: $(source)$(dependencies) | $(intermediate_dir)\n" + "ifeq ($(ROS_BUILDDEPS),full)\n" + "$(intermediate_path_unique).o.d: $(source) | $(intermediate_dir)\n" + "\t$(ECHO_DEPENDS)\n" + "\t${gcc} -x assembler-with-cpp -MF $@ -D__ASM__ $($(module_name)_CFLAGS) -M -MP -MT $@ $<\n" + "-include $(intermediate_path_unique).o.d\n" + "endif\n" + "$(intermediate_path_unique).o: $(source)$(if $(subst _full,,_$(ROS_BUILDDEPS)),, $(intermediate_path_unique).o.d)$(dependencies) | $(intermediate_dir)\n" "\t$(ECHO_GAS)\n" "\t${gcc} -x assembler-with-cpp -o $@ -D__ASM__ $($(module_name)_CFLAGS) -c $<\n", "$(intermediate_path_unique).o", + "$(intermediate_path_unique).o.d", "$(intermediate_dir)$(SEP)", NULL ); Rule bootRule ( "$(source): ${$(module_name)_precondition}\n" "$(module_output): $(source)$(dependencies) | $(OUTPUT)$(SEP)$(source_dir)\n" @@ -1076,7 +1083,13 @@ "$(intermediate_path_unique).o", "$(intermediate_dir)$(SEP)", NULL ); Rule windresRule ( "$(source): ${$(module_name)_precondition}\n" - "$(intermediate_path_unique).coff: $(source)$(dependencies) $(WRC_TARGET) | $(intermediate_dir) $(TEMPORARY)\n" + "ifeq ($(ROS_BUILDDEPS),full)\n" + "$(intermediate_path_unique).coff.d: $(source) | $(intermediate_dir) $(TEMPORARY)\n" + "\t$(ECHO_DEPENDS)\n" + "\t${gcc} -xc -M -MP -MT $@ -DRC_INVOKED ${$(module_name)_RCFLAGS} $(source) -MF $@\n" + "-include $(intermediate_path_unique).coff.d\n" + "endif\n" + "$(intermediate_path_unique).coff: $(source)$(if $(subst _full,,_$(ROS_BUILDDEPS)),, $(intermediate_path_unique).coff.d)$(dependencies) $(WRC_TARGET) | $(intermediate_dir) $(TEMPORARY)\n" "\t$(ECHO_WRC)\n" "\t${gcc} -xc -E -DRC_INVOKED ${$(module_name)_RCFLAGS} $(source) > $(TEMPORARY)$(SEP)$(module_name).$(source_name_noext).rci.tmp\n" "\t$(Q)$(WRC_TARGET) ${$(module_name)_RCFLAGS} $(TEMPORARY)$(SEP)$(module_name).$(source_name_noext).rci.tmp $(TEMPORARY)$(SEP)$(module_name).$(source_name_noext).res.tmp\n" @@ -1084,6 +1097,7 @@ "\t${windres} $(TEMPORARY)$(SEP)$(module_name).$(source_name_noext).res.tmp -o $@\n" "\t-@${rm} $(TEMPORARY)$(SEP)$(module_name).$(source_name_noext).res.tmp 2>$(NUL)\n", "$(intermediate_path_unique).coff", + "$(intermediate_path_unique).coff.d", "$(intermediate_dir)$(SEP)", NULL ); Rule wmcRule ( "$(intermediate_path_noext).rc $(INTERMEDIATE)$(SEP)include$(SEP)reactos$(SEP)$(source_name_noext).h: $(WMC_TARGET) $(source) | $(intermediate_dir)\n" "\t$(ECHO_WMC)\n" @@ -1091,24 +1105,38 @@ "$(intermediate_path_noext).rc", "$(INTERMEDIATE)$(SEP)include$(SEP)reactos$(SEP)$(source_name_noext).h", "$(intermediate_dir)$(SEP)", NULL ); -Rule winebuildPDefRule ( "$(intermediate_path_unique).spec: $(source)$(dependencies) | $(intermediate_dir)\n" +Rule winebuildPDefRule ( "ifeq ($(ROS_BUILDDEPS),full)\n" + "$(intermediate_path_unique).spec.d: $(source) | $(intermediate_dir)\n" + "\t$(ECHO_DEPENDS)\n" + "\t${gcc} -xc -M -MP -MT $@ ${$(module_name)_RCFLAGS} $(source) -MF $@\n\n" + "-include $(intermediate_path_unique).spec.d\n" + "endif\n" + "$(intermediate_path_unique).spec: $(source)$(if $(subst _full,,_$(ROS_BUILDDEPS)),, $(intermediate_path_unique).spec.d)$(dependencies) | $(intermediate_dir)\n" "\t$(ECHO_CPP)\n" "\t${gcc} -xc -E ${$(module_name)_RCFLAGS} $(source) > $(intermediate_path_unique).spec\n\n" "$(intermediate_path_unique).auto.def: $(intermediate_path_unique).spec $(WINEBUILD_TARGET) | $(intermediate_dir)\n" "\t$(ECHO_WINEBLD)\n" "\t$(Q)$(WINEBUILD_TARGET) $(WINEBUILD_FLAGS) -o $(intermediate_path_unique).auto.def --def -E $(intermediate_path_unique).spec --filename $(module_dllname)\n\n", "$(intermediate_path_unique).spec", + "$(intermediate_path_unique).spec.d", "$(intermediate_path_unique).auto.def", "$(intermediate_dir)$(SEP)", NULL ); Rule winebuildPRule ( "$(intermediate_path_unique).stubs.c: $(intermediate_path_unique).spec $(WINEBUILD_TARGET) | $(intermediate_dir)\n" "\t$(ECHO_WINEBLD)\n" "\t$(Q)$(WINEBUILD_TARGET) $(WINEBUILD_FLAGS) -o $@ --pedll $(intermediate_path_unique).spec --filename $(module_dllname)\n\n" - "$(intermediate_path_unique).stubs.o: $(intermediate_path_unique).stubs.c | $(intermediate_dir)\n" + "ifeq ($(ROS_BUILDDEPS),full)\n" + "$(intermediate_path_unique).stubs.o.d: $(intermediate_path_unique).stubs.c | $(intermediate_dir)\n" + "\t$(ECHO_DEPENDS)\n" + "\t${gcc} -MF $@ $($(module_name)_CFLAGS)$(compiler_flags) -M -MP -MT $@ $<\n" + "-include $(intermediate_path_unique).stubs.o.d\n" + "endif\n" + "$(intermediate_path_unique).stubs.o: $(intermediate_path_unique).stubs.c$(if $(subst _full,,_$(ROS_BUILDDEPS)),, $(intermediate_path_unique).stubs.o.d) | $(intermediate_dir)\n" "\t$(ECHO_CC)\n" "\t${gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -c $<\n", "$(intermediate_path_unique).spec", "$(intermediate_path_unique).stubs.c", "$(intermediate_path_unique).stubs.o", + "$(intermediate_path_unique).stubs.o.d", "$(intermediate_dir)$(SEP)", NULL ); Rule winebuildDefRule ( "$(intermediate_path_unique).auto.def: $(source)$(dependencies) $(WINEBUILD_TARGET) | $(intermediate_dir)\n" "\t$(ECHO_WINEBLD)\n" @@ -1119,87 +1147,144 @@ Rule winebuildRule ( "$(intermediate_path_unique).stubs.c: $(source) $(WINEBUILD_TARGET)\n" "\t$(ECHO_WINEBLD)\n" "\t$(Q)$(WINEBUILD_TARGET) $(WINEBUILD_FLAGS) -o $@ --pedll $(source) --filename $(module_dllname)\n" - "$(intermediate_path_unique).stubs.o: $(intermediate_path_unique).stubs.c$(dependencies) | $(intermediate_dir)\n" + "ifeq ($(ROS_BUILDDEPS),full)\n" + "$(intermediate_path_unique).stubs.o.d: $(intermediate_path_unique).stubs.c | $(intermediate_dir)\n" + "\t$(ECHO_DEPENDS)\n" + "\t${gcc} -MF $@ $($(module_name)_CFLAGS)$(compiler_flags) -M -MP -MT $@ $<\n" + "-include $(intermediate_path_unique).stubs.o.d\n" + "endif\n" + "$(intermediate_path_unique).stubs.o: $(intermediate_path_unique).stubs.c$(if $(subst _full,,_$(ROS_BUILDDEPS)),, $(intermediate_path_unique).stubs.o.d)$(dependencies) | $(intermediate_dir)\n" "\t$(ECHO_CC)\n" "\t${gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -c $<\n", "$(intermediate_path_unique).stubs.c", "$(intermediate_path_unique).stubs.o", + "$(intermediate_path_unique).stubs.o.d", "$(intermediate_dir)$(SEP)", NULL ); Rule widlHeaderRule ( "$(source): ${$(module_name)_precondition}\n" - "$(intermediate_path_noext).h: $(source)$(dependencies) $(WIDL_TARGET) | $(intermediate_dir)\n" + "$(intermediate_path_noext).h: $(source)$(dependencies) $(WIDL_TARGET) | $(intermediate_dir)\n" "\t$(ECHO_WIDL)\n" "\t$(Q)$(WIDL_TARGET) $($(module_name)_WIDLFLAGS) -h -H $(intermediate_path_noext).h $(source)\n", "$(intermediate_path_noext).h", "$(intermediate_dir)$(SEP)", NULL ); Rule widlServerRule ( "$(source): ${$(module_name)_precondition}\n" - "$(intermediate_path_noext)_s.c $(intermediate_path_noext)_s.h: $(source)$(dependencies) $(WIDL_TARGET) | $(intermediate_dir)\n" + "$(intermediate_path_noext)_s.c $(intermediate_path_noext)_s.h: $(source)$(dependencies) $(WIDL_TARGET) | $(intermediate_dir)\n" "\t$(ECHO_WIDL)\n" "\t$(Q)$(WIDL_TARGET) $($(module_name)_WIDLFLAGS) -h -H $(intermediate_path_noext)_s.h -s -S $(intermediate_path_noext)_s.c $(source)\n" - "$(intermediate_path_noext)_s.o: $(intermediate_path_noext)_s.c $(intermediate_path_noext)_s.h$(dependencies) | $(intermediate_dir)\n" + "ifeq ($(ROS_BUILDDEPS),full)\n" + "$(intermediate_path_noext)_s.o.d: $(intermediate_path_noext)_s.c | $(intermediate_dir)\n" + "\t$(ECHO_DEPENDS)\n" + "\t${gcc} -MF $@ $($(module_name)_CFLAGS)$(compiler_flags) -fno-unit-at-a-time -M -MP -MT $@ $<\n" + "-include $(intermediate_path_noext)_s.o.d\n" + "endif\n" + "$(intermediate_path_noext)_s.o: $(intermediate_path_noext)_s.c $(intermediate_path_noext)_s.h$(if $(subst _full,,_$(ROS_BUILDDEPS)),, $(intermediate_path_noext)_s.o.d)$(dependencies) | $(intermediate_dir)\n" "\t$(ECHO_CC)\n" "\t${gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -fno-unit-at-a-time -c $<\n", "$(intermediate_path_noext)_s.h", "$(intermediate_path_noext)_s.c", "$(intermediate_path_noext)_s.o", + "$(intermediate_path_noext)_s.o.d", "$(intermediate_dir)$(SEP)", NULL ); Rule widlClientRule ( "$(source): ${$(module_name)_precondition}\n" - "$(intermediate_path_noext)_c.c $(intermediate_path_noext)_c.h: $(source)$(dependencies) $(WIDL_TARGET) | $(intermediate_dir)\n" + "$(intermediate_path_noext)_c.c $(intermediate_path_noext)_c.h: $(source)$(dependencies) $(WIDL_TARGET) | $(intermediate_dir)\n" "\t$(ECHO_WIDL)\n" "\t$(Q)$(WIDL_TARGET) $($(module_name)_WIDLFLAGS) -h -H $(intermediate_path_noext)_c.h -c -C $(intermediate_path_noext)_c.c $(source)\n" - "$(intermediate_path_noext)_c.o: $(intermediate_path_noext)_c.c $(intermediate_path_noext)_c.h$(dependencies) | $(intermediate_dir)\n" + "ifeq ($(ROS_BUILDDEPS),full)\n" + "$(intermediate_path_noext)_c.o.d: $(intermediate_path_noext)_c.c | $(intermediate_dir)\n" + "\t$(ECHO_DEPENDS)\n" + "\t${gcc} -MF $@ $($(module_name)_CFLAGS)$(compiler_flags) -fno-unit-at-a-time -M -MP -MT $@ $<\n" + "-include $(intermediate_path_noext)_c.o.d\n" + "endif\n" + "$(intermediate_path_noext)_c.o: $(intermediate_path_noext)_c.c $(intermediate_path_noext)_c.h$(if $(subst _full,,_$(ROS_BUILDDEPS)),, $(intermediate_path_noext)_c.o.d)$(dependencies) | $(intermediate_dir)\n" "\t$(ECHO_CC)\n" "\t${gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -fno-unit-at-a-time -c $<\n", "$(intermediate_path_noext)_c.h", "$(intermediate_path_noext)_c.c", "$(intermediate_path_noext)_c.o", + "$(intermediate_path_noext)_c.o.d", "$(intermediate_dir)$(SEP)", NULL ); Rule widlProxyRule ( "$(source): ${$(module_name)_precondition}\n" - "$(intermediate_path_noext)_p.c $(intermediate_path_noext)_p.h: $(source)$(dependencies) $(WIDL_TARGET) | $(intermediate_dir)\n" + "$(intermediate_path_noext)_p.c $(intermediate_path_noext)_p.h: $(source)$(dependencies) $(WIDL_TARGET) | $(intermediate_dir)\n" "\t$(ECHO_WIDL)\n" "\t$(Q)$(WIDL_TARGET) $($(module_name)_WIDLFLAGS) -h -H $(intermediate_path_noext)_p.h -p -P $(intermediate_path_noext)_p.c $(source)\n" - "$(intermediate_path_noext)_p.o: $(intermediate_path_noext)_p.c $(intermediate_path_noext)_p.h$(dependencies) | $(intermediate_dir)\n" + "ifeq ($(ROS_BUILDDEPS),full)\n" + "$(intermediate_path_noext)_p.o.d: $(intermediate_path_noext)_p.c | $(intermediate_dir)\n" + "\t$(ECHO_DEPENDS)\n" + "\t${gcc} -MF $@ $($(module_name)_CFLAGS)$(compiler_flags) -fno-unit-at-a-time -M -MP -MT $@ $<\n" + "-include $(intermediate_path_noext)_p.o.d\n" + "endif\n" + "$(intermediate_path_noext)_p.o: $(intermediate_path_noext)_p.c $(intermediate_path_noext)_p.h$(if $(subst _full,,_$(ROS_BUILDDEPS)),, $(intermediate_path_noext)_p.o.d)$(dependencies) | $(intermediate_dir)\n" "\t$(ECHO_CC)\n" "\t${gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -fno-unit-at-a-time -c $<\n", "$(intermediate_path_noext)_p.h", "$(intermediate_path_noext)_p.c", "$(intermediate_path_noext)_p.o", + "$(intermediate_path_noext)_p.o.d", "$(intermediate_dir)$(SEP)", NULL ); Rule widlDlldataRule ( "$(source): $(dependencies) ${$(module_name)_precondition} $(WIDL_TARGET) | $(intermediate_dir)\n" - "\t$(ECHO_WIDL)\n" - "\t$(Q)$(WIDL_TARGET) $($(module_name)_WIDLFLAGS) --dlldata-only --dlldata=$(source) $(bare_dependencies)\n" - "$(intermediate_path_noext).o: $(source) $(dependencies) | $(intermediate_dir)\n" - "\t$(ECHO_CC)\n" - "\t${gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -c $<\n", - "$(intermediate_path_noext).o", NULL ); + "\t$(ECHO_WIDL)\n" + "\t$(Q)$(WIDL_TARGET) $($(module_name)_WIDLFLAGS) --dlldata-only --dlldata=$(source) $(bare_dependencies)\n" + "ifeq ($(ROS_BUILDDEPS),full)\n" + "$(intermediate_path_noext).o.d: $(source) | $(intermediate_dir)\n" + "\t$(ECHO_DEPENDS)\n" + "\t${gcc} -MF $@ $($(module_name)_CFLAGS)$(compiler_flags) -M -MP -MT $@ $<\n" + "-include $(intermediate_path_noext).o.d\n" + "endif\n" + "$(intermediate_path_noext).o: $(source)$(if $(subst _full,,_$(ROS_BUILDDEPS)),, $(intermediate_path_noext).o.d)$(dependencies) | $(intermediate_dir)\n" + "\t$(ECHO_CC)\n" + "\t${gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -c $<\n", + "$(intermediate_path_noext).o", + "$(intermediate_path_noext).o.d", NULL ); Rule widlTlbRule ( "$(source): ${$(module_name)_precondition}\n" - "$(intermediate_dir)$(SEP)$(module_name).tlb: $(source)$(dependencies) $(WIDL_TARGET) | $(intermediate_dir)\n" + "$(intermediate_dir)$(SEP)$(module_name).tlb: $(source)$(dependencies) $(WIDL_TARGET) | $(intermediate_dir)\n" "\t$(ECHO_WIDL)\n" "\t$(Q)$(WIDL_TARGET) $($(module_name)_WIDLFLAGS) -t -T $(intermediate_path_noext).tlb $(source)\n", "$(intermediate_dir)$(SEP)", NULL ); Rule gccRule ( "$(source): ${$(module_name)_precondition}\n" - "$(intermediate_path_unique).o: $(source)$(dependencies) | $(intermediate_dir)\n" + "ifeq ($(ROS_BUILDDEPS),full)\n" + "$(intermediate_path_unique).o.d: $(source) | $(intermediate_dir)\n" + "\t$(ECHO_DEPENDS)\n" + "\t${gcc} -MF $@ $($(module_name)_CFLAGS)$(compiler_flags) -M -MP -MT $@ $<\n" + "-include $(intermediate_path_unique).o.d\n" + "endif\n" + "$(intermediate_path_unique).o: $(source)$(if $(subst _full,,_$(ROS_BUILDDEPS)),, $(intermediate_path_unique).o.d)$(dependencies) | $(intermediate_dir)\n" "\t$(ECHO_CC)\n" "\t${gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -c $<\n", - "$(intermediate_path_unique).o", NULL ); + "$(intermediate_path_unique).o", + "$(intermediate_path_unique).o.d", NULL ); Rule gccHostRule ( "$(source): ${$(module_name)_precondition}\n" - "$(intermediate_path_unique).o: $(source)$(dependencies) | $(intermediate_dir)\n" + "$(intermediate_path_unique).o: $(source)$(dependencies) | $(intermediate_dir)\n" "\t$(ECHO_HOSTCC)\n" "\t${host_gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -c $<\n", "$(intermediate_path_unique).o", NULL ); Rule gppRule ( "$(source): ${$(module_name)_precondition}\n" - "$(intermediate_path_unique).o: $(source)$(dependencies) | $(intermediate_dir)\n" + "ifeq ($(ROS_BUILDDEPS),full)\n" + "$(intermediate_path_unique).o.d: $(source) | $(intermediate_dir)\n" + "\t$(ECHO_DEPENDS)\n" + "\t${gpp} -MF $@ $($(module_name)_CXXFLAGS)$(compiler_flags) -M -MP -MT $@ $<\n" + "-include $(intermediate_path_unique).o.d\n" + "endif\n" + "$(intermediate_path_unique).o: $(source)$(if $(subst _full,,_$(ROS_BUILDDEPS)),, $(intermediate_path_unique).o.d)$(dependencies) | $(intermediate_dir)\n" "\t$(ECHO_CC)\n" "\t${gpp} -o $@ $($(module_name)_CXXFLAGS)$(compiler_flags) -c $<\n", - "$(intermediate_path_unique).o", NULL ); + "$(intermediate_path_unique).o", + "$(intermediate_path_unique).o.d", NULL ); Rule gppHostRule ( "$(source): ${$(module_name)_precondition}\n" - "$(intermediate_path_unique).o: $(source)$(dependencies) | $(intermediate_dir)\n" + "$(intermediate_path_unique).o: $(source)$(dependencies) | $(intermediate_dir)\n" "\t$(ECHO_HOSTCC)\n" "\t${host_gpp} -o $@ $($(module_name)_CXXFLAGS)$(compiler_flags) -c $<\n", "$(intermediate_path_unique).o", NULL ); -Rule pchRule ( "$(intermediate_dir)$(SEP).gch_$(module_name)$(SEP)$(source_name).gch: $(source)$(dependencies) | $(intermediate_dir)$(SEP).gch_$(module_name)\n" +Rule pchRule ( "$(source): ${$(module_name)_precondition}\n" + "ifeq ($(ROS_BUILDDEPS),full)\n" + "$(intermediate_dir)$(SEP).gch_$(module_name)$(SEP)$(source_name).gch.d: $(source) | $(intermediate_dir)\n" + "\t$(ECHO_DEPENDS)\n" + "\t$(pch_cc) -MF $@ $(pch_ccflags)$(compiler_flags) -x $(pch_language) -M -MP -MT $@ $<\n" + "-include $(intermediate_dir)$(SEP).gch_$(module_name)$(SEP)$(source_name).gch.d\n" + "endif\n" + "$(intermediate_dir)$(SEP).gch_$(module_name)$(SEP)$(source_name).gch: $(source)$(if $(subst _full,,_$(ROS_BUILDDEPS)),, $(intermediate_dir)$(SEP).gch_$(module_name)$(SEP)$(source_name).gch.d)$(dependencies) | $(intermediate_dir)$(SEP).gch_$(module_name)\n" "\t$(ECHO_PCH)\n" "\t$(pch_cc) -o $@ $(pch_ccflags)$(compiler_flags) -x $(pch_language) -c $<\n", - "$(intermediate_dir)$(SEP).gch_$(module_name)$(SEP)$(source_name).gch", NULL ); + "$(intermediate_dir)$(SEP).gch_$(module_name)$(SEP)$(source_name).gch", + "$(intermediate_dir)$(SEP).gch_$(module_name)$(SEP)$(source_name).gch.d", NULL ); Rule emptyRule ( "", NULL );
void
Modified: trunk/reactos/tools/rbuild/configuration.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/configuration.... ============================================================================== --- trunk/reactos/tools/rbuild/configuration.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/configuration.cpp [iso-8859-1] Sun Jan 25 10:19:45 2009 @@ -24,7 +24,7 @@ { Verbose = false; CleanAsYouGo = false; - AutomaticDependencies = true; + Dependencies = AutomaticDependencies; CheckDependenciesForModuleOnly = false; CompilationUnitsEnabled = true; PrecompiledHeadersEnabled = true;
Modified: trunk/reactos/tools/rbuild/rbuild.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/rbuild.cpp?rev... ============================================================================== --- trunk/reactos/tools/rbuild/rbuild.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/rbuild.cpp [iso-8859-1] Sun Jan 25 10:19:45 2009 @@ -45,7 +45,13 @@ switch ( switchChar2 ) { case 'd': - configuration.AutomaticDependencies = false; + configuration.Dependencies = NoDependencies; + break; + case 'a': + configuration.Dependencies = AutomaticDependencies; + break; + case 'f': + configuration.Dependencies = FullDependencies; break; case 'm': if ( strlen ( switchStart ) <= 3 ) @@ -293,6 +299,8 @@ printf ( " -c Clean as you go. Delete generated files as soon as they are not\n" ); printf ( " needed anymore.\n" ); printf ( " -dd Disable automatic dependencies.\n" ); + printf ( " -da Enable automatic dependencies.\n" ); + printf ( " -df Enable full dependencies.\n" ); printf ( " -dm{module} Check only automatic dependencies for this module.\n" ); printf ( " -ud Disable multiple source files per compilation unit.\n" ); printf ( " -mi Let make handle creation of install directories. Rbuild will\n" );
Modified: trunk/reactos/tools/rbuild/rbuild.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/rbuild.h?rev=3... ============================================================================== --- trunk/reactos/tools/rbuild/rbuild.h [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/rbuild.h [iso-8859-1] Sun Jan 25 10:19:45 2009 @@ -148,6 +148,12 @@ bool verbose ); };
+enum DependenciesType +{ + NoDependencies, + AutomaticDependencies, + FullDependencies +};
class Configuration { @@ -156,7 +162,7 @@ ~Configuration (); bool Verbose; bool CleanAsYouGo; - bool AutomaticDependencies; + DependenciesType Dependencies; bool CheckDependenciesForModuleOnly; bool CompilationUnitsEnabled; bool PrecompiledHeadersEnabled;