From 12e27d4c5b8292c30811294c9508bf67c00e9f02 Mon Sep 17 00:00:00 2001 From: Gilles Peskine <Gilles.Peskine@arm.com> Date: Mon, 13 Dec 2021 23:13:18 +0100 Subject: [PATCH] List ssl_debug_helpers_generated.h in generated files Running `generate_ssl_debug_helpers.py` generates both `ssl_debug_helpers_generated.c` and `ssl_debug_helpers_generated.h`. List the `.h` file as well as the `.c` file in `check-generated-files.sh` so that `check-generated-files.sh -u` will complain if it isn't up to date. List it in `Makefile` and `CMakeLists.txt` so that parallel builds know when to wait until the `.h` file is present. In `Makefile`, declare the `.c` file as depending on the `.h` file for order. This way, a dependency for either will wait until the `.h` file is present, and since the `.h` file is generated after the `.c` file, this guarantees that the `.c` file is present. This fixes random failures of `make -j` from a fresh checkout. Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com> --- library/CMakeLists.txt | 2 ++ library/Makefile | 11 +++++++---- tests/scripts/check-generated-files.sh | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index add078413c80..1059e8c054ca 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -147,6 +147,7 @@ if(GEN_FILES) add_custom_command( OUTPUT + ${CMAKE_CURRENT_BINARY_DIR}/ssl_debug_helpers_generated.h ${CMAKE_CURRENT_BINARY_DIR}/ssl_debug_helpers_generated.c COMMAND ${MBEDTLS_PYTHON_EXECUTABLE} @@ -161,6 +162,7 @@ else() link_to_source(error.c) link_to_source(version_features.c) link_to_source(ssl_debug_helpers_generated.c) + link_to_source(ssl_debug_helpers_generated.h) endif() if(CMAKE_COMPILER_IS_GNUCC) diff --git a/library/Makefile b/library/Makefile index 9881eb7a6358..a245d971d657 100644 --- a/library/Makefile +++ b/library/Makefile @@ -288,7 +288,9 @@ libmbedcrypto.dll: $(OBJS_CRYPTO) $(CC) $(LOCAL_CFLAGS) $(CFLAGS) -o $@ -c $< .PHONY: generated_files -GENERATED_FILES = error.c version_features.c ssl_debug_helpers_generated.c +GENERATED_FILES = \ + error.c version_features.c \ + ssl_debug_helpers_generated.c ssl_debug_helpers_generated.h generated_files: $(GENERATED_FILES) error.c: ../scripts/generate_errors.pl @@ -298,9 +300,10 @@ error.c: echo " Gen $@" $(PERL) ../scripts/generate_errors.pl -ssl_debug_helpers_generated.c: ../scripts/generate_ssl_debug_helpers.py -ssl_debug_helpers_generated.c: $(filter-out %config%,$(wildcard ../include/mbedtls/*.h)) -ssl_debug_helpers_generated.c: +ssl_debug_helpers_generated.c: | ssl_debug_helpers_generated.h +ssl_debug_helpers_generated.h: ../scripts/generate_ssl_debug_helpers.py +ssl_debug_helpers_generated.h: $(filter-out %config%,$(wildcard ../include/mbedtls/*.h)) +ssl_debug_helpers_generated.h: echo " Gen $@" $(PYTHON) ../scripts/generate_ssl_debug_helpers.py --mbedtls-root .. . diff --git a/tests/scripts/check-generated-files.sh b/tests/scripts/check-generated-files.sh index 994fd243bb58..b35da3d68e02 100755 --- a/tests/scripts/check-generated-files.sh +++ b/tests/scripts/check-generated-files.sh @@ -118,7 +118,7 @@ check() check scripts/generate_errors.pl library/error.c check scripts/generate_query_config.pl programs/test/query_config.c check scripts/generate_features.pl library/version_features.c -check scripts/generate_ssl_debug_helpers.py library/ssl_debug_helpers_generated.c +check scripts/generate_ssl_debug_helpers.py library/ssl_debug_helpers_generated.h library/ssl_debug_helpers_generated.c # generate_visualc_files enumerates source files (library/*.c). It doesn't # care about their content, but the files must exist. So it must run after # the step that creates or updates these files.