Include crypto config when generating query config

Adjusted generate_query_config.pl to have a configuration option 
of including the crypto config. Turned on by default.
diff --git a/scripts/generate_query_config.pl b/scripts/generate_query_config.pl
index f15e03a..cc49df4 100755
--- a/scripts/generate_query_config.pl
+++ b/scripts/generate_query_config.pl
@@ -18,7 +18,9 @@
 
 use strict;
 
+my $include_crypto = 1;
 my $config_file = "./include/mbedtls/config.h";
+my $crypto_config_file = "./crypto/include/mbedtls/config.h";
 
 my $query_config_format_file = "./scripts/data_files/query_config.fmt";
 my $query_config_file = "./programs/ssl/query_config.c";
@@ -33,31 +35,52 @@
 );
 my $excluded_re = join '|', @excluded;
 
-open(CONFIG_FILE, "$config_file") or die "Opening config file '$config_file': $!";
 
 # This variable will contain the string to replace in the CHECK_CONFIG of the
 # format file
 my $config_check = "";
+my %defines_seen;
+my @files = ($config_file);
 
-while (my $line = <CONFIG_FILE>) {
-    if ($line =~ /^(\/\/)?\s*#\s*define\s+(MBEDTLS_\w+).*/) {
-        my $name = $2;
 
-        # Skip over the macro that prevents multiple inclusion
-        next if "MBEDTLS_CONFIG_H" eq $name;
+if( @ARGV ) {
+    die "Invalid number of arguments" if scalar @ARGV != 1;
+    ($include_crypto) = @ARGV;
+}
 
-        # Skip over the macro if it is in the ecluded list
-        next if $name =~ /$excluded_re/;
+if( $include_crypto ) {
+    push(@files, $crypto_config_file);
+}
 
-        $config_check .= "#if defined($name)\n";
-        $config_check .= "    if( strcmp( \"$name\", config ) == 0 )\n";
-        $config_check .= "    {\n";
-        $config_check .= "        MACRO_EXPANSION_TO_STR( $name );\n";
-        $config_check .= "        return( 0 );\n";
-        $config_check .= "    }\n";
-        $config_check .= "#endif /* $name */\n";
-        $config_check .= "\n";
+foreach my $file (@files) {
+    open(FILE, "$file") or die "Opening config file failed: '$file': $!";
+    while (my $line = <FILE>) {
+        if ($line =~ /^(\/\/)?\s*#\s*define\s+(MBEDTLS_\w+).*/) {
+            my $name = $2;
+
+            # Skip over the macro that prevents multiple inclusion
+            next if "MBEDTLS_CONFIG_H" eq $name;
+
+            # Skip over the macro if it is in the excluded list
+            next if $name =~ /$excluded_re/;
+
+            # Skip if this define is already added
+            if( $defines_seen{$name}++ ) {
+                print "Skipping $name, already added. \n";
+                next;
+            }
+
+            $config_check .= "#if defined($name)\n";
+            $config_check .= "    if( strcmp( \"$name\", config ) == 0 )\n";
+            $config_check .= "    {\n";
+            $config_check .= "        MACRO_EXPANSION_TO_STR( $name );\n";
+            $config_check .= "        return( 0 );\n";
+            $config_check .= "    }\n";
+            $config_check .= "#endif /* $name */\n";
+            $config_check .= "\n";
+        }
     }
+    close(FILE);
 }
 
 # Read the full format file into a string