@@ -121,7 +121,7 @@ ifeq ($(MOSSCO_INSTALL_PREFIX),)
121121 export MOSSCO_INSTALL_PREFIX: =$(MOSSCO_DIR )
122122endif
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