diff --git a/Makefile.generated_files b/Makefile.generated_files index 1e4a83c9137..c1c6a4472cb 100644 --- a/Makefile.generated_files +++ b/Makefile.generated_files @@ -139,12 +139,18 @@ $(foreach dir, $(ALL_GO_DIRS), $(eval \ # We regenerate the output file in order to satisfy make's "newer than" rules, # but we only need to rebuild targets if the contents actually changed. That # is what the .stamp file represents. -$(foreach dir, $(ALL_GO_DIRS), $(META_DIR)/$(dir)/$(GOFILES_META)): +$(foreach dir, $(ALL_GO_DIRS), \ + $(META_DIR)/$(dir)/$(GOFILES_META)): FILES=$$(ls $$@.tmp; \ cmp -s $@.tmp $@ || touch $@.stamp; \ mv $@.tmp $@ +# This is required to fill in the DAG, since some cases (e.g. 'make clean all') +# will reference the .stamp file when it doesn't exist. We don't need to +# rebuild it in that case, just keep make happy. +$(foreach dir, $(ALL_GO_DIRS), \ + $(META_DIR)/$(dir)/$(GOFILES_META).stamp): # Include any deps files as additional Makefile rules. This triggers make to # consider the deps files for rebuild, which makes the whole @@ -219,7 +225,7 @@ gen_deepcopy: $(DEEPCOPY_FILES) # has changed. This allows us to detect deleted input files. $(foreach dir, $(DEEPCOPY_DIRS), $(eval \ $(dir)/$(DEEPCOPY_FILENAME): $(META_DIR)/$(dir)/$(GOFILES_META).stamp \ - $(gofiles__$(dir)) \ + $(gofiles__$(dir)) \ )) # Unilaterally remove any leftovers from previous runs. @@ -228,6 +234,7 @@ $(shell rm -f $(META_DIR)/$(DEEPCOPY_GEN)*.todo) # How to regenerate deep-copy code. This is a little slow to run, so we batch # it up and trigger the batch from the 'generated_files' target. $(DEEPCOPY_FILES): $(DEEPCOPY_GEN) + mkdir -p $$(dirname $(META_DIR)/$(DEEPCOPY_GEN)) echo $(PRJ_SRC_PATH)/$(@D) >> $(META_DIR)/$(DEEPCOPY_GEN).todo # This calculates the dependencies for the generator tool, so we only rebuild @@ -341,8 +348,9 @@ $(foreach dir, $(CONVERSION_DIRS), $(eval \ # We regenerate the output file in order to satisfy make's "newer than" rules, # but we only need to rebuild targets if the contents actually changed. That # is what the .stamp file represents. -$(foreach dir, $(CONVERSION_DIRS), $(META_DIR)/$(dir)/$(CONVERSIONS_META)): - TAGS=$$(grep --color=never -h '^// *+k8s:conversion-gen=' $> $(META_DIR)/$(CONVERSION_GEN).todo # This calculates the dependencies for the generator tool, so we only rebuild