Add requires_{any,all}_configs_enabled functions

- requires_any_configs_enabled
- requires_all_configs_enabled
- requires_any_configs_disabled
- requires_all_configs_disabled

Signed-off-by: Jerry Yu <jerry.h.yu@arm.com>
diff --git a/programs/test/query_compile_time_config.c b/programs/test/query_compile_time_config.c
index 6d92de3..473c9a6 100644
--- a/programs/test/query_compile_time_config.c
+++ b/programs/test/query_compile_time_config.c
@@ -28,20 +28,27 @@
 #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE
 #endif
 
-#define USAGE                                                                \
-    "usage: %s [ <MBEDTLS_CONFIG> | -l ]\n\n"                                \
-    "This program takes one command line argument which corresponds to\n"    \
-    "the string representation of a Mbed TLS compile time configuration.\n"  \
-    "The value 0 will be returned if this configuration is defined in the\n" \
-    "Mbed TLS build and the macro expansion of that configuration will be\n" \
-    "printed (if any). Otherwise, 1 will be returned.\n"                     \
-    "-l\tPrint all available configuration.\n"
+#define USAGE                                                                   \
+    "usage: %s [ -all | -any | -l ] <MBEDTLS_CONFIG> ...\n\n"                   \
+    "This program takes command line arguments which correspond to\n"           \
+    "the string representation of Mbed TLS compile time configurations.\n\n"    \
+    "If only one argument is available, the value 0 will be returned if\n"      \
+    "this configuration is defined in the Mbed TLS build and the macro\n"       \
+    "expansion of that configuration will be printed (if any). Otherwise,\n"    \
+    " 1 will be returned.\n"                                                    \
+    "-l\tPrint all available configuration.\n"                                  \
+    "-all\tReturn 0 if all configurations are defined. Otherwise, return 1\n"   \
+    "-any\tReturn 0 if any configuration is defined. Otherwise, return 1\n"     \
+    "-h\tPrint this usage\n"
+
 #include <string.h>
 #include "query_config.h"
 
 int main( int argc, char *argv[] )
 {
-    if ( argc != 2 )
+    int i;
+
+    if ( argc == 1 || strcmp( argv[1], "-h" ) == 0 )
     {
         mbedtls_printf( USAGE, argv[0] );
         return( MBEDTLS_EXIT_FAILURE );
@@ -53,5 +60,31 @@
         return( 0 );
     }
 
-    return( query_config( argv[1] ) );
+    if( strcmp( argv[1], "-all" ) == 0 )
+    {
+        for( i = 2; i < argc; i++ )
+        {
+            if( query_config( argv[i] ) != 0 )
+                return( 1 );
+        }
+        return( 0 );
+    }
+
+    if( strcmp( argv[1], "-any" ) == 0 )
+    {
+        for( i = 2; i < argc; i++ )
+        {
+            if( query_config( argv[i] ) == 0 )
+                return( 0 );
+        }
+        return( 1 );
+    }
+
+    for( i = 1; i < argc; i++ )
+    {
+        if( query_config( argv[i] ) != 0 )
+            return( 1 );
+    }
+
+    return( 0 );
 }