forked from HYCOM/HYCOM-src
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.NUOPC
103 lines (79 loc) · 2.65 KB
/
Makefile.NUOPC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# SCCS IDENTIFICATION: $HeadURL$
# SCCS IDENTIFICATION: @(#)$Id$
#define CHKFILE
#$(shell if [ -e $(1) ]; then echo TRUE; fi;)
#endef
#ifeq ($(call CHKFILE,$(ESPC_SYSTEM_TOPDIR)/config/esmfmkfile),TRUE)
# TOPDIR = $(ESPC_SYSTEM_TOPDIR)
#else
# TOPDIR := $(shell cd ../ 1>/dev/null 2>&1 && pwd)
#endif
##Alex OCNDIR := $(shell cd ../ 1>/dev/null 2>&1 && pwd)
OCNDIR := $(shell cd ../../ 1>/dev/null 2>&1 && pwd)
include $(OCNDIR)/config/esmfmkfile
include $(ESMFMKFILE)
OBJDIR = $(OCNDIR)/obj/esmf
FCSDIR = $(OCNDIR)/src
MODDIR = $(OCNDIR)/obj/src
#ifeq ($(call CHKFILE,$(TOPDIR)/src/share/obj),TRUE)
# MODDIR2 = $(TOPDIR)/src/share/obj
#else
# MODDIR2 =
#endif
MODDIR += $(OCNDIR)/share/obj
MODDIR += $(OCNDIR)/obj/service
ifdef USE_OCN
LIB = $(OCNDIR)/lib/ocn_esmf.a
else
LIB = $(OCNDIR)/lib/hycom_esmf.a
endif
INCFLAG = $(addprefix -I,$(FCSDIR)) $(INCLDIR)
MODFLAG = $(addprefix -I,$(OBJDIR)) $(addprefix -I,$(MODDIR))
.SUFFIXES : .F90 .f .F
MAKEFILE = Makefile.NUOPC
include $(OCNDIR)/config/CONFIG_NUOPC
machine=$(shell hostname)
NOFMA=
ifeq ($(findstring conrad,$(machine)),conrad)
NOFMA= -no-fma
endif
ifeq ($(findstring gordon,$(machine)),gordon)
NOFMA= -no-fma
endif
#ifdef USE_COUPLE
OBJS = \
export_from_hycom_tiled.o hycom_couple.o ReadHycomLatLon.o HYCOM_OceanComp.o
## HYCOM_Field.o HYCOM_OceanComp.o HYCOM_OceanOnlyComp.o hycom_couple.o
#else
#OBJS = \
# HYCOM_OceanComp.o
#endif
OBJS := $(addprefix $(OBJDIR)/,$(OBJS))
TARGET: build_dirs $(OBJS) modmv
%.o $(OBJDIR)/%.o : %.f
$(FCMPI) -c $(FFLAGS_mis) $(NOFMA) $(MODFLAG) $(INCFLAG) $< -o $@
$(AR) $(LIB) $@
%.o $(OBJDIR)/%.o : %.F
$(FCMPI) -c $(FFLAGS) $(NOFMA) $(CPPFLAGS) $(CPLFLAG) $(MODFLAG) $(INCFLAG) $< -o $@
$(AR) $(LIB) $@
#%.o $(OBJDIR)/%.o : %.F90
# $(FCMPI) -c $(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILEFREECPP) $(ESMF_F90COMPILECPPFLAGS) $(FFLAGS_esmf) $(CPPFLAGS) $(CPLFLAG) $(MODFLAG) $(INCFLAG) $< -o $@
# $(AR) $(LIB) $@
%.o $(OBJDIR)/%.o : %.F90
$(ESMF_F90COMPILER) -c $(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILEFREECPP) $(ESMF_F90COMPILECPPFLAGS) $(CPPFLAGS) $(CPLFLAG) $(MODFLAG) $(INCFLAG) $< -o $@
$(AR) $(LIB) $@
modmv:
mods=`ls *.mod 2>/dev/null`; \
if [ "$${mods}" != "" ]; then mv $${mods} $(OBJDIR)/.; fi
info:
-@echo "CPLFLAG: $(CPLFLAG) "
-@echo "OBJDIR: $(OBJDIR) "
-@echo "OBJS: $(OBJS) "
build_dirs:
-@if [ ! -d $(OBJDIR) ]; then mkdir -p $(OBJDIR); fi
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
.PHONY: clean
clean: info
rm -f $(OBJDIR)/*.o $(OBJDIR)/*.mod
rm -f $(LIB)