From f12848f81f40cc93903d71785c64f6cf89e1e36f Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Wed, 30 Sep 2026 16:06:23 -0700 Subject: [PATCH 1/2] install.sh: Fix an inadvertent bare `lfortran` This could cause install failures for FC=/path/to/lfortran whenever the given lfortran was not first in PATH --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 9db2858da..ad8c1b38a 100755 --- a/install.sh +++ b/install.sh @@ -717,7 +717,7 @@ fi if [[ $compiler_version =~ 'LFortran' ]]; then # Ensure we use LFortran's copy of ISO_Fortran_binding.h - APPEND_CFLAGS+=-I$(lfortran --print-c-include-dir) + APPEND_CFLAGS+=-I$($FC --print-c-include-dir) # Some LFortan builds issue a fatal error if -g appears on the Fortran compile or link line # GASNet sometimes injects this linker option, so ensure we strip it out for var in GASNET_LDFLAGS GASNET_LIBS ; do From 834fee83bc004466cb2f3585ba0db88e9b6c1707 Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Wed, 30 Sep 2026 19:49:51 -0700 Subject: [PATCH 2/2] install.sh: Improve CC/CXX guessing logic Improves the CC/CXX guessing logic to handle the case where FC was given by full path but is not in PATH --- install.sh | 50 +++++++++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/install.sh b/install.sh index ad8c1b38a..d6a2f38ae 100755 --- a/install.sh +++ b/install.sh @@ -273,43 +273,51 @@ if [ -z ${FC:+x} ] ; then # FC unset: default to LLVM if it's in PATH fi fi if [[ -n ${FC:+x} && -z ${CC:+x} ]] ; then # Have FC but missing CC + FC=$(abswhich $FC) # try to auto-detect CC from FC - if [[ $(basename $FC) =~ flang ]] || [[ $(basename $FC) =~ lfortran ]] ; then - CC_guess=clang - else + CC_guess_suff= + [[ $FC =~ (-[0-9a-z-]+)$ ]] && CC_guess_suff=${BASH_REMATCH[0]} + if [[ $(basename $FC) =~ gfortran ]] ; then CC_guess=gcc + else + CC_guess=clang fi - if ! [[ $(basename $FC) =~ lfortran ]] && [[ $FC =~ (-[0-9a-z-]+)$ ]] ; then - CC_guess_suff=$CC_guess${BASH_REMATCH[0]} - if type -P $CC_guess_suff > /dev/null 2>&1; then - CC=$(abswhich $CC_guess_suff) + for guess in \ + $(dirname $FC)/$CC_guess$CC_guess_suff \ + $(dirname $FC)/$CC_guess \ + $CC_guess$CC_guess_suff \ + $CC_guess \ + ; do + if type -P $guess > /dev/null 2>&1 ; then + CC=$(abswhich $guess) echo "Setting CC=$CC" + break fi - fi - if [ -z ${CC:+x} ] && type -P $CC_guess > /dev/null 2>&1; then - CC=$(abswhich $CC_guess) - echo "Setting CC=$CC" - fi + done fi if [[ -z ${CXX:+x} && -n ${CC:+x} ]] ; then + CC=$(abswhich $CC) # C++ is an optional dependency # try to auto-detect from CC + CXX_guess_suff= + [[ $CC =~ (-[0-9a-z-]+)$ ]] && CXX_guess_suff=${BASH_REMATCH[0]} if [[ $(basename $CC) =~ clang ]] ; then CXX_guess=clang++ else CXX_guess=g++ fi - if [[ $CC =~ (-[0-9a-z-]+)$ ]] ; then - CXX_guess_suff=$CXX_guess${BASH_REMATCH[0]} - if type -P $CXX_guess_suff > /dev/null 2>&1; then - CXX=$(abswhich $CXX_guess_suff) + for guess in \ + $(dirname $CC)/$CXX_guess$CXX_guess_suff \ + $(dirname $CC)/$CXX_guess \ + $CXX_guess$CXX_guess_suff \ + $CXX_guess \ + ; do + if type -P $guess > /dev/null 2>&1 ; then + CXX=$(abswhich $guess) echo "Setting CXX=$CXX" + break fi - fi - if [ -z ${CXX:+x} ] && type -P $CXX_guess > /dev/null 2>&1; then - CXX=$(abswhich $CXX_guess) - echo "Setting CXX=$CXX" - fi + done fi set -u # error on use of undefined variable