New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Makefile in NEMO/branches/2019/ENHANCE-02_ISF_domcfg – NEMO

source: NEMO/branches/2019/ENHANCE-02_ISF_domcfg/Makefile @ 11998

Last change on this file since 11998 was 11129, checked in by mathiot, 5 years ago

simplification of domcfg (rm all var_n and var_b as it is not needed) (ticket #2143)

File size: 6.1 KB
Line 
1SHELL = /bin/bash
2AGRIF=NO
3
4include make.inc
5
6PROGS = make_domain_cfg.exe
7SFMAKEDEPEND := ./sfmakedepend
8DIR_LIB=lib
9DIR_FILES=src
10DIR_PPSRC=NEMOFILES
11DIR_PPSRC_2=ppsrc
12DIR_DOC=doc
13DIR_OBJS=obj
14DIR_LIB=lib
15
16FILENAMES =$(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)))
17FILES=src/*
18OBJS_AGRIF=obj/agrif2model.o
19OBJS_CREATE_DOMCFG=$(addsuffix .o,$(addprefix $(DIR_OBJS)/,$(FILENAMES)))
20ifeq ($(AGRIF),YES)
21else
22FILENAMES:= $(filter-out $(wildcard src/agrif*),$(FILENAMES))
23OBJS_CREATE_DOMCFG=$(addsuffix .o,$(addprefix $(DIR_OBJS)/,$(FILENAMES)))
24OBJS_CREATE_DOMCFG := $(filter-out $(OBJS_AGRIF),$(OBJS_CREATE_DOMCFG))
25OBJS_AGRIF=
26endif
27FILENAMES:= $(filter-out $(notdir $(basename $(wildcard src/agrif*))),$(FILENAMES))
28OBJS_CREATE_DOMCFG=$(addsuffix .o,$(addprefix $(DIR_OBJS)/,$(FILENAMES)))
29OBJS_CREATE_DOMCFG := $(filter-out $(OBJS_AGRIF),$(OBJS_CREATE_DOMCFG))
30OBJS_AGRIF=
31
32###########OBJS_CREATE_DOMCFG := $(filter-out $(OBJS_AGRIF),$(OBJS_CREATE_DOMCFG))
33
34
35all: depend conv prepagrif AGRIF_LIB $(OBJS_CREATE_DOMCFG) $(PROGS)
36      @echo
37      @echo ===================================================
38      @echo   Nesting is ok
39      @echo ===================================================
40      @echo
41
42
43ifeq ($(AGRIF),YES)
44make_domain_cfg.exe: $(DIR_LIB)/libdomcfg.a $(DIR_FILES)/nemogcm.F90 $(OBJS_AGRIF) $(OBJS_CREATE_DOMCFG)
45      $(FC) $(LINKFLAGS) $(FFLAGS) -o $(PROGS) $(OBJS_AGRIF) $(DIR_LIB)/libdomcfg.a $(LIBS) -I$(DIR_OBJS) $(FFLAGS_SPEC) -I../../ext/AGRIF -L../../ext/AGRIF -lagrif
46else
47make_domain_cfg.exe: $(DIR_LIB)/libdomcfg.a $(DIR_FILES)/nemogcm.F90 $(OBJS_CREATE_DOMCFG)
48      $(FC) $(LINKFLAGS) $(FFLAGS) -o $(PROGS)  $(DIR_LIB)/libdomcfg.a $(LIBS) -I$(DIR_OBJS) $(FFLAGS_SPEC)
49endif
50
51ifeq ($(AGRIF),YES)
52prepagrif:
53      @echo
54      @echo ===================================================
55      @echo   Create working directories for AGRIF ...
56      @echo ===================================================
57      mkdir -p obj
58      mkdir -p $(DIR_PPSRC_2)
59      mkdir -p $(DIR_LIB)
60      mkdir -p $(DIR_OBJS)
61      mkdir -p $(DIR_PPSRC)
62      mkdir -p $(DIR_PPSRC)/AGRIF_MODELFILES
63      mkdir -p $(DIR_PPSRC)/AGRIF_INC
64      \cp ../../ext/AGRIF/conv $(DIR_PPSRC)
65      \cp ../../ext/AGRIF/agrif_oce.in $(DIR_PPSRC)
66      echo $(OBJS_CREATE_DOMCFG)
67      @echo
68
69conv:
70      $(MAKE) -C ../../ext/AGRIF/LIB
71
72AGRIF_LIB: 
73      $(MAKE) -C ../../ext/AGRIF FC=$(FC) CPP=$(CPP) CPPFLAGS="-DAGRIF_MPI" FFLAGS="$(FFLAGS)"
74else
75
76prepagrif:
77      @echo
78      @echo ===================================================
79      @echo   Create working directories  ...
80      @echo ===================================================
81      mkdir -p obj
82      mkdir -p $(DIR_PPSRC_2)
83      mkdir -p $(DIR_LIB)
84      mkdir -p $(DIR_OBJS)
85      @echo
86conv:
87AGRIF_LIB: 
88
89endif
90
91$(DIR_LIB)/libdomcfg.a: $(OBJS_CREATE_DOMCFG)
92      @echo
93      @echo ===================================================
94      @echo   Compile domcfg library...
95      @echo ===================================================
96      $(AR) -r $@ $(OBJS_CREATE_DOMCFG)
97      ranlib $@
98      @echo
99
100
101
102ifeq ($(AGRIF),YES)
103
104$(OBJS_AGRIF):src/agrif2model.F90  $(OBJS_CREATE_DOMCFG) MODEL.CPP
105      $(CPP) -I$(DIR_PPSRC)/AGRIF_INC -include MODEL.CPP $(CPPFLAGS) src/agrif2model.F90 > $(DIR_PPSRC_2)/$(*F).f90 
106      $(FC) $(FFLAGS) -c $(DIR_PPSRC_2)/$(*F).f90 -o $(DIR_OBJS)/$(*F).o -I../../ext/AGRIF -I$(DIR_OBJS)  $(FFLAGS_SPEC)
107
108$(DIR_OBJS)/%.o: $(DIR_FILES)/%.F90 make.inc MODEL.CPP
109      $(CPP) -include MODEL.CPP $(CPPFLAGS) $(DIR_FILES)/$(*F).F90 > $(DIR_PPSRC)/$(*F).f90
110      cd NEMOFILES ; ./conv ./agrif_oce.in -rm \
111      -comdirin ./ -comdirout AGRIF_MODELFILES/. -convfile $(*F).f90
112      $(CPP) -I$(DIR_PPSRC)/AGRIF_INC -include MODEL.CPP $(CPPFLAGS)  $(DIR_PPSRC)/AGRIF_MODELFILES/$(*F).f90 >$(DIR_PPSRC_2)/$(*F).f90   
113      $(FC) $(FFLAGS) -c $(DIR_PPSRC_2)/$(*F).f90 -o $(DIR_OBJS)/$(*F).o -I../../ext/AGRIF -I$(DIR_OBJS)  $(FFLAGS_SPEC) 
114
115
116$(DIR_OBJS)/%.o: $(DIR_FILES)/%.f90 make.inc MODEL.CPP
117      $(CPP) -include MODEL.CPP $(CPPFLAGS) $(DIR_FILES)/$(*F).f90 > $(DIR_PPSRC)/$(*F).f90
118      cd NEMOFILES ; ./conv agrif_oce.in -rm \
119      -comdirin ./ -comdirout AGRIF_MODELFILES/. -convfile $(*F).f90
120      $(CPP) -I$(DIR_PPSRC)/AGRIF_INC -include MODEL.CPP $(CPPFLAGS)  $(DIR_PPSRC)/AGRIF_MODELFILES/$(*F).f90 >$(DIR_PPSRC_2)/$(*F).f90   
121      $(FC) $(FFLAGS) -c $(DIR_PPSRC_2)/$(*F).f90 -o $(DIR_OBJS)/$(*F).o -I../../ext/AGRIF -I$(DIR_OBJS)  $(FFLAGS_SPEC) 
122
123else
124
125$(DIR_OBJS)/%.o: $(DIR_FILES)/%.F90 make.inc MODEL.CPP
126      $(CPP) -include MODEL.CPP $(CPPFLAGS) $(DIR_FILES)/$(*F).F90 > $(DIR_PPSRC_2)/$(*F).f90
127      $(FC) $(FFLAGS) -c $(DIR_PPSRC_2)/$(*F).f90 -o $(DIR_OBJS)/$(*F).o -I$(DIR_OBJS)  $(FFLAGS_SPEC) 
128
129$(DIR_OBJS)/%.o: $(DIR_FILES)/%.f90 make.inc MODEL.CPP
130      $(FC) $(FFLAGS) -c $(DIR_FILES)/$(*F).f90 -o $(DIR_OBJS)/$(*F).o -I$(DIR_OBJS)  $(FFLAGS_SPEC) 
131
132
133$(DIR_OBJS)/%.o: $(DIR_FILES)/%.c make.inc MODEL.CPP
134   $(CC) -c $(CFLAGS) -c $(DIR_FILES)/$(*F).c -o $(DIR_OBJS)/$(*F).o -I$(DIR_OBJS)  $(FFLAGS_SPEC) 
135
136endif
137#--------------------------------------------------------------------------
138#  Target to create dependeanies.
139#--------------------------------------------------------------------------
140
141MakeDepend: $(DIR_FILES)
142      $(SFMAKEDEPEND) --silent --fext=f90 --fext=f --fext=F90 --fext=F --fext=c --file=- --moddir=$(DIR_OBJS) --objdir=$(DIR_OBJS)  $(FILES) > MakeDepend
143
144depend: $(DIR_FILES)
145      @echo
146      @echo ===================================================
147      @echo   Create dependancies for Nesting ...
148      @echo ===================================================
149      @echo
150      @echo
151      $(SFMAKEDEPEND) --fext=f90 --fext=f  --silent --fext=F90 --fext=F --fext=c --file=- --moddir=$(DIR_OBJS) --objdir=$(DIR_OBJS)  $(FILES) > MakeDepend
152
153#ifneq "$(MAKECMDGOALS)" "clean"
154-include ./MakeDepend
155#endif
156
157#--------------------------------------------------------------------------
158#  Target to clean
159#--------------------------------------------------------------------------
160
161clean:
162      @echo
163      @echo ===================================================
164      @echo   Clean ...
165      @echo ===================================================
166      $(RM) -rf $(DIR_PPSRC) $(DIR_PPSRC_2) $(DIR_LIB) $(DIR_OBJS) $(PROGS) 
167   
168# DO NOT DELETE THIS LINE - used by make depend
Note: See TracBrowser for help on using the repository browser.