Bug 571384: Rebuild required files when configuration has changed

A change of build configuration should rebuild the artifact.
With make, this is achieved by depending on the makefile that contains
the rule to build the artifact. If the flags change, so will the
makefile do and the artifact is rebuilt.

Contributed by STMicroelectronics

Change-Id: I56e0376ff9bfa5629b55c1b6c9f94a6f930e0d69
Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@st.com>
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/sub sources/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/sub sources/subdir.mk
index 4f13ad7..1c60154 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/sub sources/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/sub sources/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-Sources/sub\ sources/func\ 3.o: ../Sources/sub\ sources/func\ 3.c
+Sources/sub\ sources/func\ 3.o: ../Sources/sub\ sources/func\ 3.c Sources/sub\ sources/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
 	gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"Sources/sub sources/func 3.d" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/subdir.mk
index 9c19080..c374cff 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/Sources/subdir.mk
@@ -20,14 +20,14 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-Sources/%.o: ../Sources/%.c
+Sources/%.o: ../Sources/%.c Sources/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
 	gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
-Sources/func2.o: ../Sources/func2.c
+Sources/func2.o: ../Sources/func2.c Sources/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
 	gcc -I../Headers -I../Sources/sub\ sources -O3 -g3 -Wall -c -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/makefile
index 5444950..74608dc 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/makefile
@@ -21,6 +21,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := test1DepCalc2
 BUILD_ARTIFACT_EXTENSION :=
 BUILD_ARTIFACT_PREFIX :=
@@ -32,7 +38,7 @@
 all: test1DepCalc2
 
 # Tool invocations
-test1DepCalc2: $(OBJS) $(USER_OBJS)
+test1DepCalc2: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: GCC C Linker'
 	gcc  -o "test1DepCalc2" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/subdir.mk
index d083eef..aac4e34 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc2/Benchmarks/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
 	gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/sub sources/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/sub sources/subdir.mk
index b57047e..1575edc 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/sub sources/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/sub sources/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-Sources/sub\ sources/func\ 3.o: ../Sources/sub\ sources/func\ 3.c
+Sources/sub\ sources/func\ 3.o: ../Sources/sub\ sources/func\ 3.c Sources/sub\ sources/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
 	gcc -DFUN3 -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/subdir.mk
index d281499..8e78ab8 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/Sources/subdir.mk
@@ -20,7 +20,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-Sources/%.o: ../Sources/%.c
+Sources/%.o: ../Sources/%.c Sources/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
 	gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/makefile
index 06f9ede..540caf5 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/makefile
@@ -21,6 +21,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := test1DepCalc3
 BUILD_ARTIFACT_EXTENSION :=
 BUILD_ARTIFACT_PREFIX :=
@@ -32,7 +38,7 @@
 all: test1DepCalc3
 
 # Tool invocations
-test1DepCalc3: $(OBJS) $(USER_OBJS)
+test1DepCalc3: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: GCC C Linker'
 	gcc  -o "test1DepCalc3" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/subdir.mk
index cfe94fc..841c423 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalc3/Benchmarks/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
 	gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/sub sources/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/sub sources/subdir.mk
index 30264c8..ce3ac38 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/sub sources/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/sub sources/subdir.mk
@@ -14,14 +14,14 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-Sources/sub\ sources/func\ 3.o: ../Sources/sub\ sources/func\ 3.c
+Sources/sub\ sources/func\ 3.o: ../Sources/sub\ sources/func\ 3.c Sources/sub\ sources/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
 	gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
-Sources/sub\ sources/func\ 3.d: ../Sources/sub\ sources/func\ 3.c
+Sources/sub\ sources/func\ 3.d: ../Sources/sub\ sources/func\ 3.c Sources/sub\ sources/subdir.mk
 	@echo 'Regenerating dependency file: $@'
 	gcc -w -MM -MP -MT"Sources/sub\ sources/func\ 3.d" -MT"Sources/sub\ sources/func\ 3.o" -I../Headers -I../Sources/sub\ sources -MF "$@" "$<"
 	@echo ' '
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/subdir.mk
index 3a9269b..51ed937 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/Sources/subdir.mk
@@ -20,14 +20,14 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-Sources/%.o: ../Sources/%.c
+Sources/%.o: ../Sources/%.c Sources/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
 	gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
-Sources/%.d: ../Sources/%.c
+Sources/%.d: ../Sources/%.c Sources/subdir.mk
 	@echo 'Regenerating dependency file: $@'
 	gcc -w -MM -MP -MT"$@" -MT"$(@:%.d=%.o)" -I../Headers -I../Sources/sub\ sources -MF "$@" "$<"
 	@echo ' '
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/makefile
index 1dbf600..9364144 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/makefile
@@ -21,6 +21,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := test1DepCalcPreBuild
 BUILD_ARTIFACT_EXTENSION :=
 BUILD_ARTIFACT_PREFIX :=
@@ -32,7 +38,7 @@
 all: test1DepCalcPreBuild
 
 # Tool invocations
-test1DepCalcPreBuild: $(OBJS) $(USER_OBJS)
+test1DepCalcPreBuild: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: GCC C Linker'
 	gcc  -o "test1DepCalcPreBuild" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/subdir.mk
index 54c7f59..8b129ea 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/depCalcProjects/test1DepCalcPreBuild/Benchmarks/subdir.mk
@@ -14,14 +14,14 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-main.o: ../main.c
+main.o: ../main.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
 	gcc -I../Headers -I../Sources/sub\ sources -O0 -g3 -c -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
-main.d: ../main.c
+main.d: ../main.c subdir.mk
 	@echo 'Regenerating dependency file: $@'
 	gcc -w -MM -MP -MT"main.d" -MT"main.o" -I../Headers -I../Sources/sub\ sources -MF "$@" "$<"
 	@echo ' '
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/makefile
index 0487436..f1f7752 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/makefile
@@ -34,6 +34,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := test12
 BUILD_ARTIFACT_EXTENSION := exe
 BUILD_ARTIFACT_PREFIX :=
@@ -45,7 +51,7 @@
 all: test12.exe
 
 # Tool invocations
-test12.exe: $(OBJS) $(USER_OBJS)
+test12.exe: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: Cygwin C++ Linker'
 	g++  -o "test12.exe" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/subdir.mk
index 58a8f14..5113087 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/1.2/Benchmarks/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.cpp
+%.o: ../%.cpp subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Cygwin C++ Compiler'
 	g++ -O3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/makefile
index 86e9196..bb6c277 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/makefile
@@ -34,6 +34,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := test20
 BUILD_ARTIFACT_EXTENSION := exe
 BUILD_ARTIFACT_PREFIX :=
@@ -45,7 +51,7 @@
 all: test20.exe
 
 # Tool invocations
-test20.exe: $(OBJS) $(USER_OBJS)
+test20.exe: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: GCC C++ Linker'
 	g++  -o "test20.exe" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/subdir.mk
index 4625fb0..3a0326d 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.0/Benchmarks/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.cpp
+%.o: ../%.cpp subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C++ Compiler'
 	g++ -O2 -g1 -pedantic -pedantic-errors -Wall -Werror -c -fmessage-length=0 -v -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/Functions/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/Functions/subdir.mk
index 2cd4a4d..a139059 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/Functions/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/Functions/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-Functions/%.o: ../Functions/%.c
+Functions/%.o: ../Functions/%.c Functions/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/makefile
index 2b4c368..3a9a678 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/makefile
@@ -20,6 +20,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := MBS2dot1
 BUILD_ARTIFACT_EXTENSION := exe
 BUILD_ARTIFACT_PREFIX :=
@@ -31,7 +37,7 @@
 all: MBS2dot1.exe
 
 # Tool invocations
-MBS2dot1.exe: $(OBJS) $(USER_OBJS)
+MBS2dot1.exe: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: GCC C Linker'
 	gcc  -o "MBS2dot1.exe" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/subdir.mk
index c6d13b6..7a64a0a 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1/Benchmarks/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/Functions/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/Functions/subdir.mk
index 7774d58..4a1a236 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/Functions/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/Functions/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-Functions/%.o: ../Functions/%.cpp
+Functions/%.o: ../Functions/%.cpp Functions/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C++ Compiler'
 	g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/makefile
index c56fa84..7ed3bd0 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/makefile
@@ -35,6 +35,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := Test21CXX
 BUILD_ARTIFACT_EXTENSION :=
 BUILD_ARTIFACT_PREFIX :=
@@ -46,7 +52,7 @@
 all: Test21CXX
 
 # Tool invocations
-Test21CXX: $(OBJS) $(USER_OBJS)
+Test21CXX: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: GCC C++ Linker'
 	g++  -o "Test21CXX" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/subdir.mk
index fa4c19e..e13baec 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/oldTypeProjects/2.1CPP/Benchmarks/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C++ Compiler'
 	g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/makefile
index 3432d41..c015ad7 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/makefile
@@ -19,6 +19,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := linkedFolder
 BUILD_ARTIFACT_EXTENSION := a
 BUILD_ARTIFACT_PREFIX := lib
@@ -30,7 +36,7 @@
 all: liblinkedFolder.a
 
 # Tool invocations
-liblinkedFolder.a: $(OBJS) $(USER_OBJS)
+liblinkedFolder.a: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: archiver.gnu'
 	ar -r  "liblinkedFolder.a" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/subdir.mk
index 0c0b847..430867f 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedFolder/Benchmarks/subdir.mk
@@ -17,7 +17,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: compiler.gnu.c'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/makefile
index 1611456..1416807 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/makefile
@@ -19,6 +19,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := linkedLib
 BUILD_ARTIFACT_EXTENSION := a
 BUILD_ARTIFACT_PREFIX := lib
@@ -30,7 +36,7 @@
 all: liblinkedLib.a
 
 # Tool invocations
-liblinkedLib.a: $(OBJS) $(USER_OBJS)
+liblinkedLib.a: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: archiver.gnu'
 	ar -r  "liblinkedLib.a" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/subdir.mk
index f01f206..67a1c0e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/linkedLib/Benchmarks/subdir.mk
@@ -17,7 +17,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-f1.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f1.c
+f1.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f1.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: compiler.gnu.c'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
@@ -26,7 +26,7 @@
 	@echo 'Finished building: $<'
 	@echo ' '
 
-f2.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f2.c
+f2.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f2.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: compiler.gnu.c'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/makefile
index f5b5bc1..ef2c749 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/makefile
@@ -34,6 +34,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := testResCfg
 BUILD_ARTIFACT_EXTENSION :=
 BUILD_ARTIFACT_PREFIX :=
@@ -45,7 +51,7 @@
 all: testResCfg
 
 # Tool invocations
-testResCfg: $(OBJS) $(USER_OBJS)
+testResCfg: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: linker.gnu.cpp'
 	g++ --strip-all -o "testResCfg" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source1/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source1/subdir.mk
index e3c307e..cc468be 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source1/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source1/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-source1/%.o: ../source1/%.cpp
+source1/%.o: ../source1/%.cpp source1/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: compiler.gnu.cpp'
 	g++ -I../headers -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk
index 5a1ad29..7da2b23 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-source2/source21/Class21.o: ../source2/source21/Class21.cpp
+source2/source21/Class21.o: ../source2/source21/Class21.cpp source2/source21/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: compiler.gnu.cpp'
 	g++ -DRESSPEC -I../headers -O0 -g3 -Wall -c -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/subdir.mk
index a612bf4..d3122ca 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/source2/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-source2/%.o: ../source2/%.cpp
+source2/%.o: ../source2/%.cpp source2/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: compiler.gnu.cpp'
 	g++ -I../headers -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/subdir.mk
index 56c172e..2b451f5 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/multiResConfig/Benchmarks/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.cpp
+%.o: ../%.cpp subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: compiler.gnu.cpp'
 	g++ -I../headers -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/makefile
index 27b8070..799f315 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/makefile
@@ -19,6 +19,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := testSingleExe
 BUILD_ARTIFACT_EXTENSION :=
 BUILD_ARTIFACT_PREFIX :=
@@ -30,7 +36,7 @@
 all: testSingleExe
 
 # Tool invocations
-testSingleExe: $(OBJS) $(USER_OBJS)
+testSingleExe: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: linker.gnu.c'
 	gcc  -o "testSingleExe" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/subdir.mk
index 902f1b1..1bf4cdc 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/singleFileExe/Benchmarks/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: compiler.gnu.c'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/makefile
index 07be09b..25b7551 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/makefile
@@ -31,6 +31,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := testDoubleSO
 BUILD_ARTIFACT_EXTENSION := so
 BUILD_ARTIFACT_PREFIX := lib
@@ -42,7 +48,7 @@
 all: libtestDoubleSO.so
 
 # Tool invocations
-libtestDoubleSO.so: $(OBJS) $(USER_OBJS)
+libtestDoubleSO.so: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: linker.gnu.cpp'
 	g++ -shared -o "libtestDoubleSO.so" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/subdir.mk
index 0e0b407..2c13b3e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test21Projects/twoFileSO/Benchmarks/subdir.mk
@@ -17,7 +17,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: compiler.gnu.cpp'
 	g++ -DXXX -O0 -g3 -Wall -c -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/makefile
index a7abe7f..84051eb 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/makefile
@@ -13,6 +13,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := CDTFortranTest1
 BUILD_ARTIFACT_EXTENSION := exe
 BUILD_ARTIFACT_PREFIX :=
@@ -24,7 +30,7 @@
 all: CDTFortranTest1.exe
 
 # Tool invocations
-CDTFortranTest1.exe: $(OBJS) $(USER_OBJS)
+CDTFortranTest1.exe: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: Linker'
 	mylink  -o "CDTFortranTest1.exe" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/subdir.mk
index e1ac709..4aa9c03 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest1/Benchmarks/subdir.mk
@@ -15,7 +15,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.obj: ../%.F90
+%.obj: ../%.F90 subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test Fortran Compiler'
 	myfort  -c -object:"$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/Sources/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/Sources/subdir.mk
index ec92de6..c3d8646 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/Sources/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/Sources/subdir.mk
@@ -87,7 +87,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-Sources/%.obj: ../Sources/%.f90
+Sources/%.obj: ../Sources/%.f90 Sources/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test Fortran Compiler'
 	myfort  -c -object:"$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/makefile
index a3ad1a5..c0e2564 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/makefile
@@ -15,6 +15,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := CDTFortranTest2
 BUILD_ARTIFACT_EXTENSION :=
 BUILD_ARTIFACT_PREFIX :=
@@ -26,7 +32,7 @@
 all: CDTFortranTest2
 
 # Tool invocations
-CDTFortranTest2: $(OBJS) $(USER_OBJS)
+CDTFortranTest2: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: Linker'
 	mylink  -o "CDTFortranTest2" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/module/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/module/subdir.mk
index 262ac77..36bd730 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/module/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/CDTFortranTest2/Benchmarks/module/subdir.mk
@@ -69,7 +69,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-module/%.obj: ../module/%.f90
+module/%.obj: ../module/%.f90 module/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test Fortran Compiler'
 	myfort  -c -object:"$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/makefile
index 167c97c..bcf69cc 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/makefile
@@ -13,6 +13,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := TestATO
 BUILD_ARTIFACT_EXTENSION := out
 BUILD_ARTIFACT_PREFIX :=
@@ -24,7 +30,7 @@
 all: TestATO.out
 
 # Tool invocations
-TestATO.out: $(OBJS) $(OPT_SRCS)
+TestATO.out: $(OBJS) $(OPT_SRCS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: AssignToOption Executable Linker'
 	ATOL -opt../TestATO1.opt -opt../TestATO2.opt -o "TestATO.out" $(OBJS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/subdir.mk
index a40307d..63b90ac 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/TestATO/Benchmarks/subdir.mk
@@ -18,7 +18,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.obj: ../%.c
+%.obj: ../%.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: AssignToOption Compiler'
 	ATOC -opt../TestATO.cop  "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/Functions/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/Functions/subdir.mk
index 11bdb3b..e896106 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/Functions/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/Functions/subdir.mk
@@ -17,14 +17,14 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-Functions/%.c: ../Functions/%.x
+Functions/%.c: ../Functions/%.x Functions/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Copy tool'
 	cp "$<" "$@"
 	@echo 'Finished building: $<'
 	@echo ' '
 
-Functions/%.o: ./Functions/%.c
+Functions/%.o: ./Functions/%.c Functions/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: MBS30.compiler.gnu.c'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/makefile
index b0d3220..d9a6356 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/makefile
@@ -20,6 +20,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := TestCopyandDeploy
 BUILD_ARTIFACT_EXTENSION :=
 BUILD_ARTIFACT_PREFIX :=
@@ -34,14 +40,14 @@
 all: TestCopyandDeploy
 
 # Tool invocations
-TestCopyandDeploy: $(EXECUTABLES)
+TestCopyandDeploy: $(EXECUTABLES) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: Deploy tool'
 	cp $(EXECUTABLES) "TestCopyandDeploy"
 	@echo 'Finished building target: $@'
 	@echo ' '
 
-USER_OBJS.foo: $(OBJS) $(USER_OBJS)
+USER_OBJS.foo: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Invoking: MBS30.linker.gnu.c'
 	gcc  -o "USER_OBJS.foo" $(OBJS) $(USER_OBJS) $(LIBS)
 	@echo 'Finished building: $@'
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/subdir.mk
index 53d386b..6e7f417 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/copyandDeploy/Benchmarks/subdir.mk
@@ -17,14 +17,14 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.c: ../%.x
+%.c: ../%.x subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Copy tool'
 	cp "$<" "$@"
 	@echo 'Finished building: $<'
 	@echo ' '
 
-%.o: ./%.c
+%.o: ./%.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: MBS30.compiler.gnu.c'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/makefile
index 2b5ce8f..7263517 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/makefile
@@ -31,6 +31,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := DeleteFile
 BUILD_ARTIFACT_EXTENSION :=
 BUILD_ARTIFACT_PREFIX :=
@@ -42,7 +48,7 @@
 all: DeleteFile
 
 # Tool invocations
-DeleteFile: $(OBJS) $(USER_OBJS)
+DeleteFile: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: MBS30.linker.gnu.cpp'
 	g++  -o "DeleteFile" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/subdir.mk
index f904abd..21fbf3c 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/deleteFile/Benchmarks/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.cxx
+%.o: ../%.cxx subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: MBS30.compiler.gnu.cpp'
 	g++ -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/makefile
index c3c45f7..6a0e06f 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/makefile
@@ -19,6 +19,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := inputTypeOption
 BUILD_ARTIFACT_EXTENSION :=
 BUILD_ARTIFACT_PREFIX :=
@@ -30,7 +36,7 @@
 all: inputTypeOption
 
 # Tool invocations
-inputTypeOption: $(OBJS) C:\An\ Absolute\ Path\ With\ Spaces\foo.linker $(USER_OBJS)
+inputTypeOption: $(OBJS) C:\An\ Absolute\ Path\ With\ Spaces\foo.linker $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: org.eclipse.cdt.managedbuilder.core.tests.inputTypeOptionMakefileRenderingTest.c.linker'
 	gcc --linkerInputTypeOption="C:\An Absolute Path With Spaces\foo.linker" -o "inputTypeOption" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/subdir.mk
index d12dc80..33a7af3 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/inputTypeOption/Benchmarks/subdir.mk
@@ -20,7 +20,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c C:/An\ Absolute\ Path\ With\ Spaces/foo.compiler C:/An\ Absolute\ Path\ With\ Spaces/foo.noquotes.compiler
+%.o: ../%.c C:/An\ Absolute\ Path\ With\ Spaces/foo.compiler C:/An\ Absolute\ Path\ With\ Spaces/foo.noquotes.compiler subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: org.eclipse.cdt.managedbuilder.core.tests.inputTypeOptionMakefileRenderingTest.c.compiler'
 	gcc -O3 -Wall -c -fmessage-length=0 -v --compilerInputTypeOption="C:\An Absolute Path With Spaces\foo.compiler" --compilerInputTypeOption=C:\An Absolute Path With Spaces\foo.noquotes.compiler -o "$@" "$<" && \
@@ -29,7 +29,7 @@
 	@echo 'Finished building: $<'
 	@echo ' '
 
-resourceSettingAbsoluteCompiler.o: ../resourceSettingAbsoluteCompiler.c D:/An\ Absolute\ Path\ With\ Spaces/resource.foo.compiler D:/An\ Absolute\ Path\ With\ Spaces/resource.foo.noquotes.compiler
+resourceSettingAbsoluteCompiler.o: ../resourceSettingAbsoluteCompiler.c D:/An\ Absolute\ Path\ With\ Spaces/resource.foo.compiler D:/An\ Absolute\ Path\ With\ Spaces/resource.foo.noquotes.compiler subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: org.eclipse.cdt.managedbuilder.core.tests.inputTypeOptionMakefileRenderingTest.c.compiler'
 	gcc -O3 -Wall -c -fmessage-length=0 -v --compilerInputTypeOption="D:\An Absolute Path With Spaces\resource.foo.compiler" --compilerInputTypeOption=D:\An Absolute Path With Spaces\resource.foo.noquotes.compiler -o "$@" "$<" && \
@@ -38,7 +38,7 @@
 	@echo 'Finished building: $<'
 	@echo ' '
 
-resourceSettingRelativeCompiler.o: ../resourceSettingRelativeCompiler.c ../A\ Folder\ With\ Spaces/foo.compiler ../A\ Folder\ With\ Spaces/foo.noquotes.compiler
+resourceSettingRelativeCompiler.o: ../resourceSettingRelativeCompiler.c ../A\ Folder\ With\ Spaces/foo.compiler ../A\ Folder\ With\ Spaces/foo.noquotes.compiler subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: org.eclipse.cdt.managedbuilder.core.tests.inputTypeOptionMakefileRenderingTest.c.compiler'
 	gcc -O3 -Wall -c -fmessage-length=0 -v --compilerInputTypeOption="A Folder With Spaces/foo.compiler" --compilerInputTypeOption=A Folder With Spaces/foo.noquotes.compiler -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/makefile
index 6fc6cb6..dd12319 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/makefile
@@ -19,6 +19,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := linkedFolder
 BUILD_ARTIFACT_EXTENSION := a
 BUILD_ARTIFACT_PREFIX := lib
@@ -30,7 +36,7 @@
 all: liblinkedFolder.a
 
 # Tool invocations
-liblinkedFolder.a: $(OBJS) $(USER_OBJS)
+liblinkedFolder.a: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: MBS30.archiver.gnu'
 	ar -r  "liblinkedFolder.a" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/subdir.mk
index cc179c7..2af2b9a 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedFolder/Benchmarks/subdir.mk
@@ -17,7 +17,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: MBS30.compiler.gnu.c'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/makefile
index a943aff..563a6f7 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/makefile
@@ -19,6 +19,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := linkedLib
 BUILD_ARTIFACT_EXTENSION := a
 BUILD_ARTIFACT_PREFIX := lib
@@ -30,7 +36,7 @@
 all: liblinkedLib.a
 
 # Tool invocations
-liblinkedLib.a: $(OBJS) $(USER_OBJS)
+liblinkedLib.a: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: MBS30.archiver.gnu'
 	ar -r  "liblinkedLib.a" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/subdir.mk
index b0e33f4..e4d808c 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/linkedLib30/Benchmarks/subdir.mk
@@ -23,7 +23,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-f1.o: C:/Documents\ and\ Settings/ltreggia/CDTMBSTest/f1.c
+f1.o: C:/Documents\ and\ Settings/ltreggia/CDTMBSTest/f1.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: MBS30.compiler.gnu.c'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
@@ -32,7 +32,7 @@
 	@echo 'Finished building: $<'
 	@echo ' '
 
-f1_30.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f1_30.c
+f1_30.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f1_30.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: MBS30.compiler.gnu.c'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
@@ -41,7 +41,7 @@
 	@echo 'Finished building: $<'
 	@echo ' '
 
-f2.o: C:/Documents\ and\ Settings/ltreggia/CDTMBSTest/f2.c
+f2.o: C:/Documents\ and\ Settings/ltreggia/CDTMBSTest/f2.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: MBS30.compiler.gnu.c'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
@@ -50,7 +50,7 @@
 	@echo 'Finished building: $<'
 	@echo ' '
 
-f2_30.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f2_30.c
+f2_30.o: C:/Documents\ and\ Settings/agvozdev/CDTMBSTest/f2_30.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: MBS30.compiler.gnu.c'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/makefile
index 5bb098d..69357f3 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/makefile
@@ -34,6 +34,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := multiResConfig
 BUILD_ARTIFACT_EXTENSION :=
 BUILD_ARTIFACT_PREFIX :=
@@ -45,7 +51,7 @@
 all: multiResConfig
 
 # Tool invocations
-multiResConfig: $(OBJS) $(USER_OBJS)
+multiResConfig: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: MBS30.linker.gnu.cpp'
 	g++  -o "multiResConfig" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source1/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source1/subdir.mk
index c62e875..e2b1b36 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source1/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source1/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-source1/%.o: ../source1/%.cpp
+source1/%.o: ../source1/%.cpp source1/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: MBS30.compiler.gnu.cpp'
 	g++ -I../headers -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk
index 8a20f32..5263b93 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/source21/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-source2/source21/Class21.o: ../source2/source21/Class21.cpp
+source2/source21/Class21.o: ../source2/source21/Class21.cpp source2/source21/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: MBS30.compiler.gnu.cpp'
 	g++ -DRESCFG -I../headers -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/subdir.mk
index ff0ad8f..fa784c0 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/source2/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-source2/%.o: ../source2/%.cpp
+source2/%.o: ../source2/%.cpp source2/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: MBS30.compiler.gnu.cpp'
 	g++ -I../headers -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/subdir.mk
index d98430e..6f21557 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/multiResConfig/Benchmarks/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.cpp
+%.o: ../%.cpp subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: MBS30.compiler.gnu.cpp'
 	g++ -I../headers -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/makefile
index 80762d8..1b306d8 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/makefile
@@ -31,6 +31,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := preAndPostBuildSteps
 BUILD_ARTIFACT_EXTENSION :=
 BUILD_ARTIFACT_PREFIX :=
@@ -47,7 +53,7 @@
 main-build: preAndPostBuildSteps
 
 # Tool invocations
-preAndPostBuildSteps: $(OBJS) $(USER_OBJS)
+preAndPostBuildSteps: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: MBS30.linker.gnu.cpp'
 	g++  -o "preAndPostBuildSteps" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/subdir.mk
index f904abd..21fbf3c 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/preAndPostBuildSteps/Benchmarks/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.cxx
+%.o: ../%.cxx subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: MBS30.compiler.gnu.cpp'
 	g++ -O0 -g3 -Wall -c -fmessage-length=0 -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/makefile
index eba1a2b..4434b86 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/makefile
@@ -19,6 +19,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := rcbsBasicTest
 BUILD_ARTIFACT_EXTENSION :=
 BUILD_ARTIFACT_PREFIX :=
@@ -30,7 +36,7 @@
 all: rcbsBasicTest
 
 # Tool invocations
-rcbsBasicTest: $(OBJS) $(USER_OBJS)
+rcbsBasicTest: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: MBS30.linker.gnu.c'
 	gcc  -o "rcbsBasicTest" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/subdir.mk
index e205292..0d246ac 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/rcbsBasicTest/Benchmarks/subdir.mk
@@ -11,7 +11,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-rcbsBasicTest.o: ../rcbsBasicTest.c
+rcbsBasicTest.o: ../rcbsBasicTest.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Now executing custom build step for rcbsBasicTest debug config'
 	gcc -g -c ../rcbsBasicTest.c -o ./rcbsBasicTest.o
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/makefile
index ddb1b1c..b92bd60 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/makefile
@@ -19,6 +19,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := singleFileExe
 BUILD_ARTIFACT_EXTENSION :=
 BUILD_ARTIFACT_PREFIX :=
@@ -30,7 +36,7 @@
 all: singleFileExe
 
 # Tool invocations
-singleFileExe: $(OBJS) $(USER_OBJS)
+singleFileExe: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: MBS30.linker.gnu.c'
 	gcc  -o "singleFileExe" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/subdir.mk
index f0e1923..aeabac9 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/singleFileExe/Benchmarks/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: MBS30.compiler.gnu.c'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/makefile
index 8c26536..0c089ad 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/makefile
@@ -20,6 +20,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME :=  testwithspaces
 BUILD_ARTIFACT_EXTENSION :=  a
 BUILD_ARTIFACT_PREFIX :=  lib
@@ -31,7 +37,7 @@
 all: testwithspaces.exe
 
 # Tool invocations
-testwithspaces.exe: $(OBJS) $(USER_OBJS)
+testwithspaces.exe: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: GCC C Linker'
 	gcc  -o "testwithspaces.exe" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/sub folder with spaces/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/sub folder with spaces/subdir.mk
index e4410d3..79476ae 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/sub folder with spaces/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/sub folder with spaces/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-sub\ folder\ with\ spaces/foo\ with\ spaces.o: ../sub\ folder\ with\ spaces/foo\ with\ spaces.c
+sub\ folder\ with\ spaces/foo\ with\ spaces.o: ../sub\ folder\ with\ spaces/foo\ with\ spaces.c sub\ folder\ with\ spaces/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"sub folder with spaces/foo with spaces.d" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/subdir.mk
index 9062b16..ab0bab1 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test with spaces/Benchmarks/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-main\ with\ spaces.o: ../main\ with\ spaces.c
+main\ with\ spaces.o: ../main\ with\ spaces.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main with spaces.d" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/makefile
index 5fa6a44..3e906f6 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/makefile
@@ -19,6 +19,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := Test30_1
 BUILD_ARTIFACT_EXTENSION := so.4.5.6
 BUILD_ARTIFACT_PREFIX :=
@@ -36,7 +42,7 @@
 all: Test30_1.so.4.5.6 secondary-outputs
 
 # Tool invocations
-Test30_1.so.4.5.6: $(EXECUTABLES)
+Test30_1.so.4.5.6: $(EXECUTABLES) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: Deploy tool'
 	cp $(EXECUTABLES) "Test30_1.so.4.5.6"
@@ -45,7 +51,7 @@
 
 default.so.4.5.6: Test30_1.so.4.5.6 $(EXECUTABLES)
 
-test30_1.so.1.2.3: $(STRIPPEDOBJS)
+test30_1.so.1.2.3: $(STRIPPEDOBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Invoking: MBS30.linker.gnu.c'
 	gcc -shared -Wl,-soname=test30_1.so.1.2.3 -o "test30_1.so.1.2.3" $(STRIPPEDOBJS)
 	@echo 'Finished building: $@'
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/subdir.mk
index 8b2681c..e54fe9b 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_1/Benchmarks/subdir.mk
@@ -28,7 +28,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-f1.c: ../test.tar
+f1.c: ../test.tar subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Un-tar'
 	tar -xf "$<"
@@ -39,7 +39,7 @@
 test_ar.h: f1.c
 CDT.bmp: f1.c
 
-%.oprestripped: ./%.c
+%.oprestripped: ./%.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: MBS30.compiler.gnu.c'
 	gcc -O2 -g -Wall -c -fmessage-length=0 -v -o "$@" "$<" && \
@@ -48,14 +48,14 @@
 	@echo 'Finished building: $<'
 	@echo ' '
 
-%.o: ./%.oprestripped
+%.o: ./%.oprestripped subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Strip object file'
 	strip --preserve-dates -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
-%.jpeg: ./%.bmp
+%.jpeg: ./%.bmp subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Convert to jpeg'
 	cjpeg  -outfile "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/makefile
index 9b3e997..c16a14c 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/makefile
@@ -14,6 +14,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := test30_2
 BUILD_ARTIFACT_EXTENSION := tmp
 BUILD_ARTIFACT_PREFIX :=
@@ -31,20 +37,20 @@
 all: test30_2.tmp
 
 # Tool invocations
-test30_2.tmp: $(LOGFILE)
+test30_2.tmp: $(LOGFILE) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: cat'
 	cat $(LOGFILE)
 	@echo 'Finished building target: $@'
 	@echo ' '
 
-new.tar: $(CPP_SRCS) $(ASM_SRCS)
+new.tar: $(CPP_SRCS) $(ASM_SRCS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Invoking: tar-create'
 	tar -cf new.tar $(CPP_SRCS) $(ASM_SRCS)
 	@echo 'Finished building: $@'
 	@echo ' '
 
-new.log: $(TAROUT)
+new.log: $(TAROUT) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Invoking: tar-list'
 	tar -tf $(TAROUT) > new.log
 	@echo 'Finished building: $@'
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/makefile
index b25512d..136bd35 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/makefile
@@ -19,6 +19,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := test
 BUILD_ARTIFACT_EXTENSION := exe
 BUILD_ARTIFACT_PREFIX :=
@@ -30,7 +36,7 @@
 all: test.exe
 
 # Tool invocations
-test.exe: $(OBJS) $(USER_OBJS)
+test.exe: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: GCC C Linker'
 	gcc  -o "test.exe" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/subdir.mk
index d9eb1a1..13d2a96 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testFileWithNoExtension/Benchmarks/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: GCC C Compiler'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/makefile
index 2af07b4..29509ce 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/makefile
@@ -13,6 +13,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := testMacroSupportInBuildDefinitions
 BUILD_ARTIFACT_EXTENSION := tar
 BUILD_ARTIFACT_PREFIX :=
@@ -24,7 +30,7 @@
 all: testMacroSupportInBuildDefinitions.tar
 
 # Tool invocations
-testMacroSupportInBuildDefinitions.tar: $(BAR_FILES)
+testMacroSupportInBuildDefinitions.tar: $(BAR_FILES) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: Bar Tool'
 	tar cvf $@ $(BAR_FILES)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/subdir.mk
index ac8fa98..8a56482 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/testMacroSupportInBuildDefinitions/Benchmarks/subdir.mk
@@ -11,7 +11,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-this_is_a_test_prefix_with_a_macro_for_the_project_name_between_here_testMacroSupportInBuildDefinitions_and_here%.bar: ../%.foo
+this_is_a_test_prefix_with_a_macro_for_the_project_name_between_here_testMacroSupportInBuildDefinitions_and_here%.bar: ../%.foo subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Foo Tool'
 	cp "$<" "$@"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/makefile
index 3ef4e76..16450d2 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/makefile
@@ -19,6 +19,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := twoFileSO
 BUILD_ARTIFACT_EXTENSION := SOS
 BUILD_ARTIFACT_PREFIX := lib
@@ -30,7 +36,7 @@
 all: libtwoFileSO.SOS
 
 # Tool invocations
-libtwoFileSO.SOS: $(OBJS) $(USER_OBJS)
+libtwoFileSO.SOS: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: MBS30.linker.gnu.c'
 	gcc -shared -o "libtwoFileSO.SOS" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/subdir.mk
index 5662216..303889f 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/twoFileSO/Benchmarks/subdir.mk
@@ -17,7 +17,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-%.o: ../%.c
+%.o: ../%.c subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: MBS30.compiler.gnu.c'
 	gcc -O0 -g3 -c -v -o "$@" "$<" && \
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/d3/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/d3/subdir.mk
index e07ec15..efa8e0b 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/d3/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/d3/subdir.mk
@@ -17,7 +17,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-d1/d2/d3/%.o: ../d1/d2/d3/%.cpp
+d1/d2/d3/%.o: ../d1/d2/d3/%.cpp d1/d2/d3/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -Id3_rel/path -I/d3_abs/path -Ic:/d3_abs/path -I"D:\d3_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/subdir.mk
index f280815..9371f8f 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/d2/subdir.mk
@@ -17,14 +17,14 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-d1/d2/e.o: ../d1/d2/e.cpp
+d1/d2/e.o: ../d1/d2/e.cpp d1/d2/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -Id2_ecpp_rel/path -I../d2_ecpp_proj/rel/path -I/d2_ecpp_abs/path -Ic:/d2_ecpp_abs/path -Id2_rel/path -I../d2_proj/rel/path -I/d2_abs/path -Ic:/d2_abs/path -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -I"D:\d1_docs\incs" -I"D:\d2_docs\incs" -I"D:\d2_ecpp_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
-d1/d2/%.o: ../d1/d2/%.cpp
+d1/d2/%.o: ../d1/d2/%.cpp d1/d2/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -Id2_rel/path -I../d2_proj/rel/path -I/d2_abs/path -Ic:/d2_abs/path -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -I"D:\d1_docs\incs" -I"D:\d2_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/subdir.mk
index 0af13c0..5d6f88c 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1/subdir.mk
@@ -20,7 +20,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-d1/%.o: ../d1/%.cpp
+d1/%.o: ../d1/%.cpp d1/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -I"D:\d1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/d2_1/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/d2_1/subdir.mk
index f78f51c..cde8c60 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/d2_1/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/d2_1/subdir.mk
@@ -17,7 +17,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-d1_1/d2_1/%.o: ../d1_1/d2_1/%.cpp
+d1_1/d2_1/%.o: ../d1_1/d2_1/%.cpp d1_1/d2_1/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -Id2_1_rel/path -I/d2_1_abs/path -Ic:/d2_1_abs/path -Id1_1_rel/path -I/d1_1_abs/path -Ic:/d1_1_abs/path -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -I"D:\d1_1_docs\incs" -I"D:\d2_1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/subdir.mk
index 97f5c59..c674d4b 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/d1_1/subdir.mk
@@ -17,7 +17,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-d1_1/%.o: ../d1_1/%.cpp
+d1_1/%.o: ../d1_1/%.cpp d1_1/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -Id1_1_rel/path -I/d1_1_abs/path -Ic:/d1_1_abs/path -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -I"D:\d1_1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/asd/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/asd/subdir.mk
index 3cd115a..493f2e4 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/asd/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/asd/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-dir1/dd/excluded_c/asd/%.o: ../dir1/dd/excluded_c/asd/%.cpp
+dir1/dd/excluded_c/asd/%.o: ../dir1/dd/excluded_c/asd/%.cpp dir1/dd/excluded_c/asd/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/subdir.mk
index ebe1db6..3c5203d 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/excluded_c/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-dir1/dd/excluded_c/%.o: ../dir1/dd/excluded_c/%.cpp
+dir1/dd/excluded_c/%.o: ../dir1/dd/excluded_c/%.cpp dir1/dd/excluded_c/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/ff/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/ff/subdir.mk
index 9083c76..625c5fb 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/ff/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/dir1/dd/ff/subdir.mk
@@ -21,14 +21,14 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-dir1/dd/ff/%.o: ../dir1/dd/ff/%.c
+dir1/dd/ff/%.o: ../dir1/dd/ff/%.c dir1/dd/ff/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.c'
 	gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
-dir1/dd/ff/%.o: ../dir1/dd/ff/%.cpp
+dir1/dd/ff/%.o: ../dir1/dd/ff/%.cpp dir1/dd/ff/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -Irel/path -I../proj/rel/path -I/abs/path -Ic:/abs/path -I"${WorkspaceDirPath}/test_40/dir1/dir2/dir3" -I"${WorkspaceDirPath}/test_40" -I"D:\docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/makefile
index 68ce6f7..7a5106f 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/Test 4.0 ConfigName.Dbg/makefile
@@ -42,6 +42,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := test_40
 BUILD_ARTIFACT_EXTENSION :=
 BUILD_ARTIFACT_PREFIX :=
@@ -53,7 +59,7 @@
 all: test_40
 
 # Tool invocations
-test_40: $(OBJS) $(USER_OBJS)
+test_40: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: Test 4.0 ToolName.linker.gnu.cpp'
 	g++ -Llib/path/1 -o "test_40" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/d3/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/d3/subdir.mk
index e07ec15..efa8e0b 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/d3/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/d3/subdir.mk
@@ -17,7 +17,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-d1/d2/d3/%.o: ../d1/d2/d3/%.cpp
+d1/d2/d3/%.o: ../d1/d2/d3/%.cpp d1/d2/d3/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -Id3_rel/path -I/d3_abs/path -Ic:/d3_abs/path -I"D:\d3_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/subdir.mk
index efe7e85..cb414a6 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/d2/subdir.mk
@@ -17,14 +17,14 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-d1/d2/e.o: ../d1/d2/e.cpp
+d1/d2/e.o: ../d1/d2/e.cpp d1/d2/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -Id2_ecpp_rel/path -I../d2_ecpp_proj/rel/path -I/d2_ecpp_abs/path -Ic:/d2_ecpp_abs/path -Id2_rel/path -I../d2_proj/rel/path -I/d2_abs/path -Ic:/d2_abs/path -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -I"D:\d1_docs\incs" -I"D:\d2_docs\incs" -I"D:\d2_ecpp_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
-d1/d2/%.o: ../d1/d2/%.cpp
+d1/d2/%.o: ../d1/d2/%.cpp d1/d2/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -Id2_rel/path -I../d2_proj/rel/path -I/d2_abs/path -Ic:/d2_abs/path -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -I"D:\d1_docs\incs" -I"D:\d2_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/subdir.mk
index 3598fa9..490f163 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1/subdir.mk
@@ -20,7 +20,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-d1/%.o: ../d1/%.cpp
+d1/%.o: ../d1/%.cpp d1/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -Id1_rel/path -I../d1_proj/rel/path -I/d1_abs/path -Ic:/d1_abs/path -I"D:\d1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/d2_1/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/d2_1/subdir.mk
index 85663bf..0d212c0 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/d2_1/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/d2_1/subdir.mk
@@ -17,7 +17,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-d1_1/d2_1/%.o: ../d1_1/d2_1/%.cpp
+d1_1/d2_1/%.o: ../d1_1/d2_1/%.cpp d1_1/d2_1/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -Id2_1_rel/path -I/d2_1_abs/path -Ic:/d2_1_abs/path -Id1_1_rel/path -I/d1_1_abs/path -Ic:/d1_1_abs/path -I"D:\d1_1_docs\incs" -I"D:\d2_1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/subdir.mk
index dc0c387..ea8e126 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/d1_1/subdir.mk
@@ -17,7 +17,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-d1_1/%.o: ../d1_1/%.cpp
+d1_1/%.o: ../d1_1/%.cpp d1_1/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -Id1_1_rel/path -I/d1_1_abs/path -Ic:/d1_1_abs/path -I"D:\d1_1_docs\incs" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/asd/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/asd/subdir.mk
index c285f5f..e32ad1e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/asd/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/asd/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-dir1/dd/excluded_c/asd/%.o: ../dir1/dd/excluded_c/asd/%.cpp
+dir1/dd/excluded_c/asd/%.o: ../dir1/dd/excluded_c/asd/%.cpp dir1/dd/excluded_c/asd/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -O2 -g -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/subdir.mk
index ea7e38c..c37ca26 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/excluded_c/subdir.mk
@@ -14,7 +14,7 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-dir1/dd/excluded_c/%.o: ../dir1/dd/excluded_c/%.cpp
+dir1/dd/excluded_c/%.o: ../dir1/dd/excluded_c/%.cpp dir1/dd/excluded_c/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -O2 -g -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/ff/subdir.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/ff/subdir.mk
index 28ccb78..e7973eb 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/ff/subdir.mk
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/dir1/dd/ff/subdir.mk
@@ -21,14 +21,14 @@
 
 
 # Each subdirectory must supply rules for building sources it contributes
-dir1/dd/ff/%.o: ../dir1/dd/ff/%.c
+dir1/dd/ff/%.o: ../dir1/dd/ff/%.c dir1/dd/ff/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.c'
 	gcc -O2 -g -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
-dir1/dd/ff/%.o: ../dir1/dd/ff/%.cpp
+dir1/dd/ff/%.o: ../dir1/dd/ff/%.cpp dir1/dd/ff/subdir.mk
 	@echo 'Building file: $<'
 	@echo 'Invoking: Test 4.0 ToolName.compiler.gnu.cpp'
 	g++ -O2 -g -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<"
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/makefile b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/makefile
index b669ad1..bd2b872 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/makefile
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test40Projects/test_40/Benchmarks/dbg 2/makefile
@@ -42,6 +42,12 @@
 
 -include ../makefile.defs
 
+OPTIONAL_TOOL_DEPS := \
+$(wildcard ../makefile.defs) \
+$(wildcard ../makefile.init) \
+$(wildcard ../makefile.targets) \
+
+
 BUILD_ARTIFACT_NAME := test_40
 BUILD_ARTIFACT_EXTENSION :=
 BUILD_ARTIFACT_PREFIX :=
@@ -53,7 +59,7 @@
 all: test_40
 
 # Tool invocations
-test_40: $(OBJS) $(USER_OBJS)
+test_40: $(OBJS) $(USER_OBJS) makefile objects.mk $(OPTIONAL_TOOL_DEPS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: Test 4.0 ToolName.linker.gnu.cpp'
 	g++ -Llib/path/2 -o "test_40" $(OBJS) $(USER_OBJS) $(LIBS)
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuMakefileGenerator.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuMakefileGenerator.java
index 77c6460..deeb346 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuMakefileGenerator.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu/GnuMakefileGenerator.java
@@ -823,10 +823,19 @@
 			bytes = buffer.toString().getBytes();
 		}
 
-		ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
-		// use a platform operation to update the resource contents
-		boolean force = true;
-		file.setContents(stream, force, false, null); // Don't record history
+		byte[] oldBytes = null;
+		try (InputStream is = file.getContents(true)) {
+			oldBytes = is.readAllBytes();
+		} catch (IOException e) {
+		}
+
+		// Only write file if content differs
+		if (!Arrays.equals(oldBytes, bytes)) {
+			ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+			// use a platform operation to update the resource contents
+			boolean force = true;
+			file.setContents(stream, force, false, null); // Don't record history
+		}
 	}
 
 	/* (non-Javadoc)
@@ -1263,6 +1272,13 @@
 		// Include makefile.defs supplemental makefile
 		buffer.append("-include ").append(reachProjectRoot()).append(SEPARATOR).append(MAKEFILE_DEFS).append(NEWLINE); //$NON-NLS-1$
 
+		final String wildcardFileFmt = "$(wildcard %s)" + WHITESPACE + LINEBREAK; //$NON-NLS-1$
+		buffer.append(NEWLINE).append("OPTIONAL_TOOL_DEPS :=").append(WHITESPACE).append(LINEBREAK); //$NON-NLS-1$
+		buffer.append(String.format(wildcardFileFmt, reachProjectRoot() + SEPARATOR + MAKEFILE_DEFS));
+		buffer.append(String.format(wildcardFileFmt, reachProjectRoot() + SEPARATOR + MAKEFILE_INIT));
+		buffer.append(String.format(wildcardFileFmt, reachProjectRoot() + SEPARATOR + MAKEFILE_TARGETS));
+		buffer.append(NEWLINE);
+
 		String ext = config.getArtifactExtension();
 		// try to resolve the build macros in the artifact extension
 		try {
@@ -1711,6 +1727,9 @@
 			calculatedDependencies += input;
 		}
 		buildRule += calculatedDependencies;
+		buildRule += WHITESPACE + MAKEFILE_NAME; // makefile itself
+		buildRule += WHITESPACE + OBJECTS_MAKFILE; // objects.mk
+		buildRule += WHITESPACE + "$(OPTIONAL_TOOL_DEPS)"; //$NON-NLS-1$ // Optional dep to generated makefile extension files
 
 		// We can't have duplicates in a makefile
 		if (getRuleList().contains(buildRule)) {
@@ -2593,7 +2612,8 @@
 			patternBuildRuleDependencies += WHITESPACE + suitablePath;
 		}
 
-		buildRule += COLON + WHITESPACE + (patternRule ? patternBuildRuleDependencies : buildRuleDependencies);
+		buildRule += COLON + WHITESPACE + (patternRule ? patternBuildRuleDependencies : buildRuleDependencies)
+				+ WHITESPACE + escapeWhitespaces(relativePath + MODFILE_NAME);
 
 		// No duplicates in a makefile.  If we already have this rule, don't add it or the commands to build the file
 		if (getRuleList().contains(buildRule)) {
@@ -2865,7 +2885,8 @@
 						depLine += escapeWhitespaces((depFiles[i]).toString());
 					}
 				}
-				depLine += COLON + WHITESPACE + (patternRule ? patternBuildRuleDependencies : buildRuleDependencies);
+				depLine += COLON + WHITESPACE + (patternRule ? patternBuildRuleDependencies : buildRuleDependencies)
+						+ WHITESPACE + escapeWhitespaces(relativePath + MODFILE_NAME);
 				if (!getDepRuleList().contains(depLine)) {
 					getDepRuleList().add(depLine);
 					addedDepLines = true;