Skip to content

Commit 11f71ac

Browse files
committed
More robust compiler detection on mpiuni with gfortran/clan
1 parent 54f4fa3 commit 11f71ac

4 files changed

Lines changed: 1629 additions & 19 deletions

File tree

src/Rules.make

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ ifeq ($(MOSSCO_INSTALL_PREFIX),)
121121
export MOSSCO_INSTALL_PREFIX:=$(MOSSCO_DIR)
122122
endif
123123

124-
# Filter out all MAKELEVELS that are not 1 or 0 to avoid unneccessary execution
124+
# Filter out all MAKELEVELS that are not 1 or 0 to avoid unnecessary execution
125125
# of the preamble section of this Rules.make in repeated calls. In most circumstances,
126126
# Rules.make is executed at MAKELEVEL 1, unless directly called in $(MOSSCODIR)/src
127127
#ifneq (,$(filter $(MAKELEVEL),0 1))
@@ -159,34 +159,37 @@ else
159159
ifdef ESMF_CCOMPILER
160160
export CC := $(ESMF_CCOMPILER)
161161
endif
162-
162+
$(info Using ESMF_F90COMPILER ... $(ESMF_F90COMPILER))
163+
$(info Using ESMF_CXXCOMPILER ... $(ESMF_CXXCOMPILER))
163164

164165
# Find the communicator and determine whether this is parallel device, this
165166
# is still buggy with mpiifort and needs improvement
166167
ESMF_COMM:=$(strip $(shell grep '^. ESMF_COMM:' $(ESMFMKFILE) | cut -d':' -f2-))
167168
$(info Using ESMF_COMM ... $(ESMF_COMM))
168169
ESMF_OS:=$(strip $(shell grep '^. ESMF_OS:' $(ESMFMKFILE) | cut -d':' -f2-))
169170
$(info Using ESMF_OS ... $(ESMF_OS))
170-
$(info Using ESMF_F90COMPILER ... $(ESMF_F90COMPILER))
171171

172172
ifeq ("$(ESMF_COMM)","mpiuni")
173173
export MOSSCO_MPI:=false
174-
ESMF_FC:=$(shell echo $(ESMF_F90COMPILER) | cut -d'-' -f1)
175-
ifneq (,$(filter $(ESMF_FC),X86_64 x86_64 arm64))
176-
ESMF_FC:=$(shell echo $(ESMF_F90COMPILER) | $(AWK) -F'-' '{print $$NF}')
177-
endif
178-
ifeq ($(ESMF_FC),gnu)
179-
ESMF_FC:=gfortran
180-
endif
174+
ifneq (,$(filter %gfortran gfortran% %gnu gnu%,$(notdir $(ESMF_F90COMPILER))))
175+
ESMF_FC := gfortran
176+
else
177+
ifneq (,$(filter %flang flang% %llvm llvm%,$(notdir $(ESMF_F90COMPILER))))
178+
ESMF_FC := flang
179+
else
180+
ESMF_FC := $(shell echo $(notdir $(ESMF_F90COMPILER)) | cut -d'-' -f1)
181+
endif
182+
endif
181183

182-
ESMF_CC:=$(shell echo $(ESMF_CCOMPILER) | cut -d'-' -f1)
183-
ifneq (,$(filter $(ESMF_CC),X86_64 x86_64 arm64))
184-
ESMF_CC:=$(shell echo $(ESMF_CCOMPILER) | $(AWK) -F'-' '{print $$NF}')
185-
endif
186-
ifeq ($(ESMF_CC),gnu)
187-
ESMF_CC:=g++
188-
endif
189-
184+
ifneq (,$(filter %gcc gcc% %gnu gnu%,$(notdir $(ESMF_CXXCOMPILER))))
185+
ESMF_CC := gcc
186+
else
187+
ifneq (,$(filter %clang++ clang++% %llvm llvm%,$(notdir $(ESMF_CXXCOMPILER))))
188+
ESMF_CC := clang
189+
else
190+
ESMF_CC := $(shell echo $(notdir $(ESMF_CXXCOMPILER)) | cut -d'-' -f1)
191+
endif
192+
endif
190193
else
191194
export MOSSCO_MPI:=true
192195
ifeq ($(ESMF_COMM),openmpi)

0 commit comments

Comments
 (0)