POLARSSL_PEM_C split into POLARSSL_PEM_PARSE_C and POLARSSL_PEM_WRITE_C
diff --git a/scripts/generate_errors.pl b/scripts/generate_errors.pl
index 5b95494..81b9209 100755
--- a/scripts/generate_errors.pl
+++ b/scripts/generate_errors.pl
@@ -52,6 +52,7 @@
     $define_name = "X509_WRITE" if ($define_name eq "X509WRITE");
     $define_name = "ASN1_PARSE" if ($define_name eq "ASN1");
     $define_name = "SSL_TLS" if ($define_name eq "SSL");
+    $define_name = "PEM_PARSE,PEM_WRITE" if ($define_name eq "PEM");
 
     my $include_name = $module_name;
     $include_name =~ tr/A-Z/a-z/;
@@ -68,6 +69,7 @@
     my $code_check;
     my $old_define;
     my $white_space;
+    my $first;
 
     if ($found_ll)
     {
@@ -86,12 +88,30 @@
     {
         if (${$old_define} ne "")
         {
-            ${$code_check} .= "#endif /* POLARSSL_${$old_define}_C */\n\n";
+            ${$code_check} .= "#endif /* ";
+            $first = 0;
+            foreach my $dep (split(/,/, ${$old_define}))
+            {
+                ${$code_check} .= " || " if ($first++);
+                ${$code_check} .= "POLARSSL_${dep}_C";
+            }
+            ${$code_check} .= " */\n\n";
         }
 
-        ${$code_check} .= "#if defined(POLARSSL_${define_name}_C)\n";
-        $headers .= "#if defined(POLARSSL_${define_name}_C)\n".
-                    "#include \"polarssl/${include_name}.h\"\n".
+        ${$code_check} .= "#if ";
+        $headers .= "#if " if ($include_name ne "");
+        $first = 0;
+        foreach my $dep (split(/,/, ${define_name}))
+        {
+            ${$code_check} .= " || " if ($first);
+            $headers       .= " || " if ($first++);
+
+            ${$code_check} .= "defined(POLARSSL_${dep}_C)";
+            $headers       .= "defined(POLARSSL_${dep}_C)" if
+                                                    ($include_name ne "");
+        }
+        ${$code_check} .= "\n";
+        $headers .= "\n#include \"polarssl/${include_name}.h\"\n".
                     "#endif\n\n" if ($include_name ne "");
         ${$old_define} = $define_name;
     }