4545fi;
4646printf "%s" "$$cxx_id"
4747endef
48- ifneq (,$(MFEM_HOST_CXX ) )
49- MFEM_PERF_SW := $(shell $(cxx_detect ) )
50- $(info Detected host compiler : $(MFEM_PERF_SW ) )
51- ifeq (unknown,$(MFEM_PERF_SW))
52- $(info -------------------------------------------)
53- $(info Output from '$(MFEM_HOST_CXX) --version -c')
54- $(info -------------------------------------------)
55- $(shell $(MFEM_HOST_CXX) --version -c 1>&2)
56- $(info -------------------------------------------)
48+ define DETECT_PERF_CXXFLAGS
49+ ifneq (,$$(MFEM_HOST_CXX ) )
50+ MFEM_PERF_SW := $$(shell $$(cxx_detect ) )
51+ $$(info Detected host compiler : $$(MFEM_PERF_SW ) )
52+ ifeq (unknown,$$(MFEM_PERF_SW))
53+ $$(info -------------------------------------------)
54+ $$(info Output from '$$(MFEM_HOST_CXX) --version -c')
55+ $$(info -------------------------------------------)
56+ $$(shell $$(MFEM_HOST_CXX) --version -c 1>&2)
57+ $$(info -------------------------------------------)
5758 endif
5859endif
59- ifeq (gcc,$(MFEM_PERF_SW ) )
60- ifeq ($(MFEM_MACHINE),x86_64)
60+ ifeq (gcc,$$ (MFEM_PERF_SW ) )
61+ ifeq ($$ (MFEM_MACHINE),x86_64)
6162 MFEM_PERF_SW = gcc_x86_64
62- else ifneq (,$(findstring ppc64,$(MFEM_MACHINE)))
63+ else ifneq (,$$ (findstring ppc64,$ $(MFEM_MACHINE)))
6364 MFEM_PERF_SW = gcc_ppc64
6465 endif
6566endif
67+ # Choose MFEM_PERF_CXXFLAGS based on MFEM_PERF_SW:
68+ MFEM_PERF_CXXFLAGS = $$(MFEM_PERF_CXXFLAGS_$$(MFEM_PERF_SW ) )
69+ # Add MFEM_PERF_CXXFLAGS to MFEM_CXXFLAGS:
70+ ifeq (YES,$$(MFEM_USE_CUDA ) )
71+ ifneq (,$$(MFEM_PERF_CXXFLAGS))
72+ MFEM_CXXFLAGS += -Xcompiler="$$(MFEM_PERF_CXXFLAGS ) "
73+ endif
74+ else
75+ MFEM_CXXFLAGS += $$(MFEM_PERF_CXXFLAGS )
76+ endif
77+ DETECT_PERF_CXXFLAGS_DONE = YES
78+ endef
6679
6780# Compiler specific optimizations.
6881# For best performance, GCC 5 (or newer) is recommended.
@@ -95,16 +108,6 @@ MFEM_PERF_CXXFLAGS_clang += -ffp-contract=fast
95108# - Intel C++ compiler extra options:
96109MFEM_PERF_CXXFLAGS_icc += -xHost
97110
98- # Choose MFEM_PERF_CXXFLAGS based on MFEM_PERF_SW:
99- MFEM_PERF_CXXFLAGS = $(MFEM_PERF_CXXFLAGS_$(MFEM_PERF_SW ) )
100- # Add MFEM_PERF_CXXFLAGS to MFEM_CXXFLAGS:
101- ifeq (YES,$(MFEM_USE_CUDA ) )
102- ifneq (,$(MFEM_PERF_CXXFLAGS))
103- MFEM_CXXFLAGS += -Xcompiler="$(MFEM_PERF_CXXFLAGS ) "
104- endif
105- else
106- MFEM_CXXFLAGS += $(MFEM_PERF_CXXFLAGS )
107- endif
108111
109112SEQ_MINIAPPS = ex1
110113PAR_MINIAPPS = ex1p
@@ -123,6 +126,7 @@ endif
123126
124127# Replace the default implicit rule for *.cpp files
125128% : $(SRC ) % .cpp $(MFEM_LIB_FILE ) $(CONFIG_MK )
129+ $(if $(DETECT_PERF_CXXFLAGS_DONE ) ,,$(eval $(DETECT_PERF_CXXFLAGS ) ) )
126130 $(MFEM_CXX ) $(MFEM_FLAGS ) $< -o $@ $(MFEM_LIBS )
127131
128132all : $(MINIAPPS )
0 commit comments