From ef6c2ef5902ba00a0043c687c489e0f9988b6b6d Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@esi-group.com>
Date: Fri, 25 Jan 2019 17:39:05 +0100
Subject: [PATCH] CONFIG: combine wmake rules for KNL architecture as a compile
 option

- instead of

      WM_COMPILER=GccKNL WM_COMPILE_OPTION=Opt

      -> linux64GccKNLDPInt32Opt

  now specify

      WM_COMPILER=Gcc  WM_COMPILE_OPTION=OptKNL

      -> linux64GccDPInt32OptKNL

This makes it easier (and more obvious) for adding different tweaks
without needing to generate too many files.
Eg,

    cd wmake/rules/linux64Gcc

    cp cOpt   cOptBdw
    cp c++Opt c++OptBdw

    edit these two files and then use WM_COMPILE_OPTION=OptBdw

CONFIG: provide some default c/c++ flags in General compiler rules

- can make is easier when deriving new compile options, and ensures
  that '-02' is enabled as an initial default.
---
 etc/bashrc                                    |  8 +++---
 etc/cshrc                                     |  8 +++---
 wmake/rules/General/Clang/c                   |  7 +++++
 wmake/rules/General/Clang/c++                 |  2 ++
 wmake/rules/General/Gcc/c                     |  7 +++++
 wmake/rules/General/Gcc/c++                   |  2 ++
 wmake/rules/General/Icc/c                     |  7 +++++
 wmake/rules/General/Icc/c++                   |  2 ++
 wmake/rules/darwin64Clang/c                   |  4 +--
 wmake/rules/linux64Clang/c                    |  4 +--
 wmake/rules/linux64Gcc/c                      |  4 +--
 .../c++Opt => linux64Gcc/c++OptKNL}           |  2 +-
 wmake/rules/linux64Gcc/cOptKNL                |  2 ++
 wmake/rules/linux64GccKNL/c                   | 16 -----------
 wmake/rules/linux64GccKNL/c++                 | 17 ------------
 wmake/rules/linux64GccKNL/c++Debug            |  2 --
 wmake/rules/linux64GccKNL/c++Prof             |  2 --
 wmake/rules/linux64GccKNL/cDebug              |  2 --
 wmake/rules/linux64GccKNL/cOpt                |  2 --
 wmake/rules/linux64GccKNL/cProf               |  2 --
 wmake/rules/linux64GccKNL/general             |  9 -------
 wmake/rules/linux64GccKNL/mplibHPMPI          |  3 ---
 wmake/rules/linux64GccKNL/mplibINTELMPI       |  3 ---
 wmake/rules/linux64Icc/c                      |  4 +--
 wmake/rules/linux64Icc/c++OptKNL              |  4 +++
 .../cOpt => linux64Icc/cOptKNL}               |  0
 wmake/rules/linux64IccKNL/c                   | 16 -----------
 wmake/rules/linux64IccKNL/c++                 | 27 -------------------
 wmake/rules/linux64IccKNL/c++Debug            |  2 --
 wmake/rules/linux64IccKNL/c++Opt              |  2 --
 wmake/rules/linux64IccKNL/c++Prof             |  2 --
 wmake/rules/linux64IccKNL/cDebug              |  2 --
 wmake/rules/linux64IccKNL/cProf               |  2 --
 wmake/rules/linux64IccKNL/general             |  8 ------
 wmake/rules/linux64IccKNL/mplibHPMPI          |  3 ---
 wmake/rules/linux64IccKNL/mplibINTELMPI       |  3 ---
 wmake/rules/linuxARM64Clang/c                 |  4 +--
 wmake/rules/linuxARM64Gcc/c                   |  4 +--
 wmake/rules/linuxARM7Gcc/c                    |  4 +--
 wmake/rules/linuxClang/c                      |  4 +--
 wmake/rules/linuxGcc/c                        |  4 +--
 wmake/rules/linuxIA64Gcc/c                    |  4 +--
 wmake/rules/linuxIA64Icc/c                    |  4 +--
 wmake/rules/linuxIcc/c                        |  4 +--
 wmake/rules/linuxPPC64Gcc/c                   |  4 +--
 wmake/rules/linuxPPC64leGcc/c                 |  4 +--
 wmake/rules/solaris64Gcc/c                    |  4 +--
 wmake/rules/solarisGcc/c                      |  4 +--
 48 files changed, 60 insertions(+), 180 deletions(-)
 create mode 100644 wmake/rules/General/Clang/c
 create mode 100644 wmake/rules/General/Gcc/c
 create mode 100644 wmake/rules/General/Icc/c
 rename wmake/rules/{linux64GccKNL/c++Opt => linux64Gcc/c++OptKNL} (61%)
 create mode 100644 wmake/rules/linux64Gcc/cOptKNL
 delete mode 100644 wmake/rules/linux64GccKNL/c
 delete mode 100644 wmake/rules/linux64GccKNL/c++
 delete mode 100644 wmake/rules/linux64GccKNL/c++Debug
 delete mode 100644 wmake/rules/linux64GccKNL/c++Prof
 delete mode 100644 wmake/rules/linux64GccKNL/cDebug
 delete mode 100644 wmake/rules/linux64GccKNL/cOpt
 delete mode 100644 wmake/rules/linux64GccKNL/cProf
 delete mode 100644 wmake/rules/linux64GccKNL/general
 delete mode 100644 wmake/rules/linux64GccKNL/mplibHPMPI
 delete mode 100644 wmake/rules/linux64GccKNL/mplibINTELMPI
 create mode 100644 wmake/rules/linux64Icc/c++OptKNL
 rename wmake/rules/{linux64IccKNL/cOpt => linux64Icc/cOptKNL} (100%)
 delete mode 100644 wmake/rules/linux64IccKNL/c
 delete mode 100644 wmake/rules/linux64IccKNL/c++
 delete mode 100644 wmake/rules/linux64IccKNL/c++Debug
 delete mode 100644 wmake/rules/linux64IccKNL/c++Opt
 delete mode 100644 wmake/rules/linux64IccKNL/c++Prof
 delete mode 100644 wmake/rules/linux64IccKNL/cDebug
 delete mode 100644 wmake/rules/linux64IccKNL/cProf
 delete mode 100644 wmake/rules/linux64IccKNL/general
 delete mode 100644 wmake/rules/linux64IccKNL/mplibHPMPI
 delete mode 100644 wmake/rules/linux64IccKNL/mplibINTELMPI

diff --git a/etc/bashrc b/etc/bashrc
index ba82317ff62..6f77c9f6fd4 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 a37a0906547..9f039e6a190 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 00000000000..8f1eb513d10
--- /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 439d4568f9a..4324a52e7cd 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 00000000000..123ffef0a64
--- /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 8ac680df3d7..6bacd2ee211 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 00000000000..068f403ce17
--- /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 f42e81c2cef..b53fdb0841a 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 99fb81abc5c..7d69cc751e4 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 74f30f24566..437b2d05f75 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 99886ffc020..dc18a9e4018 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 599e6aba611..a2a86096f4f 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 00000000000..2e24181a3fd
--- /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 2650cf56496..00000000000
--- 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 f0f435482cc..00000000000
--- 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 08680a0e4aa..00000000000
--- 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 3bda4dad55e..00000000000
--- 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 72b638f4582..00000000000
--- 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 17318709f1f..00000000000
--- 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 ca3ac9bf5f0..00000000000
--- 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 e510b17575c..00000000000
--- 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 d7c4b0cf30f..00000000000
--- 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 278e0b0f22c..00000000000
--- 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 920341c2fbf..b44d572c26f 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 00000000000..ae99496bd47
--- /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 920341c2fbf..00000000000
--- 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 0c85ccf8e94..00000000000
--- 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 0aec1fbffe1..00000000000
--- 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 2aedabd6280..00000000000
--- 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 3bda4dad55e..00000000000
--- 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 73dce0dfd01..00000000000
--- 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 ca3ac9bf5f0..00000000000
--- 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 52b0e177d7a..00000000000
--- 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 d7c4b0cf30f..00000000000
--- 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 278e0b0f22c..00000000000
--- 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 7e05a427c8c..c8467204e7f 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 6845d94483a..77c03e62f8e 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 6845d94483a..77c03e62f8e 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 7cc1b56a060..4fd84438e54 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 71dc037e4df..69a4dbd3033 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 6845d94483a..77c03e62f8e 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 a53630671c2..0c2300c88d8 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 b6fe8d4687b..0e922873af3 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 12f9165e04c..7e3d265de21 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 b486b3ade5c..b91dadc8fa2 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 99886ffc020..dc18a9e4018 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 6845d94483a..77c03e62f8e 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
-- 
GitLab