Compare commits
6 Commits
issue-1946
...
rpmbuild-1
| Author | SHA1 | Date | |
|---|---|---|---|
| d0324a97f3 | |||
| 16e45fa114 | |||
| 841e7fde9f | |||
| 40c6fb6bd7 | |||
| c9345e0497 | |||
| cc9db3ea3a |
317
bin/tools/install-platform
Executable file
317
bin/tools/install-platform
Executable file
@ -0,0 +1,317 @@
|
||||
#!/bin/sh
|
||||
#------------------------------------------------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# install-platform
|
||||
#
|
||||
# Example usage
|
||||
# install-platform -prefix=/opt/openfoam2006
|
||||
#
|
||||
# Description
|
||||
# Simple installer for binary bin/, lib/ directories
|
||||
# (platforms directories), to simplify packaging.
|
||||
#
|
||||
# Note
|
||||
# The platforms/tools directory must be handled separately
|
||||
#
|
||||
# Layout of OpenFOAM platforms
|
||||
#
|
||||
# platforms
|
||||
# |-- <WM_OPTIONS>
|
||||
# |-- bin
|
||||
# | |-- ...
|
||||
# `-- lib
|
||||
# |-- ...
|
||||
# |-- dummy
|
||||
# | `-- ...
|
||||
# |-- openmpi-system
|
||||
# | |-- libPstream.so
|
||||
# | `-- libptscotchDecomp.so
|
||||
# `-- paraview-MAJ.MIN
|
||||
# `-- ...
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
printHelp() {
|
||||
cat<<USAGE
|
||||
|
||||
Usage: ${0##*/} [OPTION]
|
||||
|
||||
input options:
|
||||
-source=DIR Source directory (default: $WM_PROJECT_DIR)
|
||||
-platform=NAME Platform name (default: $WM_OPTIONS)
|
||||
-foam-mpi=NAME OpenFOAM mpi name (default: $FOAM_MPI)
|
||||
|
||||
target options:
|
||||
-prefix=DIR Top-level installation directory (eg, /opt/openfoamVER)
|
||||
-bindir=DIR bin directory [<prefix>/platforms/<platform>/bin]
|
||||
-libdir=DIR lib directory [<prefix>/platforms/<platform>/lib]
|
||||
-mpi-libdir=DIR mpi lib directory [<prefix>/platforms/<platform>/lib/<foam-mpi>]
|
||||
|
||||
tuning options:
|
||||
-no-bin Do not install bin directory
|
||||
-no-lib Do not install lib directory
|
||||
-no-mpi Do not install mpi lib directory
|
||||
-mpi-only Only install mpi lib directory
|
||||
-mpi-mkdir Create foam-mpi directory within libdir
|
||||
|
||||
general options:
|
||||
-dry-run, -n Do not perform any operations
|
||||
-verbose, -v Additional verbosity
|
||||
-help Print the help and exit
|
||||
|
||||
|
||||
Simple installer for binary bin/, lib/ directories (platforms directories),
|
||||
to simplify packaging.
|
||||
|
||||
USAGE
|
||||
exit 0 # A clean exit
|
||||
}
|
||||
|
||||
unset optDryRun hadError
|
||||
# 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
|
||||
}
|
||||
|
||||
# Report error and exit
|
||||
warnOrDie()
|
||||
{
|
||||
if [ -n "$optDryRun" ]
|
||||
then
|
||||
hadError=true
|
||||
while [ "$#" -ge 1 ]; do echo "Error: $1" 1>&2; shift; done
|
||||
else
|
||||
die "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Get the option's value (argument), or die on missing or empty value
|
||||
# $1 option=value
|
||||
getOptionValue()
|
||||
{
|
||||
local value="${1#*=}"
|
||||
# Remove any surrounding double quotes
|
||||
value="${value%\"}"
|
||||
value="${value#\"}"
|
||||
|
||||
[ -n "$value" ] || die "'${1%=}' option requires a value"
|
||||
echo "$value"
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Defaults from current OpenFOAM environment
|
||||
sourceDir="$WM_PROJECT_DIR"
|
||||
platform="$WM_OPTIONS"
|
||||
foam_mpi="$FOAM_MPI"
|
||||
|
||||
unset optInstall_bin optInstall_lib
|
||||
unset optMpi_mkdir
|
||||
optInstall_mpi=true
|
||||
|
||||
unset prefix bindir libdir libdir_mpi optVerbose
|
||||
|
||||
# Parse options
|
||||
while [ "$#" -gt 0 ]
|
||||
do
|
||||
case "$1" in
|
||||
-h | -help*) printHelp ;;
|
||||
-n | -dry-run) optDryRun="(dry-run) " ;;
|
||||
-v | -verbose) optVerbose=true ;;
|
||||
|
||||
# Inputs
|
||||
-source=*) sourceDir="$(getOptionValue "$1")" ;;
|
||||
-platform=*) platform="$(getOptionValue "$1")" ;;
|
||||
-foam-mpi=*) foam_mpi="$(getOptionValue "$1")" ;;
|
||||
|
||||
# Targets
|
||||
-prefix=*) prefix="$(getOptionValue "$1")" ;;
|
||||
-bindir=*) bindir="$(getOptionValue "$1")" ;;
|
||||
-libdir=*) libdir="$(getOptionValue "$1")" ;;
|
||||
-mpi-libdir=*) libdir_mpi="$(getOptionValue "$1")" ;;
|
||||
|
||||
-no-bin) optInstall_bin=false ;;
|
||||
-no-lib) optInstall_lib=false ;;
|
||||
-no-mpi) optInstall_mpi=false ;;
|
||||
-mpi-only) optInstall_mpi=exclusive ;;
|
||||
|
||||
-mpi-mkdir) optMpi_mkdir=true ;;
|
||||
|
||||
*)
|
||||
die "Unknown option/argument: $1"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Report settings
|
||||
|
||||
echo "Preparing install with the following parameters" 1>&2
|
||||
echo "source:" 1>&2
|
||||
echo " directory $sourceDir" 1>&2
|
||||
echo " platform $platform" 1>&2
|
||||
echo " foam-mpi $foam_mpi" 1>&2
|
||||
echo 1>&2
|
||||
echo "target (mpi-install: $optInstall_mpi)" 1>&2
|
||||
echo " directory $prefix" 1>&2
|
||||
echo " bindir ${bindir:-[default]}" 1>&2
|
||||
echo " libdir ${libdir:-[default]}" 1>&2
|
||||
echo " libdir(mpi) ${libdir_mpi:-[default]}" 1>&2
|
||||
echo 1>&2
|
||||
|
||||
# Input checks
|
||||
|
||||
[ -d "$sourceDir" ] || warnOrDie "Invalid -source directory: $sourceDir"
|
||||
[ -n "$platform" ] || warnOrDie "No -platform detected or specified"
|
||||
[ -n "$foam_mpi" ] || warnOrDie "No -foam-mpi detected or specified"
|
||||
|
||||
sourcePlatform="$sourceDir/platforms/$platform"
|
||||
|
||||
[ -d "$sourcePlatform" ] || \
|
||||
warnOrDie "Missing platforms directory for: $platform"
|
||||
|
||||
|
||||
# Installation directories
|
||||
if [ -n "$prefix" ]
|
||||
then
|
||||
installPlatform="$prefix/platforms/$platform"
|
||||
|
||||
# Set defaults based on -prefix
|
||||
[ -n "$bindir" ] || bindir="$installPlatform/bin"
|
||||
[ -n "$libdir" ] || libdir="$installPlatform/lib"
|
||||
fi
|
||||
|
||||
# Default mpi libdir based on libdir
|
||||
if [ -z "$libdir_mpi" ] && [ -n "$libdir" ]
|
||||
then
|
||||
libdir_mpi="$libdir/$foam_mpi"
|
||||
fi
|
||||
|
||||
# Check sanity
|
||||
[ -n "$bindir$libdir$libdir_mpi" ] || \
|
||||
warnOrDie "Must specify at least one of -prefix, -bindir, -libdir, -mpi-libdir"
|
||||
|
||||
|
||||
if [ -n "$hadError" ]
|
||||
then
|
||||
echo "Errors encounters in dry-run. Stopping" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if [ "$optInstall_bin" = false ] || [ "$optInstall_mpi" = exclusive ]
|
||||
then
|
||||
unset bindir
|
||||
fi
|
||||
if [ "$optInstall_lib" = false ] || [ "$optInstall_mpi" = exclusive ]
|
||||
then
|
||||
unset libdir
|
||||
fi
|
||||
if [ "$optInstall_mpi" = false ]
|
||||
then
|
||||
unset libdir_mpi
|
||||
fi
|
||||
|
||||
|
||||
# bin/
|
||||
if [ -n "$bindir" ]
|
||||
then
|
||||
echo "${optDryRun}Install bindir: $bindir" 1>&2
|
||||
if [ -z "$optDryRun" ]
|
||||
then
|
||||
mkdir -p "$bindir" 2>/dev/null
|
||||
|
||||
[ -n "$optVerbose" ] && echo "Copy $sourcePlatform/bin" 1>&2
|
||||
for i in "$sourcePlatform/bin/"*
|
||||
do
|
||||
if [ -e "$i" ]
|
||||
then
|
||||
cp -a ${optVerbose:+-v} "$i" "$bindir"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
else
|
||||
echo "${optDryRun}Install bindir: [disabled]" 1>&2
|
||||
fi
|
||||
|
||||
|
||||
# lib/ without mpi
|
||||
if [ -n "$libdir" ]
|
||||
then
|
||||
echo "${optDryRun}Install libdir(non-mpi): $libdir" 1>&2
|
||||
if [ -z "$optDryRun" ]
|
||||
then
|
||||
mkdir -p "$libdir" 2>/dev/null
|
||||
|
||||
[ -n "$optVerbose" ] && echo "Copy $sourcePlatform/lib" 1>&2
|
||||
for i in "$sourcePlatform/lib/"*
|
||||
do
|
||||
if [ "${i##*/}" = "$foam_mpi" ]
|
||||
then
|
||||
if [ "$optMpi_mkdir" = true ]
|
||||
then
|
||||
mkdir -p "$libdir/$foam_mpi"
|
||||
fi
|
||||
elif [ -e "$i" ]
|
||||
then
|
||||
cp -a ${optVerbose:+-v} "$i" "$libdir"
|
||||
else
|
||||
echo "bogus lib entry? $i" 1>&2
|
||||
fi
|
||||
done
|
||||
fi
|
||||
else
|
||||
echo "${optDryRun}Install libdir: [disabled]" 1>&2
|
||||
fi
|
||||
|
||||
|
||||
# lib/mpi
|
||||
if [ -n "$libdir_mpi" ]
|
||||
then
|
||||
echo "${optDryRun}Install libdir(mpi): $libdir_mpi" 1>&2
|
||||
if [ -z "$optDryRun" ]
|
||||
then
|
||||
mkdir -p "$libdir_mpi" 2>/dev/null
|
||||
|
||||
[ -n "$optVerbose" ] && echo "Copy $sourcePlatform/lib/$foam_mpi" 1>&2
|
||||
for i in "$sourcePlatform/lib/$foam_mpi"/*
|
||||
do
|
||||
if [ -e "$i" ]
|
||||
then
|
||||
# Always verbose (not many files anyhow)
|
||||
cp -a -v "$i" "$libdir_mpi"
|
||||
else
|
||||
echo "bogus mpi-lib entry? $i" 1>&2
|
||||
fi
|
||||
done
|
||||
fi
|
||||
else
|
||||
echo "${optDryRun}Install libdir(mpi): [disabled]" 1>&2
|
||||
fi
|
||||
|
||||
|
||||
exit 0 # clean exit
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
75
bin/tools/update-mpi-links.in
Normal file
75
bin/tools/update-mpi-links.in
Normal file
@ -0,0 +1,75 @@
|
||||
#!/bin/sh
|
||||
FOAM_MPI="@FOAM_MPI@"
|
||||
FOAM_SYSTEM_MPI_LIBBIN="@FOAM_SYSTEM_MPI_LIBBIN@"
|
||||
#------------------------------------------------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Description
|
||||
# Local update of links from system mpi lib/ to local lib/mpi-name
|
||||
#
|
||||
# Note
|
||||
# Normally located as a trigger within the platforms/ directory
|
||||
# Uses hard-code values (eg, generated with autoconfig).
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
cd "${0%/*}" || exit # Run from this directory
|
||||
|
||||
# Local values
|
||||
FOAM_LIBBIN="$(pwd -P)/lib"
|
||||
FOAM_MPI_LIBBIN="$FOAM_LIBBIN/$FOAM_MPI"
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
echo "Link OpenFOAM ($FOAM_MPI) from system mpi locations"
|
||||
echo "Target: $FOAM_MPI_LIBBIN"
|
||||
echo "Source: $FOAM_SYSTEM_MPI_LIBBIN"
|
||||
|
||||
if [ -z "$FOAM_MPI" ]
|
||||
then
|
||||
echo "FOAM_MPI not defined - skipping"
|
||||
exit 0
|
||||
fi
|
||||
if [ -z "$FOAM_SYSTEM_MPI_LIBBIN" ]
|
||||
then
|
||||
echo "FOAM_SYSTEM_MPI_LIBBIN not defined - skipping"
|
||||
exit 0
|
||||
fi
|
||||
if [ ! -d "$FOAM_SYSTEM_MPI_LIBBIN" ]
|
||||
then
|
||||
echo "No system mpi lib: $FOAM_SYSTEM_MPI_LIBBIN"
|
||||
echo "... not updating"
|
||||
exit 0
|
||||
fi
|
||||
if [ ! -d "$FOAM_LIBBIN" ]
|
||||
then
|
||||
echo "Missing $FOAM_LIBBIN"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
mkdir -p "$FOAM_MPI_LIBBIN"
|
||||
|
||||
# Create symlinks
|
||||
(
|
||||
cd "$FOAM_MPI_LIBBIN" || exit
|
||||
|
||||
for i in "$FOAM_SYSTEM_MPI_LIBBIN"/*
|
||||
do
|
||||
if [ -f "$i" ]
|
||||
then
|
||||
ln -svf "$i" "${i##*/}"
|
||||
fi
|
||||
done
|
||||
)
|
||||
|
||||
exit 0 # clean exit
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@ -41,7 +41,8 @@ wmakeLnInclude -u decompositionMethods
|
||||
if have_scotch
|
||||
then
|
||||
wmake $targetType scotchDecomp
|
||||
if [ -d "$FOAM_LIBBIN/$FOAM_MPI" ]
|
||||
|
||||
if have_ptscotch
|
||||
then
|
||||
wmakeMpiLib "$SCOTCH_VERSION" ptscotchDecomp
|
||||
fi
|
||||
|
||||
@ -1,13 +1,12 @@
|
||||
/*
|
||||
* NB: mplib PINC must appear after the SCOTCH_ARCH_PATH/include/FOAM_MPI
|
||||
* to ensure we do not accidentally get a ptscotch header from the
|
||||
* mpi distribution.
|
||||
* NB: mplib PINC must appear after PTSCOTCH_INC_DIR to ensure we
|
||||
* do not accidentally get a ptscotch header from the MPI distribution.
|
||||
*/
|
||||
sinclude $(GENERAL_RULES)/mplib$(WM_MPLIB)
|
||||
sinclude $(DEFAULT_RULES)/mplib$(WM_MPLIB)
|
||||
|
||||
EXE_INC = \
|
||||
-I$(SCOTCH_ARCH_PATH)/include/$(FOAM_MPI) \
|
||||
-I$(PTSCOTCH_INC_DIR) \
|
||||
-I$(SCOTCH_INC_DIR) \
|
||||
$(PFLAGS) $(PINC) \
|
||||
-I../decompositionMethods/lnInclude
|
||||
@ -17,9 +16,8 @@ EXE_INC = \
|
||||
* ptscotch 6 requires scotch linked in, but does not declare the dependency
|
||||
*/
|
||||
LIB_LIBS = \
|
||||
-L$(PTSCOTCH_LIB_DIR) \
|
||||
-L$(SCOTCH_LIB_DIR) \
|
||||
-L$(FOAM_EXT_LIBBIN)/$(FOAM_MPI) \
|
||||
-L$(FOAM_EXT_LIBBIN) \
|
||||
-lptscotch -lptscotcherrexit \
|
||||
-lscotch
|
||||
|
||||
|
||||
98
wmake/makefiles/info
Normal file
98
wmake/makefiles/info
Normal file
@ -0,0 +1,98 @@
|
||||
#----------------------------*- makefile-gmake -*------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2019 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# File
|
||||
# wmake/makefiles/info
|
||||
#
|
||||
# Description
|
||||
# Makefile to generate information.
|
||||
# Used by wmake -show-*
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Use POSIX shell
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
SHELL = /bin/sh
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# No default suffix rules used
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Some default values
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Shared library extension (with '.' separator)
|
||||
EXT_SO = .so
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Compilation rules
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
GENERAL_RULES = $(WM_DIR)/rules/General
|
||||
include $(GENERAL_RULES)/general
|
||||
|
||||
# Commands
|
||||
COMPILE_C := $(strip $(cc) $(cFLAGS))
|
||||
COMPILE_CXX := $(strip $(CC) $(c++FLAGS))
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Display information
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
.PHONY: api
|
||||
api:
|
||||
@echo "$(lastword $(subst =, ,$(WM_VERSION)))"
|
||||
|
||||
.PHONY: ext-so
|
||||
ext-so:
|
||||
@echo "$(EXT_SO)"
|
||||
|
||||
.PHONY: compile-c
|
||||
compile-c:
|
||||
@echo "$(COMPILE_C)"
|
||||
|
||||
.PHONY: compile-cxx
|
||||
compile-cxx:
|
||||
@echo "$(COMPILE_CXX)"
|
||||
|
||||
.PHONY: c
|
||||
c:
|
||||
@echo "$(firstword $(cc))"
|
||||
|
||||
.PHONY: cxx
|
||||
cxx:
|
||||
@echo "$(firstword $(CC))"
|
||||
|
||||
.PHONY: cflags
|
||||
cflags:
|
||||
@echo "$(wordlist 2,$(words $(COMPILE_C)), $(COMPILE_C))"
|
||||
|
||||
.PHONY: cxxflags
|
||||
cxxflags:
|
||||
@echo "$(wordlist 2,$(words $(COMPILE_CXX)), $(COMPILE_CXX))"
|
||||
|
||||
.PHONY: cflags-arch
|
||||
cflags-arch:
|
||||
@echo "$(strip $(cARCH))"
|
||||
|
||||
.PHONY: cxxflags-arch
|
||||
cxxflags-arch:
|
||||
@echo "$(strip $(c++ARCH))"
|
||||
|
||||
#----------------------------- vim: set ft=make: ------------------------------
|
||||
@ -17,7 +17,7 @@ GLIB_LIBS =
|
||||
COMPILER_TYPE = $(shell echo $(WM_COMPILER) | tr -d [:digit:])
|
||||
DEFAULT_RULES = $(WM_DIR)/rules/$(WM_ARCH)$(COMPILER_TYPE)
|
||||
RULES = $(WM_DIR)/rules/$(WM_ARCH)$(WM_COMPILER)
|
||||
WMAKE_BIN = $(WM_DIR)/platforms/$(WM_ARCH)$(WM_COMPILER)
|
||||
WMAKE_BIN = $(WM_PROJECT_DIR)/platforms/tools/$(WM_ARCH)$(WM_COMPILER)
|
||||
|
||||
ifeq ($(WM_SCHEDULER),)
|
||||
AND = &&
|
||||
|
||||
@ -2,12 +2,14 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2014-2017 OpenFOAM Foundation
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2014-2017 OpenFOAM Foundation
|
||||
# Copyright (C) 2019-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# File
|
||||
# wmake/scripts/AllwmakeParseArguments
|
||||
@ -17,16 +19,37 @@
|
||||
#
|
||||
# Usage
|
||||
# # Parse the arguments by sourcing this script
|
||||
# . $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments
|
||||
# . ${WM_PROJECT_DIR:?}/wmake/scripts/AllwmakeParseArguments
|
||||
#
|
||||
# Parsed options (make)
|
||||
# -k | -keep-going | -non-stop
|
||||
# -j | -jN | -j N
|
||||
#
|
||||
# Parsed options (wmake)
|
||||
# -debug
|
||||
# -q | -queue
|
||||
# -module-prefix=...
|
||||
# Exports FOAM_MODULE_PREFIX value.
|
||||
# Unsets FOAM_MODULE_APPBIN, FOAM_MODULE_LIBBIN.
|
||||
# Handles (user|group|openfoam) or (u|g|o) as per foamEtcFile,
|
||||
# or absolute/relative paths
|
||||
#
|
||||
# Parsed options (special)
|
||||
# -l | -log | -log=FILE
|
||||
# -prefix=... same as -module-prefix=...
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if [ -z "$WM_PROJECT_DIR" ]
|
||||
then
|
||||
echo "$Script error: The OpenFOAM environment is not set."
|
||||
echo " Check the OpenFOAM entries in your dot-files and source them."
|
||||
# Check environment
|
||||
[ -d "$WM_PROJECT_DIR" ] || {
|
||||
exec 1>&2
|
||||
echo "$0"
|
||||
echo "Error encountered:"
|
||||
echo " The OpenFOAM environment not set or incorrect."
|
||||
echo " Check your setup."
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
usage() {
|
||||
exec 1>&2
|
||||
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
|
||||
@ -37,13 +60,18 @@ Executing ${0##*/} is equivalent to
|
||||
|
||||
wmake -all [OPTIONS]
|
||||
|
||||
With these additional options:
|
||||
-l | -log | -log=name
|
||||
With additional options:
|
||||
-l | -log Tee output to log.\$WM_OPTIONS
|
||||
-log=NAME Tee output to given filename
|
||||
-prefix=... Define FOAM_MODULE_PREFIX (same as wmake -module-prefix)
|
||||
-no-recursion Prevent recursive call (do NOT call 'wmake -all')
|
||||
-fromWmake Same as -no-recursion
|
||||
|
||||
See
|
||||
wmake -help (or wmake -help-full)
|
||||
|
||||
USAGE
|
||||
|
||||
wmake -help
|
||||
exit 0
|
||||
exit 0 # clean exit
|
||||
}
|
||||
|
||||
|
||||
@ -51,7 +79,7 @@ USAGE
|
||||
# Parse the arguments and options
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
unset fromWmake optLog optQueue
|
||||
unset optDebug optLog optNonRecursive optPrefix optQueue
|
||||
|
||||
for arg in "$@"
|
||||
do
|
||||
@ -62,37 +90,83 @@ do
|
||||
-h | -help*)
|
||||
usage
|
||||
;;
|
||||
-fromWmake)
|
||||
# If called from wmake (to avoid recursion)
|
||||
fromWmake=true
|
||||
|
||||
-no-recurs* | -fromWmake)
|
||||
# Avoid recursion (eg, if called from wmake)
|
||||
optNonRecursive=true
|
||||
# Pass onwards to other Allwmake scripts
|
||||
;;
|
||||
-k | -non-stop)
|
||||
# Non-stop compilation, ignoring errors
|
||||
|
||||
-module-prefix=* | -prefix=* | --prefix=*)
|
||||
optPrefix="${arg#*=}"
|
||||
case "$optPrefix" in
|
||||
# Prefix: user
|
||||
(u | user)
|
||||
export FOAM_MODULE_PREFIX="${FOAM_USER_LIBBIN%/*}"
|
||||
;;
|
||||
|
||||
# Prefix: group
|
||||
(g | group)
|
||||
export FOAM_MODULE_PREFIX="${FOAM_SITE_LIBBIN%/*}"
|
||||
;;
|
||||
|
||||
# Prefix: openfoam (other)
|
||||
(o | openfoam)
|
||||
export FOAM_MODULE_PREFIX="${FOAM_LIBBIN%/*}"
|
||||
;;
|
||||
|
||||
# Prefix: custom (absolute or relative)
|
||||
(*)
|
||||
export FOAM_MODULE_PREFIX="$optPrefix"
|
||||
: "${FOAM_MODULE_PREFIX:=/usr/local}" # Default (autoconf)
|
||||
|
||||
# Require absolute path
|
||||
[ "${FOAM_MODULE_PREFIX#/}" != "${FOAM_MODULE_PREFIX}" ] || \
|
||||
FOAM_MODULE_PREFIX="${PWD}/${FOAM_MODULE_PREFIX}"
|
||||
;;
|
||||
esac
|
||||
|
||||
unset FOAM_MODULE_APPBIN FOAM_MODULE_LIBBIN
|
||||
echo "Module prefix = $FOAM_MODULE_PREFIX" 1>&2
|
||||
continue # Handled argument
|
||||
;;
|
||||
|
||||
-k | -keep-going | -non-stop)
|
||||
# Keep going, ignoring errors
|
||||
export WM_CONTINUE_ON_ERROR=true
|
||||
continue # Permanently remove arg
|
||||
;;
|
||||
|
||||
-l | -log)
|
||||
optLog="log.${WM_OPTIONS:-Allwmake}"
|
||||
optLog="log.${WM_OPTIONS:-build}"
|
||||
continue # Permanently remove arg
|
||||
;;
|
||||
|
||||
-log=*)
|
||||
optLog="${arg##*=}"
|
||||
if [ -d "$optLog" ]
|
||||
then
|
||||
optLog="${optLog%/}/log.${WM_OPTIONS:-Allwmake}"
|
||||
optLog="${optLog%/}/log.${WM_OPTIONS:-build}"
|
||||
elif [ -z "$optLog" ]
|
||||
then
|
||||
optLog="log.${WM_OPTIONS:-Allwmake}"
|
||||
optLog="log.${WM_OPTIONS:-build}"
|
||||
fi
|
||||
continue # Permanently remove arg
|
||||
;;
|
||||
-q | -queue)
|
||||
optQueue="-q"
|
||||
|
||||
-debug)
|
||||
optDebug="-debug"
|
||||
continue # Permanently remove arg
|
||||
;;
|
||||
|
||||
-q | -queue)
|
||||
optQueue="-queue"
|
||||
continue # Permanently remove arg
|
||||
;;
|
||||
|
||||
lib | libo | libso | dep | objects)
|
||||
# Target type
|
||||
targetType=$arg
|
||||
targetType="$arg"
|
||||
;;
|
||||
esac
|
||||
|
||||
@ -105,20 +179,20 @@ done
|
||||
# Execute wmake -all if not called from wmake
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if [ -z "$fromWmake" ]
|
||||
if [ -z "$optNonRecursive" ]
|
||||
then
|
||||
if [ -z "$optLog" ]
|
||||
then
|
||||
exec wmake -all $optQueue $*
|
||||
exec wmake -all $optDebug $optQueue $*
|
||||
exit $? # Unneeded, but just in case something went wrong
|
||||
else
|
||||
echo "Logging wmake -all output to '$optLog'" 1>&2
|
||||
echo 1>&2
|
||||
exec wmake -all $optQueue $* 2>&1 | /usr/bin/tee $optLog
|
||||
exec wmake -all $optDebug $optQueue $* 2>&1 | /usr/bin/tee $optLog
|
||||
# Need to cleanup after the tee
|
||||
rc=$? # Error code from tee (not wmake), but not entirely important
|
||||
echo "Done logging to '$optLog'" 1>&2
|
||||
exit $rc
|
||||
exit "$rc"
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -137,7 +211,7 @@ fi
|
||||
# Cleanup local variables and functions
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
unset fromWmake optLog optQueue
|
||||
unset optNonRecursive optDebug optLog optPrefix optQueue
|
||||
unset -f usage
|
||||
|
||||
|
||||
|
||||
@ -2,70 +2,45 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2017-2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2017-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# cmakeFunctions
|
||||
#
|
||||
# Description
|
||||
# Helper functions for CMake
|
||||
#
|
||||
# Environment
|
||||
# Consider CMAKE_INSTALL_PREFIX as a reserved name, although it is not
|
||||
# set/unset here.
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
. $WM_PROJECT_DIR/wmake/scripts/wmakeFunctions # Require some wmake functions
|
||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/wmakeFunctions # Require wmake functions
|
||||
|
||||
# Ensure CMake gets the correct C/C++ compilers
|
||||
[ -n "$WM_CC" ] && export CC="$WM_CC"
|
||||
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
|
||||
# Export compiler information for cmake
|
||||
export CC="$(wmake -show-c)"
|
||||
export CXX="$(wmake -show-cxx)"
|
||||
|
||||
export CFLAGS="$(wmake -show-cflags)"
|
||||
export CXXFLAGS="$(wmake -show-cxxflags)"
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
#
|
||||
# Check sentinel file(s) to handle paraview / vtk version changes
|
||||
#
|
||||
sameDependency()
|
||||
{
|
||||
local depend="$1"
|
||||
local sourceDir="$2"
|
||||
local objectsDir sentinel prev
|
||||
|
||||
# Where generated files are stored
|
||||
objectsDir=$(findObjectDir "$sourceDir") || exit 1 # Fatal
|
||||
sentinel="$objectsDir/ThirdParty"
|
||||
|
||||
echo "$sentinel"
|
||||
|
||||
if read -r prev 2>/dev/null < $sentinel
|
||||
then
|
||||
if [ "$prev" = "$depend" ]
|
||||
then
|
||||
return 0
|
||||
else
|
||||
echo "${depend%=*} changed between builds" 1>&2
|
||||
return 1
|
||||
fi
|
||||
elif [ -f "$objectsDir/CMakeCache.txt" ]
|
||||
then
|
||||
echo "previous build was incomplete" 1>&2
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# CMake with output suppressed according to WM_QUIET
|
||||
_cmake()
|
||||
call_cmake()
|
||||
{
|
||||
echo "cmake..."
|
||||
if [ -n "$WM_QUIET" ]
|
||||
then
|
||||
echo "cmake..."
|
||||
cmake -DCMAKE_RULE_MESSAGES=OFF $@ >/dev/null
|
||||
else
|
||||
echo "cmake $@"
|
||||
cmake $@
|
||||
fi
|
||||
}
|
||||
@ -89,12 +64,13 @@ cmakeVersioned()
|
||||
objectsDir=$(findObjectDir "$sourceDir") || exit 1 # Fatal
|
||||
|
||||
# Version changed
|
||||
sentinel=$(sameDependency "$depend" "$sourceDir") || \
|
||||
rm -rf "$objectsDir" > /dev/null 2>&1
|
||||
sentinel=$(sameDependency "$sourceDir" "$depend" $@) || \
|
||||
rm -rf "$objectsDir" 2>/dev/null
|
||||
|
||||
mkdir -p "$objectsDir" \
|
||||
&& (cd "$objectsDir" && _cmake "$@" "$sourceDir" && make) \
|
||||
&& echo "$depend" >| "${sentinel:-/dev/null}"
|
||||
&& ( cd "$objectsDir" && call_cmake "$@" "$sourceDir" && \
|
||||
make ) \
|
||||
&& storeDependency "$sentinel" "$depend" $@
|
||||
}
|
||||
|
||||
|
||||
@ -115,12 +91,13 @@ cmakeVersionedInstall()
|
||||
objectsDir=$(findObjectDir "$sourceDir") || exit 1 # Fatal
|
||||
|
||||
# Version changed
|
||||
sentinel=$(sameDependency "$depend" "$sourceDir") || \
|
||||
rm -rf "$objectsDir" > /dev/null 2>&1
|
||||
sentinel=$(sameDependency "$sourceDir" "$depend" $@) || \
|
||||
rm -rf "$objectsDir" 2>/dev/null
|
||||
|
||||
mkdir -p "$objectsDir" \
|
||||
&& (cd "$objectsDir" && _cmake "$@" "$sourceDir" && make install) \
|
||||
&& echo "$depend" >| "${sentinel:-/dev/null}"
|
||||
&& ( cd "$objectsDir" && call_cmake "$@" "$sourceDir" && \
|
||||
make install ) \
|
||||
&& storeDependency "$sentinel" "$depend" $@
|
||||
}
|
||||
|
||||
|
||||
@ -142,12 +119,12 @@ wmakeVersioned()
|
||||
objectsDir=$(findObjectDir "$sourceDir") || exit 1 # Fatal
|
||||
|
||||
# Version changed
|
||||
sentinel=$(sameDependency "$depend" "$sourceDir") || \
|
||||
rm -rf "$objectsDir" > /dev/null 2>&1
|
||||
sentinel=$(sameDependency "$sourceDir" "$depend" $@) || \
|
||||
rm -rf "$objectsDir" 2>/dev/null
|
||||
|
||||
mkdir -p "$objectsDir" \
|
||||
&& wmake "$@" \
|
||||
&& echo "$depend" >| "${sentinel:-/dev/null}"
|
||||
&& storeDependency "$sentinel" "$depend" $@
|
||||
}
|
||||
|
||||
|
||||
|
||||
92
wmake/scripts/dirToString
Executable file
92
wmake/scripts/dirToString
Executable file
@ -0,0 +1,92 @@
|
||||
#!/bin/sh
|
||||
#------------------------------------------------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2019 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Script
|
||||
# dirToString
|
||||
#
|
||||
# Usage
|
||||
# dirToString path/to/file
|
||||
#
|
||||
# Description
|
||||
# Converts a directory path into a camelCase string.
|
||||
# Leading [./] characters are stripped by default.
|
||||
#
|
||||
# For example,
|
||||
# input: dir1/dir2/dir3
|
||||
# output: dir1Dir2Dir3
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
usage() {
|
||||
exec 1>&2
|
||||
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
|
||||
cat<<USAGE
|
||||
|
||||
Usage: ${0##*/} [OPTION] dir
|
||||
|
||||
options:
|
||||
-no-strip Do not ignore leading [./] characters
|
||||
-strip Ignore leading [./] characters (default)
|
||||
-h, -help Print the usage
|
||||
|
||||
Converts a directory path into a camelCase string
|
||||
|
||||
USAGE
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Parse arguments and options
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
optStrip=true
|
||||
|
||||
while [ "$#" -gt 0 ]
|
||||
do
|
||||
case "$1" in
|
||||
# Print help
|
||||
(-h | -help*)
|
||||
usage
|
||||
;;
|
||||
(-s | -strip)
|
||||
optStrip=true
|
||||
;;
|
||||
(-no-strip)
|
||||
unset optStrip
|
||||
;;
|
||||
(--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
(*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ -z "$optStrip" ]
|
||||
then
|
||||
dirName="$1"
|
||||
else
|
||||
# Ignore any leading ./ characters
|
||||
dirName="$(echo ""$1"" | sed -e 's@^[./]*@@')"
|
||||
fi
|
||||
|
||||
dirName=$(echo "$dirName" | \
|
||||
awk 'BEGIN{FS="";RS="/";ORS=""} {if (FNR>1) {$0=toupper(substr($0,1,1))substr($0,2)}} 1')
|
||||
|
||||
echo "$dirName"
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@ -2,12 +2,13 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# have_adios2
|
||||
@ -19,7 +20,8 @@
|
||||
# ADIOS2_ARCH_PATH
|
||||
#
|
||||
# Functions provided
|
||||
# have_adios2, no_adios2, echo_adios2
|
||||
# have_adios2, no_adios2, echo_adios2, query_adios2, search_adios2
|
||||
# hint_adios2
|
||||
#
|
||||
# Variables set on success
|
||||
# HAVE_ADIOS2
|
||||
@ -28,15 +30,14 @@
|
||||
# ADIOS2_LIB_DIR
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
. $WM_PROJECT_DIR/wmake/scripts/sysFunctions # General system functions
|
||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/sysFunctions # General system functions
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset variables
|
||||
# Reset
|
||||
no_adios2()
|
||||
{
|
||||
unset HAVE_ADIOS2 ADIOS2_INC_DIR ADIOS2_LIB_DIR
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
@ -44,99 +45,137 @@ no_adios2()
|
||||
echo_adios2()
|
||||
{
|
||||
echo "adios2=${HAVE_ADIOS2:-false}"
|
||||
echo "root=$ADIOS2_ARCH_PATH"
|
||||
echo "include=$ADIOS2_INC_DIR"
|
||||
echo "library=$ADIOS2_LIB_DIR"
|
||||
echo "root=\"$ADIOS2_ARCH_PATH\""
|
||||
echo "include=\"$ADIOS2_INC_DIR\""
|
||||
echo "library=\"$ADIOS2_LIB_DIR\""
|
||||
}
|
||||
|
||||
|
||||
# Hint for enabling
|
||||
hint_adios2()
|
||||
{
|
||||
/bin/cat<<INFORMATION 1>&2
|
||||
==> adios2 not found?
|
||||
Define manually, enable in OpenFOAM etc/bashrc, or try the following [POSIX]:
|
||||
|
||||
eval \$(foamEtcFile -sh -config adios2 -- -force)
|
||||
|
||||
==
|
||||
INFORMATION
|
||||
}
|
||||
|
||||
|
||||
# Search
|
||||
# $1 : prefix (*_ARCH_PATH, system, ...)
|
||||
#
|
||||
# On success, return 0 and export variables
|
||||
# -> HAVE_ADIOS2, ADIOS2_INC_DIR, ADIOS2_LIB_DIR
|
||||
have_adios2()
|
||||
search_adios2()
|
||||
{
|
||||
local header library static label settings warn
|
||||
# warn="==> skip adios2"
|
||||
local warn # warn="==> skip adios2"
|
||||
local incName="adios2.h"
|
||||
local libName="libadios2"
|
||||
local libName2="libadios2_cxx11_mpi"
|
||||
|
||||
# Basic setup/checks
|
||||
settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/ADIOS2) || {
|
||||
[ -n "$warn" ] && echo "$warn (no config.sh/ADIOS2 settings)"
|
||||
local prefix="${1:-system}"
|
||||
local header library
|
||||
|
||||
# ----------------------------------
|
||||
if isNone "$prefix"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (disabled)"
|
||||
return 1
|
||||
}
|
||||
. $settings
|
||||
if isNone "$ADIOS2_ARCH_PATH"
|
||||
elif hasAbsdir "$prefix"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (not available)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
# Header/library names
|
||||
header="adios2.h"
|
||||
library="libadios2$extLibso"
|
||||
|
||||
|
||||
if hasAbsdir "$ADIOS2_ARCH_PATH"
|
||||
header=$(findFirstFile "$prefix/include/$incName")
|
||||
library=$(findExtLib "$libName")
|
||||
elif isSystem "$prefix"
|
||||
then
|
||||
header=$(findFirstFile $ADIOS2_ARCH_PATH/include/$header)
|
||||
|
||||
library=$(findFirstFile \
|
||||
"$(thirdExtLib $library)" \
|
||||
$ADIOS2_ARCH_PATH/lib/$library \
|
||||
$ADIOS2_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
elif isSystem "$ADIOS2_ARCH_PATH"
|
||||
then
|
||||
header=$(findFirstFile /usr/local/include/$header /usr/include/$header)
|
||||
|
||||
case "$header" in
|
||||
/usr/local/*)
|
||||
library=$(findFirstFile \
|
||||
/usr/local/lib/$library \
|
||||
/usr/local/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
|
||||
*)
|
||||
library=$(findFirstFile \
|
||||
/usr/lib/$library \
|
||||
/usr/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
esac
|
||||
header=$(findSystemInclude -name="$incName")
|
||||
prefix=$(sysPrefix "$header")
|
||||
else
|
||||
unset header library
|
||||
unset prefix
|
||||
fi
|
||||
# ----------------------------------
|
||||
|
||||
|
||||
# Header found?
|
||||
# Header
|
||||
[ -n "$header" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (no header)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# Library found?
|
||||
[ -n "$library" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (missing library)"
|
||||
# Library
|
||||
[ -n "$library" ] \
|
||||
|| library=$(findLibrary -prefix="$prefix" -name="$libName") \
|
||||
|| library=$(findLibrary -prefix="$prefix" -name="$libName2") \
|
||||
|| {
|
||||
[ -n "$warn" ] && echo "$warn (no library)"
|
||||
return 2
|
||||
}
|
||||
|
||||
header="${header%/*}" # Strip one-level (include/adios2/...)
|
||||
# ----------------------------------
|
||||
|
||||
# OK
|
||||
export HAVE_ADIOS2=true
|
||||
export ADIOS2_ARCH_PATH
|
||||
export ADIOS2_ARCH_PATH="$prefix"
|
||||
export ADIOS2_INC_DIR="${header%/*}" # Basename
|
||||
export ADIOS2_LIB_DIR="${library%/*}" # Basename
|
||||
}
|
||||
|
||||
|
||||
# Force reset of old variables
|
||||
no_adios2
|
||||
# Output as per search_* function
|
||||
have_adios2()
|
||||
{
|
||||
local warn # warn="==> skip adios2"
|
||||
local config="config.sh/adios2"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile "$config")"
|
||||
then
|
||||
. "$file"
|
||||
else
|
||||
[ -n "$warn" ] && echo "$warn (no $config)"
|
||||
return 2
|
||||
fi
|
||||
|
||||
search_adios2 "$ADIOS2_ARCH_PATH"
|
||||
}
|
||||
|
||||
|
||||
# Query settings
|
||||
query_adios2()
|
||||
{
|
||||
local config="config.sh/adios2"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile -mode=o "$config")"
|
||||
then
|
||||
. "$file"
|
||||
_process_query adios2 "$ADIOS2_ARCH_PATH"
|
||||
else
|
||||
echo "(no $config)" 1>&2
|
||||
echo "adios2=unknown"
|
||||
fi
|
||||
}
|
||||
|
||||
# Testing
|
||||
if [ "$1" = "-test" ]
|
||||
then
|
||||
have_adios2
|
||||
echo_adios2
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset
|
||||
no_adios2
|
||||
|
||||
# Test/query
|
||||
case "$1" in
|
||||
-test)
|
||||
have_adios2
|
||||
echo_adios2
|
||||
;;
|
||||
-query)
|
||||
query_adios2
|
||||
;;
|
||||
-hint)
|
||||
hint_adios2
|
||||
;;
|
||||
esac
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -2,24 +2,26 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# have_boost
|
||||
#
|
||||
# Description
|
||||
# Detection/setup of Boost
|
||||
# Detection/setup of BOOST
|
||||
#
|
||||
# Requires
|
||||
# BOOST_ARCH_PATH
|
||||
# or config.sh/CGAL (when BOOST_ARCH_PATH is empty)
|
||||
#
|
||||
# Functions provided
|
||||
# have_boost, no_boost, echo_boost
|
||||
# have_boost, no_boost, echo_boost, query_boost, search_boost
|
||||
#
|
||||
# Variables set on success
|
||||
# HAVE_BOOST
|
||||
@ -28,15 +30,14 @@
|
||||
# BOOST_LIB_DIR
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
. $WM_PROJECT_DIR/wmake/scripts/sysFunctions # General system functions
|
||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/sysFunctions # General system functions
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset variables
|
||||
# Reset
|
||||
no_boost()
|
||||
{
|
||||
unset HAVE_BOOST BOOST_INC_DIR BOOST_LIB_DIR
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
@ -44,94 +45,124 @@ no_boost()
|
||||
echo_boost()
|
||||
{
|
||||
echo "boost=${HAVE_BOOST:-false}"
|
||||
echo "root=$BOOST_ARCH_PATH"
|
||||
echo "include=$BOOST_INC_DIR"
|
||||
echo "library=$BOOST_LIB_DIR"
|
||||
echo "root=\"$BOOST_ARCH_PATH\""
|
||||
echo "include=\"$BOOST_INC_DIR\""
|
||||
echo "library=\"$BOOST_LIB_DIR\""
|
||||
}
|
||||
|
||||
|
||||
# Search
|
||||
# $1 : prefix (*_ARCH_PATH, system, ...)
|
||||
#
|
||||
# On success, return 0 and export variables
|
||||
# -> HAVE_BOOST, BOOST_INC_DIR, BOOST_LIB_DIR
|
||||
have_boost()
|
||||
search_boost()
|
||||
{
|
||||
local header library static label settings warn
|
||||
# warn="==> skip boost"
|
||||
local warn # warn="==> skip boost"
|
||||
local incName="boost/version.hpp"
|
||||
local libName="libboost_system"
|
||||
|
||||
# Basic setup/checks
|
||||
if isNone "$BOOST_ARCH_PATH"
|
||||
local prefix="${1:-system}"
|
||||
local header library
|
||||
|
||||
# ----------------------------------
|
||||
if isNone "$prefix"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (not available)"
|
||||
[ -n "$warn" ] && echo "$warn (disabled)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
# Header/library names
|
||||
header="boost/version.hpp"
|
||||
library="libboost_system$extLibso"
|
||||
|
||||
|
||||
if hasAbsdir "$BOOST_ARCH_PATH"
|
||||
elif hasAbsdir "$prefix"
|
||||
then
|
||||
header=$(findFirstFile $BOOST_ARCH_PATH/include/$header)
|
||||
|
||||
library=$(findFirstFile \
|
||||
"$(thirdExtLib $library)" \
|
||||
$BOOST_ARCH_PATH/lib/$library \
|
||||
$BOOST_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
elif isSystem "$BOOST_ARCH_PATH"
|
||||
header=$(findFirstFile "$prefix/include/$incName")
|
||||
library=$(findExtLib "$libName")
|
||||
elif isSystem "$prefix"
|
||||
then
|
||||
header=$(findFirstFile /usr/local/include/$header /usr/include/$header)
|
||||
|
||||
case "$header" in
|
||||
/usr/local/*)
|
||||
library=$(findFirstFile \
|
||||
/usr/local/lib/$library \
|
||||
/usr/local/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
|
||||
*)
|
||||
library=$(findFirstFile \
|
||||
/usr/lib/$library \
|
||||
/usr/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
esac
|
||||
header=$(findSystemInclude -name="$incName")
|
||||
prefix=$(sysPrefix "$header")
|
||||
else
|
||||
unset header library
|
||||
unset prefix
|
||||
fi
|
||||
# ----------------------------------
|
||||
|
||||
|
||||
# Header found?
|
||||
# Header
|
||||
[ -n "$header" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (no header)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# Library found?
|
||||
[ -n "$library" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (missing library)"
|
||||
# Library
|
||||
[ -n "$library" ] \
|
||||
|| library=$(findLibrary -prefix="$prefix" -name="$libName") \
|
||||
|| {
|
||||
[ -n "$warn" ] && echo "$warn (no library)"
|
||||
return 2
|
||||
}
|
||||
|
||||
header="${header%/*}" # Strip one-level (include/boost/...)
|
||||
# ----------------------------------
|
||||
|
||||
header="${header%/*}" # Strip one-level (include/boost/...)
|
||||
|
||||
# OK
|
||||
export HAVE_BOOST=true
|
||||
export BOOST_ARCH_PATH
|
||||
export BOOST_ARCH_PATH="$prefix"
|
||||
export BOOST_INC_DIR="${header%/*}" # Basename
|
||||
export BOOST_LIB_DIR="${library%/*}" # Basename
|
||||
}
|
||||
|
||||
|
||||
# Force reset of old variables
|
||||
no_boost
|
||||
# Output as per search_* function
|
||||
have_boost()
|
||||
{
|
||||
local warn # warn="==> skip boost"
|
||||
local config="config.sh/CGAL"
|
||||
local file
|
||||
|
||||
# Setup - current environment if set
|
||||
if [ -z "$BOOST_ARCH_PATH" ]
|
||||
then
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile "$config")"
|
||||
then
|
||||
. "$file"
|
||||
else
|
||||
[ -n "$warn" ] && echo "$warn (no $config)"
|
||||
return 2
|
||||
fi
|
||||
fi
|
||||
|
||||
search_boost "$BOOST_ARCH_PATH"
|
||||
}
|
||||
|
||||
|
||||
# Query settings (from CGAL setup)
|
||||
query_boost()
|
||||
{
|
||||
local config="config.sh/CGAL"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile -mode=o "$config")"
|
||||
then
|
||||
. "$file"
|
||||
_process_query boost "$BOOST_ARCH_PATH"
|
||||
else
|
||||
echo "(no $config)" 1>&2
|
||||
echo "boost=unknown"
|
||||
fi
|
||||
}
|
||||
|
||||
# Testing
|
||||
if [ "$1" = "-test" ]
|
||||
then
|
||||
have_boost
|
||||
echo_boost
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset
|
||||
no_boost
|
||||
|
||||
# Test/query
|
||||
case "$1" in
|
||||
-test)
|
||||
have_boost
|
||||
echo_boost
|
||||
;;
|
||||
-query)
|
||||
query_boost
|
||||
;;
|
||||
esac
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -2,24 +2,25 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# have_ccmio
|
||||
#
|
||||
# Description
|
||||
# Detection/setup of ccmio
|
||||
# Detection/setup of CCMIO
|
||||
#
|
||||
# Requires
|
||||
# config.sh/ccmio
|
||||
#
|
||||
# Functions provided
|
||||
# have_ccmio, no_ccmio, echo_ccmio
|
||||
# have_ccmio, no_ccmio, echo_ccmio, query_ccmio, search_ccmio
|
||||
#
|
||||
# Variables set on success
|
||||
# HAVE_CCMIO
|
||||
@ -28,86 +29,78 @@
|
||||
# CCMIO_LIB_DIR
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
. $WM_PROJECT_DIR/wmake/scripts/sysFunctions # General system functions
|
||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/sysFunctions # General system functions
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset variables
|
||||
# Reset
|
||||
no_ccmio()
|
||||
{
|
||||
unset HAVE_CCMIO CCMIO_INC_DIR CCMIO_LIB_DIR
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
# Report
|
||||
echo_ccmio()
|
||||
{
|
||||
echo "ccmio=${HAVE_CCMIO:-false}"
|
||||
echo "root=$CCMIO_ARCH_PATH"
|
||||
echo "include=$CCMIO_INC_DIR"
|
||||
echo "library=$CCMIO_LIB_DIR"
|
||||
echo "root=\"$CCMIO_ARCH_PATH\""
|
||||
echo "include=\"$CCMIO_INC_DIR\""
|
||||
echo "library=\"$CCMIO_LIB_DIR\""
|
||||
}
|
||||
|
||||
|
||||
# Search
|
||||
# $1 : prefix (*_ARCH_PATH, system, ...)
|
||||
#
|
||||
# On success, return 0 and export variables
|
||||
# -> HAVE_CCMIO, CCMIO_INC_DIR, CCMIO_LIB_DIR
|
||||
have_ccmio()
|
||||
search_ccmio()
|
||||
{
|
||||
local header library static label settings warn good
|
||||
warn="==> skip ccmio"
|
||||
|
||||
# Basic setup/checks
|
||||
settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/ccmio) || {
|
||||
[ -n "$warn" ] && echo "$warn (no config.sh/ccmio settings)"
|
||||
return 1
|
||||
}
|
||||
. $settings
|
||||
if isNone "$CCMIO_ARCH_PATH"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (not available)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
# Header/library names.
|
||||
local warn="==> skip ccmio"
|
||||
local incName="libccmio/ccmio.h"
|
||||
local libName="libccmio.a"
|
||||
# Link with static libccmio only (fewer issues)
|
||||
#
|
||||
header="libccmio/ccmio.h"
|
||||
static="libccmio$extLiba"
|
||||
|
||||
local prefix="${1:-system}"
|
||||
local header library
|
||||
|
||||
if hasAbsdir "$CCMIO_ARCH_PATH"
|
||||
# ----------------------------------
|
||||
if isNone "$prefix"
|
||||
then
|
||||
header=$(findFirstFile $CCMIO_ARCH_PATH/include/$header)
|
||||
|
||||
library=$(findFirstFile \
|
||||
"$(thirdExtLib $library)" \
|
||||
$CCMIO_ARCH_PATH/lib/$static \
|
||||
$CCMIO_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$static \
|
||||
)
|
||||
[ -n "$warn" ] && echo "$warn (disabled)"
|
||||
return 1
|
||||
elif hasAbsdir "$prefix"
|
||||
then
|
||||
header=$(findFirstFile "$prefix/include/$incName")
|
||||
library=$(findExtLib "$libName")
|
||||
else
|
||||
unset header library
|
||||
unset prefix
|
||||
fi
|
||||
# ----------------------------------
|
||||
|
||||
|
||||
# Header found?
|
||||
# Header
|
||||
[ -n "$header" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (no header)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# Library found?
|
||||
[ -n "$library" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (missing library)"
|
||||
# Library
|
||||
[ -n "$library" ] \
|
||||
|| library=$(findLibrary -prefix="$prefix" -name="$libName") \
|
||||
|| {
|
||||
[ -n "$warn" ] && echo "$warn (no library)"
|
||||
return 2
|
||||
}
|
||||
|
||||
header="${header%/*}" # Strip one-level (include/libccmio/...)
|
||||
# ----------------------------------
|
||||
|
||||
# The libccmio uses int32_t.
|
||||
# The OpenFOAM adapter thus requires additional work for 64-bit labels.
|
||||
# The OpenFOAM adapter was originally only designed for 'double'
|
||||
|
||||
local good
|
||||
|
||||
if [ "$WM_LABEL_SIZE" = 32 ]
|
||||
then
|
||||
if [ "$WM_PRECISION_OPTION" = DP ]
|
||||
@ -124,21 +117,67 @@ have_ccmio()
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
header="${header%/*}" # Strip one-level (include/libccmio/...)
|
||||
|
||||
# OK
|
||||
export HAVE_CCMIO=true
|
||||
export CCMIO_ARCH_PATH
|
||||
export CCMIO_ARCH_PATH="$prefix"
|
||||
export CCMIO_INC_DIR="${header%/*}" # Basename
|
||||
export CCMIO_LIB_DIR="${library%/*}" # Basename
|
||||
}
|
||||
|
||||
|
||||
# Force reset of old variables
|
||||
no_ccmio
|
||||
# Output as per search_* function
|
||||
have_ccmio()
|
||||
{
|
||||
local warn="==> skip ccmio"
|
||||
local config="config.sh/ccmio"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile "$config")"
|
||||
then
|
||||
. "$file"
|
||||
else
|
||||
[ -n "$warn" ] && echo "$warn (no $config)"
|
||||
return 2
|
||||
fi
|
||||
|
||||
search_ccmio "$CCMIO_ARCH_PATH"
|
||||
}
|
||||
|
||||
|
||||
# Query settings
|
||||
query_ccmio()
|
||||
{
|
||||
local config="config.sh/ccmio"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile -mode=o "$config")"
|
||||
then
|
||||
. "$file"
|
||||
_process_query ccmio "$CCMIO_ARCH_PATH"
|
||||
else
|
||||
echo "(no $config)" 1>&2
|
||||
echo "ccmio=unknown"
|
||||
fi
|
||||
}
|
||||
|
||||
# Testing
|
||||
if [ "$1" = "-test" ]
|
||||
then
|
||||
have_ccmio
|
||||
echo_ccmio
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset
|
||||
no_ccmio
|
||||
|
||||
# Test/query
|
||||
case "$1" in
|
||||
-test)
|
||||
have_ccmio
|
||||
echo_ccmio
|
||||
;;
|
||||
-query)
|
||||
query_ccmio
|
||||
;;
|
||||
esac
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -2,12 +2,13 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# have_cgal
|
||||
@ -17,121 +18,161 @@
|
||||
#
|
||||
# Requires
|
||||
# CGAL_ARCH_PATH
|
||||
# or config.sh/CGAL (when CGAL_ARCH_PATH is empty)
|
||||
#
|
||||
# Functions provided
|
||||
# have_cgal, no_cgal, echo_cgal
|
||||
# have_cgal, no_cgal, echo_cgal, query_cgal
|
||||
#
|
||||
# Variables set on success
|
||||
# HAVE_CGAL
|
||||
# CGAL_FLAVOUR (header, library, ...)
|
||||
# CGAL_ARCH_PATH
|
||||
# CGAL_INC_DIR
|
||||
# CGAL_LIB_DIR
|
||||
#
|
||||
# Uses
|
||||
# BOOST_ARCH_PATH and have_boost::search_boost()
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
. $WM_PROJECT_DIR/wmake/scripts/sysFunctions # General system functions
|
||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/have_boost # boost + system functions
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset variables
|
||||
# Reset
|
||||
no_cgal()
|
||||
{
|
||||
unset HAVE_CGAL CGAL_INC_DIR CGAL_LIB_DIR
|
||||
return 0
|
||||
unset HAVE_CGAL CGAL_FLAVOUR CGAL_INC_DIR CGAL_LIB_DIR
|
||||
}
|
||||
|
||||
|
||||
# Reset variables
|
||||
# Report
|
||||
echo_cgal()
|
||||
{
|
||||
echo "cgal=${HAVE_CGAL:-false}"
|
||||
echo "root=$CGAL_ARCH_PATH"
|
||||
echo "include=$CGAL_INC_DIR"
|
||||
echo "library=$CGAL_LIB_DIR"
|
||||
echo "flavour=$CGAL_FLAVOUR"
|
||||
echo "root=\"$CGAL_ARCH_PATH\""
|
||||
echo "include=\"$CGAL_INC_DIR\""
|
||||
echo "library=\"$CGAL_LIB_DIR\""
|
||||
}
|
||||
|
||||
|
||||
# Search
|
||||
# $1 : prefix (*_ARCH_PATH, system, ...)
|
||||
#
|
||||
# On success, return 0 and export variables
|
||||
# -> HAVE_CGAL, CGAL_INC_DIR, CGAL_LIB_DIR
|
||||
have_cgal()
|
||||
# -> HAVE_CGAL, CGAL_INC_DIR, CGAL_LIB_DIR, CGAL_FLAVOUR
|
||||
search_cgal()
|
||||
{
|
||||
local header library static label settings warn
|
||||
# warn="==> skip cgal"
|
||||
local warn # warn="==> skip cgal"
|
||||
local incName="CGAL/version.h"
|
||||
local libName="libCGAL"
|
||||
|
||||
# Basic setup/checks
|
||||
if isNone "$CGAL_ARCH_PATH"
|
||||
local prefix="${1:-system}"
|
||||
local header library flavour
|
||||
|
||||
# ----------------------------------
|
||||
if isNone "$prefix"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (not available)"
|
||||
[ -n "$warn" ] && echo "$warn (disabled)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
# Header/library names
|
||||
header="CGAL/version.h"
|
||||
library="libCGAL$extLibso"
|
||||
|
||||
|
||||
if hasAbsdir "$CGAL_ARCH_PATH"
|
||||
elif hasAbsdir "$prefix"
|
||||
then
|
||||
header=$(findFirstFile $CGAL_ARCH_PATH/include/$header)
|
||||
|
||||
library=$(findFirstFile \
|
||||
"$(thirdExtLib $library)" \
|
||||
$CGAL_ARCH_PATH/lib/$library \
|
||||
$CGAL_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
elif isSystem "$CGAL_ARCH_PATH"
|
||||
header=$(findFirstFile "$prefix/include/$incName")
|
||||
library=$(findExtLib "$libName")
|
||||
elif isSystem "$prefix"
|
||||
then
|
||||
header=$(findFirstFile /usr/local/include/$header /usr/include/$header)
|
||||
|
||||
case "$header" in
|
||||
/usr/local/*)
|
||||
library=$(findFirstFile \
|
||||
/usr/local/lib/$library \
|
||||
/usr/local/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
|
||||
*)
|
||||
library=$(findFirstFile \
|
||||
/usr/lib/$library \
|
||||
/usr/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
esac
|
||||
header=$(findSystemInclude -name="$incName")
|
||||
prefix=$(sysPrefix "$header")
|
||||
else
|
||||
unset header library
|
||||
unset prefix
|
||||
fi
|
||||
# ----------------------------------
|
||||
|
||||
|
||||
# Header found?
|
||||
# Header
|
||||
[ -n "$header" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (no header)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# Library found?
|
||||
[ -n "$library" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (missing library)"
|
||||
return 2
|
||||
# Library may be optional - eg, header-only
|
||||
[ -n "$library" ] \
|
||||
|| library=$(findLibrary -prefix="$prefix" -name="$libName") \
|
||||
|| {
|
||||
[ -n "$warn" ] && echo "==> cgal (no library)"
|
||||
unset library
|
||||
flavour="header" # Header only
|
||||
}
|
||||
|
||||
header="${header%/*}" # Strip one-level (include/CGAL/...)
|
||||
# ----------------------------------
|
||||
|
||||
header="${header%/*}" # Strip one-level (include/CGAL/...)
|
||||
|
||||
# OK
|
||||
export HAVE_CGAL=true
|
||||
export CGAL_ARCH_PATH
|
||||
export CGAL_FLAVOUR="${flavour:-library}"
|
||||
export CGAL_ARCH_PATH="$prefix"
|
||||
export CGAL_INC_DIR="${header%/*}" # Basename
|
||||
export CGAL_LIB_DIR="${library%/*}" # Basename
|
||||
}
|
||||
|
||||
|
||||
# Force reset of old variables
|
||||
no_cgal
|
||||
# Output as per search_* function
|
||||
have_cgal()
|
||||
{
|
||||
local warn # warn="==> skip cgal"
|
||||
local config="config.sh/CGAL"
|
||||
local file
|
||||
|
||||
# Setup - current environment if set
|
||||
if [ -z "$CGAL_ARCH_PATH" ]
|
||||
then
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile "$config")"
|
||||
then
|
||||
. "$file"
|
||||
else
|
||||
[ -n "$warn" ] && echo "$warn (no $config)"
|
||||
return 2
|
||||
fi
|
||||
fi
|
||||
|
||||
# Need boost for cgal
|
||||
search_boost "$BOOST_ARCH_PATH"
|
||||
|
||||
search_cgal "$CGAL_ARCH_PATH"
|
||||
}
|
||||
|
||||
|
||||
# Query settings (from CGAL setup)
|
||||
query_cgal()
|
||||
{
|
||||
local config="config.sh/CGAL"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile -mode=o "$config")"
|
||||
then
|
||||
. "$file"
|
||||
_process_query cgal "$CGAL_ARCH_PATH"
|
||||
else
|
||||
echo "(no $config)" 1>&2
|
||||
echo "cgal=unknown"
|
||||
fi
|
||||
}
|
||||
|
||||
# Testing
|
||||
if [ "$1" = "-test" ]
|
||||
then
|
||||
have_cgal
|
||||
echo_cgal
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset
|
||||
no_cgal
|
||||
|
||||
# Test/query
|
||||
case "$1" in
|
||||
-test)
|
||||
have_cgal
|
||||
echo_cgal
|
||||
;;
|
||||
-query)
|
||||
query_cgal
|
||||
;;
|
||||
esac
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -2,12 +2,13 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# have_fftw
|
||||
@ -17,9 +18,10 @@
|
||||
#
|
||||
# Requires
|
||||
# FFTW_ARCH_PATH
|
||||
# or config.sh/FFTW (when FFTW_ARCH_PATH is empty)
|
||||
#
|
||||
# Functions provided
|
||||
# have_fftw, no_fftw, echo_fftw
|
||||
# have_fftw, no_fftw, echo_fftw, query_fftw, search_fftw
|
||||
#
|
||||
# Variables set on success
|
||||
# HAVE_FFTW
|
||||
@ -28,15 +30,14 @@
|
||||
# FFTW_LIB_DIR
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
. $WM_PROJECT_DIR/wmake/scripts/sysFunctions # General system functions
|
||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/sysFunctions # General system functions
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset variables
|
||||
# Reset
|
||||
no_fftw()
|
||||
{
|
||||
unset HAVE_FFTW FFTW_INC_DIR FFTW_LIB_DIR
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
@ -44,95 +45,123 @@ no_fftw()
|
||||
echo_fftw()
|
||||
{
|
||||
echo "fftw=${HAVE_FFTW:-false}"
|
||||
echo "root=$FFTW_ARCH_PATH"
|
||||
echo "include=$FFTW_INC_DIR"
|
||||
echo "library=$FFTW_LIB_DIR"
|
||||
echo "root=\"$FFTW_ARCH_PATH\""
|
||||
echo "include=\"$FFTW_INC_DIR\""
|
||||
echo "library=\"$FFTW_LIB_DIR\""
|
||||
}
|
||||
|
||||
|
||||
|
||||
# Search
|
||||
# $1 : prefix (*_ARCH_PATH, system, ...)
|
||||
#
|
||||
# On success, return 0 and export variables
|
||||
# -> HAVE_FFTW, FFTW_INC_DIR, FFTW_LIB_DIR
|
||||
have_fftw()
|
||||
search_fftw()
|
||||
{
|
||||
local header library static label settings warn
|
||||
# warn="==> skip fftw"
|
||||
local warn # warn="==> skip fftw"
|
||||
local incName="fftw3.h"
|
||||
local libName="libfftw3"
|
||||
|
||||
# Basic setup/checks
|
||||
if isNone "$FFTW_ARCH_PATH"
|
||||
local prefix="${1:-system}"
|
||||
local header library
|
||||
|
||||
# ----------------------------------
|
||||
if isNone "$prefix"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (not available)"
|
||||
[ -n "$warn" ] && echo "$warn (disabled)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
# Header/library names
|
||||
header="fftw3.h"
|
||||
library="libfftw3$extLibso"
|
||||
static="libfftw3$extLiba"
|
||||
|
||||
|
||||
if hasAbsdir "$FFTW_ARCH_PATH"
|
||||
elif hasAbsdir "$prefix"
|
||||
then
|
||||
header=$(findFirstFile $FFTW_ARCH_PATH/include/$header)
|
||||
|
||||
library=$(findFirstFile \
|
||||
"$(thirdExtLib $library)" \
|
||||
$FFTW_ARCH_PATH/lib/$static \
|
||||
$FFTW_ARCH_PATH/lib/$library \
|
||||
$FFTW_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$static \
|
||||
$FFTW_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
elif isSystem "$FFTW_ARCH_PATH"
|
||||
header=$(findFirstFile "$prefix/include/$incName")
|
||||
library=$(findExtLib "$libName")
|
||||
elif isSystem "$prefix"
|
||||
then
|
||||
header=$(findFirstFile /usr/local/include/$header /usr/include/$header)
|
||||
|
||||
case "$header" in
|
||||
/usr/local/*)
|
||||
library=$(findFirstFile \
|
||||
/usr/local/lib/$library \
|
||||
/usr/local/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
|
||||
*)
|
||||
library=$(findFirstFile \
|
||||
/usr/lib/$library \
|
||||
/usr/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
esac
|
||||
header=$(findSystemInclude -name="$incName")
|
||||
prefix=$(sysPrefix "$header")
|
||||
else
|
||||
unset header library
|
||||
unset prefix
|
||||
fi
|
||||
# ----------------------------------
|
||||
|
||||
|
||||
# Header found?
|
||||
# Header
|
||||
[ -n "$header" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (no header)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# Library found?
|
||||
[ -n "$library" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (missing library)"
|
||||
# Library
|
||||
[ -n "$library" ] \
|
||||
|| library=$(findLibrary -prefix="$prefix" -name="$libName") \
|
||||
|| {
|
||||
[ -n "$warn" ] && echo "$warn (no library)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# ----------------------------------
|
||||
|
||||
# OK
|
||||
export HAVE_FFTW=true
|
||||
export FFTW_ARCH_PATH
|
||||
export FFTW_ARCH_PATH="$prefix"
|
||||
export FFTW_INC_DIR="${header%/*}" # Basename
|
||||
export FFTW_LIB_DIR="${library%/*}" # Basename
|
||||
}
|
||||
|
||||
|
||||
# Force reset of old variables
|
||||
no_fftw
|
||||
# Output as per search_* function
|
||||
have_fftw()
|
||||
{
|
||||
local warn # warn="==> skip fftw"
|
||||
local config="config.sh/FFTW"
|
||||
local file
|
||||
|
||||
# Setup - current environment if set
|
||||
if [ -z "$FFTW_ARCH_PATH" ]
|
||||
then
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile "$config")"
|
||||
then
|
||||
. "$file"
|
||||
else
|
||||
[ -n "$warn" ] && echo "$warn (no $config)"
|
||||
return 2
|
||||
fi
|
||||
fi
|
||||
|
||||
search_fftw "$FFTW_ARCH_PATH"
|
||||
}
|
||||
|
||||
|
||||
# Query settings
|
||||
query_fftw()
|
||||
{
|
||||
local config="config.sh/FFTW"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile -mode=o "$config")"
|
||||
then
|
||||
. "$file"
|
||||
_process_query fftw "$FFTW_ARCH_PATH"
|
||||
else
|
||||
echo "(no $config)" 1>&2
|
||||
echo "fftw=unknown"
|
||||
fi
|
||||
}
|
||||
|
||||
# Testing
|
||||
if [ "$1" = "-test" ]
|
||||
then
|
||||
have_fftw
|
||||
echo_fftw
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset
|
||||
no_fftw
|
||||
|
||||
# Test/query
|
||||
case "$1" in
|
||||
-test)
|
||||
have_fftw
|
||||
echo_fftw
|
||||
;;
|
||||
-query)
|
||||
query_fftw
|
||||
;;
|
||||
esac
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -2,12 +2,13 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# have_hypre
|
||||
@ -17,9 +18,11 @@
|
||||
#
|
||||
# Requires
|
||||
# HYPRE_ARCH_PATH
|
||||
# or config.sh/hypre
|
||||
#
|
||||
# Functions provided
|
||||
# have_hypre, no_hypre, echo_hypre
|
||||
# have_hypre, no_hypre, echo_hypre, query_hypre, search_hypre
|
||||
# hint_hypre
|
||||
#
|
||||
# Variables set on success
|
||||
# HAVE_HYPRE
|
||||
@ -28,116 +31,157 @@
|
||||
# HYPRE_LIB_DIR
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
. $WM_PROJECT_DIR/wmake/scripts/sysFunctions # General system functions
|
||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/sysFunctions # General system functions
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset variables
|
||||
# Reset
|
||||
no_hypre()
|
||||
{
|
||||
unset HAVE_HYPRE HYPRE_INC_DIR HYPRE_LIB_DIR
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
# Reset variables
|
||||
# Report
|
||||
echo_hypre()
|
||||
{
|
||||
echo "hypre=${HAVE_HYPRE:-false}"
|
||||
echo "root=$HYPRE_ARCH_PATH"
|
||||
echo "include=$HYPRE_INC_DIR"
|
||||
echo "library=$HYPRE_LIB_DIR"
|
||||
echo "root=\"$HYPRE_ARCH_PATH\""
|
||||
echo "include=\"$HYPRE_INC_DIR\""
|
||||
echo "library=\"$HYPRE_LIB_DIR\""
|
||||
}
|
||||
|
||||
|
||||
# Hint for enabling
|
||||
hint_hypre()
|
||||
{
|
||||
/bin/cat<<INFORMATION 1>&2
|
||||
==> hypre not found?
|
||||
Define manually, enable in OpenFOAM etc/bashrc, or try the following [POSIX]:
|
||||
|
||||
eval \$(foamEtcFile -sh -config hypre -- -force)
|
||||
|
||||
==
|
||||
INFORMATION
|
||||
}
|
||||
|
||||
|
||||
# Search
|
||||
# $1 : prefix (*_ARCH_PATH, system, ...)
|
||||
#
|
||||
# On success, return 0 and export variables
|
||||
# -> HAVE_HYPRE, HYPRE_INC_DIR, HYPRE_LIB_DIR
|
||||
have_hypre()
|
||||
search_hypre()
|
||||
{
|
||||
local header library static label settings warn
|
||||
warn="==> skip hypre"
|
||||
local warn="==> skip hypre"
|
||||
local incName="HYPRE.h"
|
||||
local libName="libHYPRE"
|
||||
|
||||
# Basic setup/checks. Prefer current environment value? (TDB)
|
||||
if [ ! -d "$HYPRE_ARCH_PATH" ]
|
||||
local prefix="${1:-system}"
|
||||
local header library
|
||||
|
||||
# ----------------------------------
|
||||
if isNone "$prefix"
|
||||
then
|
||||
settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/hypre) || {
|
||||
[ -n "$warn" ] && echo "$warn (no config.sh/hypre settings)"
|
||||
return 1
|
||||
}
|
||||
. $settings
|
||||
fi
|
||||
if isNone "$HYPRE_ARCH_PATH"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (not available)"
|
||||
[ -n "$warn" ] && echo "$warn (disabled)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
# Header/library names
|
||||
header="HYPRE.h"
|
||||
library="libHYPRE$extLibso"
|
||||
|
||||
|
||||
if hasAbsdir "$HYPRE_ARCH_PATH"
|
||||
elif hasAbsdir "$prefix"
|
||||
then
|
||||
header=$(findFirstFile $HYPRE_ARCH_PATH/include/$header)
|
||||
|
||||
library=$(findFirstFile \
|
||||
"$(thirdExtLib $library)" \
|
||||
$HYPRE_ARCH_PATH/lib/$library \
|
||||
$HYPRE_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
elif isSystem "$HYPRE_ARCH_PATH"
|
||||
header=$(findFirstFile "$prefix/include/$incName")
|
||||
library=$(findExtLib "$libName")
|
||||
elif isSystem "$prefix"
|
||||
then
|
||||
header=$(findFirstFile /usr/local/include/$header /usr/include/$header)
|
||||
|
||||
case "$header" in
|
||||
/usr/local/*)
|
||||
library=$(findFirstFile \
|
||||
/usr/local/lib/$library \
|
||||
/usr/local/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
|
||||
*)
|
||||
library=$(findFirstFile \
|
||||
/usr/lib/$library \
|
||||
/usr/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
esac
|
||||
header=$(findSystemInclude -name="$incName")
|
||||
prefix=$(sysPrefix "$header")
|
||||
else
|
||||
unset header library
|
||||
unset prefix
|
||||
fi
|
||||
# ----------------------------------
|
||||
|
||||
|
||||
# Header found?
|
||||
# Header
|
||||
[ -n "$header" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (no header)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# Library found?
|
||||
[ -n "$library" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (missing library)"
|
||||
# Library
|
||||
[ -n "$library" ] \
|
||||
|| library=$(findLibrary -prefix="$prefix" -name="$libName") \
|
||||
|| {
|
||||
[ -n "$warn" ] && echo "$warn (no library)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# ----------------------------------
|
||||
|
||||
# OK
|
||||
export HAVE_HYPRE=true
|
||||
export HYPRE_ARCH_PATH
|
||||
export HYPRE_ARCH_PATH="$prefix"
|
||||
export HYPRE_INC_DIR="${header%/*}" # Basename
|
||||
export HYPRE_LIB_DIR="${library%/*}" # Basename
|
||||
}
|
||||
|
||||
|
||||
# Force reset of old variables
|
||||
no_hypre
|
||||
# Output as per search_* function
|
||||
have_hypre()
|
||||
{
|
||||
local warn="==> skip hypre"
|
||||
local config="config.sh/hypre"
|
||||
local file
|
||||
|
||||
# Setup - prefer current environment value
|
||||
if [ -d "$HYPRE_ARCH_PATH" ] || [ "$HYPRE_ARCH_PATH" = system ]
|
||||
then
|
||||
:
|
||||
else
|
||||
# Use config file
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile "$config")"
|
||||
then
|
||||
. "$file"
|
||||
else
|
||||
[ -n "$warn" ] && echo "$warn (no $config)"
|
||||
return 2
|
||||
fi
|
||||
fi
|
||||
|
||||
search_hypre "$HYPRE_ARCH_PATH"
|
||||
}
|
||||
|
||||
|
||||
# Query settings
|
||||
query_hypre()
|
||||
{
|
||||
local config="config.sh/hypre"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile -mode=o "$config")"
|
||||
then
|
||||
. "$file"
|
||||
_process_query hypre "$HYPRE_ARCH_PATH"
|
||||
else
|
||||
echo "(no $config)" 1>&2
|
||||
echo "hypre=unknown"
|
||||
fi
|
||||
}
|
||||
|
||||
# Testing
|
||||
if [ "$1" = "-test" ]
|
||||
then
|
||||
have_hypre
|
||||
echo_hypre
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset
|
||||
no_hypre
|
||||
|
||||
# Test/query
|
||||
case "$1" in
|
||||
-test)
|
||||
have_hypre
|
||||
echo_hypre
|
||||
;;
|
||||
-query)
|
||||
query_hypre
|
||||
;;
|
||||
-hint)
|
||||
hint_hypre
|
||||
;;
|
||||
esac
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -2,12 +2,13 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# have_kahip
|
||||
@ -19,7 +20,7 @@
|
||||
# config.sh/kahip
|
||||
#
|
||||
# Functions provided
|
||||
# have_kahip, no_kahip, echo_kahip
|
||||
# have_kahip, no_kahip, echo_kahip, query_kahip, search_kahip
|
||||
#
|
||||
# Variables set on success
|
||||
# HAVE_KAHIP
|
||||
@ -28,16 +29,15 @@
|
||||
# KAHIP_LIB_DIR
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
. $WM_PROJECT_DIR/wmake/scripts/sysFunctions # General system functions
|
||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/sysFunctions # General system functions
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset variables
|
||||
# Reset
|
||||
no_kahip()
|
||||
{
|
||||
unset HAVE_KAHIP KAHIP_ARCH_PATH KAHIP_INC_DIR KAHIP_LIB_DIR
|
||||
unset KAHIP_VERSION
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
@ -45,104 +45,121 @@ no_kahip()
|
||||
echo_kahip()
|
||||
{
|
||||
echo "kahip=${HAVE_KAHIP:-false}"
|
||||
echo "root=$KAHIP_ARCH_PATH"
|
||||
echo "include=$KAHIP_INC_DIR"
|
||||
echo "library=$KAHIP_LIB_DIR"
|
||||
echo "root=\"$KAHIP_ARCH_PATH\""
|
||||
echo "include=\"$KAHIP_INC_DIR\""
|
||||
echo "library=\"$KAHIP_LIB_DIR\""
|
||||
}
|
||||
|
||||
|
||||
# Search
|
||||
# $1 : prefix (*_ARCH_PATH, system, ...)
|
||||
#
|
||||
# On success, return 0 and export variables
|
||||
# -> HAVE_KAHIP, KAHIP_ARCH_PATH, KAHIP_INC_DIR, KAHIP_LIB_DIR
|
||||
have_kahip()
|
||||
search_kahip()
|
||||
{
|
||||
local header library static label settings warn
|
||||
warn="==> skip kahip"
|
||||
local warn="==> skip kahip"
|
||||
local incName="kaHIP_interface.h"
|
||||
local libName="libkahip"
|
||||
|
||||
# Basic setup/checks
|
||||
settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/kahip) || {
|
||||
[ -n "$warn" ] && echo "$warn (no config.sh/kahip settings)"
|
||||
local prefix="${1:-system}"
|
||||
local header library
|
||||
|
||||
# ----------------------------------
|
||||
if isNone "$prefix"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (disabled)"
|
||||
return 1
|
||||
}
|
||||
. $settings
|
||||
if isNone "$KAHIP_ARCH_PATH"
|
||||
elif hasAbsdir "$prefix"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (not available)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
# Header/library names
|
||||
header="kaHIP_interface.h"
|
||||
library="libkahip$extLibso"
|
||||
static="libkahip$extLiba"
|
||||
|
||||
if hasAbsdir "$KAHIP_ARCH_PATH"
|
||||
header=$(findFirstFile "$prefix/include/$incName")
|
||||
library=$(findExtLib "$libName")
|
||||
elif isSystem "$prefix"
|
||||
then
|
||||
header=$(findFirstFile $KAHIP_ARCH_PATH/include/$header)
|
||||
|
||||
library=$(findFirstFile \
|
||||
"$(thirdExtLib $library)" \
|
||||
$KAHIP_ARCH_PATH/lib/$static \
|
||||
$KAHIP_ARCH_PATH/lib/$library \
|
||||
$KAHIP_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$static \
|
||||
$KAHIP_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
elif isSystem "$KAHIP_ARCH_PATH"
|
||||
then
|
||||
header=$(findFirstFile /usr/local/include/$header /usr/include/$header)
|
||||
|
||||
case "$header" in
|
||||
/usr/local/*)
|
||||
library=$(findFirstFile \
|
||||
/usr/local/lib/$library \
|
||||
/usr/local/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
|
||||
*)
|
||||
library=$(findFirstFile \
|
||||
/usr/lib/$library \
|
||||
/usr/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
esac
|
||||
header=$(findSystemInclude -name="$incName")
|
||||
prefix=$(sysPrefix "$header")
|
||||
else
|
||||
unset header library
|
||||
unset prefix
|
||||
fi
|
||||
# ----------------------------------
|
||||
|
||||
|
||||
# Header found?
|
||||
# Header
|
||||
[ -n "$header" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (no header)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# Library found?
|
||||
[ -n "$library" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (missing library)"
|
||||
# Library
|
||||
[ -n "$library" ] \
|
||||
|| library=$(findLibrary -prefix="$prefix" -name="$libName") \
|
||||
|| {
|
||||
[ -n "$warn" ] && echo "$warn (no library)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# ----------------------------------
|
||||
|
||||
# kahip itself is 32-bit int, but our interface itself handles some
|
||||
# kahip itself is 32-bit int, but our interface handles some
|
||||
# 64-bit conversion (mesh size).
|
||||
|
||||
echo "kahip (label=32) - $KAHIP_ARCH_PATH"
|
||||
echo "kahip (label=32) - $prefix"
|
||||
export HAVE_KAHIP=true
|
||||
export KAHIP_ARCH_PATH
|
||||
export KAHIP_ARCH_PATH="$prefix"
|
||||
export KAHIP_INC_DIR="${header%/*}" # Basename
|
||||
export KAHIP_LIB_DIR="${library%/*}" # Basename
|
||||
}
|
||||
|
||||
|
||||
# Force reset of old variables
|
||||
no_kahip
|
||||
# Output as per search_* function
|
||||
have_kahip()
|
||||
{
|
||||
local warn="==> skip kahip"
|
||||
local config="config.sh/kahip"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile "$config")"
|
||||
then
|
||||
. "$file"
|
||||
else
|
||||
[ -n "$warn" ] && echo "$warn (no $config)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
search_kahip "$KAHIP_ARCH_PATH"
|
||||
}
|
||||
|
||||
|
||||
# Query settings
|
||||
query_kahip()
|
||||
{
|
||||
local config="config.sh/kahip"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile -mode=o "$config")"
|
||||
then
|
||||
. "$file"
|
||||
_process_query kahip "$KAHIP_ARCH_PATH"
|
||||
else
|
||||
echo "(no $config)" 1>&2
|
||||
echo "kahip=unknown"
|
||||
fi
|
||||
}
|
||||
|
||||
# Testing
|
||||
if [ "$1" = "-test" ]
|
||||
then
|
||||
have_kahip
|
||||
echo_kahip
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset
|
||||
no_kahip
|
||||
|
||||
# Test/query
|
||||
case "$1" in
|
||||
-test)
|
||||
have_kahip
|
||||
echo_kahip
|
||||
;;
|
||||
-query)
|
||||
query_kahip
|
||||
;;
|
||||
esac
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -2,24 +2,25 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# have_metis
|
||||
#
|
||||
# Description
|
||||
# Detection/setup of metis
|
||||
# Detection/setup of METIS
|
||||
#
|
||||
# Requires
|
||||
# config.sh/metis
|
||||
#
|
||||
# Functions provided
|
||||
# have_metis, no_metis, echo_metis
|
||||
# have_metis, no_metis, echo_metis, query_metis, search_metis
|
||||
#
|
||||
# Variables set on success
|
||||
# HAVE_METIS
|
||||
@ -28,16 +29,15 @@
|
||||
# METIS_LIB_DIR
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
. $WM_PROJECT_DIR/wmake/scripts/sysFunctions # General system functions
|
||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/sysFunctions # General system functions
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset variables
|
||||
# Reset
|
||||
no_metis()
|
||||
{
|
||||
unset HAVE_METIS METIS_ARCH_PATH METIS_INC_DIR METIS_LIB_DIR
|
||||
unset METIS_VERSION
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
@ -45,117 +45,128 @@ no_metis()
|
||||
echo_metis()
|
||||
{
|
||||
echo "metis=${HAVE_METIS:-false}"
|
||||
echo "root=$METIS_ARCH_PATH"
|
||||
echo "include=$METIS_INC_DIR"
|
||||
echo "library=$METIS_LIB_DIR"
|
||||
echo "root=\"$METIS_ARCH_PATH\""
|
||||
echo "include=\"$METIS_INC_DIR\""
|
||||
echo "library=\"$METIS_LIB_DIR\""
|
||||
}
|
||||
|
||||
|
||||
# Search
|
||||
# $1 : prefix (*_ARCH_PATH, system, ...)
|
||||
#
|
||||
# On success, return 0 and export variables
|
||||
# -> HAVE_METIS, METIS_ARCH_PATH, METIS_INC_DIR, METIS_LIB_DIR
|
||||
have_metis()
|
||||
search_metis()
|
||||
{
|
||||
local header library static label settings warn
|
||||
warn="==> skip metis"
|
||||
local warn="==> skip metis"
|
||||
local incName="metis.h"
|
||||
local libName="libmetis"
|
||||
|
||||
# Basic setup/checks
|
||||
settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/metis) || {
|
||||
[ -n "$warn" ] && echo "$warn (no config.sh/metis settings)"
|
||||
local prefix="${1:-system}"
|
||||
local header library
|
||||
|
||||
# ----------------------------------
|
||||
if isNone "$prefix"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (disabled)"
|
||||
return 1
|
||||
}
|
||||
. $settings
|
||||
if isNone "$METIS_ARCH_PATH"
|
||||
elif hasAbsdir "$prefix"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (not available)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
# Header/library names
|
||||
header="metis.h"
|
||||
library="libmetis$extLibso"
|
||||
static="libmetis$extLiba"
|
||||
|
||||
|
||||
if hasAbsdir "$METIS_ARCH_PATH"
|
||||
header=$(findFirstFile "$prefix/include/$incName")
|
||||
library=$(findExtLib "$libName")
|
||||
elif isSystem "$prefix"
|
||||
then
|
||||
header=$(findFirstFile $METIS_ARCH_PATH/include/$header)
|
||||
|
||||
library=$(findFirstFile \
|
||||
"$(thirdExtLib $library)" \
|
||||
$METIS_ARCH_PATH/lib/$static \
|
||||
$METIS_ARCH_PATH/lib/$library \
|
||||
$METIS_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$static \
|
||||
$METIS_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
elif isSystem "$METIS_ARCH_PATH"
|
||||
then
|
||||
header=$(findFirstFile /usr/local/include/$header /usr/include/$header)
|
||||
|
||||
case "$header" in
|
||||
/usr/local/*)
|
||||
library=$(findFirstFile \
|
||||
/usr/local/lib/$library \
|
||||
/usr/local/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
|
||||
*)
|
||||
library=$(findFirstFile \
|
||||
/usr/lib/$library \
|
||||
/usr/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
esac
|
||||
header=$(findSystemInclude -name="$incName")
|
||||
prefix=$(sysPrefix "$header")
|
||||
else
|
||||
unset header library
|
||||
unset prefix
|
||||
fi
|
||||
# ----------------------------------
|
||||
|
||||
|
||||
# Header found?
|
||||
# Header
|
||||
[ -n "$header" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (no header)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# Library found?
|
||||
[ -n "$library" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (missing library)"
|
||||
# Library
|
||||
[ -n "$library" ] \
|
||||
|| library=$(findLibrary -prefix="$prefix" -name="$libName") \
|
||||
|| {
|
||||
[ -n "$warn" ] && echo "$warn (no library)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# ----------------------------------
|
||||
|
||||
local label
|
||||
|
||||
# Ensure consistent sizes between OpenFOAM and metis header
|
||||
# Extract IDXTYPEWIDTH from metis.h: regex as per ThirdParty Allwmake
|
||||
label=$(sed -ne 's/^.*#define *IDXTYPEWIDTH *\([1-9][0-9]\).*/\1/p' $header)
|
||||
: ${label:=unknown}
|
||||
label=$(sed -ne \
|
||||
's/^.*#define *IDXTYPEWIDTH *\([1-9][0-9]\).*/\1/p' \
|
||||
"$header")
|
||||
: "${label:=unknown}"
|
||||
|
||||
if [ "$WM_LABEL_SIZE" = "$label" ]
|
||||
# OK
|
||||
echo "metis (label=$label) - $prefix"
|
||||
export HAVE_METIS=true
|
||||
export METIS_ARCH_PATH="$prefix"
|
||||
export METIS_INC_DIR="${header%/*}" # Basename
|
||||
export METIS_LIB_DIR="${library%/*}" # Basename
|
||||
}
|
||||
|
||||
|
||||
# Output as per search_* function
|
||||
have_metis()
|
||||
{
|
||||
local warn="==> skip metis"
|
||||
local config="config.sh/metis"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile "$config")"
|
||||
then
|
||||
echo "Metis (label=$label) - $METIS_ARCH_PATH"
|
||||
export HAVE_METIS=true
|
||||
export METIS_ARCH_PATH
|
||||
export METIS_INC_DIR="${header%/*}" # Basename
|
||||
export METIS_LIB_DIR="${library%/*}" # Basename
|
||||
. "$file"
|
||||
else
|
||||
if [ -n "$warn" ]
|
||||
then
|
||||
echo "$warn (label=$WM_LABEL_SIZE, metis.h has '$label')"
|
||||
fi
|
||||
no_metis
|
||||
return 1
|
||||
[ -n "$warn" ] && echo "$warn (no $config)"
|
||||
return 2
|
||||
fi
|
||||
|
||||
search_metis "$METIS_ARCH_PATH"
|
||||
}
|
||||
|
||||
|
||||
# Query settings
|
||||
query_metis()
|
||||
{
|
||||
local config="config.sh/metis"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile -mode=o "$config")"
|
||||
then
|
||||
. "$file"
|
||||
_process_query metis "$METIS_ARCH_PATH"
|
||||
else
|
||||
echo "(no $config)" 1>&2
|
||||
echo "metis=unknown"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Force reset of old variables
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset variables
|
||||
no_metis
|
||||
|
||||
# Testing
|
||||
if [ "$1" = "-test" ]
|
||||
then
|
||||
# Test/query
|
||||
case "$1" in
|
||||
-test)
|
||||
have_metis
|
||||
echo_metis
|
||||
fi
|
||||
;;
|
||||
-query)
|
||||
query_metis
|
||||
;;
|
||||
esac
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -2,24 +2,25 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# have_mgridgen
|
||||
#
|
||||
# Description
|
||||
# Detection/setup of mgridgen
|
||||
# Detection/setup of MGRIDGEN
|
||||
#
|
||||
# Requires
|
||||
# config.sh/mgridgen
|
||||
#
|
||||
# Functions provided
|
||||
# have_mgridgen, no_mgridgen, echo_mgridgen
|
||||
# have_mgridgen, no_mgridgen, echo_mgridgen, query_mgridgen, search_mgridgen
|
||||
#
|
||||
# Variables set on success
|
||||
# HAVE_MGRIDGEN
|
||||
@ -28,16 +29,15 @@
|
||||
# MGRIDGEN_LIB_DIR
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
. $WM_PROJECT_DIR/wmake/scripts/sysFunctions # General system functions
|
||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/sysFunctions # General system functions
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset variables
|
||||
# Reset
|
||||
no_mgridgen()
|
||||
{
|
||||
unset HAVE_MGRIDGEN MGRIDGEN_ARCH_PATH MGRIDGEN_INC_DIR MGRIDGEN_LIB_DIR
|
||||
unset MGRIDGEN_VERSION
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
@ -45,85 +45,63 @@ no_mgridgen()
|
||||
echo_mgridgen()
|
||||
{
|
||||
echo "mgridgen=${HAVE_MGRIDGEN:-false}"
|
||||
echo "root=$MGRIDGEN_ARCH_PATH"
|
||||
echo "include=$MGRIDGEN_INC_DIR"
|
||||
echo "library=$MGRIDGEN_LIB_DIR"
|
||||
echo "root=\"$MGRIDGEN_ARCH_PATH\""
|
||||
echo "include=\"$MGRIDGEN_INC_DIR\""
|
||||
echo "library=\"$MGRIDGEN_LIB_DIR\""
|
||||
}
|
||||
|
||||
|
||||
# Search
|
||||
# $1 : prefix (*_ARCH_PATH, system, ...)
|
||||
#
|
||||
# On success, return 0 and export variables
|
||||
# -> HAVE_MGRIDGEN, MGRIDGEN_ARCH_PATH, MGRIDGEN_INC_DIR, MGRIDGEN_LIB_DIR
|
||||
have_mgridgen()
|
||||
search_mgridgen()
|
||||
{
|
||||
local header library static label scalar settings warn good
|
||||
warn="==> skip mgridgen"
|
||||
local warn="==> skip mgridgen"
|
||||
local incName="mgridgen.h"
|
||||
local libName="libMGridGen"
|
||||
local libName2="libmgrid"
|
||||
|
||||
# Basic setup/checks
|
||||
settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/mgridgen) || {
|
||||
#silent# [ -n "$warn" ] && echo "$warn (no config.sh/mgridgen settings)"
|
||||
local prefix="${1:-system}"
|
||||
local header library
|
||||
|
||||
# ----------------------------------
|
||||
if isNone "$prefix"
|
||||
then
|
||||
#silent# [ -n "$warn" ] && echo "$warn (disabled)"
|
||||
return 1
|
||||
}
|
||||
. $settings
|
||||
if isNone "$MGRIDGEN_ARCH_PATH"
|
||||
elif hasAbsdir "$prefix"
|
||||
then
|
||||
#silent# [ -n "$warn" ] && echo "$warn (not available)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
# Header/library names
|
||||
header="mgridgen.h"
|
||||
library="libMGridGen$extLibso"
|
||||
static="libmgrid$extLiba"
|
||||
|
||||
|
||||
if hasAbsdir "$MGRIDGEN_ARCH_PATH"
|
||||
header=$(findFirstFile "$prefix/include/$incName")
|
||||
library=$(findExtLib "$libName" "$libName2")
|
||||
elif isSystem "$prefix"
|
||||
then
|
||||
header=$(findFirstFile $MGRIDGEN_ARCH_PATH/include/$header)
|
||||
|
||||
library=$(findFirstFile \
|
||||
"$(thirdExtLib $library)" \
|
||||
$MGRIDGEN_ARCH_PATH/lib/$static \
|
||||
$MGRIDGEN_ARCH_PATH/lib/$library \
|
||||
$MGRIDGEN_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$static \
|
||||
$MGRIDGEN_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
elif isSystem "$MGRIDGEN_ARCH_PATH"
|
||||
then
|
||||
header=$(findFirstFile /usr/local/include/$header /usr/include/$header)
|
||||
|
||||
case "$header" in
|
||||
/usr/local/*)
|
||||
library=$(findFirstFile \
|
||||
/usr/local/lib/$library \
|
||||
/usr/local/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
|
||||
*)
|
||||
library=$(findFirstFile \
|
||||
/usr/lib/$library \
|
||||
/usr/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
esac
|
||||
header=$(findSystemInclude -name="$incName")
|
||||
prefix=$(sysPrefix "$header")
|
||||
else
|
||||
unset header library
|
||||
unset prefix
|
||||
fi
|
||||
# ----------------------------------
|
||||
|
||||
|
||||
# Header found?
|
||||
# Header
|
||||
[ -n "$header" ] || {
|
||||
#silent# [ -n "$warn" ] && echo "$warn (no header)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# Library found?
|
||||
[ -n "$library" ] || {
|
||||
#silent# [ -n "$warn" ] && echo "$warn (missing library)"
|
||||
# Library
|
||||
[ -n "$library" ] \
|
||||
|| library=$(findLibrary -prefix="$prefix" -name="$libName") \
|
||||
|| library=$(findLibrary -prefix="$prefix" -name="$libName2") \
|
||||
|| {
|
||||
#silent# [ -n "$warn" ] && echo "$warn (no library)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# ----------------------------------
|
||||
|
||||
local label scalar
|
||||
|
||||
# Ensure consistent sizes with OpenFOAM and mgridgen header
|
||||
# Extract typedef for idxtype, realtype
|
||||
@ -134,54 +112,96 @@ have_mgridgen()
|
||||
's/^.*typedef *\([^ ]*\) *realtype.*/\1/ip' \
|
||||
"$header")
|
||||
|
||||
: ${label:=unknown}
|
||||
: ${scalar:=unknown}
|
||||
|
||||
: "${label:=unknown}"
|
||||
: "${scalar:=unknown}"
|
||||
|
||||
case "$WM_LABEL_SIZE:$label" in
|
||||
(32:int32_t | 32:int | 64:int64_t | 64:long)
|
||||
good=true
|
||||
;;
|
||||
|
||||
*)
|
||||
(*)
|
||||
if [ -n "$warn" ]
|
||||
then
|
||||
echo "$warn (label='$WM_LABEL_SIZE', mgridgen.h has '$label')"
|
||||
echo "$warn (label='$WM_LABEL_SIZE', ${header##*/} has '$label')"
|
||||
fi
|
||||
no_mgridgen
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
case "$WM_PRECISION_OPTION:$scalar" in
|
||||
(SP:float | DP:double)
|
||||
good=true
|
||||
(SP:float | SPDP:float | DP:double)
|
||||
;;
|
||||
|
||||
*)
|
||||
(*)
|
||||
if [ -n "$warn" ]
|
||||
then
|
||||
echo "$warn (scalar='$WM_PRECISION_OPTION', mgridgen.h has '$scalar')"
|
||||
echo "$warn (scalar='$WM_PRECISION_OPTION', ${header##*/} has '$scalar')"
|
||||
fi
|
||||
no_mgridgen
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# OK
|
||||
echo "mgridgen (label=$label, scalar=$scalar) - $MGRIDGEN_ARCH_PATH"
|
||||
echo "mgridgen (label=$label, scalar=$scalar) - $prefix"
|
||||
export HAVE_MGRIDGEN=true
|
||||
export MGRIDGEN_ARCH_PATH MGRIDGEN_VERSION
|
||||
export MGRIDGEN_ARCH_PATH="$prefix"
|
||||
export MGRIDGEN_INC_DIR="${header%/*}" # Basename
|
||||
export MGRIDGEN_LIB_DIR="${library%/*}" # Basename
|
||||
export MGRIDGEN_VERSION
|
||||
}
|
||||
|
||||
|
||||
# Force reset of old variables
|
||||
no_mgridgen
|
||||
# Output as per search_* function
|
||||
have_mgridgen()
|
||||
{
|
||||
local warn="==> skip mgridgen"
|
||||
local config="config.sh/mgridgen"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile "$config")"
|
||||
then
|
||||
. "$file"
|
||||
else
|
||||
#silent# [ -n "$warn" ] && echo "$warn (no $config)"
|
||||
return 2
|
||||
fi
|
||||
|
||||
search_mgridgen "$MGRIDGEN_ARCH_PATH"
|
||||
}
|
||||
|
||||
|
||||
# Query settings
|
||||
query_mgridgen()
|
||||
{
|
||||
local config="config.sh/mgridgen"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile -mode=o "$config")"
|
||||
then
|
||||
. "$file"
|
||||
_process_query mgridgen "$MGRIDGEN_ARCH_PATH"
|
||||
else
|
||||
echo "(no $config)" 1>&2
|
||||
echo "mgridgen=unknown"
|
||||
fi
|
||||
}
|
||||
|
||||
# Testing
|
||||
if [ "$1" = "-test" ]
|
||||
then
|
||||
have_mgridgen
|
||||
echo_mgridgen
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset
|
||||
no_mgridgen
|
||||
|
||||
# Test/query
|
||||
case "$1" in
|
||||
-test)
|
||||
have_mgridgen
|
||||
echo_mgridgen
|
||||
;;
|
||||
-query)
|
||||
query_mgridgen
|
||||
;;
|
||||
esac
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -2,12 +2,13 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# have_petsc
|
||||
@ -17,9 +18,12 @@
|
||||
#
|
||||
# Requires
|
||||
# PETSC_ARCH_PATH
|
||||
# or PETSC_DIR, PETSC_ARCH
|
||||
# or config.sh/petsc
|
||||
#
|
||||
# Functions provided
|
||||
# have_petsc, no_petsc, echo_petsc
|
||||
# have_petsc, no_petsc, echo_petsc, query_petsc, search_petsc
|
||||
# hint_petsc
|
||||
#
|
||||
# Variables set on success
|
||||
# HAVE_PETSC
|
||||
@ -28,25 +32,141 @@
|
||||
# PETSC_LIB_DIR
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
. $WM_PROJECT_DIR/wmake/scripts/sysFunctions # General system functions
|
||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/sysFunctions # General system functions
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset variables
|
||||
# Reset
|
||||
no_petsc()
|
||||
{
|
||||
unset HAVE_PETSC PETSC_INC_DIR PETSC_LIB_DIR
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
# Reset variables
|
||||
# Report
|
||||
echo_petsc()
|
||||
{
|
||||
echo "petsc=${HAVE_PETSC:-false}"
|
||||
echo "root=$PETSC_ARCH_PATH"
|
||||
echo "include=$PETSC_INC_DIR"
|
||||
echo "library=$PETSC_LIB_DIR"
|
||||
echo "root=\"$PETSC_ARCH_PATH\""
|
||||
echo "include=\"$PETSC_INC_DIR\""
|
||||
echo "library=\"$PETSC_LIB_DIR\""
|
||||
}
|
||||
|
||||
|
||||
# Hint for enabling
|
||||
hint_petsc()
|
||||
{
|
||||
/bin/cat<<INFORMATION 1>&2
|
||||
==> petsc not found?
|
||||
Define manually, enable in OpenFOAM etc/bashrc, or try the following [POSIX]:
|
||||
|
||||
eval \$(foamEtcFile -sh -config petsc -- -force)
|
||||
|
||||
==
|
||||
INFORMATION
|
||||
}
|
||||
|
||||
|
||||
# On success, return 0 and export variables
|
||||
# -> HAVE_PETSC, PETSC_INC_DIR, PETSC_LIB_DIR
|
||||
#
|
||||
# $1 = prefix (eg, PETSC_DIR, PETSC_ARCH_PATH)
|
||||
# $2 = [arch] (eg, PETSC_ARCH)
|
||||
#
|
||||
# Gets ugly with in-source installation.
|
||||
# 1) In the simple case, petsc is installed with --prefix
|
||||
# we find PREFIX/{include,lib}
|
||||
#
|
||||
# 2) With in-source installation,
|
||||
# headers in PETSC_DIR/include and PETSC_DIR/PETSC_ARCH/include
|
||||
# library is PETSC_DIR/PETSC_ARCH/lib*
|
||||
search_petsc()
|
||||
{
|
||||
local warn="==> skip petsc"
|
||||
local incName="petsc.h"
|
||||
local libName="libpetsc"
|
||||
local pkgName="PETSc"
|
||||
|
||||
local prefix="${1:-system}"
|
||||
local arch="$2"
|
||||
local header library includeDirs libraryDirs
|
||||
|
||||
# ----------------------------------
|
||||
if isNone "$prefix"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (disabled)"
|
||||
return 1
|
||||
elif hasAbsdir "$prefix"
|
||||
then
|
||||
header=$(findFirstFile "$prefix/include/$incName")
|
||||
library=$(findExtLib "$libName")
|
||||
elif isSystem "$prefix"
|
||||
then
|
||||
header=$(findSystemInclude -name="$incName")
|
||||
prefix=$(sysPrefix "$header")
|
||||
|
||||
# No system header, attempt discovery with pkg-config
|
||||
if [ -z "$header" ] && pkg-config --exists "$pkgName" 2>/dev/null
|
||||
then
|
||||
includeDirs=$(pkg-config --cflags-only-I "$pkgName" | sed -e 's/^-[IL]//; s/[ ]-[IL]/ /;')
|
||||
libraryDirs=$(pkg-config --libs-only-L "$pkgName" | sed -e 's/^-[IL]//; s/[ ]-[IL]/ /;')
|
||||
|
||||
prefix="${includeDirs% *}" # First entry (ie, split on space)
|
||||
prefix="${prefix%/*}" # Basename
|
||||
fi
|
||||
else
|
||||
unset prefix
|
||||
fi
|
||||
# ----------------------------------
|
||||
|
||||
# Header -> directory
|
||||
if [ -z "$includeDirs" ]
|
||||
then
|
||||
includeDirs="${header%/*}" # Basename
|
||||
|
||||
# Header
|
||||
[ -n "$header" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (no header)"
|
||||
return 2
|
||||
}
|
||||
fi
|
||||
|
||||
# Library -> directory
|
||||
if [ -z "$libraryDirs" ]
|
||||
then
|
||||
if [ -n "$arch" ] && [ -d "$prefix/$arch" ]
|
||||
then
|
||||
# Prepend with petsc-arch/include
|
||||
if [ -d "$prefix/$arch/include" ]
|
||||
then
|
||||
includeDirs="$prefix/$arch/include${includeDirs:+ }$includeDirs"
|
||||
fi
|
||||
|
||||
# Prefer with petsc-arch/lib
|
||||
if [ -z "$library" ]
|
||||
then
|
||||
library=$(findLibrary -prefix="$prefix/$arch" -name="$libName")
|
||||
fi
|
||||
fi
|
||||
|
||||
[ -n "$library" ] \
|
||||
|| library=$(findLibrary -prefix="$prefix" -name="$libName") \
|
||||
|| {
|
||||
[ -n "$warn" ] && echo "$warn (no library)"
|
||||
return 2
|
||||
}
|
||||
|
||||
libraryDirs="${library%/*}" # Basename
|
||||
fi
|
||||
# ----------------------------------
|
||||
|
||||
# TODO: check size of petsc integer vs label, real vs double?
|
||||
|
||||
# OK
|
||||
export HAVE_PETSC=true
|
||||
export PETSC_ARCH_PATH="$prefix"
|
||||
export PETSC_INC_DIR="$includeDirs"
|
||||
export PETSC_LIB_DIR="$libraryDirs"
|
||||
}
|
||||
|
||||
|
||||
@ -54,90 +174,69 @@ echo_petsc()
|
||||
# -> HAVE_PETSC, PETSC_INC_DIR, PETSC_LIB_DIR
|
||||
have_petsc()
|
||||
{
|
||||
local header library static label settings warn
|
||||
warn="==> skip petsc"
|
||||
local warn="==> skip petsc"
|
||||
local config="config.sh/petsc"
|
||||
local file
|
||||
|
||||
# Basic setup/checks. Prefer current environment value? (TDB)
|
||||
if [ ! -d "$PETSC_ARCH_PATH" ]
|
||||
# Setup - prefer current environment value
|
||||
if [ -d "$PETSC_ARCH_PATH" ] || [ "$PETSC_ARCH_PATH" = system ]
|
||||
then
|
||||
settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/petsc) || {
|
||||
[ -n "$warn" ] && echo "$warn (no config.sh/petsc settings)"
|
||||
return 1
|
||||
}
|
||||
. $settings
|
||||
fi
|
||||
if isNone "$PETSC_ARCH_PATH"
|
||||
# OpenFOAM prefix naming, possibly with petsc-arch
|
||||
search_petsc "$PETSC_ARCH_PATH" $PETSC_ARCH
|
||||
|
||||
elif [ -d "$PETSC_DIR" ]
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (not available)"
|
||||
return 1
|
||||
fi
|
||||
# petsc-dir, petsc-arch naming
|
||||
search_petsc "$PETSC_DIR" $PETSC_ARCH
|
||||
|
||||
|
||||
# Header/library names
|
||||
header="petsc.h"
|
||||
library="libpetsc$extLibso"
|
||||
|
||||
|
||||
if hasAbsdir "$PETSC_ARCH_PATH"
|
||||
then
|
||||
header=$(findFirstFile $PETSC_ARCH_PATH/include/$header)
|
||||
|
||||
library=$(findFirstFile \
|
||||
"$(thirdExtLib $library)" \
|
||||
$PETSC_ARCH_PATH/lib/$library \
|
||||
$PETSC_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
elif isSystem "$PETSC_ARCH_PATH"
|
||||
then
|
||||
header=$(findFirstFile /usr/local/include/$header /usr/include/$header)
|
||||
|
||||
case "$header" in
|
||||
/usr/local/*)
|
||||
library=$(findFirstFile \
|
||||
/usr/local/lib/$library \
|
||||
/usr/local/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
|
||||
*)
|
||||
library=$(findFirstFile \
|
||||
/usr/lib/$library \
|
||||
/usr/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
esac
|
||||
else
|
||||
unset header library
|
||||
# Use config file
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile "$config")"
|
||||
then
|
||||
. "$file"
|
||||
else
|
||||
[ -n "$warn" ] && echo "$warn (no $config)"
|
||||
return 2
|
||||
fi
|
||||
search_petsc "$PETSC_ARCH_PATH"
|
||||
fi
|
||||
|
||||
|
||||
# Header found?
|
||||
[ -n "$header" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (no header)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# Library found?
|
||||
[ -n "$library" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (missing library)"
|
||||
return 2
|
||||
}
|
||||
|
||||
export HAVE_PETSC=true
|
||||
export PETSC_ARCH_PATH
|
||||
export PETSC_INC_DIR="${header%/*}" # Basename
|
||||
export PETSC_LIB_DIR="${library%/*}" # Basename
|
||||
}
|
||||
|
||||
|
||||
# Force reset of old variables
|
||||
no_petsc
|
||||
# Query settings
|
||||
query_petsc()
|
||||
{
|
||||
local config="config.sh/petsc"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile -mode=o "$config")"
|
||||
then
|
||||
. "$file"
|
||||
_process_query petsc "$PETSC_ARCH_PATH"
|
||||
else
|
||||
echo "(no $config)" 1>&2
|
||||
echo "petsc=unknown"
|
||||
fi
|
||||
}
|
||||
|
||||
# Testing
|
||||
if [ "$1" = "-test" ]
|
||||
then
|
||||
have_petsc
|
||||
echo_petsc
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset
|
||||
no_petsc
|
||||
|
||||
# Test/query
|
||||
case "$1" in
|
||||
-test)
|
||||
have_petsc
|
||||
echo_petsc
|
||||
;;
|
||||
-query)
|
||||
query_petsc
|
||||
;;
|
||||
-hint)
|
||||
hint_petsc
|
||||
;;
|
||||
esac
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -2,24 +2,25 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# have_readline
|
||||
#
|
||||
# Description
|
||||
# Detection/setup of readline
|
||||
# Detection/setup of READLINE
|
||||
#
|
||||
# Requires
|
||||
# None
|
||||
#
|
||||
# Functions provided
|
||||
# have_readline, no_readline, echo_readline
|
||||
# have_readline, no_readline, echo_readline, search_readline
|
||||
#
|
||||
# Variables set on success
|
||||
# HAVE_LIBREADLINE - as per GNU autoconf
|
||||
@ -27,15 +28,14 @@
|
||||
# READLINE_LIB_DIR
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
. $WM_PROJECT_DIR/wmake/scripts/sysFunctions # General system functions
|
||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/sysFunctions # General system functions
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset variables
|
||||
# Reset
|
||||
no_readline()
|
||||
{
|
||||
unset HAVE_LIBREADLINE READLINE_INC_DIR READLINE_LIB_DIR
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
@ -43,70 +43,86 @@ no_readline()
|
||||
echo_readline()
|
||||
{
|
||||
echo "readline=${HAVE_LIBREADLINE:-false}"
|
||||
echo "include=$READLINE_INC_DIR"
|
||||
echo "library=$READLINE_LIB_DIR"
|
||||
echo "include=\"$READLINE_INC_DIR\""
|
||||
echo "library=\"$READLINE_LIB_DIR\""
|
||||
}
|
||||
|
||||
|
||||
# Search
|
||||
# $1 : prefix (*_ARCH_PATH, system, ...)
|
||||
#
|
||||
# On success, return 0 and export variables
|
||||
# -> HAVE_LIBREADLINE, READLINE_INC_DIR, READLINE_LIB_DIR
|
||||
have_readline()
|
||||
search_readline()
|
||||
{
|
||||
local header library static settings warn
|
||||
# warn="==> skip readline"
|
||||
local warn # warn="==> skip readline"
|
||||
local incName="readline/readline.h"
|
||||
local libName="libreadline"
|
||||
|
||||
local prefix="${1:-system}"
|
||||
local header library
|
||||
|
||||
# Header/library names
|
||||
header="readline/readline.h"
|
||||
library="libreadline$extLibso"
|
||||
# ----------------------------------
|
||||
if isNone "$prefix"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (disabled)"
|
||||
return 1
|
||||
elif hasAbsdir "$prefix"
|
||||
then
|
||||
header=$(findFirstFile "$prefix/include/$incName")
|
||||
library=$(findExtLib "$libName")
|
||||
elif isSystem "$prefix"
|
||||
then
|
||||
header=$(findSystemInclude -name="$incName")
|
||||
prefix=$(sysPrefix "$header")
|
||||
else
|
||||
unset prefix
|
||||
fi
|
||||
# ----------------------------------
|
||||
|
||||
# System only?
|
||||
header=$(findFirstFile /usr/local/include/$header /usr/include/$header)
|
||||
|
||||
case "$header" in
|
||||
/usr/local/*)
|
||||
library=$(findFirstFile \
|
||||
/usr/local/lib/$library \
|
||||
/usr/local/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
|
||||
*)
|
||||
library=$(findFirstFile \
|
||||
/usr/lib/$library \
|
||||
/usr/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
esac
|
||||
|
||||
# Header found?
|
||||
# Header
|
||||
[ -n "$header" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (no header)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# Library found?
|
||||
[ -n "$library" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (missing library)"
|
||||
# Library
|
||||
[ -n "$library" ] \
|
||||
|| library=$(findLibrary -prefix="$prefix" -name="$libName") \
|
||||
|| {
|
||||
[ -n "$warn" ] && echo "$warn (no library)"
|
||||
return 2
|
||||
}
|
||||
|
||||
header="${header%/*}" # Strip one-level (include/readline/...)
|
||||
# ----------------------------------
|
||||
|
||||
header="${header%/*}" # Strip one-level (include/readline/...)
|
||||
|
||||
# OK
|
||||
export HAVE_LIBREADLINE=true
|
||||
export READLINE_INC_DIR="${header%/*}" # Basename
|
||||
export READLINE_LIB_DIR="${library%/*}" # Basename
|
||||
}
|
||||
|
||||
|
||||
# Force reset of old variables
|
||||
no_readline
|
||||
# Output as per search_* function
|
||||
have_readline()
|
||||
{
|
||||
search_readline system
|
||||
}
|
||||
|
||||
# Testing
|
||||
if [ "$1" = "-test" ]
|
||||
then
|
||||
have_readline
|
||||
echo_readline
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset
|
||||
no_readline
|
||||
|
||||
# Test/query
|
||||
case "$1" in
|
||||
-test)
|
||||
have_readline
|
||||
echo_readline
|
||||
;;
|
||||
esac
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -2,24 +2,25 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# have_scotch
|
||||
#
|
||||
# Description
|
||||
# Detection/setup of scotch
|
||||
# Detection/setup of SCOTCH
|
||||
#
|
||||
# Requires
|
||||
# config.sh/scotch
|
||||
#
|
||||
# Functions provided
|
||||
# have_scotch, no_scotch, echo_scotch
|
||||
# have_ptscotch, search_ptscotch
|
||||
#
|
||||
# Variables set on success
|
||||
# HAVE_SCOTCH
|
||||
@ -27,17 +28,67 @@
|
||||
# SCOTCH_INC_DIR
|
||||
# SCOTCH_LIB_DIR
|
||||
#
|
||||
# Functions provided [Must call have_scotch first]
|
||||
# have_ptscotch, search_ptscotch
|
||||
#
|
||||
# Variables set on success
|
||||
# HAVE_PTSCOTCH
|
||||
# PTSCOTCH_ARCH_PATH
|
||||
# PTSCOTCH_INC_DIR
|
||||
# PTSCOTCH_LIB_DIR
|
||||
#
|
||||
#
|
||||
# System files can be hiding in a large variety of locations
|
||||
#
|
||||
# ArchLinux
|
||||
# ---------
|
||||
# scotch include=/usr/include/ptscotch
|
||||
#
|
||||
# ptscotch include=/usr/include/ptscotch
|
||||
#
|
||||
#
|
||||
# Debian/Ubuntu
|
||||
# -------------
|
||||
# scotch include=/usr/include/scotch-int32
|
||||
# scotch library=/usr/lib/x86_64-linux-gnu
|
||||
#
|
||||
# ptscotch include=/usr/include/scotch-int32
|
||||
# ptscotch library=/usr/lib/x86_64-linux-gnu
|
||||
#
|
||||
#
|
||||
# RedHat
|
||||
# ------
|
||||
# scotch include=/usr/include
|
||||
# scotch library=/usr/lib64
|
||||
#
|
||||
# ptscotch include=/usr/include/openmpi-x86_64
|
||||
# ptscotch library=/usr/lib64/openmpi/lib
|
||||
#
|
||||
# when MPI_ARCH_PATH=/usr/lib64/openmpi
|
||||
# and mpicc --showme:compile -> -I/usr/include/openmpi-x86_64
|
||||
#
|
||||
#
|
||||
# openSUSE
|
||||
# --------
|
||||
# scotch include=/usr/include
|
||||
# scotch library=/usr/lib64
|
||||
#
|
||||
# ptscotch include=/usr/lib64/mpi/gcc/openmpi2/include
|
||||
# ptscotch library=/usr/lib64/mpi/gcc/openmpi2/lib64
|
||||
#
|
||||
# when MPI_ARCH_PATH=/usr/lib64/mpi/gcc/openmpi2
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
. $WM_PROJECT_DIR/wmake/scripts/sysFunctions # General system functions
|
||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/sysFunctions # General system functions
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset variables
|
||||
# Reset
|
||||
no_scotch()
|
||||
{
|
||||
unset HAVE_SCOTCH SCOTCH_ARCH_PATH SCOTCH_INC_DIR SCOTCH_LIB_DIR
|
||||
unset SCOTCH_VERSION
|
||||
return 0
|
||||
unset HAVE_PTSCOTCH PTSCOTCH_ARCH_PATH PTSCOTCH_INC_DIR PTSCOTCH_LIB_DIR
|
||||
}
|
||||
|
||||
|
||||
@ -45,97 +96,86 @@ no_scotch()
|
||||
echo_scotch()
|
||||
{
|
||||
echo "scotch=${HAVE_SCOTCH:-false}"
|
||||
echo "root=$SCOTCH_ARCH_PATH"
|
||||
echo "include=$SCOTCH_INC_DIR"
|
||||
echo "library=$SCOTCH_LIB_DIR"
|
||||
echo "root=\"$SCOTCH_ARCH_PATH\""
|
||||
echo "include=\"$SCOTCH_INC_DIR\""
|
||||
echo "library=\"$SCOTCH_LIB_DIR\""
|
||||
echo
|
||||
echo "ptscotch=${HAVE_PTSCOTCH:-false}"
|
||||
echo "root=\"$PTSCOTCH_ARCH_PATH\""
|
||||
echo "include=\"$PTSCOTCH_INC_DIR\""
|
||||
echo "library=\"$PTSCOTCH_LIB_DIR\""
|
||||
}
|
||||
|
||||
|
||||
# Search
|
||||
# $1 : prefix (*_ARCH_PATH, system, ...)
|
||||
#
|
||||
# On success, return 0 and export variables
|
||||
# -> HAVE_SCOTCH, SCOTCH_ARCH_PATH, SCOTCH_INC_DIR, SCOTCH_LIB_DIR
|
||||
have_scotch()
|
||||
search_scotch()
|
||||
{
|
||||
local header library static label settings warn
|
||||
warn="==> skip scotch"
|
||||
local warn="==> skip scotch"
|
||||
local incName="scotch.h"
|
||||
local libName="libscotch"
|
||||
local localDir="scotch-int$WM_LABEL_SIZE"
|
||||
|
||||
# Basic setup/checks
|
||||
settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/scotch) || {
|
||||
[ -n "$warn" ] && echo "$warn (no config.sh/scotch settings)"
|
||||
return 1
|
||||
}
|
||||
. $settings
|
||||
if isNone "$SCOTCH_ARCH_PATH"
|
||||
local prefix="${1:-system}"
|
||||
local header library
|
||||
|
||||
# ----------------------------------
|
||||
if isNone "$prefix"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (not available)"
|
||||
[ -n "$warn" ] && echo "$warn (disabled)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
# Header/library names
|
||||
header="scotch.h"
|
||||
library="libscotch$extLibso"
|
||||
static="libscotch$extLiba"
|
||||
|
||||
|
||||
if hasAbsdir "$SCOTCH_ARCH_PATH"
|
||||
then
|
||||
header=$(findFirstFile $SCOTCH_ARCH_PATH/include/$header)
|
||||
|
||||
library=$(findFirstFile \
|
||||
"$(thirdExtLib $library)" \
|
||||
$SCOTCH_ARCH_PATH/lib/$static \
|
||||
$SCOTCH_ARCH_PATH/lib/$library \
|
||||
$SCOTCH_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$static \
|
||||
$SCOTCH_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
elif isSystem "$SCOTCH_ARCH_PATH"
|
||||
elif hasAbsdir "$prefix"
|
||||
then
|
||||
header=$(findFirstFile \
|
||||
/usr/local/include/$header \
|
||||
/usr/local/include/scotch/$header \
|
||||
/usr/include/$header \
|
||||
/usr/include/scotch/$header \
|
||||
"$prefix/include/$localDir/$incName" \
|
||||
"$prefix/include/scotch/$incName" \
|
||||
"$prefix/include/$incName" \
|
||||
)
|
||||
|
||||
case "$header" in
|
||||
/usr/local/*)
|
||||
library=$(findFirstFile \
|
||||
/usr/local/lib/$library \
|
||||
/usr/local/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
|
||||
*)
|
||||
library=$(findFirstFile \
|
||||
/usr/lib/$library \
|
||||
/usr/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
esac
|
||||
library=$(findExtLib "$libName")
|
||||
elif isSystem "$prefix"
|
||||
then
|
||||
header=$(findFirstFile \
|
||||
"/usr/local/include/$localDir/$incName" \
|
||||
"/usr/local/include/scotch/$incName" \
|
||||
"/usr/local/include/$incName" \
|
||||
"/usr/include/$localDir/$incName" \
|
||||
"/usr/include/scotch/$incName" \
|
||||
"/usr/include/$incName" \
|
||||
)
|
||||
prefix=$(sysPrefix "$header")
|
||||
else
|
||||
unset header library
|
||||
unset prefix
|
||||
fi
|
||||
# ----------------------------------
|
||||
equalBaseName "${header%/*}" "$localDir" || unset localDir
|
||||
|
||||
|
||||
# Header found?
|
||||
# Header
|
||||
[ -n "$header" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (no header)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# Library found?
|
||||
[ -n "$library" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (missing library)"
|
||||
# Library
|
||||
[ -n "$library" ] \
|
||||
|| library=$(findLibrary -prefix="$prefix" -name="$libName" -local="$localDir") \
|
||||
|| {
|
||||
[ -n "$warn" ] && echo "$warn (no library)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# ----------------------------------
|
||||
|
||||
local label
|
||||
|
||||
# Ensure consistent sizes between OpenFOAM and scotch header
|
||||
# extract 'typedef int64_t SCOTCH_Num' or equivalent
|
||||
label=$(sed -ne \
|
||||
's/^.*typedef *\([^ ]*\) *SCOTCH_Num.*/\1/p' \
|
||||
"$header")
|
||||
: ${label:=unknown} # Failsafe value
|
||||
: "${label:=unknown}"
|
||||
|
||||
|
||||
# No SCOTCH_VERSION set? Try to obtain from header
|
||||
@ -152,38 +192,184 @@ have_scotch()
|
||||
IFS="."
|
||||
[ "$#" -gt 0 ] && echo "scotch-$*"
|
||||
)
|
||||
: ${SCOTCH_VERSION:=scotch} # Failsafe value
|
||||
|
||||
: "${SCOTCH_VERSION:=scotch}" # Failsafe value
|
||||
|
||||
case "$WM_LABEL_SIZE:$label" in
|
||||
(32:int32_t | 32:int | 64:int64_t | 64:long)
|
||||
echo "Scotch (label=$label) - $SCOTCH_ARCH_PATH"
|
||||
export HAVE_SCOTCH=true
|
||||
export SCOTCH_ARCH_PATH SCOTCH_VERSION
|
||||
export SCOTCH_INC_DIR="${header%/*}" # Basename
|
||||
export SCOTCH_LIB_DIR="${library%/*}" # Basename
|
||||
;;
|
||||
|
||||
*)
|
||||
(*)
|
||||
if [ -n "$warn" ]
|
||||
then
|
||||
echo "$warn (label='$WM_LABEL_SIZE', scotch.h has '$label')"
|
||||
echo "$warn (label='$WM_LABEL_SIZE', ${header##*/} has '$label')"
|
||||
fi
|
||||
no_scotch
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# OK
|
||||
echo "scotch (label=$label) - $prefix"
|
||||
export HAVE_SCOTCH=true
|
||||
export SCOTCH_ARCH_PATH="$prefix"
|
||||
export SCOTCH_INC_DIR="${header%/*}" # Basename
|
||||
export SCOTCH_LIB_DIR="${library%/*}" # Basename
|
||||
export SCOTCH_VERSION
|
||||
}
|
||||
|
||||
|
||||
# Force reset of old variables
|
||||
no_scotch
|
||||
# Search
|
||||
# $1 : prefix (*_ARCH_PATH, system, ...)
|
||||
#
|
||||
# On success, return 0 and export variables
|
||||
# -> HAVE_PTSCOTCH, PTSCOTCH_ARCH_PATH, PTSCOTCH_INC_DIR, PTSCOTCH_LIB_DIR
|
||||
search_ptscotch()
|
||||
{
|
||||
local warn="==> skip ptscotch"
|
||||
local incName="ptscotch.h"
|
||||
local libName="libptscotch"
|
||||
local localDir="scotch-int$WM_LABEL_SIZE"
|
||||
|
||||
local prefix="${1:-system}"
|
||||
local header library
|
||||
|
||||
local mpiPrefix="$MPI_ARCH_PATH"
|
||||
local mpiName="${MPI_ARCH_PATH##*/}"
|
||||
|
||||
# ----------------------------------
|
||||
if isNone "$prefix"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (disabled)"
|
||||
return 1
|
||||
elif hasAbsdir "$prefix"
|
||||
then
|
||||
header=$(findFirstFile \
|
||||
"$prefix/include/$FOAM_MPI/$incName" \
|
||||
"$prefix/include/$localDir/$incName" \
|
||||
"$prefix/include/ptscotch/$incName" \
|
||||
"$prefix/include/scotch/$incName" \
|
||||
"$prefix/include/$incName" \
|
||||
"$mpiPrefix/include/$incName" \
|
||||
"$prefix/include/$mpiName/$incName" \
|
||||
"$prefix/include/${mpiName}-$(uname -m)/$incName" \
|
||||
)
|
||||
library="$(findExtLib $FOAM_MPI/$libName $libName)"
|
||||
elif isSystem "$prefix"
|
||||
then
|
||||
header=$(findFirstFile \
|
||||
"/usr/local/include/$localDir/$incName" \
|
||||
"/usr/local/include/ptscotch/$incName" \
|
||||
"/usr/local/include/scotch/$incName" \
|
||||
"/usr/local/include/$incName" \
|
||||
"/usr/include/$localDir/$incName" \
|
||||
"/usr/include/ptscotch/$incName" \
|
||||
"/usr/include/scotch/$incName" \
|
||||
"/usr/include/$incName" \
|
||||
"$mpiPrefix/include/$incName" \
|
||||
"/usr/include/$mpiName/$incName" \
|
||||
"$prefix/include/${mpiName}-$(uname -m)/$incName" \
|
||||
)
|
||||
prefix=$(sysPrefix "$header")
|
||||
else
|
||||
unset prefix
|
||||
fi
|
||||
# ----------------------------------
|
||||
equalBaseName "${header%/*}" "$localDir" || unset localDir
|
||||
|
||||
# Header
|
||||
[ -n "$header" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (no header)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# Library
|
||||
[ -n "$library" ] \
|
||||
|| library=$(findLibrary -prefix="$prefix" -name="$libName" -local="$localDir") \
|
||||
|| library=$(findLibrary -prefix="$mpiPrefix" -name="$libName" -local="$localDir") \
|
||||
|| {
|
||||
[ -n "$warn" ] && echo "$warn (no library)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# ----------------------------------
|
||||
|
||||
# OK
|
||||
echo "ptscotch - $prefix"
|
||||
export HAVE_PTSCOTCH=true
|
||||
export PTSCOTCH_ARCH_PATH="$prefix"
|
||||
export PTSCOTCH_INC_DIR="${header%/*}" # Basename
|
||||
export PTSCOTCH_LIB_DIR="${library%/*}" # Basename
|
||||
}
|
||||
|
||||
|
||||
# Output as per search_* function
|
||||
have_scotch()
|
||||
{
|
||||
local warn="==> skip scotch"
|
||||
local config="config.sh/scotch"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile "$config")"
|
||||
then
|
||||
. "$file"
|
||||
else
|
||||
[ -n "$warn" ] && echo "$warn (no $config)"
|
||||
return 2
|
||||
fi
|
||||
|
||||
search_scotch "$SCOTCH_ARCH_PATH"
|
||||
}
|
||||
|
||||
|
||||
# Output as per search_* function
|
||||
have_ptscotch()
|
||||
{
|
||||
local warn="==> skip ptscotch"
|
||||
|
||||
if [ "$HAVE_SCOTCH" != true ]
|
||||
then
|
||||
echo "$warn (no serial scotch available?)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Reuse old settings
|
||||
[ -n "$PTSCOTCH_ARCH_PATH" ] || PTSCOTCH_ARCH_PATH="$SCOTCH_ARCH_PATH"
|
||||
|
||||
search_ptscotch "$PTSCOTCH_ARCH_PATH"
|
||||
}
|
||||
|
||||
|
||||
# Query settings
|
||||
query_scotch()
|
||||
{
|
||||
local config="config.sh/scotch"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile -mode=o "$config")"
|
||||
then
|
||||
. "$file"
|
||||
_process_query scotch "$SCOTCH_ARCH_PATH"
|
||||
else
|
||||
echo "(no $config)" 1>&2
|
||||
echo "scotch=unknown"
|
||||
fi
|
||||
}
|
||||
|
||||
# Testing
|
||||
if [ "$1" = "-test" ]
|
||||
then
|
||||
have_scotch
|
||||
echo_scotch
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset
|
||||
no_scotch
|
||||
|
||||
# Test/query
|
||||
case "$1" in
|
||||
-test)
|
||||
have_scotch && have_ptscotch
|
||||
echo_scotch
|
||||
;;
|
||||
-query)
|
||||
query_scotch
|
||||
;;
|
||||
esac
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -2,24 +2,25 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# have_zoltan
|
||||
#
|
||||
# Description
|
||||
# Detection/setup of zoltan
|
||||
# Detection/setup of ZOLTAN
|
||||
#
|
||||
# Requires
|
||||
# config.sh/zoltan
|
||||
#
|
||||
# Functions provided
|
||||
# have_zoltan, no_zoltan, echo_zoltan
|
||||
# have_zoltan, no_zoltan, echo_zoltan, query_zoltan, search_zoltan
|
||||
#
|
||||
# Variables set on success
|
||||
# HAVE_ZOLTAN
|
||||
@ -28,15 +29,14 @@
|
||||
# ZOLTAN_LIB_DIR
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
. $WM_PROJECT_DIR/wmake/scripts/sysFunctions # General system functions
|
||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/sysFunctions # General system functions
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset variables
|
||||
# Reset
|
||||
no_zoltan()
|
||||
{
|
||||
unset HAVE_ZOLTAN ZOLTAN_INC_DIR ZOLTAN_LIB_DIR
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
@ -44,100 +44,118 @@ no_zoltan()
|
||||
echo_zoltan()
|
||||
{
|
||||
echo "zoltan=${HAVE_ZOLTAN:-false}"
|
||||
echo "root=$ZOLTAN_ARCH_PATH"
|
||||
echo "include=$ZOLTAN_INC_DIR"
|
||||
echo "library=$ZOLTAN_LIB_DIR"
|
||||
echo "root=\"$ZOLTAN_ARCH_PATH\""
|
||||
echo "include=\"$ZOLTAN_INC_DIR\""
|
||||
echo "library=\"$ZOLTAN_LIB_DIR\""
|
||||
}
|
||||
|
||||
|
||||
# Search
|
||||
# $1 : prefix (*_ARCH_PATH, system, ...)
|
||||
#
|
||||
# On success, return 0 and export variables
|
||||
# -> HAVE_ZOLTAN, ZOLTAN_INC_DIR, ZOLTAN_LIB_DIR
|
||||
have_zoltan()
|
||||
search_zoltan()
|
||||
{
|
||||
local header library static label settings warn
|
||||
# warn="==> skip zoltan"
|
||||
local warn # warn="==> skip zoltan"
|
||||
local incName="zoltan.h"
|
||||
local libName="libzoltan"
|
||||
|
||||
# Basic setup/checks
|
||||
settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/zoltan) || {
|
||||
[ -n "$warn" ] && echo "$warn (no config.sh/zoltan settings)"
|
||||
local prefix="${1:-system}"
|
||||
local header library
|
||||
|
||||
# ----------------------------------
|
||||
if isNone "$prefix"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (disabled)"
|
||||
return 1
|
||||
}
|
||||
. $settings
|
||||
if isNone "$ZOLTAN_ARCH_PATH"
|
||||
elif hasAbsdir "$prefix"
|
||||
then
|
||||
[ -n "$warn" ] && echo "$warn (not available)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
# Header/library names
|
||||
header="zoltan.h"
|
||||
library="libzoltan$extLibso"
|
||||
static="libzoltan$extLiba"
|
||||
|
||||
|
||||
if hasAbsdir "$ZOLTAN_ARCH_PATH"
|
||||
header=$(findFirstFile "$prefix/include/$incName")
|
||||
library=$(findExtLib "$libName")
|
||||
elif isSystem "$prefix"
|
||||
then
|
||||
header=$(findFirstFile $ZOLTAN_ARCH_PATH/include/$header)
|
||||
|
||||
library=$(findFirstFile \
|
||||
"$(thirdExtLib $library)" \
|
||||
$ZOLTAN_ARCH_PATH/lib/$static \
|
||||
$ZOLTAN_ARCH_PATH/lib/$library \
|
||||
$ZOLTAN_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$static \
|
||||
$ZOLTAN_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
elif isSystem "$ZOLTAN_ARCH_PATH"
|
||||
then
|
||||
header=$(findFirstFile /usr/local/include/$header /usr/include/$header)
|
||||
|
||||
case "$header" in
|
||||
/usr/local/*)
|
||||
library=$(findFirstFile \
|
||||
/usr/local/lib/$library \
|
||||
/usr/local/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
|
||||
*)
|
||||
library=$(findFirstFile \
|
||||
/usr/lib/$library \
|
||||
/usr/lib$WM_COMPILER_LIB_ARCH/$library \
|
||||
)
|
||||
;;
|
||||
esac
|
||||
header=$(findSystemInclude -name="$incName")
|
||||
prefix=$(sysPrefix "$header")
|
||||
else
|
||||
unset header library
|
||||
unset prefix
|
||||
fi
|
||||
# ----------------------------------
|
||||
|
||||
|
||||
# Header found?
|
||||
# Header
|
||||
[ -n "$header" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (no header)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# Library found?
|
||||
[ -n "$library" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (missing library)"
|
||||
# Library
|
||||
[ -n "$library" ] \
|
||||
|| library=$(findLibrary -prefix="$prefix" -name="$libName") \
|
||||
|| {
|
||||
[ -n "$warn" ] && echo "$warn (no library)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# ----------------------------------
|
||||
|
||||
# OK
|
||||
export HAVE_ZOLTAN=true
|
||||
export ZOLTAN_ARCH_PATH
|
||||
export ZOLTAN_ARCH_PATH="$prefix"
|
||||
export ZOLTAN_INC_DIR="${header%/*}" # Basename
|
||||
export ZOLTAN_LIB_DIR="${library%/*}" # Basename
|
||||
}
|
||||
|
||||
|
||||
# Force reset of old variables
|
||||
no_zoltan
|
||||
# Output as per search_* function
|
||||
have_zoltan()
|
||||
{
|
||||
local warn # warn="==> skip zoltan"
|
||||
local config="config.sh/zoltan"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile "$config")"
|
||||
then
|
||||
. "$file"
|
||||
else
|
||||
[ -n "$warn" ] && echo "$warn (no $config)"
|
||||
return 2
|
||||
fi
|
||||
|
||||
search_zoltan "$ZOLTAN_ARCH_PATH"
|
||||
}
|
||||
|
||||
|
||||
# Query settings
|
||||
query_zoltan()
|
||||
{
|
||||
local config="config.sh/zoltan"
|
||||
local file
|
||||
|
||||
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile -mode=o "$config")"
|
||||
then
|
||||
. "$file"
|
||||
_process_query zoltan "$ZOLTAN_ARCH_PATH"
|
||||
else
|
||||
echo "(no $config)" 1>&2
|
||||
echo "zoltan=unknown"
|
||||
fi
|
||||
}
|
||||
|
||||
# Testing
|
||||
if [ "$1" = "-test" ]
|
||||
then
|
||||
have_zoltan
|
||||
echo_zoltan
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Reset
|
||||
no_zoltan
|
||||
|
||||
# Test/query
|
||||
case "$1" in
|
||||
-test)
|
||||
have_zoltan
|
||||
echo_zoltan
|
||||
;;
|
||||
-query)
|
||||
query_zoltan
|
||||
;;
|
||||
esac
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -3,9 +3,11 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2018 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
@ -3,9 +3,11 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM.
|
||||
#
|
||||
@ -31,7 +33,7 @@
|
||||
# Usage : makeFiles
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
dirToString="$WM_DIR/platforms/$WM_ARCH$WM_COMPILER"/dirToString
|
||||
dirToString="$WM_DIR/scripts/dirToString"
|
||||
|
||||
if [ -r Make/files ]
|
||||
then
|
||||
@ -46,8 +48,10 @@ fi
|
||||
|
||||
[ -d Make ] || mkdir Make
|
||||
rm -f Make/files
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
echo "Creating Make/files"
|
||||
|
||||
echo "Creating Make/files ..."
|
||||
|
||||
for dir in $(find . -mindepth 1 -type d -print)
|
||||
do
|
||||
@ -56,7 +60,7 @@ do
|
||||
# Skip special directories
|
||||
;;
|
||||
*)
|
||||
echo "$(echo $dir | $dirToString -strip) = ${dir#./}"
|
||||
echo "$($dirToString "$dir") = ${dir#./}"
|
||||
;;
|
||||
esac
|
||||
done > Make/files
|
||||
@ -64,11 +68,11 @@ done > Make/files
|
||||
|
||||
for file in $(find . -name "*.[cCylLfF]" -type f -print)
|
||||
do
|
||||
pathName=$(echo ${file%/*} | $dirToString -strip)
|
||||
pathName="$($dirToString "${file%/*}")"
|
||||
|
||||
if [ -n "$pathName" ]
|
||||
then
|
||||
echo '$('$pathName')/'"${file##*/}"
|
||||
echo '$('"$pathName"')/'"${file##*/}"
|
||||
else
|
||||
echo "${file##*/}"
|
||||
fi
|
||||
|
||||
@ -3,9 +3,11 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2011 OpenFOAM Foundation
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM.
|
||||
#
|
||||
@ -40,7 +42,9 @@ fi
|
||||
|
||||
[ -d Make ] || mkdir Make
|
||||
rm -f Make/options
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
echo "Creating Make/options"
|
||||
|
||||
echo 'EXE_INC = \
|
||||
|
||||
@ -3,9 +3,11 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2011 OpenFOAM Foundation
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
@ -2,12 +2,13 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# paraviewFunctions
|
||||
@ -17,12 +18,12 @@
|
||||
# Setup of variables for creating ParaView plugins
|
||||
#
|
||||
# Requires
|
||||
# ParaView_DIR (unless system)
|
||||
# PV_PLUGIN_PATH
|
||||
# ParaView_DIR (unless system)
|
||||
# PV_PLUGIN_PATH (or rely on automatic mechanism)
|
||||
#
|
||||
# Provides Functions
|
||||
# have_pvplugin_support, no_paraview, echo_paraview
|
||||
# cmakeVtk, cmakePv
|
||||
# get_pvplugin_api, have_pvplugin_support, no_paraview, echo_paraview
|
||||
# cmakeVtk, cmakePv, cmakePvInstall
|
||||
#
|
||||
# Variables on success
|
||||
# HAVE_PVPLUGIN_SUPPORT
|
||||
@ -35,8 +36,8 @@
|
||||
# paraview-major.minor encoded in its name.
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
. $WM_PROJECT_DIR/wmake/scripts/sysFunctions # General system functions
|
||||
. $WM_PROJECT_DIR/wmake/scripts/cmakeFunctions # Require cmake functions
|
||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/sysFunctions # General system functions
|
||||
. ${WM_PROJECT_DIR:?}/wmake/scripts/cmakeFunctions # Require cmake functions
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -45,7 +46,6 @@ no_paraview()
|
||||
{
|
||||
unset HAVE_PVPLUGIN_SUPPORT FOAM_PV_PLUGIN_LIBBIN
|
||||
unset PARAVIEW_API PARAVIEW_INC_DIR
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
@ -53,42 +53,123 @@ no_paraview()
|
||||
echo_paraview()
|
||||
{
|
||||
echo "paraview=${HAVE_PVPLUGIN_SUPPORT:-false}"
|
||||
echo "root=$ParaView_DIR"
|
||||
echo "include=$PARAVIEW_INC_DIR"
|
||||
echo "plugin=$FOAM_PV_PLUGIN_LIBBIN"
|
||||
echo "root=\"$ParaView_DIR\""
|
||||
echo "include=\"$PARAVIEW_INC_DIR\""
|
||||
echo "plugin=\"$FOAM_PV_PLUGIN_LIBBIN\""
|
||||
echo "api=$PARAVIEW_API"
|
||||
}
|
||||
|
||||
|
||||
# CMake into objectsDir with VTK_DIR dependency
|
||||
# 1 - sourceDir
|
||||
# 2.. optional cmake defines
|
||||
cmakeVtk()
|
||||
{
|
||||
cmakeVersioned "VTK_DIR=$VTK_DIR" "$1"
|
||||
cmakeVersioned "VTK_DIR=$VTK_DIR" "$@"
|
||||
}
|
||||
|
||||
|
||||
# CMake into objectsDir with ParaView_DIR dependency
|
||||
# 1 - sourceDir
|
||||
# 2.. optional cmake defines
|
||||
cmakePv()
|
||||
{
|
||||
cmakeVersioned "ParaView_DIR=$ParaView_DIR" "$1"
|
||||
cmakeVersioned "ParaView_DIR=$ParaView_DIR" "$@"
|
||||
}
|
||||
|
||||
#
|
||||
# CMake into objectsDir with ParaView_DIR dependency
|
||||
# 1 - sourceDir
|
||||
# 2.. optional cmake defines
|
||||
cmakePvInstall()
|
||||
{
|
||||
cmakeVersionedInstall "ParaView_DIR=$ParaView_DIR" "$@"
|
||||
}
|
||||
|
||||
|
||||
# Build library - use sentinel file(s) to handle paraview version changes
|
||||
# Some difficulty handling different installation options as well
|
||||
# as wmake options, so only handle build/configure information for now
|
||||
#
|
||||
# 1 - libName
|
||||
# 2... build/configure information
|
||||
#
|
||||
# Similar to wmakeVersioned
|
||||
wmakeLibPv()
|
||||
{
|
||||
local depend="ParaView_DIR=$ParaView_DIR"
|
||||
local libName="$1"
|
||||
shift 1
|
||||
local sentinel
|
||||
|
||||
for libName
|
||||
do
|
||||
sentinel=$(sameDependency "$depend" $libName) || \
|
||||
wclean $libName
|
||||
sentinel=$(sameDependency "$libName" "$depend" $@) || \
|
||||
wclean "$libName"
|
||||
|
||||
wmake $targetType $libName \
|
||||
&& echo "$depend" > ${sentinel:-/dev/null}
|
||||
done
|
||||
wmake $targetType "$libName" \
|
||||
&& storeDependency "$sentinel" "$depend" $@
|
||||
}
|
||||
|
||||
# Get ParaView API from given path.
|
||||
# Eg, "/path/paraview-dir/paraview-5.6" -> "5.6"
|
||||
#
|
||||
# Or the output from `paraview --version`
|
||||
# Eg, "paraview version 5.6.3" -> "5.6"
|
||||
#
|
||||
# 1 - the input path ending with paraview-x.y, or paraview --version information
|
||||
#
|
||||
# On success, return 0 and echo value
|
||||
#
|
||||
get_pvapi()
|
||||
{
|
||||
local pv_api
|
||||
|
||||
# Extract paraview major+minor version from the directory name
|
||||
# From /path/paraview-5.6 -> 5.6
|
||||
pv_api=$(echo "${1:-none}" | \
|
||||
sed -ne 's@^.*/@@;s@^[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$@\1@p')
|
||||
|
||||
if [ -z "$pv_api" ]
|
||||
then
|
||||
# Extract paraview major+minor version from "paraview --version" information
|
||||
pv_api=$(echo "${1:-none}" | \
|
||||
sed -ne 's@^.*version *\([0-9][0-9]*\.[0-9][0-9]*\).*$@\1@p')
|
||||
fi
|
||||
|
||||
[ -n "$pv_api" ] || return 1
|
||||
|
||||
# OK
|
||||
echo "$pv_api"
|
||||
}
|
||||
|
||||
|
||||
# Extract ParaView plugin api number from PV_PLUGIN_PATH
|
||||
# On success, return 0 and export variables
|
||||
# -> FOAM_PV_PLUGIN_LIBBIN, PARAVIEW_API
|
||||
#
|
||||
get_pvplugin_api()
|
||||
{
|
||||
# OK
|
||||
unset FOAM_PV_PLUGIN_LIBBIN PARAVIEW_API
|
||||
local pv_api targetDir
|
||||
|
||||
# The OpenFOAM plugin must be the first in PV_PLUGIN_PATH
|
||||
# and must have the paraview major+minor version encoded in its name!
|
||||
# Eg, PV_PLUGIN_PATH="$FOAM_LIBBIN/paraview-5.5"
|
||||
|
||||
# Get the first entry from PV_PLUGIN_PATH=dir1;dir2;...
|
||||
targetDir="${PV_PLUGIN_PATH##;}"
|
||||
targetDir="${targetDir%%;*}"
|
||||
|
||||
# Extract paraview major+minor version from directory name
|
||||
# From /path/paraview-5.6 -> 5.6
|
||||
pv_api=$(get_pvapi "$targetDir")
|
||||
|
||||
[ -n "$pv_api" ] || return 1
|
||||
|
||||
# OK
|
||||
export FOAM_PV_PLUGIN_LIBBIN="$targetDir"
|
||||
export PARAVIEW_API="$pv_api"
|
||||
|
||||
return 0 # success
|
||||
}
|
||||
|
||||
|
||||
@ -101,47 +182,52 @@ wmakeLibPv()
|
||||
#
|
||||
have_pvplugin_support()
|
||||
{
|
||||
local header settings warn pv_api installDir binDir includeDir targetDir
|
||||
warn="==> skip paraview-plugin"
|
||||
local warn="==> skip paraview-plugin"
|
||||
local settings pv_api pv_executable installDir binDir includeDir targetDir
|
||||
|
||||
# Trivial check
|
||||
command -v cmake > /dev/null 2>&1 || {
|
||||
command -v cmake >/dev/null || {
|
||||
echo "$warn (no cmake)"
|
||||
return 1
|
||||
}
|
||||
|
||||
if get_pvplugin_api
|
||||
then
|
||||
targetDir="$FOAM_PV_PLUGIN_LIBBIN"
|
||||
pv_api="$PARAVIEW_API"
|
||||
fi
|
||||
unset FOAM_PV_PLUGIN_LIBBIN PARAVIEW_API
|
||||
|
||||
# The OpenFOAM plugin must be the first in PV_PLUGIN_PATH
|
||||
# and must have the paraview major+minor version encoded in its name!
|
||||
# Eg, PV_PLUGIN_PATH="$FOAM_LIBBIN/paraview-5.5"
|
||||
# Probably not needed...
|
||||
# if [ -z "$targetDir" ] || [ -z "$pv_api" ]
|
||||
# then
|
||||
# echo "$warn (could not determine target or major.minor version)"
|
||||
# echo " PV_PLUGIN_PATH=${PV_PLUGIN_PATH:-???}"
|
||||
# return 1
|
||||
# fi
|
||||
|
||||
# Get the first entry from PV_PLUGIN_PATH=dir1;dir2;...
|
||||
targetDir="${PV_PLUGIN_PATH##;}"
|
||||
targetDir="${targetDir%%;*}"
|
||||
|
||||
# Extract the paraview major+minor version from the directory name
|
||||
# From /path/paraview-5.6 -> 5.6
|
||||
pv_api=$(echo "$targetDir" | \
|
||||
sed -ne 's@^.*/@@;s/^[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/p')
|
||||
|
||||
[ -n "$targetDir" ] || {
|
||||
echo "$warn (could not determine target)"
|
||||
echo " PV_PLUGIN_PATH=${PV_PLUGIN_PATH:-???}"
|
||||
return 1
|
||||
}
|
||||
|
||||
[ -n "$pv_api" ] || {
|
||||
echo "$warn (could not determine major.minor version)"
|
||||
return 1
|
||||
}
|
||||
|
||||
# Header/library names
|
||||
header="pqServerManagerModel.h"
|
||||
# Include/library names
|
||||
local header="pqServerManagerModel.h"
|
||||
|
||||
if [ -n "$ParaView_DIR" ]
|
||||
then
|
||||
# ParaView_DIR defined. Look for include/
|
||||
|
||||
# Unless already known, get API value from include directory name
|
||||
if [ -z "$pv_api" ]
|
||||
then
|
||||
for settings in $(find "$ParaView_DIR"/include -maxdepth 1 -name 'paraview-*' -type d)
|
||||
do
|
||||
pv_api=$(get_pvapi "$settings") && break
|
||||
done
|
||||
|
||||
if [ -z "$pv_api" ]
|
||||
then
|
||||
echo "$warn (could not determine paraview major.minor version)"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
header=$(findFirstFile \
|
||||
"$ParaView_DIR/include/paraview-$pv_api/$header" \
|
||||
"$ParaView_DIR/include/paraview/$header"
|
||||
@ -150,11 +236,14 @@ have_pvplugin_support()
|
||||
else
|
||||
# No ParaView_DIR defined
|
||||
# - use location of 'paraview' to guess an equivalent ParaView_DIR
|
||||
# - assume we can use paraview-config
|
||||
# - assume paraview-config works, but might be removed too!
|
||||
|
||||
binDir="$(command -v paraview 2>/dev/null)"
|
||||
binDir="${binDir%/*}" # Eg, /usr/bin/paraview -> /usr/bin
|
||||
installDir="${binDir%/*}" # Eg, /usr/bin -> /usr
|
||||
pv_executable="$(command -v paraview 2>/dev/null)" || {
|
||||
echo "$warn (no paraview found?)"
|
||||
return 2
|
||||
}
|
||||
binDir="${pv_executable%/*}" # Eg, /usr/bin/paraview -> /usr/bin
|
||||
installDir="${binDir%/*}" # Eg, /usr/bin -> /usr
|
||||
|
||||
case "$installDir" in
|
||||
(/*) # An absolute path
|
||||
@ -162,6 +251,17 @@ have_pvplugin_support()
|
||||
;;
|
||||
esac
|
||||
|
||||
# Unless already known, get API value from `paraview --version` information
|
||||
if [ -z "$pv_api" ]
|
||||
then
|
||||
pv_api=$(get_pvapi "$("$pv_executable" --version)")
|
||||
if [ -z "$pv_api" ]
|
||||
then
|
||||
echo "$warn (could not determine paraview major.minor version)"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
header=$(findFirstFile \
|
||||
"$(paraview-config --include 2>/dev/null |sed -ne 's/^ *-I//p')/$header"\
|
||||
"${includeDir:+$includeDir/paraview-$pv_api/$header}" \
|
||||
@ -173,15 +273,20 @@ have_pvplugin_support()
|
||||
)
|
||||
fi
|
||||
|
||||
# ----------------------------------
|
||||
|
||||
# Header found?
|
||||
# Header
|
||||
[ -n "$header" ] || {
|
||||
[ -n "$warn" ] && echo "$warn (no header)"
|
||||
return 2
|
||||
}
|
||||
|
||||
# ----------------------------------
|
||||
|
||||
# OK
|
||||
# Use FOAM_LIBBIN/paraview-maj.min as default
|
||||
export HAVE_PVPLUGIN_SUPPORT=true
|
||||
export FOAM_PV_PLUGIN_LIBBIN="$targetDir"
|
||||
export FOAM_PV_PLUGIN_LIBBIN="${targetDir:-$FOAM_LIBBIN/paraview-$pv_api}"
|
||||
export PARAVIEW_API="$pv_api"
|
||||
export PARAVIEW_INC_DIR="${header%/*}" # Basename
|
||||
|
||||
@ -192,11 +297,15 @@ have_pvplugin_support()
|
||||
# Force reset of old variables
|
||||
no_paraview
|
||||
|
||||
# Testing
|
||||
if [ "$1" = "-test" ]
|
||||
then
|
||||
# Test/query
|
||||
case "$1" in
|
||||
-test)
|
||||
have_pvplugin_support
|
||||
echo_paraview
|
||||
fi
|
||||
;;
|
||||
-query)
|
||||
## query_paraview
|
||||
;;
|
||||
esac
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -17,15 +17,26 @@
|
||||
# General system helper functions
|
||||
#
|
||||
# Functions provided
|
||||
# isDarwin
|
||||
# isNone
|
||||
# isSystem
|
||||
# isAbsdir, hasAbsdir
|
||||
# isNone, isSystem, isAbsdir, hasAbsdir
|
||||
# isDarwin, isWindows
|
||||
# findFirstFile
|
||||
# thirdExtLib
|
||||
# findSystemInclude
|
||||
# findLibrary
|
||||
# findExtLib
|
||||
# versionCompare
|
||||
#
|
||||
# Variables provided
|
||||
# Internal variables used
|
||||
# extLibraries
|
||||
#
|
||||
# External variables used
|
||||
# WM_OSTYPE (is set for Windows)
|
||||
# WM_COMPILER_LIB_ARCH
|
||||
# DEB_TARGET_MULTIARCH
|
||||
#
|
||||
# Compatibility functions
|
||||
# thirdExtLib
|
||||
#
|
||||
# Compatibility variables
|
||||
# extLiba
|
||||
# extLibso
|
||||
#
|
||||
@ -36,28 +47,39 @@ then
|
||||
# Load once, but do not rely on this variable elsewhere
|
||||
WMAKE_SCRIPTS_SYSFUNCTIONS=loaded
|
||||
|
||||
# Static library extension. Default=.a
|
||||
extLiba=".a"
|
||||
|
||||
# Shared library extension. Default=.so
|
||||
case "$(uname -s 2>/dev/null)" in
|
||||
Darwin)
|
||||
extLibso=".dylib"
|
||||
;;
|
||||
*)
|
||||
extLibso=".so"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Debian multi-arch, ignore missing/bad dpkg-architecture.
|
||||
if [ -z "$DEB_TARGET_MULTIARCH" ]
|
||||
then
|
||||
DEB_TARGET_MULTIARCH=$(dpkg-architecture -qDEB_TARGET_MULTIARCH 2>/dev/null || true)
|
||||
fi
|
||||
|
||||
# True if OS is Darwin.
|
||||
# Uses libso extension to cache the value
|
||||
# (instead of calling 'uname -s' each time)
|
||||
isDarwin()
|
||||
{
|
||||
test "$extLibso" = ".dylib"
|
||||
test Darwin = "$(uname -s 2>/dev/null || true)"
|
||||
}
|
||||
|
||||
# True if target OS is Windows
|
||||
isWindows()
|
||||
{
|
||||
test MSwindows = "$WM_OSTYPE"
|
||||
}
|
||||
|
||||
# Static, dynamic library extensions
|
||||
extLibraries=".a .so"
|
||||
|
||||
extLiba=".a" # [compat] static library
|
||||
extLibso=".so" # [compat] dynamic library
|
||||
|
||||
if isDarwin
|
||||
then
|
||||
extLibraries=".a .dylib"
|
||||
extLibso=".dylib" # [compat] dynamic library
|
||||
elif isWindows
|
||||
then
|
||||
extLibraries=".a .dll .dll.a" # including cross-compiling
|
||||
fi
|
||||
|
||||
|
||||
# True if '$1' begins with '/'
|
||||
isAbsdir()
|
||||
@ -73,16 +95,16 @@ then
|
||||
}
|
||||
|
||||
|
||||
# True if '$1' is an empty string or matches "*-none".
|
||||
# True if '$1' is an empty string, "none" or ends in "-none"
|
||||
# Eg,
|
||||
# if isNone "$KAHIP_ARCH_PATH" ...
|
||||
# if isNone "$BOOST_ARCH_PATH" ...
|
||||
isNone()
|
||||
{
|
||||
test -z "$1" -o "${1##*-}" = none
|
||||
}
|
||||
|
||||
|
||||
# True if '$1' matches "*-system"
|
||||
# True if '$1' is "system" or ends in "-system"
|
||||
# Eg,
|
||||
# if isSystem "$BOOST_ARCH_PATH"
|
||||
isSystem()
|
||||
@ -91,22 +113,226 @@ then
|
||||
}
|
||||
|
||||
|
||||
# Check for the existence of any of the files
|
||||
# True if '$1' and '$2' have the same directory basename
|
||||
# Eg,
|
||||
# equalBaseName "/usr/include/scotch-int32" "scotch-int32"
|
||||
equalBaseName()
|
||||
{
|
||||
test "${1##*/}" = "${2##*/}"
|
||||
}
|
||||
|
||||
|
||||
# Simple output for -query
|
||||
# $1 = software
|
||||
# $2 = setting
|
||||
_process_query()
|
||||
{
|
||||
if isNone "$2"
|
||||
then
|
||||
echo "$1=none"
|
||||
elif isAbsdir "$2" ## not hasAbsdir
|
||||
then
|
||||
echo "$1=${2##*/}"
|
||||
elif isSystem "$2"
|
||||
then
|
||||
echo "$1=system"
|
||||
else
|
||||
echo "$1=unknown"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Return system prefix (/usr, /usr/local, ...) based on hint provided
|
||||
# Eg,
|
||||
# sysPrefix "/usr/local/include/fftw3.h" -> "/usr/local"
|
||||
#
|
||||
# Without a hint, echoes "/usr"
|
||||
sysPrefix()
|
||||
{
|
||||
case "$1" in
|
||||
/usr/local/*)
|
||||
echo "/usr/local"
|
||||
;;
|
||||
*)
|
||||
echo "/usr"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
# Check existence of any of the files
|
||||
# On success, echoes the file found and returns 0, otherwise returns 2
|
||||
findFirstFile()
|
||||
{
|
||||
local file
|
||||
for file
|
||||
do
|
||||
if [ -f "$file" -a -r "$file" ]
|
||||
if [ -f "$file" ] && [ -r "$file" ]
|
||||
then
|
||||
echo "$file"
|
||||
echo "$file" # Found
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 2
|
||||
}
|
||||
|
||||
# Check system /usr/local/include /usr/include paths
|
||||
#
|
||||
# On success, echoes the resolved file and returns 0, otherwise returns 2
|
||||
#
|
||||
# Specify -name=incName to search for
|
||||
#
|
||||
findSystemInclude()
|
||||
{
|
||||
local searchName
|
||||
|
||||
case "$1" in
|
||||
-name=*)
|
||||
searchName="${1#*=}"
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -z "$searchName" ]
|
||||
then
|
||||
return 1
|
||||
fi
|
||||
|
||||
findFirstFile \
|
||||
"/usr/local/include/$searchName" \
|
||||
"/usr/include/$searchName" \
|
||||
;
|
||||
}
|
||||
|
||||
# Check existence of library with ending '.a', '.so' ...
|
||||
#
|
||||
# On success, echoes the resolved file and returns 0, otherwise returns 2
|
||||
#
|
||||
# This function has two modes of operation.
|
||||
#
|
||||
# 1) Automated search.
|
||||
# Specify -prefix=dirName -name=libName, optionally -local=subdirName
|
||||
# and search for (lib, lib64, lib/x86_64..) etc.
|
||||
#
|
||||
# 2) Directed search.
|
||||
# specify the fully qualified names to search on the parameter list
|
||||
#
|
||||
findLibrary()
|
||||
{
|
||||
local prefixDir localDir searchDir searchName
|
||||
local file ext
|
||||
|
||||
searchDir=true
|
||||
|
||||
while [ "$searchDir" = true ] && [ "$#" -gt 0 ]
|
||||
do
|
||||
case "$1" in
|
||||
-prefix=*)
|
||||
prefixDir="${1#*=}"
|
||||
shift
|
||||
;;
|
||||
|
||||
-local=*)
|
||||
# Prefix with directory separator
|
||||
localDir="/${1#*=}"
|
||||
shift
|
||||
;;
|
||||
|
||||
-name=*)
|
||||
searchName="${1#*=}"
|
||||
shift
|
||||
;;
|
||||
|
||||
(*)
|
||||
unset searchDir
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -n "$searchName" ]
|
||||
then
|
||||
# Automated search (eg, lib/ lib64/, lib/x86_64-linux-gnu)
|
||||
# but also handle possible local versions (eg, lib/scotch-int32)
|
||||
|
||||
: "${prefixDir:=/usr}" # A reasonable default
|
||||
[ -d "$prefixDir" ] || return 2
|
||||
|
||||
# Local and regular search paths
|
||||
set -- \
|
||||
"lib${localDir}" \
|
||||
"${WM_COMPILER_LIB_ARCH:+lib${WM_COMPILER_LIB_ARCH}${localDir}}" \
|
||||
"${DEB_TARGET_MULTIARCH:+lib/${DEB_TARGET_MULTIARCH}${localDir}}" \
|
||||
"lib" \
|
||||
"${WM_COMPILER_LIB_ARCH:+lib${WM_COMPILER_LIB_ARCH}}" \
|
||||
"${DEB_TARGET_MULTIARCH:+lib/${DEB_TARGET_MULTIARCH}}" \
|
||||
;
|
||||
|
||||
# Ignore empty local search path ("/")
|
||||
[ "${#localDir}" -gt 1 ] || shift 3
|
||||
|
||||
## echo "search: $# $@" 1>&2
|
||||
|
||||
for searchDir in "$@"
|
||||
do
|
||||
[ -n "$searchDir" ] || continue
|
||||
for ext in '' $extLibraries
|
||||
do
|
||||
file="$prefixDir/$searchDir/$searchName$ext"
|
||||
if [ -f "$file" ] && [ -r "$file" ]
|
||||
then
|
||||
echo "$file" # Found
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
else
|
||||
# Directed search
|
||||
|
||||
for file
|
||||
do
|
||||
[ -n "$file" ] || continue
|
||||
for ext in '' $extLibraries
|
||||
do
|
||||
if [ -f "$file$ext" ] && [ -r "$file$ext" ]
|
||||
then
|
||||
echo "$file$ext" # Found
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
done
|
||||
fi
|
||||
|
||||
return 2
|
||||
}
|
||||
|
||||
|
||||
# Check existence of library in FOAM_EXT_LIBBIN, but conditional
|
||||
# on FOAM_EXT_LIBBIN being located in the ThirdParty directory
|
||||
#
|
||||
# On success, echoes the resolved file and returns 0, otherwise returns 2
|
||||
findExtLib()
|
||||
{
|
||||
local file
|
||||
|
||||
if [ -n "$FOAM_EXT_LIBBIN" ] && \
|
||||
[ -n "$WM_THIRD_PARTY_DIR" ] && \
|
||||
[ "${FOAM_EXT_LIBBIN#$WM_THIRD_PARTY_DIR}" != "$FOAM_EXT_LIBBIN" ]
|
||||
then
|
||||
for file
|
||||
do
|
||||
if file="$(findLibrary "$FOAM_EXT_LIBBIN/$file")"
|
||||
then
|
||||
echo "$file"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
return 2
|
||||
}
|
||||
|
||||
|
||||
# [compat]
|
||||
# Check for existence of file in FOAM_EXT_LIBBIN,
|
||||
# but not if either file or FOAM_EXT_LIBBIN are empty or
|
||||
# if the FOAM_EXT_LIBBIN is not located in the ThirdParty directory
|
||||
|
||||
@ -2,18 +2,23 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation
|
||||
# \\/ M anipulation | Copyright (C) 2018 OpenCFD Ltd.
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2015-2016 OpenFOAM Foundation
|
||||
# Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, licensed under GNU General Public License
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# wmakeFunctions
|
||||
#
|
||||
# Description
|
||||
# Functions to check wmake environment and find .dep and .o files
|
||||
# Support functions for wmake infrastructure.
|
||||
# For example, check environment, find .dep and .o files, various
|
||||
# wrappers when making libraries.
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Ensure these variables are always defined
|
||||
@ -28,17 +33,18 @@ then
|
||||
fi
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Check environment variables
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Check environment variables
|
||||
checkEnv()
|
||||
{
|
||||
local check failed
|
||||
|
||||
for check in WM_PROJECT_DIR WM_OPTIONS WM_DIR
|
||||
# Default for WM_DIR already provided above
|
||||
|
||||
for check in WM_PROJECT_DIR WM_OPTIONS
|
||||
do
|
||||
eval test "\$$check" || failed="$failed $check"
|
||||
eval test -n "\$$check" || failed="$failed $check"
|
||||
done
|
||||
|
||||
[ -z "$failed" ] || {
|
||||
@ -49,11 +55,8 @@ checkEnv()
|
||||
}
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Search up directories tree for the Make sub-directory
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Return the absolute path for a directory or a file's parent directory
|
||||
# Return the absolute (physical) path for a directory or
|
||||
# for a file's parent directory
|
||||
# expandPath dirName
|
||||
# expandPath fileName
|
||||
#
|
||||
@ -66,12 +69,13 @@ expandPath()
|
||||
(cd "$1" && pwd -P)
|
||||
elif [ -n "$1" ]
|
||||
then
|
||||
(cd $(dirname "$1") && pwd -P)
|
||||
(cd "$(dirname "$1")" && pwd -P)
|
||||
else
|
||||
pwd -P
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Find the target directory, which contains a Make/ directory
|
||||
# search upwards in its parent directories, but stopping
|
||||
# when it hits the project root, home, or the file-system root
|
||||
@ -85,15 +89,15 @@ expandPath()
|
||||
# - WM_PROJECT_DIR, HOME
|
||||
findTarget()
|
||||
{
|
||||
local project=$(expandPath $WM_PROJECT_DIR)
|
||||
local home=$(expandPath $HOME)
|
||||
local project=$(expandPath "$WM_PROJECT_DIR")
|
||||
local home=$(expandPath "$HOME")
|
||||
local reldir="${1:-.}"
|
||||
local absdir=$(expandPath $reldir)
|
||||
local absdir=$(expandPath "$reldir")
|
||||
|
||||
while [ -n "$absdir" ]
|
||||
do
|
||||
case "$absdir" in
|
||||
($project | $home | /)
|
||||
("$project" | "$home" | /)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
@ -109,7 +113,7 @@ findTarget()
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Error: no Make directory for $(expandPath $1)" 1>&2
|
||||
echo "Error: no Make directory for $(expandPath "$1")" 1>&2
|
||||
echo 1>&2
|
||||
return 1
|
||||
}
|
||||
@ -129,14 +133,14 @@ cdSource()
|
||||
echo " Searching up directories tree for Make directory" 1>&2
|
||||
|
||||
dir=$(findTarget .) || exit 1 # Fatal
|
||||
cd $dir 2>/dev/null || {
|
||||
cd "$dir" 2>/dev/null || {
|
||||
echo "$Script error: could not change to directory '$dir'" 1>&2
|
||||
exit 1
|
||||
}
|
||||
unset targetType
|
||||
fi
|
||||
|
||||
[ -r $MakeDir/files ] || {
|
||||
[ -r "$MakeDir"/files ] || {
|
||||
echo "$Script error: file '$MakeDir/files' does not exist in $PWD" 1>&2
|
||||
exit 1
|
||||
}
|
||||
@ -154,23 +158,34 @@ cdSource()
|
||||
# - WM_PROJECT_DIR, WM_OPTIONS
|
||||
findObjectDir()
|
||||
{
|
||||
local project=$(expandPath $WM_PROJECT_DIR)
|
||||
local absdir=$(expandPath ${1:-.})
|
||||
local objectsDir
|
||||
local project="$(expandPath "$WM_PROJECT_DIR")"
|
||||
local absdir="$(expandPath "${1:-.}")"
|
||||
local appDir relativeDir objectsDir
|
||||
|
||||
case "$absdir" in
|
||||
("$project"/*)
|
||||
local buildPath=$WM_PROJECT_DIR/build/${WM_OPTIONS}
|
||||
objectsDir=$buildPath$(echo $absdir | sed s%$project%% )
|
||||
;;
|
||||
(*)
|
||||
local path=$absdir
|
||||
local appDir=.
|
||||
[ -d Make ] || appDir=$(findTarget .) || exit 1 # Fatal
|
||||
absdir=$(expandPath $appDir/.)
|
||||
objectsDir=$appDir/Make/${WM_OPTIONS}$(echo $path | sed s%$absdir%% )
|
||||
;;
|
||||
esac
|
||||
# Treat project/ builds as out-of-source
|
||||
relativeDir="${absdir#${project}/}"
|
||||
if [ "$relativeDir" != "$absdir" ]
|
||||
then
|
||||
[ -w "$WM_PROJECT_DIR" ] && \
|
||||
objectsDir="${WM_PROJECT_DIR}/build/${WM_OPTIONS}/${relativeDir}"
|
||||
fi
|
||||
|
||||
# Default (local) build directory
|
||||
if [ -z "$objectsDir" ]
|
||||
then
|
||||
if [ -d "$absdir/Make" ]
|
||||
then
|
||||
objectsDir="${absdir}/Make/${WM_OPTIONS}"
|
||||
else
|
||||
relativeDir="$absdir"
|
||||
appDir=.
|
||||
[ -d Make ] || appDir=$(findTarget .) || exit 1 # Fatal
|
||||
absdir=$(expandPath "$appDir"/.)
|
||||
|
||||
relativeDir="${relativeDir#${absdir}}"
|
||||
objectsDir="${appDir}/Make/${WM_OPTIONS}${relativeDir}"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "$objectsDir"
|
||||
}
|
||||
@ -187,14 +202,147 @@ findObjectDir()
|
||||
# - WM_PROJECT_DIR, WM_OPTIONS
|
||||
removeObjectDir()
|
||||
{
|
||||
local objectsDir=$(findObjectDir ${1:-.})
|
||||
local objectsDir="$(findObjectDir "${1:-.}")"
|
||||
if [ -d "$objectsDir" ]
|
||||
then
|
||||
rm -rf "$objectsDir" > /dev/null 2>&1
|
||||
rm -rf "$objectsDir" 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Save build/configure parameter information (dependency) into sentinel file
|
||||
#
|
||||
# 1 - sentinelFile
|
||||
# 2... build/configure parameters
|
||||
#
|
||||
storeDependency()
|
||||
{
|
||||
local sentinel="$1"
|
||||
local depend
|
||||
shift
|
||||
|
||||
if [ -n "$sentinel" ]
|
||||
then
|
||||
mkdir -p "$(dirname "$sentinel")"
|
||||
|
||||
echo '# Build/configure parameters' >| "$sentinel"
|
||||
|
||||
for depend
|
||||
do
|
||||
echo "-- $depend"
|
||||
done >> "$sentinel"
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
# Check sentinel file(s) to handle changed build/configure parameters
|
||||
# such as paraview / vtk version changes
|
||||
#
|
||||
# 1 - sourceDir
|
||||
# 2... build/configure parameters
|
||||
#
|
||||
# The additional test for "CMakeCache.txt" helps for cmake projects and
|
||||
# has no adverse affect for others
|
||||
#
|
||||
sameDependency()
|
||||
{
|
||||
local sourceDir="$1"
|
||||
shift
|
||||
local objectsDir
|
||||
local compare=0
|
||||
|
||||
# Where generated files are stored
|
||||
objectsDir=$(findObjectDir "$sourceDir") || exit 1 # Fatal
|
||||
local sentinel="$objectsDir/ConfigParameters"
|
||||
|
||||
if [ -f "$sentinel" ]
|
||||
then
|
||||
# Create an .update version for comparison
|
||||
storeDependency "${sentinel}.update" $@
|
||||
cmp "${sentinel}" "${sentinel}.update" >/dev/null 2>&1
|
||||
compare=$?
|
||||
|
||||
if [ "$compare" -ne 0 ]
|
||||
then
|
||||
echo "build/configure parameters changed between builds" 1>&2
|
||||
## cat "${sentinel}.update" 1>&2
|
||||
fi
|
||||
|
||||
else
|
||||
# No sentinel file: First time, or failed compilation?
|
||||
if [ -f "$objectsDir/CMakeCache.txt" ]
|
||||
then
|
||||
echo "previous build was incomplete" 1>&2
|
||||
compare=1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "$sentinel"
|
||||
return "$compare"
|
||||
}
|
||||
|
||||
|
||||
# Build a mpi-versioned library (targetType)
|
||||
# - use sentinel file(s) to handle paraview version changes
|
||||
# compile into qualified directory
|
||||
# use sentinel file(s) to handle version changes
|
||||
# 1 - libName
|
||||
# 2... build/configure information
|
||||
#
|
||||
# Global variables used:
|
||||
# - WM_OPTIONS, WM_MPLIB, FOAM_MPI
|
||||
#
|
||||
# Requires that WM_MPLIB contain an "MPI" string
|
||||
wmakeLibMpi()
|
||||
{
|
||||
local libName="$1"
|
||||
shift
|
||||
|
||||
case "$WM_MPLIB" in (*MPI* | *mpi*)
|
||||
(
|
||||
WM_OPTIONS="$WM_OPTIONS$WM_MPLIB"
|
||||
|
||||
# Where generated files are stored
|
||||
objectsDir="$(findObjectDir "$libName")" || exit 1 # Fatal
|
||||
|
||||
# Something changed
|
||||
sentinel=$(sameDependency "$libName" "MPLIB=$WM_MPLIB" "MPI=$FOAM_MPI" $@) || \
|
||||
wclean "$libName"
|
||||
|
||||
echo "wmake $targetType $libName (mpi=$WM_MPLIB)"
|
||||
wmake $targetType "$libName" && \
|
||||
storeDependency "$sentinel" "MPLIB=$WM_MPLIB" "MPI=$FOAM_MPI" $@
|
||||
)
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
# Clean an mpi-versioned library
|
||||
#
|
||||
# Global variables used:
|
||||
# - WM_OPTIONS, WM_MPLIB
|
||||
#
|
||||
# Requires that WM_MPLIB contain an "MPI" string
|
||||
wcleanLibMpi()
|
||||
{
|
||||
case "$WM_MPLIB" in (*MPI* | *mpi*)
|
||||
(
|
||||
WM_OPTIONS="$WM_OPTIONS$WM_MPLIB"
|
||||
|
||||
for libName
|
||||
do
|
||||
wclean "$libName"
|
||||
done
|
||||
)
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# depToSource depFile
|
||||
#
|
||||
# Output:
|
||||
@ -207,7 +355,7 @@ if [ -n "$BASH_VERSION" ]
|
||||
then
|
||||
depToSource()
|
||||
{
|
||||
local sourceFile=${1%.dep}
|
||||
local sourceFile="${1%.dep}"
|
||||
sourceFile="${sourceFile/build\/${WM_OPTIONS}\//}"
|
||||
sourceFile="${sourceFile/build\/${WM_OPTIONS}${WM_MPLIB}\//}"
|
||||
sourceFile="${sourceFile/Make\/${WM_OPTIONS}\//}"
|
||||
@ -218,13 +366,11 @@ then
|
||||
else
|
||||
depToSource()
|
||||
{
|
||||
local sourceFile=$(echo ${1%.dep} | \
|
||||
sed -e s%build/${WM_OPTIONS}/%% \
|
||||
-e s%build/${WM_OPTIONS}${WM_MPLIB}/%% \
|
||||
-e s%Make/${WM_OPTIONS}/%% \
|
||||
-e s%Make/${WM_OPTIONS}${WM_MPLIB}/%% )
|
||||
|
||||
echo "$sourceFile"
|
||||
echo "${1%.dep}" | sed \
|
||||
-e "s%build/${WM_OPTIONS}/%%" \
|
||||
-e "s%build/${WM_OPTIONS}${WM_MPLIB}/%%" \
|
||||
-e "s%Make/${WM_OPTIONS}/%%" \
|
||||
-e "s%Make/${WM_OPTIONS}${WM_MPLIB}/%%"
|
||||
}
|
||||
fi
|
||||
|
||||
|
||||
@ -1,12 +1,39 @@
|
||||
#!/bin/sh
|
||||
cd "${0%/*}" || exit 1 # Run from this directory
|
||||
cd "${0%/*}" || exit # This directory (/path/project/wmake/src)
|
||||
|
||||
if [ -z "$WM_DIR" ] # Require WM_DIR
|
||||
if [ -z "$WM_DIR" ] # Require WM_DIR (/path/project/wmake)
|
||||
then
|
||||
WM_DIR="$(\cd $(dirname $0)/.. && \pwd -L)"
|
||||
WM_DIR="$(dirname "$(pwd -L)")"
|
||||
export WM_DIR
|
||||
fi
|
||||
|
||||
make # Compile tools for wmake
|
||||
if [ -z "$WM_PROJECT_DIR" ] # Expect WM_PROJECT_DIR (/path/project)
|
||||
then
|
||||
echo "Warning (${0##*/}) : No WM_PROJECT_DIR set" 1>&2
|
||||
WM_PROJECT_DIR="${WM_DIR%/*}"
|
||||
export WM_PROJECT_DIR
|
||||
fi
|
||||
|
||||
if [ -z "$WM_ARCH" ] || [ -z "$WM_COMPILER" ]
|
||||
then
|
||||
echo "Error (${0##*/}) : No WM_ARCH or WM_COMPILER set"
|
||||
echo " Check your OpenFOAM environment and installation"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$WM_COMPILER" in
|
||||
Mingw*)
|
||||
# Host wmake toolchain with system gcc (when cross-compiling)
|
||||
make \
|
||||
WM_COMPILER=Gcc WM_COMPILER_TYPE=system \
|
||||
WMAKE_BIN="${WM_PROJECT_DIR}/platforms/tools/${WM_ARCH}${WM_COMPILER}" \
|
||||
"$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
# Regular wmake toolchain
|
||||
make "$@"
|
||||
;;
|
||||
esac
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -2,9 +2,12 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
# Copyright (C) 2017-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM.
|
||||
#
|
||||
@ -30,13 +33,13 @@
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# The Makefile use a POSIX shell
|
||||
# Use POSIX shell
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
SHELL = /bin/sh
|
||||
SHELL = /bin/sh
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Unset suffices list (suffix rules are not used)
|
||||
# No default suffix rules used
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
.SUFFIXES:
|
||||
@ -52,41 +55,44 @@ WM_COMPILE_OPTION = Opt
|
||||
GENERAL_RULES = $(WM_DIR)/rules/General
|
||||
include $(GENERAL_RULES)/general
|
||||
|
||||
archHost := $(WM_ARCH)$(WM_COMPILER)
|
||||
archTarget := $(shell basename $(WMAKE_BIN))
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Targets
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
.PHONY: all clean
|
||||
.PHONY: all clean message old
|
||||
|
||||
all: $(WMAKE_BIN)/dirToString $(WMAKE_BIN)/wmkdep $(WMAKE_BIN)/wmkdepend
|
||||
@echo built wmake-bin for $(WM_ARCH)$(WM_COMPILER)
|
||||
all: $(WMAKE_BIN)/wmkdepend message
|
||||
|
||||
# Flex-based processing
|
||||
old: $(WMAKE_BIN)/wmkdep
|
||||
|
||||
message:
|
||||
@echo "built wmake-bin ($(archTarget))"
|
||||
|
||||
clean:
|
||||
@echo clean wmake-bin for $(WM_ARCH)$(WM_COMPILER)
|
||||
@rm -rf $(WMAKE_BIN) 2>/dev/null
|
||||
@echo "clean wmake-bin ($(archTarget))"
|
||||
@rm -rf $(WMAKE_BIN)
|
||||
@rmdir $(shell dirname $(WMAKE_BIN)) 2>/dev/null || true
|
||||
|
||||
$(WMAKE_BIN)/dirToString: dirToString.c
|
||||
@mkdir -p $(WMAKE_BIN)
|
||||
$(call QUIET_MESSAGE,compile,$(<F))
|
||||
$E $(cc) $(cFLAGS) $(<F) -o $@
|
||||
|
||||
$(WMAKE_BIN)/wmkdep: wmkdep.l
|
||||
@mkdir -p $(WMAKE_BIN)
|
||||
$(call QUIET_MESSAGE,flex,$(<F))
|
||||
$E flex -o $@.c $(<F) && $(cc) $(cFLAGS) $@.c -o $@
|
||||
@rm -f $@.c 2>/dev/null
|
||||
@rm -f $@.c
|
||||
|
||||
$(WMAKE_BIN)/wmkdepend: wmkdepend.cpp
|
||||
@mkdir -p $(WMAKE_BIN)
|
||||
$(call QUIET_MESSAGE,wmkdepend,$(<F))
|
||||
$E $(CC) $(c++FLAGS) $(c++LESSWARN) $(<F) -o $@
|
||||
|
||||
# $(WMAKE_BIN)/wmkdepend: wmkdepend.rl
|
||||
# @mkdir -p $(WMAKE_BIN)
|
||||
# $(call QUIET_MESSAGE,ragel,$(<F))
|
||||
# $E ragel -G2 -o $@.cpp $(<F) && $(CC) $(c++FLAGS) $(c++LESSWARN) $@.cpp -o $@
|
||||
# @rm -f $@.cpp 2>/dev/null
|
||||
#$(WMAKE_BIN)/wmkdepend: wmkdepend.rl
|
||||
# @mkdir -p $(WMAKE_BIN)
|
||||
# $(call QUIET_MESSAGE,ragel,$(<F))
|
||||
# $E ragel -G2 -o $@.cpp $(<F) && $(CC) $(c++FLAGS) $@.cpp -o $@
|
||||
# @rm -f $@.cpp
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -1,113 +0,0 @@
|
||||
/*----------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Application
|
||||
dirToString
|
||||
|
||||
Description
|
||||
Converts a directory path into a camelCase string.
|
||||
e.g. dir1/dir2/dir3 becomes dir1Dir2Dir3
|
||||
|
||||
Usage
|
||||
echo dirName | dirToString
|
||||
|
||||
e.g.
|
||||
using sh
|
||||
baseDirName=$(echo $dir | $bin/dirToString -strip)
|
||||
|
||||
using csh
|
||||
set baseDirName=`echo $dir | $bin/dirToString -strip`
|
||||
|
||||
\*----------------------------------------------------------------------------*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
/* The executable name (for messages), without requiring access to argv[] */
|
||||
#define EXENAME "dirToString"
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
int c;
|
||||
|
||||
if (argc > 1)
|
||||
{
|
||||
if (!strncmp(argv[1], "-h", 2))
|
||||
{
|
||||
/* Option: -h, -help */
|
||||
|
||||
fputs
|
||||
(
|
||||
"\nUsage: " EXENAME
|
||||
" [-strip]\n\n"
|
||||
" -strip ignore leading [./] characters.\n\n"
|
||||
"Converts a directory path into a camelCase string\n\n",
|
||||
stderr
|
||||
);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!strcmp(argv[1], "-s") || !strcmp(argv[1], "-strip"))
|
||||
{
|
||||
/* Option: -s, -strip */
|
||||
|
||||
while ((c=getchar()) != EOF && (c == '.' || c == '/'))
|
||||
{
|
||||
/* nop */
|
||||
}
|
||||
|
||||
if (c == EOF)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
putchar(c);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int nextUpper = 0;
|
||||
while ((c = getchar()) != EOF)
|
||||
{
|
||||
if (c == '/')
|
||||
{
|
||||
nextUpper = 1;
|
||||
}
|
||||
else if (nextUpper)
|
||||
{
|
||||
putchar(toupper(c));
|
||||
nextUpper = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
putchar(c);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
503
wmake/wmake
503
wmake/wmake
@ -3,9 +3,12 @@
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
# \\/ M anipulation | Copyright (C) 2017-2018 OpenCFD Ltd.
|
||||
#-------------------------------------------------------------------------------
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
# Copyright (C) 2017-2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM.
|
||||
#
|
||||
@ -26,90 +29,144 @@
|
||||
# wmake
|
||||
#
|
||||
# Description
|
||||
# General, easy to use make system for multi-platform development
|
||||
# with support for local and network parallel compilation.
|
||||
# General, wrapped make system for multi-platform development.
|
||||
#
|
||||
# This updated wmake supports out-of-tree object and dependency files to
|
||||
# avoid the clutter which accumulates in the source-tree with the original
|
||||
# wmake system. Now when building the OpenFOAM package both the object and
|
||||
# dependency files are now located in a tree with the same structure as the
|
||||
# source tree but in the platforms/$WM_OPTIONS sub-directory of
|
||||
# $WM_PROJECT_DIR.
|
||||
# Intermediate object and dependency files retain the tree structure
|
||||
# of the original source files, with its location depending on the
|
||||
# build context.
|
||||
#
|
||||
# When building user libraries and applications which are not located in the
|
||||
# OpenFOAM source-tree the object and dependency files are located in a tree
|
||||
# with the same structure as the source tree but in the Make/$WM_OPTIONS
|
||||
# sub-directory.
|
||||
# 1. Building within the OpenFOAM project:
|
||||
# The tree is located under $WM_PROJECT_DIR/build/$WM_OPTIONS/
|
||||
#
|
||||
# The disadvantage of the out-of-tree compilation is that the dependency
|
||||
# files are harder to find but are sometimes useful to study which header
|
||||
# files are included. For those who need access to the dependency files the
|
||||
# new wdep script is provided to locate them. See the wdep script header or
|
||||
# run:
|
||||
# wdep -h
|
||||
# 2. Building applications or libraries outside the OpenFOAM project:
|
||||
# The tree is located under its local Make/$WM_OPTIONS/
|
||||
#
|
||||
# The `wdep` script can be used to locate the dependency file
|
||||
# corresponding to a given source file.
|
||||
#
|
||||
# When `wmake -all` is used, the following rules are applied:
|
||||
# 1. If `Allwmake.override` exists, use it.
|
||||
# 2. (OR) If `Allwmake` exists, use it.
|
||||
# 3. (OR) descend into each sub-directory and repeat.
|
||||
#
|
||||
# See also
|
||||
# wmakeLnInclude, wmakeLnIncludeAll, wmakeCollect, wdep, wrmdep, wrmo,
|
||||
# wclean, wcleanPlatform, wcleanLnIncludeAll
|
||||
# wclean, wcleanLnIncludeAll
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
Script="${0##*/}" # Use 'Script' for error messages in wmakeFunctions
|
||||
. "${0%/*}/scripts/wmakeFunctions" # Source wmake functions
|
||||
Script="${0##*/}" # Need 'Script' for wmakeFunctions messages
|
||||
scriptsDir="${0%/*}"/scripts # wmake/scripts directory
|
||||
. "$scriptsDir"/wmakeFunctions # Source wmake functions
|
||||
|
||||
usage() {
|
||||
exec 1>&2
|
||||
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
|
||||
cat<<USAGE
|
||||
printHelp() {
|
||||
cat<<HELP_HEAD
|
||||
|
||||
Usage: $Script [OPTION] [dir]
|
||||
$Script [OPTION] target [dir [MakeDir]]
|
||||
|
||||
options:
|
||||
-s | -silent Quiet mode (does not echo commands)
|
||||
-s | -silent Silent mode (do not echo commands)
|
||||
-a | -all wmake all sub-directories, running Allwmake if present
|
||||
-q | -queue wmakeCollect all sub-directories, running Allwmake if present
|
||||
-k or -non-stop Compile without stopping when errors occur
|
||||
-j Compile using all local cores/hyperthreads
|
||||
-jN or -j N Compile using N cores/hyperthreads
|
||||
-no-scheduler Compile without wmakeScheduler
|
||||
-update Update lnInclude directories, dep files, remove deprecated
|
||||
files and directories
|
||||
-h | -help Print the usage
|
||||
-q | -queue wmakeCollect sub-directories, running Allwmake if present
|
||||
-k | -keep-going Keep going even when errors occur (-non-stop)
|
||||
-j | -jN | -j N Compile using all or specified N cores/hyperthreads
|
||||
-update Update lnInclude, dep files, remove deprecated files/dirs
|
||||
HELP_HEAD
|
||||
|
||||
if [ -n "$1" ]
|
||||
then
|
||||
cat<<HELP_FULL
|
||||
-debug Define c++DBUG='-DFULLDEBUG -g -O0' as override
|
||||
-module-prefix=PATH Specify FOAM_MODULE_PREFIX as absolute/relative path
|
||||
-module-prefix=TYPE Specify FOAM_MODULE_PREFIX as predefined type
|
||||
(u,user | g,group | o,openfoam)
|
||||
-no-scheduler Disable scheduled parallel compilation
|
||||
-show-api Print api value (from Make rules)
|
||||
-show-ext-so Print shared library extension (with '.' separator)
|
||||
-show-c Print C compiler value
|
||||
-show-cflags Print C compiler flags
|
||||
-show-cxx Print C++ compiler value
|
||||
-show-cxxflags Print C++ compiler flags
|
||||
-show-cflags-arch The C compiler arch flag (eg, -m64 etc)
|
||||
-show-cxxflags-arch The C++ compiler arch flag (eg, -m64 etc)
|
||||
-show-compile-c Same as '-show-c -show-cflags'
|
||||
-show-compile-cxx Same as '-show-cxx -show-cxxflags'
|
||||
-show-path-c Print path to C compiler
|
||||
-show-path-cxx Print path to C++ compiler
|
||||
HELP_FULL
|
||||
fi
|
||||
|
||||
A general, easy-to-use make system for multi-platform development
|
||||
with support for local and network parallel compilation.
|
||||
cat<<TAIL_OPTIONS
|
||||
-pwd Print root directory containing a Make/ directory
|
||||
-version | --version Print version (same as -show-api)
|
||||
-help Display short help and exit
|
||||
-help-full Display full help and exit
|
||||
TAIL_OPTIONS
|
||||
|
||||
The 'target' is a Makefile target:
|
||||
e.g., platforms/linux64GccDPOpt/.../fvMesh.o
|
||||
cat<<HELP_TAIL_COMMON
|
||||
|
||||
or a special target:
|
||||
all wmake all sub-directories, running Allwmake if present
|
||||
queue wmakeCollect all sub-directories, running Allwmake if present
|
||||
General, wrapped make system for multi-platform development.
|
||||
HELP_TAIL_COMMON
|
||||
|
||||
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
|
||||
exe Compile statically linked executable
|
||||
lib Compile statically linked archive lib (.a)
|
||||
libo Compile statically linked lib (.o)
|
||||
libso Compile dynamically linked lib (.so)
|
||||
dep Compile lnInclude and dependencies only
|
||||
updatedep Compile dependencies only (in case of broken dependencies)
|
||||
dep Create lnInclude and dependencies only
|
||||
updatedep Create dependencies only (in case of broken dependencies)
|
||||
objects Compile but not link
|
||||
|
||||
USAGE
|
||||
Environment
|
||||
FOAM_MODULE_PREFIX
|
||||
|
||||
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
|
||||
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
|
||||
}
|
||||
|
||||
# Default make is the "make" in the path
|
||||
make="make"
|
||||
|
||||
# Print compiler/system information (serial only)
|
||||
printInfo() { make --no-print-directory -f "$WM_DIR"/makefiles/info "$@"; }
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Set nCores to the number of cores on the machine
|
||||
nCores=0
|
||||
allCores()
|
||||
{
|
||||
nCores=$(getconf _NPROCESSORS_ONLN 2>/dev/null) || nCores=1
|
||||
: ${nCores:=1}
|
||||
echo "${nCores:-1}"
|
||||
}
|
||||
|
||||
|
||||
@ -118,47 +175,111 @@ allCores()
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Default to compiling the local target only
|
||||
unset all update
|
||||
unset optAll optUpdate optDebug optQuiet optShow optPwd
|
||||
|
||||
# Consistency with inherited values
|
||||
if [ "$WM_QUIET" = true ]
|
||||
then optQuiet=true
|
||||
fi
|
||||
|
||||
while [ "$#" -gt 0 ]
|
||||
do
|
||||
case "$1" in
|
||||
# Print help
|
||||
-h | -help*)
|
||||
usage
|
||||
-help-f*) # Full help
|
||||
printHelp -full
|
||||
;;
|
||||
-s | -silent)
|
||||
-h | -help*) # Short help
|
||||
printHelp
|
||||
;;
|
||||
|
||||
-s | -silent | -quiet)
|
||||
optQuiet=true
|
||||
export WM_QUIET=true
|
||||
;;
|
||||
-debug)
|
||||
echo "Ignore option: -debug" 1>&2
|
||||
;;
|
||||
|
||||
-module-prefix=*)
|
||||
optPrefix="${1#*=}"
|
||||
case "$optPrefix" in
|
||||
# Prefix: user
|
||||
(u | user)
|
||||
export FOAM_MODULE_PREFIX="${FOAM_USER_LIBBIN%/*}"
|
||||
;;
|
||||
|
||||
# Prefix: group
|
||||
(g | group)
|
||||
export FOAM_MODULE_PREFIX="${FOAM_SITE_LIBBIN%/*}"
|
||||
;;
|
||||
|
||||
# Prefix: openfoam (other)
|
||||
(o | openfoam)
|
||||
export FOAM_MODULE_PREFIX="${FOAM_LIBBIN%/*}"
|
||||
;;
|
||||
|
||||
# Prefix: custom (absolute or relative)
|
||||
(*)
|
||||
export FOAM_MODULE_PREFIX="$optPrefix"
|
||||
: "${FOAM_MODULE_PREFIX:=/usr/local}" # Default (autoconf)
|
||||
|
||||
# Require absolute path
|
||||
[ "${FOAM_MODULE_PREFIX#/}" != "${FOAM_MODULE_PREFIX}" ] || \
|
||||
FOAM_MODULE_PREFIX="${PWD}/${FOAM_MODULE_PREFIX}"
|
||||
;;
|
||||
esac
|
||||
|
||||
unset FOAM_MODULE_APPBIN FOAM_MODULE_LIBBIN
|
||||
echo "Module prefix = $FOAM_MODULE_PREFIX" 1>&2
|
||||
;;
|
||||
|
||||
-show-api | -show-ext-so | \
|
||||
-show-compile-c | -show-c | -show-cflags | -show-cflags-arch | \
|
||||
-show-compile-cxx | -show-cxx | -show-cxxflags | -show-cxxflags-arch )
|
||||
printInfo "${1#-show-}"
|
||||
optShow=true
|
||||
;;
|
||||
-show-path-c | -show-path-cxx )
|
||||
command -v $(printInfo "${1#-show-path-}")
|
||||
optShow=true
|
||||
;;
|
||||
-a | -all | all)
|
||||
all=all
|
||||
optAll=all
|
||||
;;
|
||||
-q | -queue | queue)
|
||||
all=queue
|
||||
optAll=queue
|
||||
;;
|
||||
# Parallel compilation on all cores (or specified number of cores)
|
||||
-j)
|
||||
nCores=0
|
||||
test $# -ge 2 && expr $2 + 1 > /dev/null 2>&1 \
|
||||
&& shift && nCores=$1
|
||||
|
||||
[ "$nCores" = 0 ] && allCores
|
||||
export WM_NCOMPPROCS=$nCores
|
||||
echo "Compiling enabled on $WM_NCOMPPROCS cores"
|
||||
export WM_NCOMPPROCS=0
|
||||
case "$2" in
|
||||
[0-9]*)
|
||||
if WM_NCOMPPROCS="$(expr 0 + "$2" 2>/dev/null)"
|
||||
then
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
[ "${WM_NCOMPPROCS:=0}" -gt 0 ] || WM_NCOMPPROCS=$(allCores)
|
||||
echo "Compiling enabled on $WM_NCOMPPROCS cores" 1>&2
|
||||
;;
|
||||
# Parallel compilation on specified number of cores
|
||||
-j[1-9]*)
|
||||
export WM_NCOMPPROCS=${1#-j}
|
||||
echo "Compiling enabled on $WM_NCOMPPROCS cores"
|
||||
export WM_NCOMPPROCS="${1#-j}"
|
||||
echo "Compiling enabled on $WM_NCOMPPROCS cores" 1>&2
|
||||
;;
|
||||
# Non-stop compilation, ignoring errors
|
||||
-k | -non-stop)
|
||||
# Keep going, ignoring errors
|
||||
-k | -keep-going | -non-stop)
|
||||
export WM_CONTINUE_ON_ERROR=true
|
||||
;;
|
||||
# Disable scheduled parallel compilation
|
||||
-no-scheduler)
|
||||
unset WM_SCHEDULER
|
||||
;;
|
||||
# Print root directory containing a Make/ directory and exit
|
||||
-pwd)
|
||||
optPwd=true
|
||||
;;
|
||||
# Meant to be used following a pull, this will:
|
||||
# - remove dep files that depend on deleted files;
|
||||
# - remove stale dep files;
|
||||
@ -166,15 +287,20 @@ do
|
||||
# - remove empty directories, along with deprecated object directories
|
||||
# and respective binaries.
|
||||
-update)
|
||||
update=true
|
||||
: ${all:=all} # implies 'all', unless previous set to 'queue' etc.
|
||||
optUpdate=true
|
||||
: "${optAll:=all}" # implies 'all', unless previously set
|
||||
;;
|
||||
-version | --version)
|
||||
printInfo api
|
||||
optShow=true
|
||||
break;
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-*)
|
||||
usage "unknown option: '$1'"
|
||||
die "unknown option: '$1'"
|
||||
;;
|
||||
*)
|
||||
break
|
||||
@ -183,6 +309,11 @@ do
|
||||
shift
|
||||
done
|
||||
|
||||
if [ "$optShow" = true ]
|
||||
then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Check environment variables
|
||||
@ -190,42 +321,28 @@ done
|
||||
|
||||
checkEnv
|
||||
|
||||
# When compiling anything but a standalone exe WM_PROJECT and WM_PROJECT_DIR
|
||||
# must be set
|
||||
[ "$1" = exe -o \( "$WM_PROJECT" -a "$WM_PROJECT_DIR" \) ] || {
|
||||
# Require WM_PROJECT for anything except a standalone exe.
|
||||
# The WM_PROJECT_DIR was already tested in checkEnv.
|
||||
if [ -z "$WM_PROJECT" ] && [ "$1" != exe ]
|
||||
then
|
||||
exec 1>&2
|
||||
echo "$Script error:"
|
||||
echo " environment variable \$WM_PROJECT or \$WM_PROJECT_DIR not set"
|
||||
echo " environment variable \$WM_PROJECT not set"
|
||||
echo " while building project library"
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Setup parallel compilation
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Set WM_NCOMPPROCS automatically when both WM_HOSTS and WM_SCHEDULER are set
|
||||
if [ -z "$WM_NCOMPPROCS" -a -n "$WM_HOSTS" -a -n "$WM_SCHEDULER" ]
|
||||
then
|
||||
WM_NCOMPPROCS=$(wmakeScheduler -count) || unset WM_NCOMPPROCS
|
||||
fi
|
||||
|
||||
if [ -n "$WM_NCOMPPROCS" ]
|
||||
then
|
||||
parOpt="-j $WM_NCOMPPROCS"
|
||||
|
||||
if [ "$WM_NCOMPPROCS" -gt 1 -a -z "$MAKEFLAGS" ]
|
||||
if [ "$WM_NCOMPPROCS" -gt 1 ] && [ -z "$MAKEFLAGS" ]
|
||||
then
|
||||
lockDir=$HOME/.$WM_PROJECT/.wmake
|
||||
|
||||
if [ -d $lockDir ]
|
||||
then
|
||||
rm -f $lockDir/*
|
||||
else
|
||||
mkdir -p $lockDir
|
||||
fi
|
||||
|
||||
make="$make --no-print-directory $parOpt"
|
||||
fi
|
||||
fi
|
||||
@ -239,48 +356,90 @@ fi
|
||||
unset targetType
|
||||
MakeDir=Make
|
||||
|
||||
if [ $# -ge 1 ]
|
||||
unset dir
|
||||
|
||||
if [ -n "$optPwd" ]
|
||||
then
|
||||
unset dir
|
||||
if [ -d "$1" ]
|
||||
if [ $# -ge 1 ]
|
||||
then
|
||||
dir="${1%/}"
|
||||
elif [ -f "$1" ]
|
||||
then
|
||||
dir="${1%/*}"
|
||||
: "${dir:=.}"
|
||||
else
|
||||
targetType="$1"
|
||||
fi
|
||||
if [ -d "$1" ]
|
||||
then
|
||||
dir="${1%/}"
|
||||
elif [ -f "$1" ]
|
||||
then
|
||||
dir="${1%/*}"
|
||||
: "${dir:=.}"
|
||||
[ "$dir" != "$1" ] || dir="."
|
||||
else
|
||||
echo "$Script error: not a file or directory" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Specified directory name:
|
||||
[ $# -ge 2 ] && dir="${2%/}"
|
||||
|
||||
# Specified alternative name for the Make sub-directory:
|
||||
[ $# -ge 3 ] && MakeDir="${3%/}"
|
||||
|
||||
if [ -n "$dir" ]
|
||||
then
|
||||
cd $dir 2>/dev/null || {
|
||||
cd "$dir" 2>/dev/null || {
|
||||
echo "$Script error: could not change to directory '$dir'" 1>&2
|
||||
exit 1
|
||||
}
|
||||
elif [ -f "$MakeDir/files" ]
|
||||
then
|
||||
dir="(${PWD##*/})" # Implicit directory information
|
||||
fi
|
||||
|
||||
# Print command
|
||||
echo "$Script $targetType${targetType:+ }$dir"
|
||||
unset dir
|
||||
# Locate target with Make/ directory
|
||||
if dir="$(findTarget .)"
|
||||
then
|
||||
(cd "$dir" && pwd -L)
|
||||
exit 0
|
||||
else
|
||||
exit 2
|
||||
fi
|
||||
|
||||
else
|
||||
|
||||
if [ $# -ge 1 ]
|
||||
then
|
||||
if [ -d "$1" ]
|
||||
then
|
||||
dir="${1%/}"
|
||||
elif [ -f "$1" ]
|
||||
then
|
||||
dir="${1%/*}"
|
||||
: "${dir:=.}"
|
||||
if [ "$dir" = "$1" ]
|
||||
then
|
||||
dir="."
|
||||
fi
|
||||
else
|
||||
targetType="$1"
|
||||
fi
|
||||
|
||||
# Specified directory name:
|
||||
[ $# -ge 2 ] && dir="${2%/}"
|
||||
|
||||
# Specified alternative name for the Make sub-directory:
|
||||
[ $# -ge 3 ] && MakeDir="${3%/}"
|
||||
|
||||
if [ -n "$dir" ]
|
||||
then
|
||||
cd "$dir" 2>/dev/null || {
|
||||
echo "$Script error: could not change to directory '$dir'" 1>&2
|
||||
exit 1
|
||||
}
|
||||
elif [ -f "$MakeDir/files" ]
|
||||
then
|
||||
dir="(${PWD##*/})" # Implicit directory information
|
||||
fi
|
||||
|
||||
# Print command
|
||||
echo "$Script $targetType${targetType:+ }$dir"
|
||||
unset dir
|
||||
fi
|
||||
fi
|
||||
|
||||
unset dir
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Recurse the source tree to update all
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if [ "$update" = true ]
|
||||
if [ "$optUpdate" = true ]
|
||||
then
|
||||
wrmdep -update
|
||||
wrmdep -old
|
||||
@ -290,23 +449,47 @@ then
|
||||
fi
|
||||
|
||||
|
||||
unset exitCode
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Recurse the source tree to compile "all" targets
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if [ "$all" = all ]
|
||||
if [ "$optAll" = all ]
|
||||
then
|
||||
if [ -e Allwmake ]
|
||||
if [ -e Allwmake.override ]
|
||||
then
|
||||
if [ -x Allwmake.override ]
|
||||
then
|
||||
./Allwmake.override -fromWmake $targetType
|
||||
exitCode="$?"
|
||||
else
|
||||
# Allow empty or non-executable file (eg, touch Allwmake.override)
|
||||
exitCode=0
|
||||
fi
|
||||
elif [ -e Allwmake ]
|
||||
then
|
||||
./Allwmake -fromWmake $targetType
|
||||
exit $?
|
||||
exitCode="$?"
|
||||
fi
|
||||
|
||||
if [ -n "$exitCode" ]
|
||||
then
|
||||
exit "$exitCode"
|
||||
fi
|
||||
|
||||
exitCode=0 # For fall-through
|
||||
|
||||
|
||||
# Find all the sub-directories containing a 'Make' directory
|
||||
# (xargs is just used to flatten the list)
|
||||
FOAM_APPS=$(
|
||||
for d in *
|
||||
do [ -d "$d" -a "$d" != Optional -a "$d" != Make ] && echo "$d"
|
||||
do
|
||||
case "$d" in
|
||||
(Make) ;; # Do not make within Make/ dir
|
||||
(*) [ -d "$d" ] && echo "$d" ;;
|
||||
esac
|
||||
done | xargs)
|
||||
|
||||
if [ -n "$FOAM_APPS" ]
|
||||
@ -315,35 +498,31 @@ then
|
||||
$make ${WM_CONTINUE_ON_ERROR:+-k} \
|
||||
-f $WM_DIR/makefiles/apps \
|
||||
TARGET="$targetType" FOAM_APPS="$FOAM_APPS"
|
||||
makeExitCode=$?
|
||||
else
|
||||
makeExitCode=0 # For fall-through
|
||||
exitCode=$?
|
||||
fi
|
||||
|
||||
# Exit if current directory does not contains a 'Make' directory or
|
||||
# an error was previously encountered
|
||||
if [ ! -d "$MakeDir" -o $makeExitCode -ne 0 ]
|
||||
# Exit on error, or if current directory does not have a 'Make' directory
|
||||
if [ ! -d "$MakeDir" ] || [ "$exitCode" -ne 0 ]
|
||||
then
|
||||
exit $makeExitCode
|
||||
exit "$exitCode"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Recurse the source tree to compile "all" targets using wmakeCollect
|
||||
# Recurse source tree to compile "all" targets using wmakeCollect
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if [ "$all" = queue ]
|
||||
if [ "$optAll" = queue ]
|
||||
then
|
||||
[ "$update" = true ] || wmakeLnIncludeAll $parOpt
|
||||
[ "$optUpdate" = true ] || wmakeLnIncludeAll $parOpt
|
||||
|
||||
(
|
||||
export WM_COLLECT_DIR=$WM_PROJECT_DIR/build/${WM_OPTIONS}/${PWD////_}
|
||||
export WM_SCHEDULER=wmakeCollect
|
||||
export WM_COLLECT_DIR="$WM_PROJECT_DIR/build/${WM_OPTIONS}/${PWD////_}"
|
||||
export WM_SCHEDULER="$WM_DIR/wmakeCollect"
|
||||
trap '$WM_SCHEDULER -kill' TERM INT
|
||||
$WM_SCHEDULER -clean \
|
||||
"$WM_SCHEDULER" -clean \
|
||||
&& wmake -all objects \
|
||||
&& $WM_SCHEDULER
|
||||
&& "$WM_SCHEDULER"
|
||||
) && wmake -all
|
||||
exit $?
|
||||
fi
|
||||
@ -385,25 +564,35 @@ fi
|
||||
# files and options being built in parallel
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
objectsDir=$MakeDir/$WM_OPTIONS
|
||||
case "$PWD" in
|
||||
("$WM_PROJECT_DIR"/*)
|
||||
buildPath=$WM_PROJECT_DIR/build/${WM_OPTIONS}
|
||||
objectsDir=$buildPath$(echo $PWD | sed s%$WM_PROJECT_DIR%% )
|
||||
;;
|
||||
esac
|
||||
# Mini-version of findObjectDir
|
||||
unset objectsDir
|
||||
|
||||
# Handle project/{applications,src} as out-of-source build
|
||||
relativeDir="${PWD#${WM_PROJECT_DIR}/}"
|
||||
if [ "$relativeDir" != "$PWD" ]
|
||||
then
|
||||
[ -w "$WM_PROJECT_DIR" ] && \
|
||||
objectsDir="${WM_PROJECT_DIR}/build/${WM_OPTIONS}/${relativeDir}"
|
||||
fi
|
||||
|
||||
# Default (local) build directory
|
||||
if [ -z "$objectsDir" ]
|
||||
then
|
||||
objectsDir="$MakeDir/$WM_OPTIONS"
|
||||
fi
|
||||
|
||||
|
||||
(
|
||||
unset MAKEFLAGS
|
||||
mkdir -p $objectsDir
|
||||
mkdir -p "$objectsDir"
|
||||
|
||||
# Pre-build the $WM_OPTIONS/options file
|
||||
# which is included when building the $WM_OPTIONS/files file
|
||||
$make -s -f $WM_DIR/makefiles/files MAKE_DIR=$MakeDir \
|
||||
OBJECTS_DIR=$objectsDir $objectsDir/options
|
||||
$make -s -f $WM_DIR/makefiles/files \
|
||||
MAKE_DIR="$MakeDir" OBJECTS_DIR="$objectsDir" "$objectsDir"/options
|
||||
|
||||
$make -s -f $WM_DIR/makefiles/files MAKE_DIR=$MakeDir \
|
||||
OBJECTS_DIR=$objectsDir
|
||||
$make -s -f $WM_DIR/makefiles/files \
|
||||
MAKE_DIR=$MakeDir OBJECTS_DIR=$objectsDir
|
||||
)
|
||||
|
||||
|
||||
@ -427,8 +616,8 @@ case "$targetType" in
|
||||
(lib | libo | libso | dep)
|
||||
if grep -qe '^ *LIB *=' "$MakeDir/files" 2>/dev/null
|
||||
then
|
||||
$make -s -f $WM_DIR/makefiles/general MAKE_DIR=$MakeDir \
|
||||
OBJECTS_DIR=$objectsDir lnInclude
|
||||
$make -s -f $WM_DIR/makefiles/general \
|
||||
MAKE_DIR=$MakeDir OBJECTS_DIR=$objectsDir lnInclude
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
@ -441,11 +630,11 @@ esac
|
||||
if [ -n "$WM_UPDATE_DEPENDENCIES" ]
|
||||
then
|
||||
|
||||
$make -f $WM_DIR/makefiles/general MAKE_DIR=$MakeDir \
|
||||
OBJECTS_DIR=$objectsDir updatedep
|
||||
makeExitCode=$?
|
||||
$make -f $WM_DIR/makefiles/general \
|
||||
MAKE_DIR=$MakeDir OBJECTS_DIR=$objectsDir updatedep
|
||||
exitCode="$?"
|
||||
|
||||
[ $makeExitCode -eq 0 ] || exit $makeExitCode
|
||||
[ "$exitCode" -eq 0 ] || exit "$exitCode"
|
||||
fi
|
||||
|
||||
|
||||
@ -453,8 +642,8 @@ fi
|
||||
# Make the dependency files or object files and link
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
exec $make -f $WM_DIR/makefiles/general MAKE_DIR=$MakeDir \
|
||||
OBJECTS_DIR=$objectsDir $targetType
|
||||
exec $make -f $WM_DIR/makefiles/general \
|
||||
MAKE_DIR=$MakeDir OBJECTS_DIR=$objectsDir $targetType
|
||||
|
||||
exit 0 # clean exit
|
||||
|
||||
|
||||
Reference in New Issue
Block a user