diff --git a/Makefile b/Makefile index 38f2832f98d5..39f27692a5f8 100644 --- a/Makefile +++ b/Makefile @@ -56,12 +56,18 @@ programs/%: FORCE tests/%: FORCE $(MAKE) -C tests $* -.PHONY: generated_files +.PHONY: generated_files list_generated_files generated_files: library/generated_files generated_files: programs/generated_files generated_files: tests/generated_files generated_files: visualc_files +list_generated_files: + @$(MAKE) --no-print-directory -C library list_generated_files | sed 's!^!library/!' + @$(MAKE) --no-print-directory -C programs list_generated_files | sed 's!^!programs/!' + @$(MAKE) --no-print-directory -C tests list_generated_files | sed 's!^!tests/!' + @scripts/generate_visualc_files.pl --list + # Set GEN_FILES to the empty string to disable dependencies on generated # source files. Then `make generated_files` will only build files that # are missing, it will not rebuilt files that are present but out of date. @@ -86,8 +92,15 @@ gen_file_dep = | endif .PHONY: visualc_files -VISUALC_FILES = visualc/VS2017/mbedTLS.sln visualc/VS2017/mbedTLS.vcxproj -# TODO: $(app).vcxproj for each $(app) in programs/ +ifdef GEN_FILES +# Complete list. Requires perl, so make sure we don't execute this line +# when GEN_FILES is off. +VISUALC_FILES := $(shell $(PERL) scripts/generate_visualc_files.pl --list) +else +# Incomplete list, just enough to generate the files if they're all absent +# but not to generate files for new apps. +VISUALC_FILES := visualc/VS2017/mbedTLS.sln visualc/VS2017/mbedTLS.vcxproj +endif visualc_files: $(VISUALC_FILES) # Ensure that the .c files that generate_visualc_files.pl enumerates are diff --git a/library/Makefile b/library/Makefile index eb3b901ae8c1..f6eaffb477bb 100644 --- a/library/Makefile +++ b/library/Makefile @@ -341,8 +341,10 @@ libmbedcrypto.dll: $(OBJS_CRYPTO) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) -S -o $@ -c $< -.PHONY: generated_files +.PHONY: generated_files list_generated_files generated_files: $(GENERATED_FILES) +list_generated_files: + @for x in $(GENERATED_FILES); do echo "$$x"; done # See root Makefile GEN_FILES ?= yes diff --git a/programs/Makefile b/programs/Makefile index e76588603099..74c190d48278 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -131,9 +131,11 @@ fuzz: ${MBEDTLS_TEST_OBJS} ${MBEDTLS_TEST_OBJS}: $(MAKE) -C ../tests mbedtls_test -.PHONY: generated_files GENERATED_FILES = psa/psa_constant_names_generated.c test/query_config.c +.PHONY: generated_files list_generated_files generated_files: $(GENERATED_FILES) +list_generated_files: + @for x in $(GENERATED_FILES); do echo "$$x"; done psa/psa_constant_names_generated.c: $(gen_file_dep) ../scripts/generate_psa_constants.py psa/psa_constant_names_generated.c: $(gen_file_dep) ../include/psa/crypto_values.h diff --git a/scripts/generate_visualc_files.pl b/scripts/generate_visualc_files.pl index 9f28cddffbee..1238eb21e24e 100755 --- a/scripts/generate_visualc_files.pl +++ b/scripts/generate_visualc_files.pl @@ -13,6 +13,12 @@ use strict; use Digest::MD5 'md5_hex'; +my $help = <