diff --git a/etc/bashrc b/etc/bashrc
index ba82317ff62997a755ba0f3f856a7859b8437349..6f77c9f6fd452ad501e3c64f81529c4b1c6fe1c0 100644
--- a/etc/bashrc
+++ b/etc/bashrc
@@ -68,8 +68,8 @@ projectDir="$HOME/OpenFOAM/OpenFOAM-$WM_PROJECT_VERSION"
 export WM_COMPILER_TYPE=system
 
 # [WM_COMPILER] - Compiler:
-# = Gcc | Gcc4[8-9] | Gcc5[1-5] | Gcc6[1-4] | Gcc7[1-3] | Gcc8[12] | GccKNL |
-#   Clang | Clang3[7-9] | Clang[4-6]0 | Icc | IccKNL | Cray | Arm
+# = Gcc | Gcc4[8-9] | Gcc5[1-5] | Gcc6[1-4] | Gcc7[1-3] | Gcc8[12] |
+#   Clang | Clang3[7-9] | Clang[4-6]0 | Icc | Cray | Arm
 export WM_COMPILER=Gcc
 
 # [WM_ARCH_OPTION] - Memory addressing:
@@ -86,8 +86,10 @@ export WM_PRECISION_OPTION=DP
 # = 32 | 64
 export WM_LABEL_SIZE=32
 
-# [WM_COMPILE_OPTION] - Optimised, debug, profiling:
+# [WM_COMPILE_OPTION] - Optimised, debug, profiling, other:
 # = Opt | Debug | Prof
+# Other is processor or packaging specific, for example
+# = OptKNL
 export WM_COMPILE_OPTION=Opt
 
 # [WM_MPLIB] - MPI implementation:
diff --git a/etc/cshrc b/etc/cshrc
index a37a09065475ea39e5368606fbefdc4227a2255a..9f039e6a1903cd66ddcebf15fc3c022d3df37e5b 100644
--- a/etc/cshrc
+++ b/etc/cshrc
@@ -70,8 +70,8 @@ set projectDir=`lsof +p $$ |& \
 setenv WM_COMPILER_TYPE system
 
 # [WM_COMPILER] - Compiler:
-# = Gcc | Gcc4[8-9] | Gcc5[1-5] | Gcc6[1-4] | Gcc7[1-3] | Gcc8[12] | GccKNL |
-#   Clang | Clang3[7-9] | Clang[4-6]0 | Icc | IccKNL | Cray | Arm
+# = Gcc | Gcc4[8-9] | Gcc5[1-5] | Gcc6[1-4] | Gcc7[1-3] | Gcc8[12] |
+#   Clang | Clang3[7-9] | Clang[4-6]0 | Icc | Cray | Arm
 setenv WM_COMPILER Gcc
 
 # [WM_ARCH_OPTION] - Memory addressing:
@@ -88,8 +88,10 @@ setenv WM_PRECISION_OPTION DP
 # = 32 | 64
 setenv WM_LABEL_SIZE 32
 
-# [WM_COMPILE_OPTION] - Optimised, debug, profiling:
+# [WM_COMPILE_OPTION] - Optimised, debug, profiling, other:
 # = Opt | Debug | Prof
+# Other is processor or packaging specific, for example
+# = OptKNL
 setenv WM_COMPILE_OPTION Opt
 
 # [WM_MPLIB] - MPI implementation:
diff --git a/wmake/rules/General/Clang/c b/wmake/rules/General/Clang/c
new file mode 100644
index 0000000000000000000000000000000000000000..8f1eb513d1075f1066a29d584fda278f5440b50a
--- /dev/null
+++ b/wmake/rules/General/Clang/c
@@ -0,0 +1,7 @@
+SUFFIXES += .c
+
+cc          = clang
+
+cDBUG       =
+cOPT        = -O2
+cWARN       = -Wall
diff --git a/wmake/rules/General/Clang/c++ b/wmake/rules/General/Clang/c++
index 439d4568f9a508dd2e15cf6b3c548463fa1957ec..4324a52e7cdad353b713f2f5a2009e6dad208499 100644
--- a/wmake/rules/General/Clang/c++
+++ b/wmake/rules/General/Clang/c++
@@ -2,6 +2,8 @@ SUFFIXES += .C .cc .cpp .cxx
 
 CC          = clang++ -std=c++11
 
+c++DBUG     =
+c++OPT      = -O2
 ptFLAGS     = -DNoRepository -ftemplate-depth-100
 
 # - Standard warnings
diff --git a/wmake/rules/General/Gcc/c b/wmake/rules/General/Gcc/c
new file mode 100644
index 0000000000000000000000000000000000000000..123ffef0a649ad56f05aaff5c3c10d24c4d2ba88
--- /dev/null
+++ b/wmake/rules/General/Gcc/c
@@ -0,0 +1,7 @@
+SUFFIXES += .c
+
+cc          = gcc
+
+cDBUG       =
+cOPT        = -O2
+cWARN       = -Wall
diff --git a/wmake/rules/General/Gcc/c++ b/wmake/rules/General/Gcc/c++
index 8ac680df3d700dd64eea70c8d4b6d82286e735d9..6bacd2ee211e4f316aa5d598a6f32a73840413ef 100644
--- a/wmake/rules/General/Gcc/c++
+++ b/wmake/rules/General/Gcc/c++
@@ -2,6 +2,8 @@ SUFFIXES += .C .cc .cpp .cxx
 
 CC          = g++ -std=c++11
 
+c++DBUG     =
+c++OPT      = -O2
 ptFLAGS     = -DNoRepository -ftemplate-depth-100
 
 # - Standard warnings
diff --git a/wmake/rules/General/Icc/c b/wmake/rules/General/Icc/c
new file mode 100644
index 0000000000000000000000000000000000000000..068f403ce1761ffb5ecd845d3cfa5806a5cadfd1
--- /dev/null
+++ b/wmake/rules/General/Icc/c
@@ -0,0 +1,7 @@
+SUFFIXES += .c
+
+cc          = icc
+
+cDBUG       =
+cOPT        = -O2
+cWARN       =
diff --git a/wmake/rules/General/Icc/c++ b/wmake/rules/General/Icc/c++
index f42e81c2cefcc1798ab358cab75ed03461cad45c..b53fdb0841a865dea616bbf089b2eff13d8ad218 100644
--- a/wmake/rules/General/Icc/c++
+++ b/wmake/rules/General/Icc/c++
@@ -2,6 +2,8 @@ SUFFIXES += .C .cc .cpp .cxx
 
 CC          = icpc -std=c++11
 
+c++DBUG     =
+c++OPT      = -O2
 ptFLAGS     = -DNoRepository
 
 # - Standard warnings
diff --git a/wmake/rules/darwin64Clang/c b/wmake/rules/darwin64Clang/c
index 99fb81abc5ce0c85590ea67f3d7c5ae1e586ae59..7d69cc751e4da4de90926e13e832b2c83c78d71f 100644
--- a/wmake/rules/darwin64Clang/c
+++ b/wmake/rules/darwin64Clang/c
@@ -1,9 +1,7 @@
-SUFFIXES += .c
+include $(GENERAL_RULES)/Clang/c
 
 cc          = clang -m64 -Ddarwin -ftrapping-math
 
-cWARN       = -Wall
-
 include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
 
 cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
diff --git a/wmake/rules/linux64Clang/c b/wmake/rules/linux64Clang/c
index 74f30f24566e0c2484213e5bf79c97672510bef5..437b2d05f75fe957a99318beee80779d60d1635c 100644
--- a/wmake/rules/linux64Clang/c
+++ b/wmake/rules/linux64Clang/c
@@ -1,9 +1,7 @@
-SUFFIXES += .c
+include $(GENERAL_RULES)/Clang/c
 
 cc          = clang -m64
 
-cWARN       = -Wall
-
 include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
 
 cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
diff --git a/wmake/rules/linux64Gcc/c b/wmake/rules/linux64Gcc/c
index 99886ffc02034df2e408d8983e3d53ef41d326fe..dc18a9e40189ffaee5fb08df378daf39a5ed1587 100644
--- a/wmake/rules/linux64Gcc/c
+++ b/wmake/rules/linux64Gcc/c
@@ -1,9 +1,7 @@
-SUFFIXES += .c
+include $(GENERAL_RULES)/Gcc/c
 
 cc          = gcc -m64
 
-cWARN       = -Wall
-
 include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
 
 cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
diff --git a/wmake/rules/linux64GccKNL/c++Opt b/wmake/rules/linux64Gcc/c++OptKNL
similarity index 61%
rename from wmake/rules/linux64GccKNL/c++Opt
rename to wmake/rules/linux64Gcc/c++OptKNL
index 599e6aba611dab95225e37204a5763288c546893..a2a86096f4fffc88e3597bea0a8288b654d1deed 100644
--- a/wmake/rules/linux64GccKNL/c++Opt
+++ b/wmake/rules/linux64Gcc/c++OptKNL
@@ -1,4 +1,4 @@
 c++DBUG     =
-c++OPT      = -O3
+c++OPT      = -march=knl -O3
 
 ROUNDING_MATH = -frounding-math
diff --git a/wmake/rules/linux64Gcc/cOptKNL b/wmake/rules/linux64Gcc/cOptKNL
new file mode 100644
index 0000000000000000000000000000000000000000..2e24181a3fd03cebf81fb7ca7683167a7bcd3972
--- /dev/null
+++ b/wmake/rules/linux64Gcc/cOptKNL
@@ -0,0 +1,2 @@
+cDBUG       =
+cOPT        = -march=knl -O3
diff --git a/wmake/rules/linux64GccKNL/c b/wmake/rules/linux64GccKNL/c
deleted file mode 100644
index 2650cf564961da08920a4ef59547ea4b1c39af71..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64GccKNL/c
+++ /dev/null
@@ -1,16 +0,0 @@
-SUFFIXES += .c
-
-cc          = gcc -m64 -march=knl
-
-cWARN       = -Wall
-
-include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
-
-cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
-
-ctoo        = $(WM_SCHEDULER) $(cc) $(cFLAGS) -c $< -o $@
-
-LINK_LIBS   = $(cDBUG)
-
-LINKLIBSO   = $(cc) -shared
-LINKEXE     = $(cc) -Xlinker --add-needed -Xlinker -z -Xlinker nodefs
diff --git a/wmake/rules/linux64GccKNL/c++ b/wmake/rules/linux64GccKNL/c++
deleted file mode 100644
index f0f435482cc77fd70e1fddc3d42ac2d1f14b13aa..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64GccKNL/c++
+++ /dev/null
@@ -1,17 +0,0 @@
-include $(GENERAL_RULES)/Gcc/c++
-
-CC          = g++ -std=c++11 -m64 -march=knl
-
-include $(DEFAULT_RULES)/c++$(WM_COMPILE_OPTION)
-
-c++FLAGS    = $(GFLAGS) $(c++WARN) $(c++OPT) $(c++DBUG) $(ptFLAGS) $(LIB_HEADER_DIRS) -fPIC
-
-Ctoo        = $(WM_SCHEDULER) $(CC) $(c++FLAGS) -c $< -o $@
-cxxtoo      = $(Ctoo)
-cctoo       = $(Ctoo)
-cpptoo      = $(Ctoo)
-
-LINK_LIBS   = $(c++DBUG)
-
-LINKLIBSO   = $(CC) $(c++FLAGS) -shared -Xlinker --add-needed -Xlinker --no-as-needed
-LINKEXE     = $(CC) $(c++FLAGS) -Xlinker --add-needed -Xlinker --no-as-needed
diff --git a/wmake/rules/linux64GccKNL/c++Debug b/wmake/rules/linux64GccKNL/c++Debug
deleted file mode 100644
index 08680a0e4aa011a94ce3318e5c869f3db9de286d..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64GccKNL/c++Debug
+++ /dev/null
@@ -1,2 +0,0 @@
-c++DBUG     = -ggdb3 -DFULLDEBUG
-c++OPT      = -O0 -fdefault-inline
diff --git a/wmake/rules/linux64GccKNL/c++Prof b/wmake/rules/linux64GccKNL/c++Prof
deleted file mode 100644
index 3bda4dad55e898a8198f6e8bfe21e8d829d7230a..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64GccKNL/c++Prof
+++ /dev/null
@@ -1,2 +0,0 @@
-c++DBUG    = -pg
-c++OPT     = -O2
diff --git a/wmake/rules/linux64GccKNL/cDebug b/wmake/rules/linux64GccKNL/cDebug
deleted file mode 100644
index 72b638f458220e329d52b59e3566a3c807101f9d..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64GccKNL/cDebug
+++ /dev/null
@@ -1,2 +0,0 @@
-cDBUG       = -ggdb -DFULLDEBUG
-cOPT        = -O1 -fdefault-inline -finline-functions
diff --git a/wmake/rules/linux64GccKNL/cOpt b/wmake/rules/linux64GccKNL/cOpt
deleted file mode 100644
index 17318709f1fa39e6bf89cbe87778bc6fa459de17..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64GccKNL/cOpt
+++ /dev/null
@@ -1,2 +0,0 @@
-cDBUG       =
-cOPT        = -O3
diff --git a/wmake/rules/linux64GccKNL/cProf b/wmake/rules/linux64GccKNL/cProf
deleted file mode 100644
index ca3ac9bf5f0cd61fe99e0f05fa1bd4bdf9fa6cf7..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64GccKNL/cProf
+++ /dev/null
@@ -1,2 +0,0 @@
-cDBUG       = -pg
-cOPT        = -O2
diff --git a/wmake/rules/linux64GccKNL/general b/wmake/rules/linux64GccKNL/general
deleted file mode 100644
index e510b17575c57ed491889f7450f32aea14a38025..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64GccKNL/general
+++ /dev/null
@@ -1,9 +0,0 @@
-CPP        = cpp -traditional-cpp $(GFLAGS)
-
-PROJECT_LIBS = -l$(WM_PROJECT) -ldl
-
-include $(GENERAL_RULES)/standard
-include $(GENERAL_RULES)/Gcc/openmp
-
-include $(DEFAULT_RULES)/c
-include $(DEFAULT_RULES)/c++
diff --git a/wmake/rules/linux64GccKNL/mplibHPMPI b/wmake/rules/linux64GccKNL/mplibHPMPI
deleted file mode 100644
index d7c4b0cf30ffd8aab3110a73777bca51c70030a4..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64GccKNL/mplibHPMPI
+++ /dev/null
@@ -1,3 +0,0 @@
-PFLAGS     =
-PINC       = -isystem $(MPI_ARCH_PATH)/include -D_MPICC_H
-PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_amd64 -lmpi
diff --git a/wmake/rules/linux64GccKNL/mplibINTELMPI b/wmake/rules/linux64GccKNL/mplibINTELMPI
deleted file mode 100644
index 278e0b0f22c7c7d6fafc3334cddccb237afe232e..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64GccKNL/mplibINTELMPI
+++ /dev/null
@@ -1,3 +0,0 @@
-PFLAGS     = -DMPICH_SKIP_MPICXX
-PINC       = -isystem $(MPI_ARCH_PATH)/include64
-PLIBS      = -L$(MPI_ARCH_PATH)/lib64 -lmpi
diff --git a/wmake/rules/linux64Icc/c b/wmake/rules/linux64Icc/c
index 920341c2fbfc953188356ff814369b164f8d8c37..b44d572c26f0308ea3f91af7c017e7e12ca79ef6 100644
--- a/wmake/rules/linux64Icc/c
+++ b/wmake/rules/linux64Icc/c
@@ -1,9 +1,7 @@
-SUFFIXES += .c
+include $(GENERAL_RULES)/Icc/c
 
 cc          = icc
 
-cWARN       =
-
 include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
 
 cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
diff --git a/wmake/rules/linux64Icc/c++OptKNL b/wmake/rules/linux64Icc/c++OptKNL
new file mode 100644
index 0000000000000000000000000000000000000000..ae99496bd47ccb1552c2de6dc32b34ff7132358d
--- /dev/null
+++ b/wmake/rules/linux64Icc/c++OptKNL
@@ -0,0 +1,4 @@
+c++DBUG     =
+c++OPT      = -xmic-avx512 -fp-speculation=safe -O3
+
+ROUNDING_MATH = -frounding-math
diff --git a/wmake/rules/linux64IccKNL/cOpt b/wmake/rules/linux64Icc/cOptKNL
similarity index 100%
rename from wmake/rules/linux64IccKNL/cOpt
rename to wmake/rules/linux64Icc/cOptKNL
diff --git a/wmake/rules/linux64IccKNL/c b/wmake/rules/linux64IccKNL/c
deleted file mode 100644
index 920341c2fbfc953188356ff814369b164f8d8c37..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64IccKNL/c
+++ /dev/null
@@ -1,16 +0,0 @@
-SUFFIXES += .c
-
-cc          = icc
-
-cWARN       =
-
-include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
-
-cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
-
-ctoo        = $(WM_SCHEDULER) $(cc) $(cFLAGS) -c $< -o $@
-
-LINK_LIBS   = $(cDBUG) -L$(IA32ROOT)/lib
-
-LINKLIBSO   = $(cc) $(cFLAGS) -shared
-LINKEXE     = $(cc) $(cFLAGS) -Xlinker --add-needed -Xlinker -z -Xlinker nodefs
diff --git a/wmake/rules/linux64IccKNL/c++ b/wmake/rules/linux64IccKNL/c++
deleted file mode 100644
index 0c85ccf8e946f6a4965fab4684eb37c24cc76813..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64IccKNL/c++
+++ /dev/null
@@ -1,27 +0,0 @@
-include $(GENERAL_RULES)/Icc/c++
-
-CC          = icpc -std=c++11 -xmic-avx512 -fp-trap=common -fp-model precise -fp-speculation=safe
-
-# Verify if -diag-disable should really be different that the general version
-# or was previously simply not kept updated (MAR-2018)
-
-c++WARN     = \
-    -Wall -Wextra \
-    -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof \
-    -Wno-unknown-pragmas \
-    -diag-disable 654,1125,1292,2304
-#
-
-include $(DEFAULT_RULES)/c++$(WM_COMPILE_OPTION)
-
-c++FLAGS    = $(GFLAGS) $(c++WARN) $(c++OPT) $(c++DBUG) $(ptFLAGS) $(LIB_HEADER_DIRS) -fPIC
-
-Ctoo        = $(WM_SCHEDULER) $(CC) $(c++FLAGS) -c $< -o $@
-cxxtoo      = $(Ctoo)
-cctoo       = $(Ctoo)
-cpptoo      = $(Ctoo)
-
-LINK_LIBS   = $(c++DBUG) -L$(IA64ROOT)/lib
-
-LINKLIBSO   = $(CC) $(c++FLAGS) -shared -Xlinker --add-needed -Xlinker --no-as-needed
-LINKEXE     = $(CC) $(c++FLAGS) -Xlinker --add-needed -Xlinker --no-as-needed
diff --git a/wmake/rules/linux64IccKNL/c++Debug b/wmake/rules/linux64IccKNL/c++Debug
deleted file mode 100644
index 0aec1fbffe1dd092d778540c501551d87474fb8e..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64IccKNL/c++Debug
+++ /dev/null
@@ -1,2 +0,0 @@
-c++DBUG    = -g -DFULLDEBUG -O0
-c++OPT     =
diff --git a/wmake/rules/linux64IccKNL/c++Opt b/wmake/rules/linux64IccKNL/c++Opt
deleted file mode 100644
index 2aedabd6280a3476bc58db13139a0a3aa579502b..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64IccKNL/c++Opt
+++ /dev/null
@@ -1,2 +0,0 @@
-c++DBUG     =
-c++OPT      = -O3
diff --git a/wmake/rules/linux64IccKNL/c++Prof b/wmake/rules/linux64IccKNL/c++Prof
deleted file mode 100644
index 3bda4dad55e898a8198f6e8bfe21e8d829d7230a..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64IccKNL/c++Prof
+++ /dev/null
@@ -1,2 +0,0 @@
-c++DBUG    = -pg
-c++OPT     = -O2
diff --git a/wmake/rules/linux64IccKNL/cDebug b/wmake/rules/linux64IccKNL/cDebug
deleted file mode 100644
index 73dce0dfd01f70663ed42deb43c46cb36c39394e..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64IccKNL/cDebug
+++ /dev/null
@@ -1,2 +0,0 @@
-cDBUG       = -g -DFULLDEBUG -O0
-cOPT        =
diff --git a/wmake/rules/linux64IccKNL/cProf b/wmake/rules/linux64IccKNL/cProf
deleted file mode 100644
index ca3ac9bf5f0cd61fe99e0f05fa1bd4bdf9fa6cf7..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64IccKNL/cProf
+++ /dev/null
@@ -1,2 +0,0 @@
-cDBUG       = -pg
-cOPT        = -O2
diff --git a/wmake/rules/linux64IccKNL/general b/wmake/rules/linux64IccKNL/general
deleted file mode 100644
index 52b0e177d7afe6ab60761862ae8b9f966fa18f2f..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64IccKNL/general
+++ /dev/null
@@ -1,8 +0,0 @@
-CPP        = /lib/cpp -traditional-cpp $(GFLAGS)
-
-PROJECT_LIBS = -l$(WM_PROJECT) -ldl
-
-include $(GENERAL_RULES)/standard
-
-include $(DEFAULT_RULES)/c
-include $(DEFAULT_RULES)/c++
diff --git a/wmake/rules/linux64IccKNL/mplibHPMPI b/wmake/rules/linux64IccKNL/mplibHPMPI
deleted file mode 100644
index d7c4b0cf30ffd8aab3110a73777bca51c70030a4..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64IccKNL/mplibHPMPI
+++ /dev/null
@@ -1,3 +0,0 @@
-PFLAGS     =
-PINC       = -isystem $(MPI_ARCH_PATH)/include -D_MPICC_H
-PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_amd64 -lmpi
diff --git a/wmake/rules/linux64IccKNL/mplibINTELMPI b/wmake/rules/linux64IccKNL/mplibINTELMPI
deleted file mode 100644
index 278e0b0f22c7c7d6fafc3334cddccb237afe232e..0000000000000000000000000000000000000000
--- a/wmake/rules/linux64IccKNL/mplibINTELMPI
+++ /dev/null
@@ -1,3 +0,0 @@
-PFLAGS     = -DMPICH_SKIP_MPICXX
-PINC       = -isystem $(MPI_ARCH_PATH)/include64
-PLIBS      = -L$(MPI_ARCH_PATH)/lib64 -lmpi
diff --git a/wmake/rules/linuxARM64Clang/c b/wmake/rules/linuxARM64Clang/c
index 7e05a427c8c90a9b42123c41559d42b817ba13d2..c8467204e7f21076a095cc05ccc92f4bb79d9953 100644
--- a/wmake/rules/linuxARM64Clang/c
+++ b/wmake/rules/linuxARM64Clang/c
@@ -1,9 +1,7 @@
-SUFFIXES += .c
+include $(GENERAL_RULES)/Clang/c
 
 cc          = clang
 
-cWARN       = -Wall
-
 include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
 
 cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
diff --git a/wmake/rules/linuxARM64Gcc/c b/wmake/rules/linuxARM64Gcc/c
index 6845d94483ae7de89f1106267bb220ca500a24a1..77c03e62f8e89a7e1a5c1069bf8686afdad097fa 100644
--- a/wmake/rules/linuxARM64Gcc/c
+++ b/wmake/rules/linuxARM64Gcc/c
@@ -1,9 +1,7 @@
-SUFFIXES += .c
+include $(GENERAL_RULES)/Gcc/c
 
 cc          = gcc
 
-cWARN       = -Wall
-
 include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
 
 cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
diff --git a/wmake/rules/linuxARM7Gcc/c b/wmake/rules/linuxARM7Gcc/c
index 6845d94483ae7de89f1106267bb220ca500a24a1..77c03e62f8e89a7e1a5c1069bf8686afdad097fa 100644
--- a/wmake/rules/linuxARM7Gcc/c
+++ b/wmake/rules/linuxARM7Gcc/c
@@ -1,9 +1,7 @@
-SUFFIXES += .c
+include $(GENERAL_RULES)/Gcc/c
 
 cc          = gcc
 
-cWARN       = -Wall
-
 include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
 
 cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
diff --git a/wmake/rules/linuxClang/c b/wmake/rules/linuxClang/c
index 7cc1b56a060f1c6910c2b0f01d15b9603f7d9c49..4fd84438e5401d4ea198dbbce95fea6ef4de494a 100644
--- a/wmake/rules/linuxClang/c
+++ b/wmake/rules/linuxClang/c
@@ -1,9 +1,7 @@
-SUFFIXES += .c
+include $(GENERAL_RULES)/Clang/c
 
 cc          = clang -m32
 
-cWARN       = -Wall
-
 include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
 
 cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
diff --git a/wmake/rules/linuxGcc/c b/wmake/rules/linuxGcc/c
index 71dc037e4df668a2d8a23a8d6a43d3725f2be7eb..69a4dbd30338001b931beade85023f52889a01ed 100644
--- a/wmake/rules/linuxGcc/c
+++ b/wmake/rules/linuxGcc/c
@@ -1,9 +1,7 @@
-SUFFIXES += .c
+include $(GENERAL_RULES)/Gcc/c
 
 cc          = gcc -m32
 
-cWARN       = -Wall
-
 include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
 
 cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
diff --git a/wmake/rules/linuxIA64Gcc/c b/wmake/rules/linuxIA64Gcc/c
index 6845d94483ae7de89f1106267bb220ca500a24a1..77c03e62f8e89a7e1a5c1069bf8686afdad097fa 100644
--- a/wmake/rules/linuxIA64Gcc/c
+++ b/wmake/rules/linuxIA64Gcc/c
@@ -1,9 +1,7 @@
-SUFFIXES += .c
+include $(GENERAL_RULES)/Gcc/c
 
 cc          = gcc
 
-cWARN       = -Wall
-
 include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
 
 cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
diff --git a/wmake/rules/linuxIA64Icc/c b/wmake/rules/linuxIA64Icc/c
index a53630671c2bb3e6242dfc928840c799c692e66e..0c2300c88d8a9062e5aa0b9899dca298a1c0902b 100644
--- a/wmake/rules/linuxIA64Icc/c
+++ b/wmake/rules/linuxIA64Icc/c
@@ -1,9 +1,7 @@
-SUFFIXES += .c
+include $(GENERAL_RULES)/Icc/c
 
 cc          = icc
 
-cWARN       =
-
 include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
 
 cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
diff --git a/wmake/rules/linuxIcc/c b/wmake/rules/linuxIcc/c
index b6fe8d4687bd002c62c7836fe13365f7965e62bd..0e922873af361eee39ed19c4118eeb64cd714bfa 100644
--- a/wmake/rules/linuxIcc/c
+++ b/wmake/rules/linuxIcc/c
@@ -1,9 +1,7 @@
-SUFFIXES += .c
+include $(GENERAL_RULES)/Icc/c
 
 cc          = icc -gcc-version=400
 
-cWARN       =
-
 include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
 
 cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -KPIC
diff --git a/wmake/rules/linuxPPC64Gcc/c b/wmake/rules/linuxPPC64Gcc/c
index 12f9165e04c97750c01d572b085c8e93336beeab..7e3d265de215b55be52c5d4481b2f442eb2fb5d9 100644
--- a/wmake/rules/linuxPPC64Gcc/c
+++ b/wmake/rules/linuxPPC64Gcc/c
@@ -1,9 +1,7 @@
-SUFFIXES += .c
+include $(GENERAL_RULES)/Gcc/c
 
 cc          = gcc -m64 -mcpu=power5+
 
-cWARN       = -Wall
-
 include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
 
 cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
diff --git a/wmake/rules/linuxPPC64leGcc/c b/wmake/rules/linuxPPC64leGcc/c
index b486b3ade5c0a07e59b9e513e497a99f15017cf0..b91dadc8fa28b4b90f96e6ee3febdb0aa087c641 100644
--- a/wmake/rules/linuxPPC64leGcc/c
+++ b/wmake/rules/linuxPPC64leGcc/c
@@ -1,9 +1,7 @@
-SUFFIXES += .c
+include $(GENERAL_RULES)/Gcc/c
 
 cc          = gcc -m64 -mcpu=power8
 
-cWARN       = -Wall
-
 include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
 
 cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
diff --git a/wmake/rules/solaris64Gcc/c b/wmake/rules/solaris64Gcc/c
index 99886ffc02034df2e408d8983e3d53ef41d326fe..dc18a9e40189ffaee5fb08df378daf39a5ed1587 100644
--- a/wmake/rules/solaris64Gcc/c
+++ b/wmake/rules/solaris64Gcc/c
@@ -1,9 +1,7 @@
-SUFFIXES += .c
+include $(GENERAL_RULES)/Gcc/c
 
 cc          = gcc -m64
 
-cWARN       = -Wall
-
 include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
 
 cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
diff --git a/wmake/rules/solarisGcc/c b/wmake/rules/solarisGcc/c
index 6845d94483ae7de89f1106267bb220ca500a24a1..77c03e62f8e89a7e1a5c1069bf8686afdad097fa 100644
--- a/wmake/rules/solarisGcc/c
+++ b/wmake/rules/solarisGcc/c
@@ -1,9 +1,7 @@
-SUFFIXES += .c
+include $(GENERAL_RULES)/Gcc/c
 
 cc          = gcc
 
-cWARN       = -Wall
-
 include $(DEFAULT_RULES)/c$(WM_COMPILE_OPTION)
 
 cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC