diff --git a/etc/bashrc b/etc/bashrc index f4268e1ff72f1f3dba1343e542dffb71c1f37f21..528385a02e218c4da16420cb8b7cb7ad85095c01 100644 --- a/etc/bashrc +++ b/etc/bashrc @@ -74,12 +74,6 @@ export WM_COMPILER_TYPE=system # Clang | Clang3[7-9] | Clang[4-6]0 | Icc | Cray | Arm | Pgi export WM_COMPILER=Gcc -# [WM_ARCH_OPTION] - Memory addressing: -# = 32 | 64 -# * on a 64-bit OS this can be 32 or 64 -# * on a 32-bit OS, it is always 32-bit and this option is ignored -export WM_ARCH_OPTION=64 - # [WM_PRECISION_OPTION] - Floating-point precision: # = DP | SP | SPDP export WM_PRECISION_OPTION=DP @@ -103,7 +97,7 @@ export WM_MPLIB=SYSTEMOPENMPI #------------------------------------------------------------------------------ # (advanced / legacy) -# + # [FOAM_SIGFPE] - Trap floating-point exceptions. # - overrides the 'trapFpe' controlDict entry # = true | false @@ -126,6 +120,12 @@ export WM_MPLIB=SYSTEMOPENMPI # = POSIX #export WM_OSTYPE=POSIX +# [WM_ARCH_OPTION] - compiling with -m32 option on 64-bit system +# = 32 | 64 +# * on a 64-bit OS this can be 32 or 64 +# * on a 32-bit OS this option is ignored (always 32-bit) +export WM_ARCH_OPTION=64 + ################################################################################ # Capture values of old directories to be cleaned from PATH, LD_LIBRARY_PATH diff --git a/etc/config.csh/settings b/etc/config.csh/settings index 00dd09f08fcf390ef08b8ce67106ffaad88f5ed6..7b5e5bd401b85582a5ccfc3e1c235fb994d79123 100644 --- a/etc/config.csh/settings +++ b/etc/config.csh/settings @@ -22,6 +22,12 @@ setenv WM_ARCH `uname -s` # System name ## if (! $?WM_OSTYPE ) setenv WM_OSTYPE POSIX # System type (POSIX is default) +set archOption=64 +if ($?WM_ARCH_OPTION) then + set archOption="$WM_ARCH_OPTION" +endif + +unsetenv WM_ARCH_OPTION # Compiling 32-bit on 64-bit system setenv WM_COMPILER_ARCH # Host compiler type (when different than target) setenv WM_COMPILER_LIB_ARCH # Additional ending for lib directories @@ -32,23 +38,22 @@ case Linux: switch (`uname -m`) case i686: - setenv WM_ARCH_OPTION 32 breaksw case x86_64: - if (! $?WM_ARCH_OPTION ) setenv WM_ARCH_OPTION 64 # Default to 64-bit - switch ($WM_ARCH_OPTION) + switch ("$archOption") case 32: - setenv WM_COMPILER_ARCH 64 # 64-bit compiler, 32-bit target + setenv WM_ARCH_OPTION 32 # Need to propagate the value + setenv WM_COMPILER_ARCH 64 # 64-bit compiler, 32-bit target breaksw case 64: setenv WM_ARCH linux64 - setenv WM_COMPILER_LIB_ARCH 64 # target with lib64 + setenv WM_COMPILER_LIB_ARCH 64 # Target with lib64 breaksw default: - echo "Unknown WM_ARCH_OPTION '$WM_ARCH_OPTION', should be 32|64" + echo "Unknown WM_ARCH_OPTION '$archOption', should be 32|64" breaksw endsw @@ -60,13 +65,11 @@ case Linux: case armv7l: setenv WM_ARCH linuxARM7 - setenv WM_ARCH_OPTION 32 setenv WM_COMPILER_LIB_ARCH 32 breaksw case aarch64: setenv WM_ARCH linuxARM64 - setenv WM_ARCH_OPTION 64 setenv WM_COMPILER_LIB_ARCH 64 breaksw @@ -88,14 +91,8 @@ case Linux: breaksw case Darwin: # Presumably x86_64 - if (! $?WM_ARCH_OPTION ) setenv WM_ARCH_OPTION 64 # Default to 64-bit setenv WM_ARCH darwin64 - /bin/cat << INCOMPLETE -=============================================================================== -Darwin support (clang only) is incomplete or untested in this OpenFOAM release. -For further assistance, please contact www.OpenFOAM.com -=============================================================================== -INCOMPLETE + echo "Darwin support is clang/llvm only" breaksw case SunOS*: @@ -320,7 +317,7 @@ endsw # Cleanup # ~~~~~~~ -unset archDir siteDir foundDir +unset archDir siteDir foundDir archOption unset gcc_version gccDir unset gmp_version gmpDir mpfr_version mpfrDir mpc_version mpcDir unset clang_version clangDir diff --git a/etc/config.sh/settings b/etc/config.sh/settings index 57386f401253ebd1d99f8f52272c7b0bacfdf408..e9d4feb060ef51875b13bd124f61dea9d682c505 100644 --- a/etc/config.sh/settings +++ b/etc/config.sh/settings @@ -22,6 +22,8 @@ export WM_ARCH="$(uname -s)" # System name ## : ${WM_OSTYPE:=POSIX}; export WM_OSTYPE # System type (POSIX is default) +archOption="${WM_ARCH_OPTION:-64}" +unset WM_ARCH_OPTION # Compiling 32-bit on 64-bit system unset WM_COMPILER_ARCH # Host compiler type (when different than target) unset WM_COMPILER_LIB_ARCH # Additional ending for lib directories @@ -33,21 +35,20 @@ Linux) case "$(uname -m)" in i686) - export WM_ARCH_OPTION=32 ;; x86_64) - : "${WM_ARCH_OPTION:=64}"; export WM_ARCH_OPTION # Default to 64-bit - case "$WM_ARCH_OPTION" in + case "$archOption" in 32) - export WM_COMPILER_ARCH=64 # 64-bit compiler, 32-bit target + export WM_ARCH_OPTION=32 # Need to propagate the value + export WM_COMPILER_ARCH=64 # 64-bit compiler, 32-bit target ;; 64) WM_ARCH=linux64 - export WM_COMPILER_LIB_ARCH=64 + export WM_COMPILER_LIB_ARCH=64 # Target with lib64 ;; *) - echo "Unknown WM_ARCH_OPTION '$WM_ARCH_OPTION', should be 32|64" 1>&2 + echo "Unknown WM_ARCH_OPTION '$archOption', should be 32|64" 1>&2 ;; esac ;; @@ -58,13 +59,11 @@ Linux) armv7l) WM_ARCH=linuxARM7 - export WM_ARCH_OPTION=32 export WM_COMPILER_LIB_ARCH=32 ;; aarch64) WM_ARCH=linuxARM64 - export WM_ARCH_OPTION=64 export WM_COMPILER_LIB_ARCH=64 ;; @@ -85,14 +84,8 @@ Linux) ;; Darwin) # Presumably x86_64 - : ${WM_ARCH_OPTION:=64}; export WM_ARCH_OPTION # Default to 64-bit WM_ARCH=darwin64 - /bin/cat << INCOMPLETE 1>&2 -=============================================================================== -Darwin support (clang only) is incomplete or untested in this OpenFOAM release. -For further assistance, please contact www.OpenFOAM.com -=============================================================================== -INCOMPLETE + echo "Darwin support is clang/llvm only" 1>&2 ;; SunOS*) @@ -314,7 +307,7 @@ esac # Cleanup # ~~~~~~~ -unset archDir siteDir foundDir +unset archDir siteDir foundDir archOption unset gcc_version gccDir unset gmp_version gmpDir mpfr_version mpfrDir mpc_version mpcDir unset clang_version clangDir diff --git a/etc/cshrc b/etc/cshrc index 895513345d2ea38ee992ce7d21d93f37b08c315d..83fc4d58f3e9347fba123c123a22cb191bb02552 100644 --- a/etc/cshrc +++ b/etc/cshrc @@ -76,12 +76,6 @@ setenv WM_COMPILER_TYPE system # Clang | Clang3[7-9] | Clang[4-6]0 | Icc | Cray | Arm | Pgi setenv WM_COMPILER Gcc -# [WM_ARCH_OPTION] - Memory addressing: -# = 32 | 64 -# * on a 64-bit OS this can be 32 or 64 -# * on a 32-bit OS, it is always 32-bit and this option is ignored -setenv WM_ARCH_OPTION 64 - # [WM_PRECISION_OPTION] - Floating-point precision: # = DP | SP | SPDP setenv WM_PRECISION_OPTION DP @@ -105,7 +99,7 @@ setenv WM_MPLIB SYSTEMOPENMPI #------------------------------------------------------------------------------ # (advanced / legacy) -# + # [FOAM_SIGFPE] - Trap floating-point exceptions. # - overrides the 'trapFpe' controlDict entry # = true | false @@ -128,6 +122,12 @@ setenv WM_MPLIB SYSTEMOPENMPI # = POSIX #setenv WM_OSTYPE POSIX +# [WM_ARCH_OPTION] - compiling with -m32 option on 64-bit system +# = 32 | 64 +# * on a 64-bit OS this can be 32 or 64 +# * on a 32-bit OS this option is ignored (always 32-bit) +setenv WM_ARCH_OPTION 64 + ################################################################################ # Old directories to be cleaned from PATH, LD_LIBRARY_PATH diff --git a/src/OpenFOAM/primitives/ints/int32/int32.H b/src/OpenFOAM/primitives/ints/int32/int32.H index a681ded96d7bac18e16c90bcf8a480d1c8711b42..311168a99a3958b65e8480ce1df566fd3c8f9ea3 100644 --- a/src/OpenFOAM/primitives/ints/int32/int32.H +++ b/src/OpenFOAM/primitives/ints/int32/int32.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2014-2016 OpenFOAM Foundation @@ -46,6 +46,7 @@ SourceFiles #include "pTraits.H" #include "direction.H" + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam @@ -119,9 +120,11 @@ inline bool read(const std::string& str, int32_t& val) Istream& operator>>(Istream& is, int32_t& val); Ostream& operator<<(Ostream& os, const int32_t val); -// 32bit OS: long is not unambiguously (int32_t | int64_t) +// 32bit compilation with long as int32_t // - resolve explicitly for input and output -#if WM_ARCH_OPTION == 32 +// +// Test works for gcc, icc, llvm. +#if (__SIZEOF_LONG__ == 4) Istream& operator>>(Istream& is, long& val); Ostream& operator<<(Ostream& os, const long val); #endif diff --git a/src/OpenFOAM/primitives/ints/int32/int32IO.C b/src/OpenFOAM/primitives/ints/int32/int32IO.C index 634712d0ad63bbe48d92158ecaa9c4b90a7fd297..bbeb64472620fb189b7fd83cd2d1e0174d7b488b 100644 --- a/src/OpenFOAM/primitives/ints/int32/int32IO.C +++ b/src/OpenFOAM/primitives/ints/int32/int32IO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2014-2016 OpenFOAM Foundation @@ -125,7 +125,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const int32_t val) } -#if WM_ARCH_OPTION == 32 +#if (__SIZEOF_LONG__ == 4) Foam::Istream& Foam::operator>>(Istream& is, long& val) { return operator>>(is, reinterpret_cast<int32_t&>(val)); @@ -133,8 +133,7 @@ Foam::Istream& Foam::operator>>(Istream& is, long& val) Foam::Ostream& Foam::operator<<(Ostream& os, const long val) { - os << int32_t(val); - return os; + return (os << int32_t(val)); } #endif diff --git a/wmake/rules/General/general b/wmake/rules/General/general index 6a6c7e130db88b54b31b802bb98a9804a9e6eb8a..20a452d3f2c02c407120115ad07821492b09e1b2 100644 --- a/wmake/rules/General/general +++ b/wmake/rules/General/general @@ -7,7 +7,7 @@ RANLIB = ranlib CPP = cpp LD = ld -GFLAGS = -D$(WM_VERSION) -DWM_ARCH_OPTION=$(WM_ARCH_OPTION) \ +GFLAGS = -D$(WM_VERSION) \ -DWM_$(WM_PRECISION_OPTION) -DWM_LABEL_SIZE=$(WM_LABEL_SIZE) GINC = GLIBS = -lm