diff --git a/bin/tools/query-versions b/bin/tools/query-versions
index 0233d12ede2e163efe294494e76734bc20f9cfa8..3445cf6420bacab38b5ccb13fe475e34928f77f3 100755
--- a/bin/tools/query-versions
+++ b/bin/tools/query-versions
@@ -54,6 +54,9 @@ usage() {
 Usage: ${0##*/} [OPTION]
 
 options:
+  -compiler         Print clang,gcc compiler versions only
+  -clang            Print clang compiler versions only
+  -gcc              Print gcc compiler versions only
   -h, -help         Print the usage
 
 Query (ThirdParty) versions based on their etc/config.sh values.
@@ -66,6 +69,7 @@ USAGE
 #------------------------------------------------------------------------------
 
 # Parse options
+unset optCompiler
 while [ "$#" -gt 0 ]
 do
     case "$1" in
@@ -74,6 +78,14 @@ do
         usage
         ;;
 
+    (-clang | -gcc)
+        optCompiler="${1#-}"
+        ;;
+
+    (-comp*)
+        optCompiler=true
+        ;;
+
     (*)
         echo "Ignore unknown option/argument: $@" 1>&2
         break
@@ -83,8 +95,13 @@ do
 done
 
 #------------------------------------------------------------------------------
+configDir="$projectDir/etc/config.sh"
 scriptsDir="$projectDir/wmake/scripts"
 
+[ -d "$configDir" ] || {
+    echo "No such directory: $configDir" 1>&2
+    exit 2
+}
 [ -d "$scriptsDir" ] || {
     echo "No such directory: $scriptsDir" 1>&2
     exit 2
@@ -95,15 +112,74 @@ export WM_PROJECT_DIR="$projectDir"
 
 #------------------------------------------------------------------------------
 
-# Examine the "wmake/scripts/have_..." scripts for query_...() functions,
-# assume they also have a -query option
+# Gcc/Clang versions in etc/config.sh/compiler
+#
+# parse this type of content
+# ----
+#     default_clang_version=llvm-3.7.1
+#     default_gcc_version=gcc-4.8.5
+#
+#     Gcc48*) gcc_version=gcc-4.8.5 ;;
+#     Gcc49*) gcc_version=gcc-4.9.4 ;;
+# ----
 
-for script in grep -l -e '^query_' "$scriptsDir"/have_*
-do
-    if [ -f "$script" ]
+queryCompiler()
+{
+    compiler="$1"
+
+    if [ -z "$compiler" ]
     then
-        bash "$script" -query
+        compiler='clang\|gcc'
     fi
-done
+
+    settings="$configDir/compiler"
+    if ! [ -f "$settings" ]
+    then
+        echo "No such file: $settings" 1>&2
+        return 1
+    fi
+
+    sed -n \
+        -e 's/^[ ]*\('"$compiler"'\)\([0-9][0-9]*\)[^=]*=\([^ ;]*\).*$/\1\2 \3/ip' \
+        "$settings"
+
+    sed -n \
+        -e 's/^[ ]*\(default_\)\('"$compiler"'\)_version=\([^ ;]*\).*$/\1\2 \3/ip' \
+        "$settings"
+}
+
+
+#------------------------------------------------------------------------------
+
+# Examine the "wmake/scripts/have_..." scripts for query_...() functions,
+# assume they also have a -query option
+
+queryVersions()
+{
+    for script in grep -l -e '^query_' "$scriptsDir"/have_*
+    do
+        if [ -f "$script" ]
+        then
+            bash "$script" -query
+        fi
+    done
+}
+
+
+#------------------------------------------------------------------------------
+
+# main
+
+case "$optCompiler" in
+(true)
+    queryCompiler
+    ;;
+(clang | gcc)
+    queryCompiler "$optCompiler"
+    ;;
+(*)
+    queryVersions
+    ;;
+esac
 
 #------------------------------------------------------------------------------