Newer
Older
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
SHELL = /bin/bash
AGRIF=YES
include make.inc
PROGS = make_domain_cfg.exe
SFMAKEDEPEND := ./sfmakedepend
DIR_LIB=lib
DIR_FILES=src
DIR_PPSRC=NEMOFILES
DIR_PPSRC_2=ppsrc
DIR_DOC=doc
DIR_OBJS=obj
DIR_LIB=lib
FILENAMES =$(notdir $(basename $(wildcard src/*.F90))) $(notdir $(basename $(wildcard src/*.F))) $(notdir $(basename $(wildcard src/*.c))) $(notdir $(basename $(wildcard src/*.f))) $(notdir $(basename $(wildcard src/*.f90)))
FILES=src/*
ifeq ($(AGRIF),YES)
OBJS_AGRIF=obj/agrif2model.o
else
OBJS_AGRIF=
endif
OBJS_CREATE_DOMCFG=$(addsuffix .o,$(addprefix $(DIR_OBJS)/,$(FILENAMES)))
OBJS_CREATE_DOMCFG := $(filter-out $(OBJS_AGRIF),$(OBJS_CREATE_DOMCFG))
all: depend conv prepagrif AGRIF_LIB $(OBJS_CREATE_DOMCFG) $(PROGS)
@echo
@echo ===================================================
@echo Nesting is ok
@echo ===================================================
@echo
ifeq ($(AGRIF),YES)
make_domain_cfg.exe: $(DIR_LIB)/libdomcfg.a $(DIR_FILES)/nemogcm.F90 $(OBJS_AGRIF) $(OBJS_CREATE_DOMCFG) AGRIF_LIB
$(FC) $(LINKFLAGS) $(FFLAGS) -o $(PROGS) $(OBJS_AGRIF) $(DIR_LIB)/libdomcfg.a $(LIBS) -I$(DIR_OBJS) $(FFLAGS_SPEC) -I../../ext/AGRIF -L../../ext/AGRIF -lagrif
else
make_domain_cfg.exe: $(DIR_LIB)/libdomcfg.a $(DIR_FILES)/nemogcm.F90 $(OBJS_CREATE_DOMCFG)
$(FC) $(LINKFLAGS) $(FFLAGS) -o $(PROGS) $(DIR_LIB)/libdomcfg.a $(LIBS) -I$(DIR_OBJS) $(FFLAGS_SPEC)
endif
ifeq ($(AGRIF),YES)
prepagrif:
@echo
@echo ===================================================
@echo Create working directories for AGRIF ...
@echo ===================================================
mkdir -p obj
mkdir -p $(DIR_PPSRC_2)
mkdir -p $(DIR_LIB)
mkdir -p $(DIR_OBJS)
mkdir -p $(DIR_PPSRC)
mkdir -p $(DIR_PPSRC)/AGRIF_MODELFILES
mkdir -p $(DIR_PPSRC)/AGRIF_INC
\cp ../../ext/AGRIF/conv $(DIR_PPSRC)
\cp ../../ext/AGRIF/agrif_oce.in $(DIR_PPSRC)
echo $(OBJS_CREATE_DOMCFG)
@echo
conv:
$(MAKE) -C ../../ext/AGRIF/LIB
AGRIF_LIB:
$(MAKE) -C ../../ext/AGRIF FC=$(FC) CPP=$(CPP) CPPFLAGS="$(CPPFLAGS) -DAGRIF_MPI" FFLAGS="$(FFLAGS)"
else
prepagrif:
@echo
@echo ===================================================
@echo Create working directories ...
@echo ===================================================
mkdir -p obj
mkdir -p $(DIR_PPSRC_2)
mkdir -p $(DIR_LIB)
mkdir -p $(DIR_OBJS)
@echo
conv:
AGRIF_LIB:
endif
$(DIR_LIB)/libdomcfg.a: $(OBJS_CREATE_DOMCFG)
@echo
@echo ===================================================
@echo Compile domcfg library...
@echo ===================================================
$(AR) -r $@ $(OBJS_CREATE_DOMCFG)
ranlib $@
@echo
ifeq ($(AGRIF),YES)
$(OBJS_AGRIF):src/agrif2model.F90 $(OBJS_CREATE_DOMCFG) MODEL.CPP
$(CPP) -I$(DIR_PPSRC)/AGRIF_INC -include MODEL.CPP $(CPPFLAGS) src/agrif2model.F90 > $(DIR_PPSRC_2)/$(*F).f90
$(FC) $(FFLAGS) -c $(DIR_PPSRC_2)/$(*F).f90 -o $(DIR_OBJS)/$(*F).o -I../../ext/AGRIF -I$(DIR_OBJS) $(FFLAGS_SPEC)
$(DIR_OBJS)/%.o: $(DIR_FILES)/%.F90 make.inc MODEL.CPP
$(CPP) -include MODEL.CPP $(CPPFLAGS) $(DIR_FILES)/$(*F).F90 > $(DIR_PPSRC)/$(*F).f90
cd NEMOFILES ; ./conv ./agrif_oce.in -rm \
-comdirin ./ -comdirout AGRIF_MODELFILES/. -convfile $(*F).f90
$(CPP) -I$(DIR_PPSRC)/AGRIF_INC -include MODEL.CPP $(CPPFLAGS) $(DIR_PPSRC)/AGRIF_MODELFILES/$(*F).f90 >$(DIR_PPSRC_2)/$(*F).f90
$(FC) $(FFLAGS) -c $(DIR_PPSRC_2)/$(*F).f90 -o $(DIR_OBJS)/$(*F).o -I../../ext/AGRIF -I$(DIR_OBJS) $(FFLAGS_SPEC)
$(DIR_OBJS)/%.o: $(DIR_FILES)/%.f90 make.inc MODEL.CPP
$(CPP) -include MODEL.CPP $(CPPFLAGS) $(DIR_FILES)/$(*F).f90 > $(DIR_PPSRC)/$(*F).f90
cd NEMOFILES ; ./conv agrif_oce.in -rm \
-comdirin ./ -comdirout AGRIF_MODELFILES/. -convfile $(*F).f90
$(CPP) -I$(DIR_PPSRC)/AGRIF_INC -include MODEL.CPP $(CPPFLAGS) $(DIR_PPSRC)/AGRIF_MODELFILES/$(*F).f90 >$(DIR_PPSRC_2)/$(*F).f90
$(FC) $(FFLAGS) -c $(DIR_PPSRC_2)/$(*F).f90 -o $(DIR_OBJS)/$(*F).o -I../../ext/AGRIF -I$(DIR_OBJS) $(FFLAGS_SPEC)
else
$(DIR_OBJS)/%.o: $(DIR_FILES)/%.F90 make.inc MODEL.CPP
$(CPP) -include MODEL.CPP $(CPPFLAGS) $(DIR_FILES)/$(*F).F90 > $(DIR_PPSRC_2)/$(*F).f90
$(FC) $(FFLAGS) -c $(DIR_PPSRC_2)/$(*F).f90 -o $(DIR_OBJS)/$(*F).o -I$(DIR_OBJS) $(FFLAGS_SPEC)
$(DIR_OBJS)/%.o: $(DIR_FILES)/%.f90 make.inc MODEL.CPP
$(FC) $(FFLAGS) -c $(DIR_FILES)/$(*F).f90 -o $(DIR_OBJS)/$(*F).o -I$(DIR_OBJS) $(FFLAGS_SPEC)
$(DIR_OBJS)/%.o: $(DIR_FILES)/%.c make.inc MODEL.CPP
$(CC) -c $(CFLAGS) -c $(DIR_FILES)/$(*F).c -o $(DIR_OBJS)/$(*F).o -I$(DIR_OBJS) $(FFLAGS_SPEC)
endif
#--------------------------------------------------------------------------
# Target to create dependeanies.
#--------------------------------------------------------------------------
MakeDepend: $(DIR_FILES)
$(SFMAKEDEPEND) --silent --fext=f90 --fext=f --fext=F90 --fext=F --fext=c --file=- --moddir=$(DIR_OBJS) --objdir=$(DIR_OBJS) $(FILES) > MakeDepend
depend: $(DIR_FILES)
@echo
@echo ===================================================
@echo Create dependancies for Nesting ...
@echo ===================================================
$(SFMAKEDEPEND) --fext=f90 --fext=f --silent --fext=F90 --fext=F --fext=c --file=- --moddir=$(DIR_OBJS) --objdir=$(DIR_OBJS) $(FILES) > MakeDepend
#ifneq "$(MAKECMDGOALS)" "clean"
-include ./MakeDepend
#endif
#--------------------------------------------------------------------------
# Target to clean
#--------------------------------------------------------------------------
clean:
@echo
@echo ===================================================
@echo Clean ...
@echo ===================================================
$(RM) -rf $(DIR_PPSRC) $(DIR_PPSRC_2) $(DIR_LIB) $(DIR_OBJS) $(PROGS)
# DO NOT DELETE THIS LINE - used by make depend