Improved nothing-to-do-build

- Removed unnecessary dependency of
  "$(my_symlink) :  $(LOCAL_INSTALLED_MODULE)"
  We can generate symlink to nonexistent file.
  Actually in multilib build $(LOCAL_INSTALLED_MODULE) points to file
  that may not be the target file of the symlink and leads to always
  obsolete $(my_symlink) in the above dependnecy.
- Touch by-product in the dummy rule, to make sure the by-product is
  newer than the main-product.

Change-Id: I2f0e0cc197c49f920fa1f6794083b21cdc333c20
diff --git a/core/binary.mk b/core/binary.mk
index 56f8da8..a9b9e65 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -483,6 +483,7 @@
 # This is just a dummy rule to make sure gmake doesn't skip updating the dependents.
 $(rs_generated_cpps) : $(RenderScript_file_stamp)
 	@echo "Updated RS generated cpp file $@."
+	$(hide) touch $@
 
 my_c_includes += $(renderscript_intermediate)
 my_generated_sources += $(rs_generated_cpps)
@@ -535,6 +536,7 @@
 # This is just a dummy rule to make sure gmake doesn't skip updating the dependents.
 $(proto_generated_headers): $(proto_generated_cc_sources_dir)/%.pb.h: $(proto_generated_cc_sources_dir)/%.pb.cc
 	@echo "Updated header file $@."
+	$(hide) touch $@
 
 $(my_prefix)_$(LOCAL_MODULE_CLASS)_$(LOCAL_MODULE)_proto_defined := true
 endif  # transform-proto-to-cc rule included only once
diff --git a/core/executable_prefer_symlink.mk b/core/executable_prefer_symlink.mk
index 2326e83..fc97ad3 100644
--- a/core/executable_prefer_symlink.mk
+++ b/core/executable_prefer_symlink.mk
@@ -39,7 +39,10 @@
   endif
 endif
 
-$(my_symlink): $(LOCAL_INSTALLED_MODULE) $(LOCAL_MODULE_MAKEFILE)
+# $(my_symlink) doesn't need to depend on $(PRIVATE_SRC_BINARY_NAME): we can generate symlink to nonexistent file.
+# If you add the dependency, make would compare the timestamp of a file against that of its symlink:
+# they are always equal, because make follows symlink.
+$(my_symlink): $(LOCAL_MODULE_MAKEFILE)
 	@echo "Symlink: $@ -> $(PRIVATE_SRC_BINARY_NAME)"
 	@mkdir -p $(dir $@)
 	@rm -rf $@
diff --git a/core/host_dalvik_java_library.mk b/core/host_dalvik_java_library.mk
index 502016b..9ee1183 100644
--- a/core/host_dalvik_java_library.mk
+++ b/core/host_dalvik_java_library.mk
@@ -133,11 +133,11 @@
 	@echo Building with Jack: $@
 	$(jack-java-to-dex)
 
-# The empty command was added because, without it, make misses the fact the $(built_dex) also
-# change $(full_classes_jack). Looks like it would test the date before running $(built_dex)
-# command.
+# $(full_classes_jack) is just by-product of $(built_dex).
+# The dummy command was added because, without it, make misses the fact the $(built_dex) also
+# change $(full_classes_jack).
 $(full_classes_jack): $(built_dex)
-	@echo
+	$(hide) touch $@
 
 $(LOCAL_BUILT_MODULE): PRIVATE_DEX_FILE := $(built_dex)
 $(LOCAL_BUILT_MODULE): $(built_dex) $(java_resource_sources)
diff --git a/core/java.mk b/core/java.mk
index 6eb2247..1494c4b 100644
--- a/core/java.mk
+++ b/core/java.mk
@@ -611,13 +611,12 @@
 	@echo Building with Jack: $@
 	$(jack-java-to-dex)
 
-# The empty command was added because, without it, make misses the fact the $(built_dex) also
-# change $(full_classes_jack). Looks like it would test the date before running $(built_dex)
-# command.
+# $(full_classes_jack) is just by-product of $(built_dex_intermediate).
+# The dummy command was added because, without it, make misses the fact the $(built_dex) also
+# change $(full_classes_jack).
 $(full_classes_jack): $(built_dex_intermediate)
-	@echo
+	$(hide) touch $@
 
-# nothing to do it's built as a side effect of $(built_dex_intermediate)
 endif #LOCAL_IS_STATIC_JAVA_LIBRARY
 
 $(noshrob_classes_jack): PRIVATE_JACK_INTERMEDIATES_DIR := $(intermediates.COMMON)/jack-noshrob-rsc