Skip to content

Commit 2f5002a

Browse files
committed
changes to corectly support distros like almalinux 8 and correctly identify gcc
1 parent 5b03181 commit 2f5002a

File tree

3 files changed

+112
-30
lines changed

3 files changed

+112
-30
lines changed

cmake/env/thisbdm.sh

+63-27
Original file line numberDiff line numberDiff line change
@@ -542,33 +542,7 @@ _source_thisbdm()
542542
# OpenMP
543543
export OMP_PROC_BIND=true
544544

545-
#Select (export) the correct compiler version
546-
GCC_VER=$(gcc --version | grep gcc | awk '{print $NF}' | cut -d '.' -f 1-2)
547-
548-
if (echo "$GCC_VER >= 12" | bc -q > /dev/null) || (echo "$GCC_VER < 8" | bc -q > /dev/null); then
549-
550-
551-
if $(command -v gcc-11 > /dev/null) && $(command -v g++-11 > /dev/null) && $(command -v gfortran-11 > /dev/null); then
552-
553-
export CC=gcc-11
554-
export CXX=g++-11
555-
export FC=gfortran-11
556-
export OMPI_CC=gcc-11
557-
export OMPI_CXX=g++-11
558-
export OMPI_FC=gfortran-11
559-
560-
elif [ -d $BDMSYS/third_party/gcc ]; then
561-
562-
export CC=$BDMSYS/third_party/gcc/bin/gcc
563-
export CXX=$BDMSYS/third_party/gcc/bin/g++
564-
export FC=$BDMSYS/third_party/gcc/bin/gfortran
565-
export OMPI_CC=$BDMSYS/third_party/gcc/bin/gcc
566-
export OMPI_CXX=$BDMSYS/third_party/gcc/bin/g++
567-
export OMPI_FC=$BDMSYS/third_party/gcc/bin/gfortran
568-
569-
fi
570-
fi
571-
545+
572546
###### Platform-specific Configuration
573547
# Apple specific
574548
if [ "$(uname)" = 'Darwin' ]; then
@@ -596,11 +570,73 @@ _source_thisbdm()
596570
# linux
597571
PROCVERSION=$(cat /proc/version)
598572
if echo "$PROCVERSION" | grep -Eiq 'Red Hat' ; then
573+
. scl_source enable gcc-toolset-10 > /dev/null 2> /dev/null || true
574+
. scl_source enable devtoolset-10 > /dev/null 2> /dev/null || true
575+
. scl_source enable gcc-toolset-11 > /dev/null 2> /dev/null || true
576+
. scl_source enable devtoolset-11 > /dev/null 2> /dev/null || true
599577
. /etc/profile.d/modules.sh || return 1
600578
module load mpi || return 1
601579
fi
602580
fi
603581

582+
#Select (export) the correct compiler version
583+
GCC_VER=$(gcc --version | grep gcc)
584+
if [ -n "${GCC_VER}" ]; then
585+
read -ra tokens <<< $GCC_VER
586+
result=()
587+
current_token=""
588+
for token in "${tokens[@]}"; do
589+
if [[ -n $current_token ]]; then
590+
current_token+=" $token"
591+
if [[ $current_token == *')' ]]; then
592+
result+=("$current_token")
593+
current_token=""
594+
fi
595+
else
596+
if [[ $token == '('* && $token != *')' ]]; then
597+
current_token="$token"
598+
else
599+
result+=("$token")
600+
fi
601+
fi
602+
done
603+
if [[ -n $current_token ]]; then
604+
result+=("$current_token")
605+
fi
606+
GCC_VER=${result[2]}
607+
GCC_VER=$( echo $GCC_VER | cut -d '.' -f 1-2)
608+
fi
609+
610+
if [ -z "${GCC_VER}" ] || [ `echo "$GCC_VER >= 12" | bc -q` -ne 0 ] || [ `echo "$GCC_VER < 9" | bc -q` -ne 0 ]; then
611+
612+
613+
if $(command -v gcc-11 > /dev/null) && $(command -v g++-11 > /dev/null) && $(command -v gfortran-11 > /dev/null); then
614+
615+
export CC=gcc-11
616+
export CXX=g++-11
617+
export FC=gfortran-11
618+
export OMPI_CC=gcc-11
619+
export OMPI_CXX=g++-11
620+
export OMPI_FC=gfortran-11
621+
export QMAKE_CC=gcc-11
622+
export QMAKE_CXX=g++-11
623+
export LINK=g++-11
624+
625+
elif [ -d $BDMSYS/third_party/gcc ]; then
626+
627+
export CC=$BDMSYS/third_party/gcc/bin/gcc
628+
export CXX=$BDMSYS/third_party/gcc/bin/g++
629+
export FC=$BDMSYS/third_party/gcc/bin/gfortran
630+
export OMPI_CC=$BDMSYS/third_party/gcc/bin/gcc
631+
export OMPI_CXX=$BDMSYS/third_party/gcc/bin/g++
632+
export OMPI_FC=$BDMSYS/third_party/gcc/bin/gfortran
633+
export QMAKE_CC=$BDM_PROJECT_DIR_2/third_party/gcc/bin/gcc
634+
export QMAKE_CXX=$BDM_PROJECT_DIR_2/third_party/gcc/bin/g++
635+
export LINK=$BDM_PROJECT_DIR_2/third_party/gcc/bin/g++
636+
637+
fi
638+
fi
639+
604640
#######
605641

606642
# completions for bash: really primitive (but useful nonetheless)

util/installation/common/util.sh

100755100644
+47-3
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,42 @@ function CleanBuild {
230230
BDM_PROJECT_DIR_2=$(pwd)
231231
cd $BUILD_DIR
232232

233-
GCC_VER=$(gcc --version | grep gcc | awk '{print $NF}' | cut -d '.' -f 1-2)
234-
235-
if (echo "$GCC_VER >= 12" | bc -q > /dev/null) || (echo "$GCC_VER < 8" | bc -q > /dev/null); then
233+
CLEAN_BUILD_OS=$(DetectOs2)
234+
if [ "$CLEAN_BUILD_OS" == "rhel" ]; then
235+
. scl_source enable gcc-toolset-10 > /dev/null 2> /dev/null || true
236+
. scl_source enable devtoolset-10 > /dev/null 2> /dev/null || true
237+
. scl_source enable gcc-toolset-11 > /dev/null 2> /dev/null || true
238+
. scl_source enable devtoolset-11 > /dev/null 2> /dev/null || true
239+
fi
240+
GCC_VER=$(gcc --version | grep gcc)
241+
#GCC_VER=$(gcc --version | grep gcc | grep -oE ' |\S+' | awk '{print $NF}' | cut -d '.' -f 1-2)
242+
if [ -n "${GCC_VER}" ]; then
243+
read -ra tokens <<< $GCC_VER
244+
result=()
245+
current_token=""
246+
for token in "${tokens[@]}"; do
247+
if [[ -n $current_token ]]; then
248+
current_token+=" $token"
249+
if [[ $current_token == *')' ]]; then
250+
result+=("$current_token")
251+
current_token=""
252+
fi
253+
else
254+
if [[ $token == '('* && $token != *')' ]]; then
255+
current_token="$token"
256+
else
257+
result+=("$token")
258+
fi
259+
fi
260+
done
261+
if [[ -n $current_token ]]; then
262+
result+=("$current_token")
263+
fi
264+
GCC_VER=${result[2]}
265+
GCC_VER=$( echo $GCC_VER | cut -d '.' -f 1-2)
266+
fi
267+
268+
if [ -z "${GCC_VER}" ] || [ `echo "$GCC_VER >= 12" | bc -q` -ne 0 ] || [ `echo "$GCC_VER < 9" | bc -q` -ne 0 ]; then
236269

237270

238271
if $(command -v gcc-11 > /dev/null) && $(command -v g++-11 > /dev/null) && $(command -v gfortran-11 > /dev/null); then
@@ -249,6 +282,10 @@ Using that."
249282
export OMPI_CC=gcc-11
250283
export OMPI_CXX=g++-11
251284
export OMPI_FC=gfortran-11
285+
export QMAKE_CC=gcc-11
286+
export QMAKE_CXX=g++-11
287+
export LINK=g++-11
288+
252289

253290

254291
elif [ -d $BDM_PROJECT_DIR_2/third_party/gcc ]; then
@@ -265,6 +302,9 @@ Using that."
265302
export OMPI_CC=$BDM_PROJECT_DIR_2/third_party/gcc/bin/gcc
266303
export OMPI_CXX=$BDM_PROJECT_DIR_2/third_party/gcc/bin/g++
267304
export OMPI_FC=$BDM_PROJECT_DIR_2/third_party/gcc/bin/gfortran
305+
export QMAKE_CC=$BDM_PROJECT_DIR_2/third_party/gcc/bin/gcc
306+
export QMAKE_CXX=$BDM_PROJECT_DIR_2/third_party/gcc/bin/g++
307+
export LINK=$BDM_PROJECT_DIR_2/third_party/gcc/bin/g++
268308

269309
else
270310

@@ -297,6 +337,10 @@ Using that."
297337
export OMPI_CC=$BDM_PROJECT_DIR_2/third_party/gcc/bin/gcc
298338
export OMPI_CXX=$BDM_PROJECT_DIR_2/third_party/gcc/bin/g++
299339
export OMPI_FC=$BDM_PROJECT_DIR_2/third_party/gcc/bin/gfortran
340+
export QMAKE_CC=$BDM_PROJECT_DIR_2/third_party/gcc/bin/gcc
341+
export QMAKE_CXX=$BDM_PROJECT_DIR_2/third_party/gcc/bin/g++
342+
export LINK=$BDM_PROJECT_DIR_2/third_party/gcc/bin/g++
343+
300344
fi
301345
fi
302346

util/installation/rhel/common/package_list_required

100755100644
+2
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,5 @@ mesa-libGL-devel
8888
tslib
8989
tslib-devel
9090
devtoolset-10-gcc*
91+
devtoolset-11-gcc*
92+
gcc-toolset-11*

0 commit comments

Comments
 (0)