Depend on PEM_PARsE_C when using test_cas_pem
diff --git a/programs/ssl/dtls_client.c b/programs/ssl/dtls_client.c
index 09cb904..3529e66 100644
--- a/programs/ssl/dtls_client.c
+++ b/programs/ssl/dtls_client.c
@@ -128,12 +128,12 @@
     polarssl_printf( "  . Loading the CA root certificate ..." );
     fflush( stdout );
 
-#if defined(POLARSSL_CERTS_C)
+#if defined(POLARSSL_CERTS_C) && defined(POLARSSL_PEM_PARSE_C)
     ret = x509_crt_parse( &cacert, (const unsigned char *) test_cas_pem,
                           test_cas_pem_len );
 #else
     ret = 1;
-    polarssl_printf("POLARSSL_CERTS_C not defined.");
+    polarssl_printf("POLARSSL_CERTS_C or POLARSSL_PEM_PARSE_C not defined.");
 #endif
 
     if( ret < 0 )
diff --git a/programs/ssl/dtls_server.c b/programs/ssl/dtls_server.c
index d641cb0..3bd14c9 100644
--- a/programs/ssl/dtls_server.c
+++ b/programs/ssl/dtls_server.c
@@ -37,7 +37,7 @@
     !defined(POLARSSL_SSL_COOKIE_C) || !defined(POLARSSL_NET_C) ||          \
     !defined(POLARSSL_ENTROPY_C) || !defined(POLARSSL_CTR_DRBG_C) ||        \
     !defined(POLARSSL_X509_CRT_PARSE_C) || !defined(POLARSSL_RSA_C) ||      \
-    !defined(POLARSSL_CERTS_C)
+    !defined(POLARSSL_CERTS_C) || !defined(POLARSSL_PEM_PARSE_C)
 
 #include <stdio.h>
 int main( void )
@@ -46,7 +46,7 @@
             "POLARSSL_SSL_COOKIE_C and/or POLARSSL_NET_C and/or "
             "POLARSSL_ENTROPY_C and/or POLARSSL_CTR_DRBG_C and/or "
             "POLARSSL_X509_CRT_PARSE_C and/or POLARSSL_RSA_C and/or "
-            "POLARSSL_CERTS_C not defined.\n" );
+            "POLARSSL_CERTS_C and/or POLARSSL_PEM_PARSE_C not defined.\n" );
     return( 0 );
 }
 #else
diff --git a/programs/ssl/ssl_client1.c b/programs/ssl/ssl_client1.c
index 0dc16e6..f5d732e 100644
--- a/programs/ssl/ssl_client1.c
+++ b/programs/ssl/ssl_client1.c
@@ -119,12 +119,12 @@
     polarssl_printf( "  . Loading the CA root certificate ..." );
     fflush( stdout );
 
-#if defined(POLARSSL_CERTS_C)
+#if defined(POLARSSL_CERTS_C) && defined(POLARSSL_PEM_PARSE_C)
     ret = x509_crt_parse( &cacert, (const unsigned char *) test_cas_pem,
                           test_cas_pem_len );
 #else
     ret = 1;
-    polarssl_printf("POLARSSL_CERTS_C not defined.");
+    polarssl_printf("POLARSSL_CERTS_C or POLARSSL_PEM_PARSE_C not defined.");
 #endif
 
     if( ret < 0 )
diff --git a/programs/ssl/ssl_fork_server.c b/programs/ssl/ssl_fork_server.c
index f9bef95..f4a0c7e 100644
--- a/programs/ssl/ssl_fork_server.c
+++ b/programs/ssl/ssl_fork_server.c
@@ -43,7 +43,7 @@
     defined(POLARSSL_SSL_SRV_C) && defined(POLARSSL_NET_C) && \
     defined(POLARSSL_RSA_C) && defined(POLARSSL_CTR_DRBG_C) && \
     defined(POLARSSL_X509_CRT_PARSE_C) && defined(POLARSSL_TIMING_C) && \
-    defined(POLARSSL_FS_IO)
+    defined(POLARSSL_FS_IO) && defined(POLARSSL_PEM_PARSE_C)
 #include "mbedtls/entropy.h"
 #include "mbedtls/ctr_drbg.h"
 #include "mbedtls/certs.h"
@@ -81,7 +81,7 @@
            "and/or POLARSSL_SSL_TLS_C and/or POLARSSL_SSL_SRV_C and/or "
            "POLARSSL_NET_C and/or POLARSSL_RSA_C and/or "
            "POLARSSL_CTR_DRBG_C and/or POLARSSL_X509_CRT_PARSE_C and/or "
-           "POLARSSL_TIMING_C not defined.\n");
+           "POLARSSL_TIMING_C and/or POLARSSL_PEM_PARSE_C not defined.\n");
     return( 0 );
 }
 #elif defined(_WIN32)
diff --git a/programs/ssl/ssl_mail_client.c b/programs/ssl/ssl_mail_client.c
index a196ad1..cde0640 100644
--- a/programs/ssl/ssl_mail_client.c
+++ b/programs/ssl/ssl_mail_client.c
@@ -556,13 +556,13 @@
         ret = pk_parse_keyfile( &pkey, opt.key_file, "" );
     else
 #endif
-#if defined(POLARSSL_CERTS_C)
+#if defined(POLARSSL_CERTS_C) && defined(POLARSSL_PEM_PARSE_C)
         ret = pk_parse_key( &pkey, (const unsigned char *) test_cli_key,
                 test_cli_key_len, NULL, 0 );
 #else
     {
         ret = -1;
-        polarssl_printf("POLARSSL_CERTS_C not defined.");
+        polarssl_printf("POLARSSL_CERTS_C or POLARSSL_PEM_PARSE_C not defined.");
     }
 #endif
     if( ret != 0 )
diff --git a/programs/ssl/ssl_pthread_server.c b/programs/ssl/ssl_pthread_server.c
index e800197..9b35ff4 100644
--- a/programs/ssl/ssl_pthread_server.c
+++ b/programs/ssl/ssl_pthread_server.c
@@ -45,7 +45,8 @@
     defined(POLARSSL_SSL_SRV_C) && defined(POLARSSL_NET_C) && \
     defined(POLARSSL_RSA_C) && defined(POLARSSL_CTR_DRBG_C) && \
     defined(POLARSSL_X509_CRT_PARSE_C) && defined(POLARSSL_FS_IO) && \
-    defined(POLARSSL_THREADING_C) && defined(POLARSSL_THREADING_PTHREAD)
+    defined(POLARSSL_THREADING_C) && defined(POLARSSL_THREADING_PTHREAD) && \
+    defined(POLARSSL_PEM_PARSE_C)
 #include "mbedtls/entropy.h"
 #include "mbedtls/ctr_drbg.h"
 #include "mbedtls/certs.h"
@@ -81,7 +82,8 @@
     !defined(POLARSSL_SSL_SRV_C) || !defined(POLARSSL_NET_C) ||             \
     !defined(POLARSSL_RSA_C) || !defined(POLARSSL_CTR_DRBG_C) ||            \
     !defined(POLARSSL_X509_CRT_PARSE_C) || !defined(POLARSSL_FS_IO) ||      \
-    !defined(POLARSSL_THREADING_C) || !defined(POLARSSL_THREADING_PTHREAD)
+    !defined(POLARSSL_THREADING_C) || !defined(POLARSSL_THREADING_PTHREAD) || \
+    !defined(POLARSSL_PEM_PARSE_C)
 int main( void )
 {
     polarssl_printf("POLARSSL_BIGNUM_C and/or POLARSSL_CERTS_C and/or POLARSSL_ENTROPY_C "
@@ -89,7 +91,7 @@
            "POLARSSL_NET_C and/or POLARSSL_RSA_C and/or "
            "POLARSSL_CTR_DRBG_C and/or POLARSSL_X509_CRT_PARSE_C and/or "
            "POLARSSL_THREADING_C and/or POLARSSL_THREADING_PTHREAD "
-           "not defined.\n");
+           "and/or POLARSSL_PEM_PARSE_C not defined.\n");
     return( 0 );
 }
 #else
diff --git a/programs/ssl/ssl_server.c b/programs/ssl/ssl_server.c
index db8c955..7960ecf 100644
--- a/programs/ssl/ssl_server.c
+++ b/programs/ssl/ssl_server.c
@@ -42,7 +42,8 @@
     defined(POLARSSL_ENTROPY_C) && defined(POLARSSL_SSL_TLS_C) && \
     defined(POLARSSL_SSL_SRV_C) && defined(POLARSSL_NET_C) && \
     defined(POLARSSL_RSA_C) && defined(POLARSSL_CTR_DRBG_C) && \
-    defined(POLARSSL_X509_CRT_PARSE_C) && defined(POLARSSL_FS_IO)
+    defined(POLARSSL_X509_CRT_PARSE_C) && defined(POLARSSL_FS_IO) && \
+    defined(POLARSSL_PEM_PARSE_C)
 #include "mbedtls/entropy.h"
 #include "mbedtls/ctr_drbg.h"
 #include "mbedtls/certs.h"
@@ -72,14 +73,15 @@
     !defined(POLARSSL_ENTROPY_C) || !defined(POLARSSL_SSL_TLS_C) || \
     !defined(POLARSSL_SSL_SRV_C) || !defined(POLARSSL_NET_C) ||     \
     !defined(POLARSSL_RSA_C) || !defined(POLARSSL_CTR_DRBG_C) ||    \
-    !defined(POLARSSL_X509_CRT_PARSE_C) || !defined(POLARSSL_FS_IO)
+    !defined(POLARSSL_X509_CRT_PARSE_C) || !defined(POLARSSL_FS_IO) || \
+    !defined(POLARSSL_PEM_PARSE_C)
 int main( void )
 {
     polarssl_printf("POLARSSL_BIGNUM_C and/or POLARSSL_CERTS_C and/or POLARSSL_ENTROPY_C "
            "and/or POLARSSL_SSL_TLS_C and/or POLARSSL_SSL_SRV_C and/or "
            "POLARSSL_NET_C and/or POLARSSL_RSA_C and/or "
            "POLARSSL_CTR_DRBG_C and/or POLARSSL_X509_CRT_PARSE_C "
-           "not defined.\n");
+           "and/or POLARSSL_PEM_PARSE_C not defined.\n");
     return( 0 );
 }
 #else