#!/usr/bin/perl # use strict; my $include_dir = shift or die "Missing include directory"; my $data_dir = shift or die "Missing data directory"; my $feature_file = shift or die "Missing destination file"; my $feature_format_file = $data_dir.'/version_features.fmt'; my @sections = ( "System support", "PolarSSL modules", "PolarSSL feature support" ); my $line_separator = $/; undef $/; open(FORMAT_FILE, "$feature_format_file") or die "Opening feature format file '$feature_format_file': $!"; my $feature_format = ; close(FORMAT_FILE); $/ = $line_separator; open(CONFIG_H, "$include_dir/config.h") || die("Failure when opening config.h: $!"); my $feature_defines = ""; my $in_section = 0; while (my $line = ) { next if ($in_section && $line !~ /#define/ && $line !~ /SECTION/); next if (!$in_section && $line !~ /SECTION/); if ($in_section) { if ($line =~ /SECTION/) { $in_section = 0; next; } my ($define) = $line =~ /#define (\w+)/; $feature_defines .= "#if defined(${define})\n"; $feature_defines .= " \"${define}\",\n"; $feature_defines .= "#endif /* ${define} */\n"; } if (!$in_section) { my ($section_name) = $line =~ /SECTION: ([\w ]+)/; my $found_section = grep $_ eq $section_name, @sections; $in_section = 1 if ($found_section); } }; $feature_format =~ s/FEATURE_DEFINES\n/$feature_defines/g; open(ERROR_FILE, ">$feature_file") or die "Opening destination file '$feature_file': $!"; print ERROR_FILE $feature_format; close(ERROR_FILE);