CONFIG: support FOAM_EXTRA_CXXFLAGS (#1256)

- allows custom tuning of compilation parameters
This commit is contained in:
Mark Olesen 2020-02-20 12:11:08 +01:00
parent ba3a31af95
commit ac8b64df46
10 changed files with 110 additions and 45 deletions

View File

@ -136,6 +136,11 @@ projectDir="$HOME/OpenFOAM/OpenFOAM-$WM_PROJECT_VERSION"
# * on a 32-bit OS this option is ignored (always 32-bit) # * on a 32-bit OS this option is ignored (always 32-bit)
#export WM_ARCH_OPTION=64 #export WM_ARCH_OPTION=64
# [FOAM_EXTRA_CXXFLAGS]
# Additional compilation flags - do not inherit from the environment.
# Set after sourcing or via <prefs.sh> to avoid surprises.
unset FOAM_EXTRA_CXXFLAGS
################################################################################ ################################################################################
# NO (NORMAL) USER EDITING BELOW HERE # NO (NORMAL) USER EDITING BELOW HERE

View File

@ -9,8 +9,7 @@
# Copyright (C) 2016-2019 OpenCFD Ltd. # Copyright (C) 2016-2019 OpenCFD Ltd.
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# License # License
# This file is part of OpenFOAM, licensed under GNU General Public License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
# <http://www.gnu.org/licenses/>.
# #
# File # File
# etc/config.csh/unset # etc/config.csh/unset
@ -46,20 +45,15 @@ endif
unsetenv WM_ARCH unsetenv WM_ARCH
unsetenv WM_ARCH_OPTION unsetenv WM_ARCH_OPTION
unsetenv WM_CC
unsetenv WM_CFLAGS
unsetenv WM_COMPILER unsetenv WM_COMPILER
unsetenv WM_COMPILER_ARCH unsetenv WM_COMPILER_ARCH
unsetenv WM_COMPILER_TYPE unsetenv WM_COMPILER_TYPE
unsetenv WM_COMPILER_LIB_ARCH unsetenv WM_COMPILER_LIB_ARCH
unsetenv WM_COMPILE_OPTION unsetenv WM_COMPILE_OPTION
unsetenv WM_CXX
unsetenv WM_CXXFLAGS
unsetenv WM_DIR unsetenv WM_DIR
unsetenv WM_HOSTS unsetenv WM_HOSTS
unsetenv WM_LABEL_OPTION unsetenv WM_LABEL_OPTION
unsetenv WM_LABEL_SIZE unsetenv WM_LABEL_SIZE
unsetenv WM_LDFLAGS
unsetenv WM_MPLIB unsetenv WM_MPLIB
unsetenv WM_NCOMPPROCS unsetenv WM_NCOMPPROCS
unsetenv WM_OPTIONS unsetenv WM_OPTIONS
@ -75,6 +69,11 @@ unsetenv WM_PROJECT_VERSION
unsetenv WM_SCHEDULER unsetenv WM_SCHEDULER
unsetenv WM_THIRD_PARTY_DIR unsetenv WM_THIRD_PARTY_DIR
# Older variables
# Before 1906
unsetenv WM_CC WM_CXX WM_CFLAGS WM_CXXFLAGS WM_LDFLAGS
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Unset FOAM_* environment variables # Unset FOAM_* environment variables
@ -84,8 +83,9 @@ unsetenv FOAM_APPBIN
unsetenv FOAM_APP unsetenv FOAM_APP
unsetenv FOAM_CODE_TEMPLATES unsetenv FOAM_CODE_TEMPLATES
unsetenv FOAM_ETC unsetenv FOAM_ETC
unsetenv FOAM_EXTRA_CXXFLAGS
unsetenv FOAM_EXTRA_LDFLAGS
unsetenv FOAM_EXT_LIBBIN unsetenv FOAM_EXT_LIBBIN
unsetenv FOAM_INST_DIR
unsetenv FOAM_JOB_DIR unsetenv FOAM_JOB_DIR
unsetenv FOAM_LIBBIN unsetenv FOAM_LIBBIN
unsetenv FOAM_MPI unsetenv FOAM_MPI
@ -102,6 +102,10 @@ unsetenv FOAM_USER_APPBIN
unsetenv FOAM_USER_LIBBIN unsetenv FOAM_USER_LIBBIN
unsetenv FOAM_UTILITIES unsetenv FOAM_UTILITIES
# Old variables
# Before 1812
unsetenv FOAM_INST_DIR
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Unset MPI-related environment variables # Unset MPI-related environment variables

View File

@ -6,11 +6,10 @@
# \\/ M anipulation | # \\/ M anipulation |
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Copyright (C) 2011-2016 OpenFOAM Foundation # Copyright (C) 2011-2016 OpenFOAM Foundation
# Copyright (C) 2016-2019 OpenCFD Ltd. # Copyright (C) 2016-2020 OpenCFD Ltd.
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# License # License
# This file is part of OpenFOAM, licensed under GNU General Public License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
# <http://www.gnu.org/licenses/>.
# #
# File # File
# etc/config.sh/unset # etc/config.sh/unset
@ -35,19 +34,14 @@ foamOldDirs="$WM_PROJECT_DIR $WM_THIRD_PARTY_DIR \
unset WM_ARCH unset WM_ARCH
unset WM_ARCH_OPTION unset WM_ARCH_OPTION
unset WM_CC
unset WM_CFLAGS
unset WM_COMPILER unset WM_COMPILER
unset WM_COMPILER_TYPE unset WM_COMPILER_TYPE
unset WM_COMPILER_LIB_ARCH unset WM_COMPILER_LIB_ARCH
unset WM_COMPILE_OPTION unset WM_COMPILE_OPTION
unset WM_CXX
unset WM_CXXFLAGS
unset WM_DIR unset WM_DIR
unset WM_HOSTS unset WM_HOSTS
unset WM_LABEL_OPTION unset WM_LABEL_OPTION
unset WM_LABEL_SIZE unset WM_LABEL_SIZE
unset WM_LDFLAGS
unset WM_MPLIB unset WM_MPLIB
unset WM_NCOMPPROCS unset WM_NCOMPPROCS
unset WM_OPTIONS unset WM_OPTIONS
@ -63,6 +57,10 @@ unset WM_PROJECT_VERSION
unset WM_SCHEDULER unset WM_SCHEDULER
unset WM_THIRD_PARTY_DIR unset WM_THIRD_PARTY_DIR
# Older variables
# Before 1906
unset WM_CC WM_CXX WM_CFLAGS WM_CXXFLAGS WM_LDFLAGS
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Unset FOAM_* environment variables # Unset FOAM_* environment variables
@ -72,8 +70,9 @@ unset FOAM_APPBIN
unset FOAM_APP unset FOAM_APP
unset FOAM_CODE_TEMPLATES unset FOAM_CODE_TEMPLATES
unset FOAM_ETC unset FOAM_ETC
unset FOAM_EXTRA_CXXFLAGS
unset FOAM_EXTRA_LDFLAGS
unset FOAM_EXT_LIBBIN unset FOAM_EXT_LIBBIN
unset FOAM_INST_DIR
unset FOAM_JOB_DIR unset FOAM_JOB_DIR
unset FOAM_LIBBIN unset FOAM_LIBBIN
unset FOAM_MPI unset FOAM_MPI
@ -90,6 +89,10 @@ unset FOAM_USER_APPBIN
unset FOAM_USER_LIBBIN unset FOAM_USER_LIBBIN
unset FOAM_UTILITIES unset FOAM_UTILITIES
# Old variables
# Before 1812
unset FOAM_INST_DIR
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Unset MPI-related environment variables # Unset MPI-related environment variables

View File

@ -138,6 +138,11 @@ set projectDir=`lsof +p $$ |& \
# * on a 32-bit OS this option is ignored (always 32-bit) # * on a 32-bit OS this option is ignored (always 32-bit)
#setenv WM_ARCH_OPTION 64 #setenv WM_ARCH_OPTION 64
# [FOAM_EXTRA_CXXFLAGS]
# Additional compilation flags - do not inherit from the environment.
# Set after sourcing or via <prefs.csh> to avoid surprises.
unsetenv FOAM_EXTRA_CXXFLAGS
################################################################################ ################################################################################
# NO (NORMAL) USER EDITING BELOW HERE # NO (NORMAL) USER EDITING BELOW HERE

View File

@ -14,9 +14,12 @@ c++WARN = \
-Wall -Wextra -Wold-style-cast \ -Wall -Wextra -Wold-style-cast \
-Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof \ -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof \
-Wno-undefined-var-template \ -Wno-undefined-var-template \
-Wno-unknown-warning-option -Wno-unknown-warning-option \
$(FOAM_EXTRA_CXXFLAGS)
c++LESSWARN = \ c++LESSWARN = \
-Wno-old-style-cast -Wno-unused-local-typedefs \ -Wno-old-style-cast -Wno-unused-local-typedefs \
-Wno-tautological-undefined-compare -Wno-shift-negative-value \ -Wno-tautological-undefined-compare -Wno-shift-negative-value \
-Wno-null-pointer-arithmetic -Wno-null-pointer-arithmetic
#------------------------------------------------------------------------------

View File

@ -13,9 +13,12 @@ ptFLAGS = -DNoRepository -ftemplate-depth-100
c++WARN = \ c++WARN = \
-Wall -Wextra -Wold-style-cast \ -Wall -Wextra -Wold-style-cast \
-Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof \ -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof \
-Wno-attributes -Wno-unknown-pragmas -Wno-attributes -Wno-unknown-pragmas \
$(FOAM_EXTRA_CXXFLAGS)
c++LESSWARN = \ c++LESSWARN = \
-Wno-old-style-cast -Wno-unused-local-typedefs -Wno-array-bounds \ -Wno-old-style-cast -Wno-unused-local-typedefs -Wno-array-bounds \
-Wno-deprecated-declarations \ -Wno-deprecated-declarations \
-fpermissive -fpermissive
#------------------------------------------------------------------------------

View File

@ -14,7 +14,10 @@ c++WARN = \
-Wall -Wextra \ -Wall -Wextra \
-Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof \ -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof \
-Wno-unknown-pragmas \ -Wno-unknown-pragmas \
-diag-disable 327,654,1125,1292,2289,2304,11062,11074,11076 -diag-disable 327,654,1125,1292,2289,2304,11062,11074,11076 \
$(FOAM_EXTRA_CXXFLAGS)
c++LESSWARN = \ c++LESSWARN = \
-diag-disable 1224,2026,2305 -diag-disable 1224,2026,2305
#------------------------------------------------------------------------------

View File

@ -10,5 +10,9 @@ ptFLAGS = -DNoRepository
# - Standard warnings # - Standard warnings
# - Less restrictive warnings (may be needed for flex++, CGAL, etc.) # - Less restrictive warnings (may be needed for flex++, CGAL, etc.)
c++WARN = c++WARN = \
$(FOAM_EXTRA_CXXFLAGS)
c++LESSWARN = c++LESSWARN =
#------------------------------------------------------------------------------

View File

@ -7,7 +7,7 @@
# \\/ M anipulation | # \\/ M anipulation |
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Copyright (C) 2011-2016 OpenFOAM Foundation # Copyright (C) 2011-2016 OpenFOAM Foundation
# Copyright (C) 2017 OpenCFD Ltd. # Copyright (C) 2017-2020 OpenCFD Ltd.
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# License # License
# This file is part of OpenFOAM. # This file is part of OpenFOAM.
@ -37,37 +37,52 @@
# lnInclude directories generated for libraries. # lnInclude directories generated for libraries.
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
Script=${0##*/} # Use 'Script' for error messages in wmakeFunctions Script="${0##*/}" # Use 'Script' for error messages in wmakeFunctions
. ${0%/*}/scripts/wmakeFunctions # Source wmake functions . "${0%/*}/scripts/wmakeFunctions" # Source wmake functions
usage() { printHelp() {
while [ "$#" -ge 1 ]; do echo "$1"; shift; done cat<<HELP_INFO
cat<<USAGE
Usage: $Script [OPTION] [dir] Usage: $Script [OPTION] [dir]
$Script [OPTION] target [dir [MakeDir]] $Script [OPTION] target [dir [MakeDir]]
options: options:
-a | -all Same as the 'all' target -a | -all All subdirectories, uses Allwclean, Allclean if they exist
-s | -silent Ignored - for compatibility with wmake -s | -silent Ignored - for compatibility with wmake
-help Print the usage -h | -help Display short help and exit
-help-full Display full help and exit
Clean up the wmake control directory Make/\$WM_OPTIONS and remove the Clean up the wmake control directory Make/\$WM_OPTIONS and remove the
lnInclude directories generated for libraries. lnInclude directories generated for libraries.
The targets correspond to a subset of the 'wmake' special targets: HELP_INFO
all All subdirectories, uses any Allwclean or Allclean
files if they exist cat<<HELP_TAIL_FULL
Special targets:
all Same as -all option
exe | lib | libo | libso exe | lib | libo | libso
Clean Make, any *.dep files and lnInclude directories
empty Remove empty sub-directories for the requested dir. empty Remove empty sub-directories for the requested dir.
If executed in the main project directory, it will also If executed in the main project directory, it will also
remove deprecated object directories and respective binaries remove deprecated object directories and respective binaries
that refer to no-longer-existing source code. that refer to no-longer-existing source code.
USAGE HELP_TAIL_FULL
exit 0 # clean exit
}
# Report error and exit
die()
{
exec 1>&2
echo
echo "Error encountered:"
while [ "$#" -ge 1 ]; do echo " $1"; shift; done
echo
echo "See '${0##*/} -help' for usage"
echo
exit 1 exit 1
} }
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Parse arguments and options # Parse arguments and options
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
@ -78,16 +93,20 @@ MakeDir=Make
while [ "$#" -gt 0 ] while [ "$#" -gt 0 ]
do do
case "$1" in case "$1" in
-h | -help*) -help-f*) # Full help
usage printHelp -full
;;
-h | -help*) # Short help
printHelp
;; ;;
-a | -all | all) -a | -all | all)
targetType=all targetType=all
;; ;;
-s | -silent) # Ignored - for compatibility with wmake -s | -silent) # Ignored - for compatibility with wmake
export WM_QUIET=true
;; ;;
-*) -*)
usage "unknown option: '$1'" die "unknown option: '$1'"
;; ;;
*) *)
break break

View File

@ -7,7 +7,7 @@
# \\/ M anipulation | # \\/ M anipulation |
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Copyright (C) 2011-2016 OpenFOAM Foundation # Copyright (C) 2011-2016 OpenFOAM Foundation
# Copyright (C) 2017-2019 OpenCFD Ltd. # Copyright (C) 2017-2020 OpenCFD Ltd.
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# License # License
# This file is part of OpenFOAM. # This file is part of OpenFOAM.
@ -94,19 +94,22 @@ cat<<HELP_FULL
HELP_FULL HELP_FULL
fi fi
cat<<HELP_TAIL cat<<HELP_TAIL_COMMON
-pwd Print root directory containing a Make/ directory -pwd Print root directory containing a Make/ directory
-version | --version Print version, which is the same as -show-api -version | --version Print version (same as -show-api)
-h | -help Display short help and exit -h | -help Display short help and exit
-help-full Display full help and exit -help-full Display full help and exit
A general, easy-to-use make system for multi-platform development A general, easy-to-use make system for multi-platform development
with support for local and network parallel compilation. with support for local and network parallel compilation.
The 'target' is a Makefile target: HELP_TAIL_COMMON
e.g., platforms/linux64GccDPOpt/.../fvMesh.o
or a special target: if [ -n "$1" ]
then
cat<<HELP_TAIL_FULL
Makefile targets: platforms/linux64GccDPInt32Opt/.../fvMesh.o (for example)
Special targets:
all | queue Same as -all | -queue options all | queue Same as -all | -queue options
exe Compile statically linked executable exe Compile statically linked executable
lib Compile statically linked archive lib (.a) lib Compile statically linked archive lib (.a)
@ -116,10 +119,23 @@ or a special target:
updatedep Compile dependencies only (in case of broken dependencies) updatedep Compile dependencies only (in case of broken dependencies)
objects Compile but not link objects Compile but not link
HELP_TAIL Environment
exit 1 FOAM_EXTRA_CXXFLAGS
HELP_TAIL_FULL
else
cat<<HELP_TAIL_BRIEF
Some special targets (see -help-full for details):
all | queue Same as -all | -queue options
exe Executables
lib libo libso Libraries
HELP_TAIL_BRIEF
fi
exit 0 # clean exit
} }
# Report error and exit # Report error and exit
die() die()
{ {