diff --git a/scripts/generate_features.pl b/scripts/generate_features.pl
index 1bd82ca..10aadb6 100755
--- a/scripts/generate_features.pl
+++ b/scripts/generate_features.pl
@@ -3,18 +3,24 @@
 
 use strict;
 
-my ($include_dir, $data_dir, $feature_file);
+my ($include_dir, $data_dir, $feature_file, $include_crypto);
+my $crypto_include_dir = "crypto/include/mbedtls";
 
 if( @ARGV ) {
-    die "Invalid number of arguments" if scalar @ARGV != 3;
-    ($include_dir, $data_dir, $feature_file) = @ARGV;
+    die "Invalid number of arguments" if scalar @ARGV != 4;
+    ($include_dir, $data_dir, $feature_file, $include_crypto) = @ARGV;
 
     -d $include_dir or die "No such directory: $include_dir\n";
     -d $data_dir or die "No such directory: $data_dir\n";
+    if( $include_crypto ) {
+        -d $crypto_include_dir or die "Crypto submodule not present\n";
+    }
 } else {
     $include_dir = 'include/mbedtls';
     $data_dir = 'scripts/data_files';
     $feature_file = 'library/version_features.c';
+    $include_crypto = 1;
+    -d $crypto_include_dir or die "Crypto submodule not present\n";
 
     unless( -d $include_dir && -d $data_dir ) {
         chdir '..' or die;
@@ -36,37 +42,53 @@
 close(FORMAT_FILE);
 
 $/ = $line_separator;
+my %defines_seen;
+my @files = ("$include_dir/config.h");
 
-open(CONFIG_H, "$include_dir/config.h") || die("Failure when opening config.h: $!");
+if( $include_crypto ) {
+    push(@files, "$crypto_include_dir/config.h");
+}
 
 my $feature_defines = "";
-my $in_section = 0;
 
-while (my $line = <CONFIG_H>)
-{
-    next if ($in_section && $line !~ /#define/ && $line !~ /SECTION/);
-    next if (!$in_section && $line !~ /SECTION/);
+foreach my $file (@files) {
+    open(FILE, "$file") or die "Opening config file failed: '$file': $!";
 
-    if ($in_section) {
-        if ($line =~ /SECTION/) {
-            $in_section = 0;
-            next;
+    my $in_section = 0;
+
+    while (my $line = <FILE>)
+    {
+        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+)/;
+
+            # Skip if this define is already added
+            if( $defines_seen{$define}++ ) {
+                print "Skipping $define, already added. \n";
+                next;
+            }
+
+            $feature_defines .= "#if defined(${define})\n";
+            $feature_defines .= "    \"${define}\",\n";
+            $feature_defines .= "#endif /* ${define} */\n";
         }
 
-        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;
 
-    if (!$in_section) {
-        my ($section_name) = $line =~ /SECTION: ([\w ]+)/;
-        my $found_section = grep $_ eq $section_name, @sections;
-
-        $in_section = 1 if ($found_section);
-    }
-};
-
+            $in_section = 1 if ($found_section);
+        }
+    };
+    close(FILE);
+}
 $feature_format =~ s/FEATURE_DEFINES\n/$feature_defines/g;
 
 open(ERROR_FILE, ">$feature_file") or die "Opening destination file '$feature_file': $!";
