From eea0f8eb01d71fe9c53533a7341cf4b62081b61f Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Tue, 21 Feb 2023 09:57:37 +0100 Subject: [PATCH] CONFIG: additional test for mpfr library in cgal config (#2664) - other systems (eg, ARM64 linux with clang) do not have a separate mpfr library configured so also check for mpfr (gmp is assumed to be the same) and return corresponding cgal flavour (eg, header-no-mpfr) --- wmake/scripts/have_cgal | 72 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/wmake/scripts/have_cgal b/wmake/scripts/have_cgal index eaf19731037..7308dae1778 100644 --- a/wmake/scripts/have_cgal +++ b/wmake/scripts/have_cgal @@ -5,7 +5,7 @@ # \\ / A nd | www.openfoam.com # \\/ M anipulation | #------------------------------------------------------------------------------ -# Copyright (C) 2018-2020 OpenCFD Ltd. +# Copyright (C) 2018-2023 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. @@ -14,12 +14,16 @@ # have_cgal # # Description -# Detection/setup of CGAL +# Detection/setup of CGAL (with/without mpfr support) # # Requires # CGAL_ARCH_PATH # or config.sh/CGAL (when CGAL_ARCH_PATH is empty) # +# Optional +# MPFR_ARCH_PATH +# or config.sh/CGAL (when CGAL_ARCH_PATH is empty) +# # Functions provided # have_cgal, no_cgal, echo_cgal, query_cgal # @@ -42,6 +46,7 @@ no_cgal() { unset HAVE_CGAL CGAL_FLAVOUR CGAL_INC_DIR CGAL_LIB_DIR + unset HAVE_MPFR MPFR_INC_DIR MPFR_LIB_DIR } @@ -56,6 +61,62 @@ echo_cgal() } +# Search +# $1 : prefix (*_ARCH_PATH, system, ...) +# +# On success, return 0 and export variables +# -> HAVE_MPFR, MPFR_INC_DIR, MPFR_LIB_DIR +search_mpfr() +{ + local warn # warn="==> skip mpfr" + local incName="mpfr.h" + local libName="libmpfr" + + local prefix="${1:-system}" + local header library + + # ---------------------------------- + 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 + # ---------------------------------- + + # Header + [ -n "$header" ] || { + [ -n "$warn" ] && echo "$warn (no header)" + return 2 + } + + # Library may be optional - eg, header-only + [ -n "$library" ] \ + || library=$(findLibrary -prefix="$prefix" -name="$libName") \ + || { + [ -n "$warn" ] && echo "==> $warn (no library)" + return 2 + } + + # ---------------------------------- + + # OK + export HAVE_MPFR=true + export MPFR_ARCH_PATH="$prefix" + export MPFR_INC_DIR="${header%/*}" # Basename + export MPFR_LIB_DIR="${library%/*}" # Basename +} + + # Search # $1 : prefix (*_ARCH_PATH, system, ...) # @@ -110,6 +171,10 @@ search_cgal() # OK export HAVE_CGAL=true export CGAL_FLAVOUR="${flavour:-library}" + if [ "$HAVE_MPFR" != true ] + then + CGAL_FLAVOUR="${CGAL_FLAVOUR}-no-mpfr" + fi export CGAL_ARCH_PATH="$prefix" export CGAL_INC_DIR="${header%/*}" # Basename export CGAL_LIB_DIR="${library%/*}" # Basename @@ -138,6 +203,9 @@ have_cgal() # Need boost for cgal search_boost "$BOOST_ARCH_PATH" + # May need mpfr/gmp for cgal + search_mpfr "$MPFR_ARCH_PATH" + search_cgal "$CGAL_ARCH_PATH" } -- GitLab