From 7dee8058e1ea7d3230d392b435b571f333e5317d Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@Germany>
Date: Wed, 30 Mar 2011 09:22:01 +0200
Subject: [PATCH] ENH: add Gcc46 rules

---
 etc/bashrc                          |  2 +-
 etc/cshrc                           |  2 +-
 etc/settings.csh                    |  7 +++++++
 etc/settings.sh                     |  6 ++++++
 wmake/rules/linux64Gcc46/c          | 16 ++++++++++++++++
 wmake/rules/linux64Gcc46/c++        | 21 +++++++++++++++++++++
 wmake/rules/linux64Gcc46/c++Debug   |  2 ++
 wmake/rules/linux64Gcc46/c++Opt     |  4 ++++
 wmake/rules/linux64Gcc46/c++Prof    |  2 ++
 wmake/rules/linux64Gcc46/cDebug     |  2 ++
 wmake/rules/linux64Gcc46/cOpt       |  2 ++
 wmake/rules/linux64Gcc46/cProf      |  2 ++
 wmake/rules/linux64Gcc46/general    |  8 ++++++++
 wmake/rules/linux64Gcc46/mplibHPMPI |  3 +++
 wmake/rules/linuxGcc46/c            | 16 ++++++++++++++++
 wmake/rules/linuxGcc46/c++          | 21 +++++++++++++++++++++
 wmake/rules/linuxGcc46/c++Debug     |  2 ++
 wmake/rules/linuxGcc46/c++Opt       |  2 ++
 wmake/rules/linuxGcc46/c++Prof      |  2 ++
 wmake/rules/linuxGcc46/cDebug       |  2 ++
 wmake/rules/linuxGcc46/cOpt         |  2 ++
 wmake/rules/linuxGcc46/cProf        |  2 ++
 wmake/rules/linuxGcc46/general      |  9 +++++++++
 wmake/rules/linuxGcc46/mplibHPMPI   |  3 +++
 24 files changed, 138 insertions(+), 2 deletions(-)
 create mode 100644 wmake/rules/linux64Gcc46/c
 create mode 100644 wmake/rules/linux64Gcc46/c++
 create mode 100644 wmake/rules/linux64Gcc46/c++Debug
 create mode 100644 wmake/rules/linux64Gcc46/c++Opt
 create mode 100644 wmake/rules/linux64Gcc46/c++Prof
 create mode 100644 wmake/rules/linux64Gcc46/cDebug
 create mode 100644 wmake/rules/linux64Gcc46/cOpt
 create mode 100644 wmake/rules/linux64Gcc46/cProf
 create mode 100644 wmake/rules/linux64Gcc46/general
 create mode 100644 wmake/rules/linux64Gcc46/mplibHPMPI
 create mode 100644 wmake/rules/linuxGcc46/c
 create mode 100644 wmake/rules/linuxGcc46/c++
 create mode 100644 wmake/rules/linuxGcc46/c++Debug
 create mode 100644 wmake/rules/linuxGcc46/c++Opt
 create mode 100644 wmake/rules/linuxGcc46/c++Prof
 create mode 100644 wmake/rules/linuxGcc46/cDebug
 create mode 100644 wmake/rules/linuxGcc46/cOpt
 create mode 100644 wmake/rules/linuxGcc46/cProf
 create mode 100644 wmake/rules/linuxGcc46/general
 create mode 100644 wmake/rules/linuxGcc46/mplibHPMPI

diff --git a/etc/bashrc b/etc/bashrc
index f5a29a3d895..2de27d05134 100644
--- a/etc/bashrc
+++ b/etc/bashrc
@@ -62,7 +62,7 @@ foamInstall=$HOME/$WM_PROJECT
 foamCompiler=system
 
 #- Compiler:
-#    WM_COMPILER = Gcc | Gcc43 | Gcc44 | Gcc45 | Clang | Icc (Intel icc)
+#    WM_COMPILER = Gcc | Gcc43 | Gcc44 | Gcc45 | Gcc46 | Clang | Icc (Intel icc)
 export WM_COMPILER=Gcc
 unset WM_COMPILER_ARCH WM_COMPILER_LIB_ARCH
 
diff --git a/etc/cshrc b/etc/cshrc
index b932679ad06..a23a607fff1 100644
--- a/etc/cshrc
+++ b/etc/cshrc
@@ -61,7 +61,7 @@ if ( ! $?FOAM_INST_DIR ) setenv FOAM_INST_DIR $foamInstall
 set foamCompiler=system
 
 #- Compiler:
-#    WM_COMPILER = Gcc | Gcc43 | Gcc44 | Gcc45 | Clang | Icc (Intel icc)
+#    WM_COMPILER = Gcc | Gcc43 | Gcc44 | Gcc45 | Gcc46 | Clang | Icc (Intel icc)
 setenv WM_COMPILER Gcc
 setenv WM_COMPILER_ARCH # defined but empty
 unsetenv WM_COMPILER_LIB_ARCH
diff --git a/etc/settings.csh b/etc/settings.csh
index 4e5677e3d9a..5e4c849926c 100644
--- a/etc/settings.csh
+++ b/etc/settings.csh
@@ -207,6 +207,13 @@ case ThirdParty:
         set gmp_version=gmp-5.0.1
         set mpfr_version=mpfr-2.4.2
         breaksw
+    case Gcc46:
+    case Gcc46++0x:
+        set gcc_version=gcc-4.6.0
+        set gmp_version=gmp-5.0.1
+        set mpfr_version=mpfr-2.4.2
+        set mpc_version=mpc-0.8.1
+        breaksw
     case Gcc45:
     case Gcc45++0x:
         set gcc_version=gcc-4.5.2
diff --git a/etc/settings.sh b/etc/settings.sh
index d7fcf2e254c..f9f83e42a42 100644
--- a/etc/settings.sh
+++ b/etc/settings.sh
@@ -227,6 +227,12 @@ OpenFOAM | ThirdParty)
         gmp_version=gmp-5.0.1
         mpfr_version=mpfr-2.4.2
         ;;
+    Gcc46 | Gcc46++0x)
+        gcc_version=gcc-4.6.0
+        gmp_version=gmp-5.0.1
+        mpfr_version=mpfr-2.4.2
+        mpc_version=mpc-0.8.1
+        ;;
     Gcc45 | Gcc45++0x)
         gcc_version=gcc-4.5.2
         gmp_version=gmp-5.0.1
diff --git a/wmake/rules/linux64Gcc46/c b/wmake/rules/linux64Gcc46/c
new file mode 100644
index 00000000000..f4114be3143
--- /dev/null
+++ b/wmake/rules/linux64Gcc46/c
@@ -0,0 +1,16 @@
+.SUFFIXES: .c .h
+
+cWARN        = -Wall
+
+cc          = gcc -m64
+
+include $(RULES)/c$(WM_COMPILE_OPTION)
+
+cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
+
+ctoo        = $(WM_SCHEDULER) $(cc) $(cFLAGS) -c $$SOURCE -o $@
+
+LINK_LIBS   = $(cDBUG)
+
+LINKLIBSO   = $(cc) -shared
+LINKEXE     = $(cc) -Xlinker --add-needed -Xlinker -z -Xlinker nodefs
diff --git a/wmake/rules/linux64Gcc46/c++ b/wmake/rules/linux64Gcc46/c++
new file mode 100644
index 00000000000..3ca193e296d
--- /dev/null
+++ b/wmake/rules/linux64Gcc46/c++
@@ -0,0 +1,21 @@
+.SUFFIXES: .C .cxx .cc .cpp
+
+c++WARN     = -Wall -Wextra -Wno-unused-parameter -Wold-style-cast
+
+CC          = g++ -m64
+
+include $(RULES)/c++$(WM_COMPILE_OPTION)
+
+ptFLAGS     = -DNoRepository -ftemplate-depth-100
+
+c++FLAGS    = $(GFLAGS) $(c++WARN) $(c++OPT) $(c++DBUG) $(ptFLAGS) $(LIB_HEADER_DIRS) -fPIC
+
+Ctoo        = $(WM_SCHEDULER) $(CC) $(c++FLAGS) -c $$SOURCE -o $@
+cxxtoo      = $(Ctoo)
+cctoo       = $(Ctoo)
+cpptoo      = $(Ctoo)
+
+LINK_LIBS   = $(c++DBUG)
+
+LINKLIBSO   = $(CC) $(c++FLAGS) -shared
+LINKEXE     = $(CC) $(c++FLAGS) -Xlinker --add-needed
diff --git a/wmake/rules/linux64Gcc46/c++Debug b/wmake/rules/linux64Gcc46/c++Debug
new file mode 100644
index 00000000000..19bdb9c3346
--- /dev/null
+++ b/wmake/rules/linux64Gcc46/c++Debug
@@ -0,0 +1,2 @@
+c++DBUG    = -ggdb3 -DFULLDEBUG
+c++OPT      = -O0 -fdefault-inline
diff --git a/wmake/rules/linux64Gcc46/c++Opt b/wmake/rules/linux64Gcc46/c++Opt
new file mode 100644
index 00000000000..3446f7f58cb
--- /dev/null
+++ b/wmake/rules/linux64Gcc46/c++Opt
@@ -0,0 +1,4 @@
+c++DBUG     =
+c++OPT      = -O3
+#c++OPT      = -march=nocona -O3
+# -ftree-vectorize -ftree-vectorizer-verbose=3
diff --git a/wmake/rules/linux64Gcc46/c++Prof b/wmake/rules/linux64Gcc46/c++Prof
new file mode 100644
index 00000000000..3bda4dad55e
--- /dev/null
+++ b/wmake/rules/linux64Gcc46/c++Prof
@@ -0,0 +1,2 @@
+c++DBUG    = -pg
+c++OPT     = -O2
diff --git a/wmake/rules/linux64Gcc46/cDebug b/wmake/rules/linux64Gcc46/cDebug
new file mode 100644
index 00000000000..72b638f4582
--- /dev/null
+++ b/wmake/rules/linux64Gcc46/cDebug
@@ -0,0 +1,2 @@
+cDBUG       = -ggdb -DFULLDEBUG
+cOPT        = -O1 -fdefault-inline -finline-functions
diff --git a/wmake/rules/linux64Gcc46/cOpt b/wmake/rules/linux64Gcc46/cOpt
new file mode 100644
index 00000000000..17318709f1f
--- /dev/null
+++ b/wmake/rules/linux64Gcc46/cOpt
@@ -0,0 +1,2 @@
+cDBUG       =
+cOPT        = -O3
diff --git a/wmake/rules/linux64Gcc46/cProf b/wmake/rules/linux64Gcc46/cProf
new file mode 100644
index 00000000000..ca3ac9bf5f0
--- /dev/null
+++ b/wmake/rules/linux64Gcc46/cProf
@@ -0,0 +1,2 @@
+cDBUG       = -pg
+cOPT        = -O2
diff --git a/wmake/rules/linux64Gcc46/general b/wmake/rules/linux64Gcc46/general
new file mode 100644
index 00000000000..4a42b11b1ee
--- /dev/null
+++ b/wmake/rules/linux64Gcc46/general
@@ -0,0 +1,8 @@
+CPP        = cpp -traditional-cpp
+
+PROJECT_LIBS = -l$(WM_PROJECT) -ldl
+
+include $(GENERAL_RULES)/standard
+
+include $(RULES)/c
+include $(RULES)/c++
diff --git a/wmake/rules/linux64Gcc46/mplibHPMPI b/wmake/rules/linux64Gcc46/mplibHPMPI
new file mode 100644
index 00000000000..574492a236a
--- /dev/null
+++ b/wmake/rules/linux64Gcc46/mplibHPMPI
@@ -0,0 +1,3 @@
+PFLAGS     =
+PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_amd64 -lmpi
diff --git a/wmake/rules/linuxGcc46/c b/wmake/rules/linuxGcc46/c
new file mode 100644
index 00000000000..d914fcd37d0
--- /dev/null
+++ b/wmake/rules/linuxGcc46/c
@@ -0,0 +1,16 @@
+.SUFFIXES: .c .h
+
+cWARN        = -Wall
+
+cc          = gcc -m32
+
+include $(RULES)/c$(WM_COMPILE_OPTION)
+
+cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
+
+ctoo        = $(WM_SCHEDULER) $(cc) $(cFLAGS) -c $$SOURCE -o $@
+
+LINK_LIBS   = $(cDBUG)
+
+LINKLIBSO   = $(cc) -shared
+LINKEXE     = $(cc) -Xlinker --add-needed -Xlinker -z -Xlinker nodefs
diff --git a/wmake/rules/linuxGcc46/c++ b/wmake/rules/linuxGcc46/c++
new file mode 100644
index 00000000000..e862181fc5c
--- /dev/null
+++ b/wmake/rules/linuxGcc46/c++
@@ -0,0 +1,21 @@
+.SUFFIXES: .C .cxx .cc .cpp
+
+c++WARN     = -Wall -Wextra -Wno-unused-parameter -Wold-style-cast
+
+CC          = g++ -m32
+
+include $(RULES)/c++$(WM_COMPILE_OPTION)
+
+ptFLAGS     = -DNoRepository -ftemplate-depth-100
+
+c++FLAGS    = $(GFLAGS) $(c++WARN) $(c++OPT) $(c++DBUG) $(ptFLAGS) $(LIB_HEADER_DIRS) -fPIC
+
+Ctoo        = $(WM_SCHEDULER) $(CC) $(c++FLAGS) -c $$SOURCE -o $@
+cxxtoo      = $(Ctoo)
+cctoo       = $(Ctoo)
+cpptoo      = $(Ctoo)
+
+LINK_LIBS   = $(c++DBUG)
+
+LINKLIBSO   = $(CC) $(c++FLAGS) -shared
+LINKEXE     = $(CC) $(c++FLAGS) -Xlinker --add-needed
diff --git a/wmake/rules/linuxGcc46/c++Debug b/wmake/rules/linuxGcc46/c++Debug
new file mode 100644
index 00000000000..19bdb9c3346
--- /dev/null
+++ b/wmake/rules/linuxGcc46/c++Debug
@@ -0,0 +1,2 @@
+c++DBUG    = -ggdb3 -DFULLDEBUG
+c++OPT      = -O0 -fdefault-inline
diff --git a/wmake/rules/linuxGcc46/c++Opt b/wmake/rules/linuxGcc46/c++Opt
new file mode 100644
index 00000000000..2aedabd6280
--- /dev/null
+++ b/wmake/rules/linuxGcc46/c++Opt
@@ -0,0 +1,2 @@
+c++DBUG     =
+c++OPT      = -O3
diff --git a/wmake/rules/linuxGcc46/c++Prof b/wmake/rules/linuxGcc46/c++Prof
new file mode 100644
index 00000000000..3bda4dad55e
--- /dev/null
+++ b/wmake/rules/linuxGcc46/c++Prof
@@ -0,0 +1,2 @@
+c++DBUG    = -pg
+c++OPT     = -O2
diff --git a/wmake/rules/linuxGcc46/cDebug b/wmake/rules/linuxGcc46/cDebug
new file mode 100644
index 00000000000..72b638f4582
--- /dev/null
+++ b/wmake/rules/linuxGcc46/cDebug
@@ -0,0 +1,2 @@
+cDBUG       = -ggdb -DFULLDEBUG
+cOPT        = -O1 -fdefault-inline -finline-functions
diff --git a/wmake/rules/linuxGcc46/cOpt b/wmake/rules/linuxGcc46/cOpt
new file mode 100644
index 00000000000..17318709f1f
--- /dev/null
+++ b/wmake/rules/linuxGcc46/cOpt
@@ -0,0 +1,2 @@
+cDBUG       =
+cOPT        = -O3
diff --git a/wmake/rules/linuxGcc46/cProf b/wmake/rules/linuxGcc46/cProf
new file mode 100644
index 00000000000..ca3ac9bf5f0
--- /dev/null
+++ b/wmake/rules/linuxGcc46/cProf
@@ -0,0 +1,2 @@
+cDBUG       = -pg
+cOPT        = -O2
diff --git a/wmake/rules/linuxGcc46/general b/wmake/rules/linuxGcc46/general
new file mode 100644
index 00000000000..4b051e6b984
--- /dev/null
+++ b/wmake/rules/linuxGcc46/general
@@ -0,0 +1,9 @@
+CPP        = cpp -traditional-cpp
+LD         = ld -melf_i386
+
+PROJECT_LIBS = -l$(WM_PROJECT) -ldl
+
+include $(GENERAL_RULES)/standard
+
+include $(RULES)/c
+include $(RULES)/c++
diff --git a/wmake/rules/linuxGcc46/mplibHPMPI b/wmake/rules/linuxGcc46/mplibHPMPI
new file mode 100644
index 00000000000..8aff40632bd
--- /dev/null
+++ b/wmake/rules/linuxGcc46/mplibHPMPI
@@ -0,0 +1,3 @@
+PFLAGS     =
+PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_ia32 -lmpi
-- 
GitLab