Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 16 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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
Expand Down
4 changes: 3 additions & 1 deletion library/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 3 additions & 1 deletion programs/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
25 changes: 25 additions & 0 deletions scripts/generate_visualc_files.pl
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@
use strict;
use Digest::MD5 'md5_hex';

my $help = <<EOF;
Usage: $0 [--help|--list]
Generate Visual Studio solutions and project files from templates.
Must be run from the Mbed TLS root or the scripts directory.
EOF

my $vsx_dir = "visualc/VS2017";
my $vsx_ext = "vcxproj";
my $vsx_app_tpl_file = "scripts/data_files/vs2017-app-template.$vsx_ext";
Expand Down Expand Up @@ -265,6 +271,25 @@ sub main {
check_dirs or die "Must be run from Mbed TLS root or scripts dir\n";
}

if (@ARGV == 0) {
# normal operation, code below
} elsif (@ARGV == 1 && $ARGV[0] eq '--help') {
print $help;
exit;
} elsif (@ARGV == 1 && $ARGV[0] eq '--list') {
my @app_list = get_app_list();
my @project_list = map {s!.*/!!; "$_.$vsx_ext"} @app_list;
foreach (@project_list) {
print "$vsx_dir/$_\n";
}
print "$vsx_main_file\n";
print "$vsx_sln_file\n";
exit;
} else {
print STDERR $help;
exit 120;
}

# Remove old files to ensure that, for example, project files from deleted
# apps are not kept
del_vsx_files();
Expand Down
4 changes: 3 additions & 1 deletion tests/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down