diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml b/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml index 51e116fb6f4..a16c798d21c 100644 --- a/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml +++ b/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml @@ -3613,6 +3613,42 @@ outputs="tmp"> + + + + + + + + + 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 32a7bbc30be..e9104c54817 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 @@ -32,6 +32,15 @@ new.tar \ LOGFILE += \ new.log \ +TOUCHEDFILES += \ +alphabetical \ +are \ +file\ names \ +in \ +not \ +order \ +these \ + # All Target all: main-build @@ -59,9 +68,15 @@ new.log: $(TAROUT) makefile objects.mk $(OPTIONAL_TOOL_DEPS) @echo 'Finished building: $@' @echo ' ' +these file\ names are not in alphabetical order: $(LOGFILE) makefile objects.mk $(OPTIONAL_TOOL_DEPS) + @echo 'Invoking: touch' + touch -r $(LOGFILE) "these" "file names" "are" "not" "in" "alphabetical" "order" + @echo 'Finished building: $@' + @echo ' ' + # Other Targets clean: - -$(RM) new.log new.tar test30_2.tmp + -$(RM) alphabetical are file\ names in new.log new.tar not order test30_2.tmp these -@echo ' ' .PHONY: all clean dependents main-build diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/sources.mk b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/sources.mk index e340efcf42b..4d78f48237e 100644 --- a/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/sources.mk +++ b/build/org.eclipse.cdt.managedbuilder.core.tests/resources/test30Projects/test30_2/Benchmarks/sources.mk @@ -14,6 +14,7 @@ CC_SRCS := TAROUT := TERMINAL__DUMMY_OUTPUT__OUTPUTS := LOGFILE := +TOUCHEDFILES := # Every subdirectory with source files must be described here SUBDIRS := \ diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu2/GnuMakefileGenerator.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu2/GnuMakefileGenerator.java index 90be704b51d..90ed3f48223 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu2/GnuMakefileGenerator.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/makegen/gnu2/GnuMakefileGenerator.java @@ -39,6 +39,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.TreeSet; import java.util.Vector; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -4035,7 +4036,8 @@ public class GnuMakefileGenerator implements IManagedBuilderMakefileGenerator2 { // for projects with specific setting on folders/files do // not clear the macro value on subsequent passes - map.putIfAbsent(macroName, new HashSet<>()); + // use TreeSet for deterministically sorted output + map.putIfAbsent(macroName, new TreeSet<>()); } // Set of input extensions for which macros have been created so far