diff --git a/Allwmake b/Allwmake
index 8ca29485179c0e598a31ad469d4aac0cb05719fb..80332502b57ce88a5ab99ebd3418936e62049023 100755
--- a/Allwmake
+++ b/Allwmake
@@ -38,7 +38,7 @@ cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || {
     exit 1
 }
 [ -n "$FOAM_EXT_LIBBIN" ] || {
-    echo "Error (${0##*/}) : \$FOAM_EXT_LIBBIN not set"
+    echo "Error (${0##*/}) : \$FOAM_EXT_LIBBIN not set for ThirdParty"
     echo "    Check your OpenFOAM environment and installation"
     exit 1
 }
@@ -51,6 +51,7 @@ cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || {
 [ -n "$WM_CXXFLAGS" ]   &&  export CXXFLAGS="$WM_CXXFLAGS"
 [ -n "$WM_LDFLAGS" ]    &&  export LDFLAGS="$WM_LDFLAGS"
 
+useGccFlag $@           # Scan arguments for a '-gcc' option
 
 warnBuildIssues()
 {
@@ -131,8 +132,11 @@ then
     mkdir -p $incDIR    2>/dev/null
     mkdir -p $libDIR    2>/dev/null
 
-    # 'CC' already set (eg, from WM_CC) - set scotch-specific 'CCS' too
-    [ -n "$CC" ] && export CCS="$CC"
+    # Scotch compilers
+    # CCS (serial compiler)   default=$CC
+    # CCP (parallel compiler) default=mpicc
+    export CCS="${CC:-$WM_CC}"
+    export CCP=$(whichMpicc)
 
     if [ -f $scotchMakefile ]
     then
@@ -196,8 +200,11 @@ then
         mkdir -p $incDIR    2>/dev/null
         mkdir -p $libDIR    2>/dev/null
 
-        # 'CC' already set (eg, from WM_CC) - set scotch-specific 'CCS' too
-        [ -n "$CC" ] && export CCS="$CC"
+        # Scotch compilers
+        # CCS (serial compiler)   default=$CC
+        # CCP (parallel compiler) default=mpicc
+        export CCS="${CC:-$WM_CC}"
+        export CCP=$(whichMpicc)
 
         if [ -f $scotchMakefile ]
         then
diff --git a/etc/tools/ThirdPartyFunctions b/etc/tools/ThirdPartyFunctions
index 5c1258c184b4bd19cd1f370ed0faebdd9bb94507..6c5c6a73b9e028bf70be3d7bbbf20d252be68ba6 100644
--- a/etc/tools/ThirdPartyFunctions
+++ b/etc/tools/ThirdPartyFunctions
@@ -45,6 +45,31 @@ useGcc()
     export CXX=g++
 }
 
+# Scan arguments for a '-gcc' option, forcing gcc/g++ when found
+useGccFlag()
+{
+    for i
+    do
+        if [ "$i" = "-gcc" ]
+        then
+            useGcc
+            break
+        fi
+    done
+}
+
+# Return mpiicc (for INTELMPI) or mpicc etc.
+whichMpicc()
+{
+    local mpicc
+    case "$WM_MPLIB" in
+    (INTELMPI)
+        mpicc=$(command -v mpiicc)      # Try using intel 'mpiicc'
+        ;;
+    esac
+    echo "${mpicc:-mpicc}"              # mpiicc | mpicc
+}
+
 #------------------------------------------------------------------------------
 # Some functions as per OpenFOAM etc/config.sh/functions
 
diff --git a/etc/wmakeFiles/scotch/Makefile.inc.i686_pc_linux2.shlib-OpenFOAM b/etc/wmakeFiles/scotch/Makefile.inc.i686_pc_linux2.shlib-OpenFOAM
index 8c83e09e887ff70b2286d70e24916caad31b6fac..c6f1bce3faa2edcc6a64836202a63a44a4f6a21c 100644
--- a/etc/wmakeFiles/scotch/Makefile.inc.i686_pc_linux2.shlib-OpenFOAM
+++ b/etc/wmakeFiles/scotch/Makefile.inc.i686_pc_linux2.shlib-OpenFOAM
@@ -1,21 +1,27 @@
-# openfoam notes:
+#-------------------------------*- makefile -*---------------------------------
+# OpenFOAM notes:
+#
 # WM_CFLAGS, WM_LDFLAGS contain "-m32 -fPIC" etc
 # WM_LABEL_SIZE == 64 for 'long' instead of 'int' for OpenFOAM labels
-
-# compiled without pthread
+#
+# - compiled without pthread
+#
+# Normally set CCS, CCP by caller
 
 EXE         =
 LIB         = .so
 OBJ         = .o
 
-MAKE        = make
-AR          = gcc
+AR          = $(CC)
 ARFLAGS     = $(WM_CFLAGS) -shared -o
-CAT         = cat
-CCS         = gcc
-CCP         = mpicc
-CCD         = mpicc
-CFLAGS      = $(WM_CFLAGS) -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Drestrict=__restrict
+CCS        ?= $(CC)
+CCP        ?= mpicc
+CCD         = $(CCP)
+CFLAGS      = $(WM_CFLAGS) -O3 \
+    -DCOMMON_FILE_COMPRESS_GZ \
+    -DCOMMON_RANDOM_FIXED_SEED \
+    -DSCOTCH_RENAME \
+    -Drestrict=__restrict
 
 # 32-bit vs. 64-bit labels
 ifeq ($(WM_LABEL_SIZE),64)
@@ -24,10 +30,15 @@ endif
 
 CLIBFLAGS   = -shared
 LDFLAGS     = -Xlinker --no-as-needed $(WM_LDFLAGS) -lz -lm -lrt
+
+MAKE        = make
 CP          = cp
-LEX         = flex -Pscotchyy -olex.yy.c
+CAT         = cat
 LN          = ln
 MKDIR       = mkdir
 MV          = mv
 RANLIB      = echo
+LEX         = flex -Pscotchyy -olex.yy.c
 YACC        = bison -pscotchyy -y -b y
+
+#------------------------------------------------------------------------------