From 3d0592f986ea5f258bbfe94bd691e3bf9d569356 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 31 Jul 2025 17:22:59 +0200 Subject: [PATCH 1/2] generate_visualc_files.pl: support listing with --list Signed-off-by: Gilles Peskine --- scripts/generate_visualc_files.pl | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/scripts/generate_visualc_files.pl b/scripts/generate_visualc_files.pl index 9f28cddffb..1238eb21e2 100755 --- a/scripts/generate_visualc_files.pl +++ b/scripts/generate_visualc_files.pl @@ -13,6 +13,12 @@ use warnings; use strict; use Digest::MD5 'md5_hex'; +my $help = < Date: Thu, 31 Jul 2025 17:28:10 +0200 Subject: [PATCH 2/2] Implement make list_generated_files Signed-off-by: Gilles Peskine --- Makefile | 19 ++++++++++++++++--- library/Makefile | 4 +++- programs/Makefile | 4 +++- tests/Makefile | 4 +++- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 38f2832f98..39f27692a5 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 eb3b901ae8..f6eaffb477 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 e765886030..74c190d482 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/tests/Makefile b/tests/Makefile index 103c4fe9db..e8184deb5c 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -71,8 +71,10 @@ opt-testcases/tls13-compat.sh: ../framework/scripts/generate_tls13_compat_tests. GENERATED_FILES += opt-testcases/tls13-compat.sh ssl-opt: opt-testcases/tls13-compat.sh -.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 # generate_bignum_tests.py and generate_psa_tests.py spend more time analyzing # inputs than generating outputs. Its inputs are the same no matter which files