1 | #!/bin/ksh |
---|
2 | # $Id$ |
---|
3 | ##set -vx |
---|
4 | ############################################################ |
---|
5 | # |
---|
6 | # Purpose : |
---|
7 | # This script aims to create create the AA_make file |
---|
8 | # in the WORK directory. |
---|
9 | # AA_make contains : |
---|
10 | # - compilation options speccific to NEMO |
---|
11 | # - compilation rules |
---|
12 | # - dependancies |
---|
13 | # Running the modipsl/util/ins_make command is needed AFTER |
---|
14 | # fait_AA_make. |
---|
15 | # |
---|
16 | # Method : |
---|
17 | # We use temporary files to perform the following steps : |
---|
18 | # 1- search all CPP keys in the code |
---|
19 | # 2- write compilation rules |
---|
20 | # 3- add compilation options add the beginning of AA_make |
---|
21 | # 4- search and write dependancies |
---|
22 | # 5- add some specific rules (links creation in the WORK) |
---|
23 | # |
---|
24 | ############################################################ |
---|
25 | #- |
---|
26 | echo "This script must be run from the ../modipsl/config/CONFIG_NAME directory" |
---|
27 | echo "" |
---|
28 | |
---|
29 | #- Save the previous BB_make file before its rebuild |
---|
30 | echo "Save the previous BB_make file before its rebuild" |
---|
31 | cp scripts/BB_make scripts/BB_make_save |
---|
32 | |
---|
33 | #- Start the BB_make rebuild step |
---|
34 | echo "Start the BB_make rebuild step" |
---|
35 | |
---|
36 | cd WORK |
---|
37 | pwd |
---|
38 | |
---|
39 | #- |
---|
40 | #- Search CPP keys --- |
---|
41 | liste_cle=$(egrep '^# *if[!( &]*def|^# *elif' *.[Fh] *.[Fh]90 2> /dev/null | grep key_ | sed 's/||/\ |
---|
42 | /' | sed 's/\&\&/\ |
---|
43 | /' | sed 's/^.*key_/key_/' | sed 's/ *[) ] *$//' | sort -u ) |
---|
44 | |
---|
45 | #- |
---|
46 | #- Write main compilation rules --- |
---|
47 | cat > tampon <<end |
---|
48 | |
---|
49 | .SUFFIXES: .f90 .F90 .F |
---|
50 | |
---|
51 | # Target |
---|
52 | all : diroce libioipsl key keyverif src_file_list libagrif \$(IOIPSL_LIB) \$(AGRIF_LIB) |
---|
53 | @echo -------------------------------------------- |
---|
54 | time gmake \$(EXEC_BIN) -j \$(NBPRC) |
---|
55 | @echo -------------------------------------------- |
---|
56 | @cp SRC_FILE_LIST.temp SRC_FILE_LIST |
---|
57 | @echo OPA model is OK |
---|
58 | |
---|
59 | # Cleaning objects, libraries and executables |
---|
60 | clean: |
---|
61 | ifeq (\$(AGRIF),use) |
---|
62 | -@(cd OPAFILES; ./efface) |
---|
63 | endif |
---|
64 | \$(RM) model.o \$(EXEC_BIN) |
---|
65 | \$(RM) \$(MODDIR)/oce_\$(NEMOLIB)/\$(COMP)/*.mod |
---|
66 | \$(RM) \$(MODEL_LIB)/*.o |
---|
67 | \$(RM) ../../../tmp/tmp_\$(NEMOLIB)/\$(COMP)/* |
---|
68 | @echo OPA model \(.o .mod libraries and executables are removed\) |
---|
69 | |
---|
70 | # Dependancies |
---|
71 | diroce: |
---|
72 | @if [ ! -d ../../../lib/oce_\$(NEMOLIB) ] ; then mkdir ../../../lib/oce_\$(NEMOLIB) ; fi |
---|
73 | @if [ ! -d ../../../tmp/tmp_\$(NEMOLIB) ] ; then mkdir ../../../tmp/tmp_\$(NEMOLIB) ; fi |
---|
74 | @if [ ! -d ../../../lib/oce_\$(NEMOLIB)/\$(COMP) ] ; then mkdir ../../../lib/oce_\$(NEMOLIB)/\$(COMP) ; fi |
---|
75 | @if [ ! -d ../../../tmp/tmp_\$(NEMOLIB)/\$(COMP) ] ; then mkdir ../../../tmp/tmp_\$(NEMOLIB)/\$(COMP) ; fi |
---|
76 | |
---|
77 | \$(EXEC_BIN) : \$(MODEL_LIB) agrif2model.o model.o |
---|
78 | ifeq (\$(AGRIF),use) |
---|
79 | \$(F_L) \$(L_X) -o \$(EXEC_BIN) model.o agrif2model.o \$(MODEL_LIB)/*.o \$(OASISMPI2_LIB) \$(IOIPSL_LIB) \$(AGRIF_LIB) \$(NCDF_LIB) \$(LIBMPI) \$(LIBMP) |
---|
80 | else |
---|
81 | \$(F_L) \$(L_X) -o \$(EXEC_BIN) model.o \$(MODEL_LIB)/*.o \$(OASISMPI2_LIB) \$(IOIPSL_LIB) \$(NCDF_LIB) \$(LIBMPI) \$(LIBMP) |
---|
82 | endif |
---|
83 | |
---|
84 | # Agrif library and conv |
---|
85 | libagrif : firstagrif mpiagrif |
---|
86 | ifeq (\$(AGRIF),use) |
---|
87 | @( if [ ! -d OPAFILES ]; then mkdir OPAFILES; fi ) |
---|
88 | @( if [ ! -d OPAFILES/AGRIF_INC ]; then mkdir OPAFILES/AGRIF_INC ; fi ) |
---|
89 | @( if [ ! -d OPAFILES/AGRIF_MODELFILES ]; then mkdir OPAFILES/AGRIF_MODELFILES ; fi ) |
---|
90 | @(cd ../../../modeles/AGRIF ; \$(M_K) -f Makefile P_P="\$(AGRIF_MPI)" ) |
---|
91 | @cp -rf ../../../modeles/AGRIF/agrif_opa.in OPAFILES/. |
---|
92 | @cp -rf ../../../modeles/AGRIF/conv OPAFILES/. |
---|
93 | @cp -rf ../../../modeles/AGRIF/efface OPAFILES/. |
---|
94 | endif |
---|
95 | |
---|
96 | # Agrif interface with NEMO |
---|
97 | agrif2model.o : |
---|
98 | ifeq (\$(AGRIF),use) |
---|
99 | @\$(P_C) \$(P_O) -IOPAFILES/AGRIF_INC \$*.F90 > OPAFILES/\$*.F90 |
---|
100 | @\$(F_C) \\ |
---|
101 | #-Q- aix -qsuffix=f=F90 \\ |
---|
102 | #-Q- ax_mono -qsuffix=f=F90 \\ |
---|
103 | #-Q- babel -qsuffix=f=F90 \\ |
---|
104 | #-Q- osxxlf -qsuffix=f=F90 \\ |
---|
105 | \$(P_P) \$(F_O) \\ |
---|
106 | #-Q- fjvpp -Z \$*.L \\ |
---|
107 | #-Q- sx8mercure -R2 \\ |
---|
108 | #-Q- sx8brodie -R2 \\ |
---|
109 | #-Q- sxdkrz -R2 \\ |
---|
110 | #-Q- eshpux -R2 \\ |
---|
111 | #-Q- aix -qsource \\ |
---|
112 | #-Q- ax_mono -qsource \\ |
---|
113 | #-Q- babel -qsource \\ |
---|
114 | OPAFILES/\$*.F90 || { mv \$(PREF).L \$(TMP) ; false ; exit ; } |
---|
115 | endif |
---|
116 | |
---|
117 | # IOIPSL library |
---|
118 | libioipsl : |
---|
119 | (cd ../../../modeles/IOIPSL/src ; \$(M_K) -f Makefile ) |
---|
120 | |
---|
121 | # Main program |
---|
122 | model.o : \$(MODEL_LIB) model.f90 |
---|
123 | @\$(F_C) \$(F_O) -c model.f90 |
---|
124 | |
---|
125 | # if the make script is stopped, one doesn't destroy library |
---|
126 | .PRECIOUS : \$(MODEL_LIB) |
---|
127 | #-Q- sxdkrz .PRECIOUS : \$(SXMODEL_LIB) |
---|
128 | #-Q- eshpux .PRECIOUS : \$(SXMODEL_LIB) |
---|
129 | |
---|
130 | # library dependancies |
---|
131 | \$(MODEL_LIB): \$(LIB_OBJ) |
---|
132 | @echo |
---|
133 | @echo The library is up-to-date |
---|
134 | @echo |
---|
135 | |
---|
136 | # Default rules |
---|
137 | .DEFAULTS: |
---|
138 | |
---|
139 | # rules for the .f90 files |
---|
140 | \$(MODEL_LIB)/%.o : %.f90 |
---|
141 | @\$(F_C) \$(P_P) \$(F_O) \\ |
---|
142 | #-Q- fjvpp -Z \$*.L \\ |
---|
143 | #-Q- sx8mercure -R2 \\ |
---|
144 | #-Q- sx8brodie -R2 \\ |
---|
145 | #-Q- sxdkrz -R2 \\ |
---|
146 | #-Q- eshpux -R2 \\ |
---|
147 | #-Q- aix -qsource \\ |
---|
148 | #-Q- ax_mono -qsource \\ |
---|
149 | #-Q- babel -qsource \\ |
---|
150 | \$*.f90 || { if [ -f \$(PREF)\$*.L ] ; then mv \$(PREF)\$*.L \$(TMP) ; fi ; false ; exit ; } |
---|
151 | @mv \$*.o \$(MODEL_LIB)/. |
---|
152 | @\$(RM) \$*.[f] |
---|
153 | @if [ -f \$*.mod ] ; then mv \$*.mod \$(MODDIR)/oce_\$(NEMOLIB)/\$(COMP) ; fi |
---|
154 | #-Q- aix @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
155 | #-Q- ax_mono @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
156 | #-Q- babel @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
157 | #-Q- linux @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
158 | #-Q- osxxlf @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
159 | @if [ -f \$(PREF)\$*.L ] ; then mv \$(PREF)\$*.L \$(TMP) ; fi |
---|
160 | |
---|
161 | # rules for the .F90 files |
---|
162 | \$(MODEL_LIB)/%.o : %.F90 |
---|
163 | ifeq (\$(AGRIF),use) |
---|
164 | @\$(P_C) \$(P_O) -IOPAFILES/AGRIF_INC \$*.F90 > OPAFILES/\$*.F90 |
---|
165 | @(cd OPAFILES ; ./conv agrif_opa.in -rm \\ |
---|
166 | #-Q- linux -SubloopScalar \\ |
---|
167 | #-Q- g95 -SubloopScalar \\ |
---|
168 | #-Q- f95 -SubloopScalar \\ |
---|
169 | #-Q- osf1 -SubloopScalar \\ |
---|
170 | -comdirin ./ -comdirout AGRIF_MODELFILES/. -convfile \$*.F90) |
---|
171 | -@mv -f OPAFILES/AGRIF_MODELFILES/\$*.F90 OPAFILES/\$*.F90 |
---|
172 | @\$(P_C) \$(P_O) -IOPAFILES/AGRIF_INC OPAFILES/\$*.F90 > OPAFILES/AGRIF_MODELFILES/\$*.F90 |
---|
173 | -@mv -f OPAFILES/AGRIF_MODELFILES/\$*.F90 OPAFILES/\$*.F90 |
---|
174 | @\$(F_C) \$(P_P) \$(F_O) \\ |
---|
175 | #-Q- fjvpp -Z \$*.L \\ |
---|
176 | #-Q- sx8mercure -R2 \\ |
---|
177 | #-Q- sx8brodie -R2 \\ |
---|
178 | #-Q- sxdkrz -R2 \\ |
---|
179 | #-Q- eshpux -R2 \\ |
---|
180 | #-Q- aix -qsource \\ |
---|
181 | #-Q- ax_mono -qsource \\ |
---|
182 | #-Q- babel -qsource \\ |
---|
183 | OPAFILES/\$*.F90 || { if [ -f \$(PREF)\$*.L ] ; then mv \$(PREF)\$*.L \$(TMP) ; fi ; false ; exit ; } |
---|
184 | else |
---|
185 | @\$(F_C) \$(P_P) \$(F_O) \\ |
---|
186 | #-Q- fjvpp -Z \$*.L \\ |
---|
187 | #-Q- sx8mercure -R2 \\ |
---|
188 | #-Q- sx8brodie -R2 \\ |
---|
189 | #-Q- sxdkrz -R2 \\ |
---|
190 | #-Q- eshpux -R2 \\ |
---|
191 | #-Q- aix -qsource \\ |
---|
192 | #-Q- ax_mono -qsource \\ |
---|
193 | #-Q- babel -qsource \\ |
---|
194 | \$*.F90 || { if [ -f \$(PREF)\$*.L ] ; then mv \$(PREF)\$*.L \$(TMP) ; fi ; false ; exit ; } |
---|
195 | endif |
---|
196 | @mv \$*.o \$(MODEL_LIB)/. |
---|
197 | @\$(RM) \$*.[f] |
---|
198 | @if [ -f \$*.mod ] ; then mv \$*.mod \$(MODDIR)/oce_\$(NEMOLIB)/\$(COMP) ; fi |
---|
199 | #-Q- aix @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
200 | #-Q- ax_mono @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
201 | #-Q- babel @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
202 | #-Q- linux @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
203 | #-Q- osxxlf @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
204 | @if [ -f \$(PREF)\$*.L ] ; then mv \$(PREF)\$*.L \$(TMP) ; fi |
---|
205 | |
---|
206 | # rules for the .F files |
---|
207 | \$(MODEL_LIB)/%.o : %.F |
---|
208 | @\$(F_C) \$(P_P) \$(F_F) \\ |
---|
209 | #-Q- fjvpp -Z \$*.L \\ |
---|
210 | #-Q- sx8mercure -R2 \\ |
---|
211 | #-Q- sx8brodie -R2 \\ |
---|
212 | #-Q- sxdkrz -R2 \\ |
---|
213 | #-Q- eshpux -R2 \\ |
---|
214 | #-Q- aix -qsource \\ |
---|
215 | #-Q- ax_mono -qsource \\ |
---|
216 | #-Q- babel -qsource \\ |
---|
217 | \$*.F || { if [ -f \$(PREF)\$*.L ] ; then mv \$(PREF)\$*.L \$(TMP) ; fi ; false ; exit ; } |
---|
218 | @mv \$*.o \$(MODEL_LIB)/. |
---|
219 | @\$(RM) \$*.[f] |
---|
220 | @if [ -f \$*.mod ] ; then mv \$*.mod \$(MODDIR)/oce_\$(NEMOLIB)/\$(COMP) ; fi |
---|
221 | #-Q- aix @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
222 | #-Q- ax_mono @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
223 | #-Q- babel @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
224 | #-Q- linux @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
225 | #-Q- osxxlf @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
226 | @if [ -f \$(PREF)\$*.L ] ; then mv \$(PREF)\$*.L \$(TMP) ; fi |
---|
227 | |
---|
228 | # rules for the library from the .f files |
---|
229 | \$(MODEL_LIB)/%.o : %.f |
---|
230 | @\$(F_C) \$(F_O) \\ |
---|
231 | #-Q- fjvpp -Z \$*.L \\ |
---|
232 | #-Q- sx8mercure -R2 \\ |
---|
233 | #-Q- sx8brodie -R2 \\ |
---|
234 | #-Q- sxdkrz -R2 \\ |
---|
235 | #-Q- eshpux -R2 \\ |
---|
236 | #-Q- aix -qsource \\ |
---|
237 | #-Q- ax_mono -qsource \\ |
---|
238 | #-Q- babel -qsource \\ |
---|
239 | \$*.f|| { if [ -f \$(PREF)\$*.L ] ; then mv \$*.L \$(TMP) ; fi ; false ; exit ; } |
---|
240 | @mv \$*.o \$(MODEL_LIB)/. |
---|
241 | #-Q- aix @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
242 | #-Q- ax_mono @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
243 | #-Q- babel @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
244 | #-Q- linux @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
245 | #-Q- osxxlf @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
246 | @if [ -f \$(PREF)\$*.L ] ; then mv \$*.L \$(TMP) ; fi |
---|
247 | |
---|
248 | end |
---|
249 | #- |
---|
250 | #- Compilation options --- |
---|
251 | exec 1> AA_make |
---|
252 | MAIN="model" |
---|
253 | echo '# some variables' |
---|
254 | echo 'TMP = ../../../tmp/tmp_$(NEMOLIB)/$(COMP)' |
---|
255 | echo '' |
---|
256 | echo '#WARNING : NEMO does NOT support fortran 95 signed zero behaviour when using intrinsec SIGN function' |
---|
257 | echo '# This doesnt happen whith Fortran 90 compilers but' |
---|
258 | echo '# Check your compilers option in consequence when using real F95 compilers' |
---|
259 | echo '' |
---|
260 | echo '#-Q- sx8mercure # Compiler options NEMO (CEA SX6-NEC) ' |
---|
261 | echo '#-Q- sx8mercure F_O = -f2003 nocbind noopt_ieee -size_t64 -dw -Wf\"-A dbl4\" -sx6 -C vopt -Wf"-P nh" -Wf',-pvctl noassume loopcnt=10000 -L transform' -I $(MODDIR) -I $(MODEL_LIB) -I $(NCDF_INC)' |
---|
262 | echo '#-Q- sx8mercure F_O = -f2003 nocbind noopt_ieee -size_t64 -dw -Wf\"-A dbl4\" -sx6 -ftrace -C vopt -Wf"-init stack=nan" -Wl"-f nan" -Wf"-P nh -O overlap" -Wf,-pvctl noassume loopcnt=10000 -L transform -I $(MODDIR) -I $(MODEL_LIB) -I $(NCDF_INC)' |
---|
263 | echo '#-Q- sx8mercure F_F = $(F_O) -f3' |
---|
264 | echo '#-Q- sx8mercure L_X = $(L_O) -ftrace' |
---|
265 | echo '#-Q- sx8brodie # Compiler options NEMO (CEA SX6-NEC) ' |
---|
266 | echo '#-Q- sx8brodie F_O = -f2003 nocbind noopt_ieee -dw -Wf\"-A idbl4\" -sx8 -C vopt -Wf"-init stack=nan" -Wl"-f nan" -Wf"-P nh -O overlap" -Wf,-pvctl noassume loopcnt=10000 -L transform -I $(MODDIR) -I $(MODEL_LIB) -I $(NCDF_INC)' |
---|
267 | echo '#-Q- sx8brodie F_F = $(F_O) -f3' |
---|
268 | echo '#-Q- sx8brodie L_X = $(L_O)' |
---|
269 | echo '#-Q- sxdkrz # Compiler options for NEMO (DKRZ SX6-NEC) ' |
---|
270 | echo '#-Q- sxdkrz F_O = -f2003 nocbind noopt_ieee -ew -sx6 -ftrace -C vopt -Wf"-init stack=nan" -Wl"-f nan" -Wf"-P nh -O overlap" -Wf"-pvctl noassume loopcnt=10000" -L transform -I $(MODDIR) -I $(MODEL_LIB) -I $(NCDF_INC)' |
---|
271 | echo '#-Q- sxdkrz F_F = $(F_O) -f3' |
---|
272 | echo '#-Q- sxdkrz L_X = $(L_O) -ftrace' |
---|
273 | echo '#-Q- eshpux # Compiler options for NEMO (Earth Simulator)' |
---|
274 | echo '#-Q- eshpux # for super perfs!' |
---|
275 | echo '#-Q- eshpux # F_O = -f2003 nocbind noopt_ieee $(FTRACE) -pi nest=5 line=10000 expin=Fmpplib.F -Wf,-A idbl4 -C hopt -Wf"-P nh -O overlap" -Wf,-pvctl noassume loopcnt=10000 -L transform -I $(MODDIR) -I $(MODEL_LIB) -I $(NCDF_INC)' |
---|
276 | echo '#-Q- eshpux # regular options!' |
---|
277 | echo '#-Q- eshpux F_O = -f2003 nocbind noopt_ieee $(FTRACE) -Wf,-A idbl4 -C vopt -P stack -Wf"-P nh -O overlap" -Wf,-pvctl noassume loopcnt=10000 -L transform -Wf,-pvctl nomsg -Wf"-O nomsg" -I $(MODDIR) -I $(MODEL_LIB) -I $(NCDF_INC)' |
---|
278 | echo '#-Q- eshpux F_F = $(F_O) -f3' |
---|
279 | echo '#-Q- eshpux L_X = $(L_O)' |
---|
280 | echo '#-Q- linux # Compiler options for NEMO (pgf version)' |
---|
281 | echo '#-Q- linux F_O = -Mlist -O3 -byteswapio -r8 -I $(MODDIR) -I$(MODEL_LIB) -I $(NCDF_INC)' |
---|
282 | echo '#-Q- linux F_F = $(F_O) -Mextend' |
---|
283 | echo '#-Q- linux L_X = -r8 -O3' |
---|
284 | echo '#-Q- lxiv7 # Compiler options for NEMO (ifc version)' |
---|
285 | echo '#-Q- lxiv7 F_O = -O3 -r8 -I $(MODDIR) -I$(MODEL_LIB) -I $(NCDF_INC)' |
---|
286 | echo '#-Q- lxiv7 F_F = $(F_O) -extend_source ' |
---|
287 | echo '#-Q- lxiv7 L_X = -r8 -O3' |
---|
288 | echo '#-Q- lxiv8 # Compiler options for NEMO (ifort version)' |
---|
289 | echo '#-Q- lxiv8 F_O = -O3 -r8 -I $(MODDIR) -I$(MODEL_LIB) -I $(NCDF_INC)' |
---|
290 | echo '#-Q- lxiv8 F_F = $(F_O) -extend_source ' |
---|
291 | echo '#-Q- lxiv8 L_X = -r8 -O3' |
---|
292 | echo '#-Q- g95 # Compiler options for NEMO (g95 version)' |
---|
293 | echo '#-Q- g95 F_O = -O3 -fno-second-underscore -r8 -funroll-all-loops -I $(MODDIR) -I $(MODEL_LIB) -I $(NCDF_INC)' |
---|
294 | echo '#-Q- g95 F_F = $(F_O)'-ffixed-form -ffixed-line-length-132 |
---|
295 | echo '#-Q- g95 L_X = -r8 -O3' |
---|
296 | echo '#-Q- gfortran # Compiler options for NEMO (gfortran version)' |
---|
297 | echo '#-Q- gfortran F_O = -fno-second-underscore -fdefault-real-8 -funroll-all-loops -I $(MODDIR) -I $(MODEL_LIB) -I $(NCDF_INC)' |
---|
298 | echo '#-Q- gfortran F_F = $(F_O)-ffixed-form -ffixed-line-length-132' |
---|
299 | echo '#-Q- gfortran L_X = -fdefault-real-8' |
---|
300 | echo '#-Q- aix # Compiler options for NEMO (aix version)' |
---|
301 | echo '#-Q- aix F_O = -O3 -qsave -qrealsize=8 -qsuffix=f=f90 -qsuffix=cpp=F90 -qextname -qsource -q64 -qlargepage -qmaxmem=-1 -I $(MODDIR) -I $(MODEL_LIB) -I $(NCDF_INC)' |
---|
302 | echo '#-Q- aix F_F = -O3 -qsave -qrealsize=8 -qsuffix=f=f -qsuffix=cpp=F -qfixed=132 -qextname -qsource -q64 -qlargepage -qmaxmem=-1 -I $(MODDIR) -I $(MODEL_LIB) -I $(NCDF_INC)' |
---|
303 | echo '#-Q- aix L_O = $(F_P) -q64 -O3' |
---|
304 | echo '#-Q- aix L_X = $(L_O)' |
---|
305 | echo '#-Q- ax_mono # Compiler options for NEMO (aix version)' |
---|
306 | echo '#-Q- ax_mono F_O = -O3 -qsave -qrealsize=8 -qsuffix=f=f90 -qsuffix=cpp=F90 -qextname -qsource -q64 -qlargepage -qmaxmem=-1 -I $(MODDIR) -I $(MODEL_LIB) -I $(NCDF_INC)' |
---|
307 | echo '#-Q- ax_mono F_F = -O3 -qsave -qrealsize=8 -qsuffix=f=f -qsuffix=cpp=F -qfixed=132 -qextname -qsource -q64 -qlargepage -qmaxmem=-1 -I $(MODDIR) -I $(MODEL_LIB) -I $(NCDF_INC)' |
---|
308 | echo '#-Q- ax_mono L_O = $(F_P) -q64 -O3' |
---|
309 | echo '#-Q- ax_mono L_X = $(L_O)' |
---|
310 | echo '#-Q- babel # Compiler options for NEMO (blue gene version)' |
---|
311 | echo '#-Q- babel F_O = -O3 -qsave -qrealsize=8 -qsuffix=f=f90 -qsuffix=cpp=F90 -qsource -qextname=flush -qlargepage -qmaxmem=-1 -I $(MODDIR) -I $(MODEL_LIB) -I $(NCDF_INC)' |
---|
312 | echo '#-Q- babel F_F = -O3 -qsave -qrealsize=8 -qsuffix=f=f -qsuffix=cpp=F -qfixed=132 -qsource -qextname=flush -qlargepage -qmaxmem=-1 -I $(MODDIR) -I $(MODEL_LIB) -I $(NCDF_INC)' |
---|
313 | echo '#-Q- babel L_X = $(L_O)' |
---|
314 | echo '#-Q- osxxlf # Compiler options for NEMO (osxxlf version)' |
---|
315 | echo '#-Q- osxxlf F_O = -O3 -qsave -qrealsize=8 -qsuffix=f=f90 -qsuffix=cpp=F90 -qsource -qextname -qstrict -qmaxmem=-1 -I $(MODDIR) -I $(MODEL_LIB) -I $(NCDF_INC)' |
---|
316 | echo '#-Q- osxxlf F_F = -O3 -qsave -qrealsize=8 -qsuffix=f=f -qsuffix=cpp=F -qfixed=132 -qsource -qextname -qstrict -qmaxmem=-1 -I $(MODDIR) -I $(MODEL_LIB) -I $(NCDF_INC)' |
---|
317 | echo '#-Q- osxxlf L_X = -qrealsize=8 -O3' |
---|
318 | |
---|
319 | |
---|
320 | echo 'PREF=' |
---|
321 | echo '#-Q- sx8mercure PREF=i.' |
---|
322 | echo '#-Q- sx8brodie PREF=i.' |
---|
323 | echo '#-Q- sxdkrz PREF=i.' |
---|
324 | echo '#-Q- eshpux PREF=i.' |
---|
325 | echo '' |
---|
326 | echo '#Run type: mon, mpi or omp ' |
---|
327 | echo 'ifeq ($(COMP),mon)' |
---|
328 | echo '#-Q- osxxlf override F_C = xlf90 -c' |
---|
329 | echo '#-Q- osxxlf override F_L = xlf90' |
---|
330 | echo 'endif' |
---|
331 | echo '' |
---|
332 | echo 'ifeq ($(COMP),memo)' |
---|
333 | echo '#-Q- sx8brodie F_O := $(F_O) -P static' |
---|
334 | echo '#-Q- ax_mono F_O := $(F_O) -qnosave' |
---|
335 | echo '#-Q- osxxlf F_O := $(F_O) -qnosave' |
---|
336 | echo 'endif' |
---|
337 | echo '' |
---|
338 | echo 'ifeq ($(COMP),mpi)' |
---|
339 | echo 'P_P := $(P_P) key_mpp_mpi' |
---|
340 | echo '#-Q- osxxlf override F_C = mpif90 -c' |
---|
341 | echo '#-Q- osxxlf override F_L = mpif90' |
---|
342 | echo 'endif' |
---|
343 | echo '' |
---|
344 | echo 'ifeq ($(COMP),omp)' |
---|
345 | echo 'P_P := $(P_P) key_mpp_omp' |
---|
346 | echo '#-Q- sx8brodie F_O := $(F_O) -P auto' |
---|
347 | echo '#-Q- sx8brodie override F_F = $(F_O) ' |
---|
348 | echo '#-Q- sx8brodie L_X := $(L_X) -P auto' |
---|
349 | echo 'endif' |
---|
350 | echo '' |
---|
351 | echo '# add suffix to P_P' |
---|
352 | echo 'P_P := $(P_P:%=$(prefix)%)' |
---|
353 | echo '' |
---|
354 | echo '# Some tests to define variables related to Agrif compilation' |
---|
355 | echo '# Please do not change ' |
---|
356 | echo 'ifneq (,$(findstring key_agrif,$(P_P)))' |
---|
357 | echo 'AGRIF=use' |
---|
358 | echo 'else' |
---|
359 | echo 'AGRIF=notuse' |
---|
360 | echo 'AGRIF_LIB=' |
---|
361 | echo 'endif' |
---|
362 | echo 'ifneq (,$(findstring key_mpp_mpi,$(P_P)))' |
---|
363 | echo 'AGRIF_MPI=-DAGRIF_MPI' |
---|
364 | echo 'else' |
---|
365 | echo 'AGRIF_MPI=' |
---|
366 | echo 'endif' |
---|
367 | |
---|
368 | echo '' |
---|
369 | # Write the cpp key list with one key by line |
---|
370 | echo 'KEY_LIST = \c' |
---|
371 | for i in ${liste_cle} |
---|
372 | do |
---|
373 | echo "\\" |
---|
374 | echo " $i \c" |
---|
375 | done |
---|
376 | |
---|
377 | echo '' |
---|
378 | echo '# .o file list in the library' |
---|
379 | echo 'LIB_OBJ = \c' |
---|
380 | # |
---|
381 | # find all .f in the current directory |
---|
382 | # build object files list LIB_OBJ |
---|
383 | # one dependancy by line |
---|
384 | |
---|
385 | for i in `ls *.f 2> /dev/null` |
---|
386 | do |
---|
387 | bn=`basename $i .f` |
---|
388 | echo "\\" |
---|
389 | echo " \$(MODEL_LIB)/$bn.o\c" |
---|
390 | done |
---|
391 | |
---|
392 | # find all .f90 in the current directory |
---|
393 | # build object files list LIB_OBJ |
---|
394 | # one dependancy by line |
---|
395 | |
---|
396 | for i in `ls *.f90 ` |
---|
397 | do |
---|
398 | bn=`basename $i .f90` |
---|
399 | if [ "${bn}" != "${MAIN}" ] |
---|
400 | then |
---|
401 | if [ "${bn}" != "agrif2model" ] |
---|
402 | then |
---|
403 | echo "\\" |
---|
404 | echo " \$(MODEL_LIB)/$bn.o\c" |
---|
405 | fi |
---|
406 | fi |
---|
407 | done |
---|
408 | |
---|
409 | # find all .F90 in the current directory |
---|
410 | # build object files list LIB_OBJ |
---|
411 | # one dependancy by line |
---|
412 | |
---|
413 | for i in `ls *.F90 ` |
---|
414 | do |
---|
415 | bn=`basename $i .F90` |
---|
416 | if [ "${bn}" != "${MAIN}" ] |
---|
417 | then |
---|
418 | if [ "${bn}" != "agrif2model" ] |
---|
419 | then |
---|
420 | echo "\\" |
---|
421 | echo " \$(MODEL_LIB)/$bn.o\c" |
---|
422 | fi |
---|
423 | fi |
---|
424 | done |
---|
425 | |
---|
426 | # find all .F in the current directory |
---|
427 | # build object files list LIB_OBJ |
---|
428 | # one dependancy by line |
---|
429 | |
---|
430 | for i in `ls *.F 2> /dev/null ` |
---|
431 | do |
---|
432 | bn=`basename $i .F` |
---|
433 | echo "\\" |
---|
434 | echo " \$(MODEL_LIB)/$bn.o\c" |
---|
435 | done |
---|
436 | |
---|
437 | echo "" |
---|
438 | |
---|
439 | cat tampon |
---|
440 | rm tampon |
---|
441 | #- |
---|
442 | #- Write all dependancies --- |
---|
443 | |
---|
444 | for fic in `ls *.f90 *.F90 *.F 2> /dev/null ` |
---|
445 | do |
---|
446 | if [ "${fic}" != "agrif2model.F90" ] |
---|
447 | then |
---|
448 | if [ "${fic}" != "${MAIN}.[Ff]" ] |
---|
449 | then |
---|
450 | i=0 |
---|
451 | j=0 |
---|
452 | dep="" |
---|
453 | inc="" |
---|
454 | inc2="" |
---|
455 | inc3="" |
---|
456 | luse0="" |
---|
457 | luse1="" |
---|
458 | luse2="" |
---|
459 | luse3="" |
---|
460 | key="" |
---|
461 | #- search include files (old ice model form, should it be suppressed ?) |
---|
462 | for inc in `sed -n 's/^[ ]*[iI][nN][cC][lL][uU][dD][eE][ ]*\(['\''"]\)\([^'\''"]*\)\1.*/\2/p' $fic | sort -u` |
---|
463 | do |
---|
464 | dep="$dep\n$inc" |
---|
465 | done |
---|
466 | |
---|
467 | #- take into account CPP dependancies keys only (par_trc_trp example) |
---|
468 | for key in `sed -n 's/^#[ eElL]*[iF][fF][ ]*[dD][eE][fF][iI][nN][eE][dD][ ]*//p' $fic | sort -u` |
---|
469 | do |
---|
470 | j=1 |
---|
471 | done |
---|
472 | |
---|
473 | #- search include files on 3 levels |
---|
474 | for inc in `sed -n 's/^#[ ]*[iI][nN][cC][lL][uU][dD][eE][ ]*\(['\''"]\)\([^'\''"]*\)\1.*/\2/p' $fic | sort -u` |
---|
475 | do |
---|
476 | j=1 |
---|
477 | dep="$dep\n$inc" |
---|
478 | for inc2 in `sed -n 's/^#[ ]*[iI][nN][cC][lL][uU][dD][eE][ ]*\(['\''"]\)\([^'\''"]*\)\1.*/\2/p' $inc | sort -u` |
---|
479 | do |
---|
480 | dep="$dep\n$inc2" |
---|
481 | #- search include in include (third level !!!) |
---|
482 | for inc3 in `sed -n 's/^#[ ]*[iI][nN][cC][lL][uU][dD][eE][ ]*\(['\''"]\)\([^'\''"]*\)\1.*/\2/p' $inc2 | sort -u` |
---|
483 | do |
---|
484 | dep="$dep\n$inc3" |
---|
485 | done |
---|
486 | done |
---|
487 | done |
---|
488 | |
---|
489 | #- search USE in include files |
---|
490 | for inc in `sed -n 's/^#[ ]*[iI][nN][cC][lL][uU][dD][eE][ ]*\(['\''"]\)\([^'\''"]*\)\1.*/\2/p' $fic | sort -u` |
---|
491 | do |
---|
492 | for fuse0 in `sed -n 's/^[ ]*[uU][sS][eE] [ ]*\([^!,;]*\).*/\1/p' $inc | sort -u` |
---|
493 | do |
---|
494 | [ -f $fuse0.[hfF]90 ] || continue |
---|
495 | lfuse0=$fuse0.f90 |
---|
496 | [ -f $fuse0.F90 ] && lfuse0=$fuse0.F90 |
---|
497 | luse0="$luse0\n$lfuse0\n\$(MODEL_LIB)/$fuse0.o" |
---|
498 | done |
---|
499 | |
---|
500 | #- search USE in files included in included files and add to luse0 |
---|
501 | |
---|
502 | for inc2 in `sed -n 's/^#[ ]*[iI][nN][cC][lL][uU][dD][eE][ ]*\(['\''"]\)\([^'\''"]*\)\1.*/\2/p' $inc | sort -u` |
---|
503 | do |
---|
504 | for fuse0 in `sed -n 's/^[ ]*[uU][sS][eE] [ ]*\([^!,;]*\).*/\1/p' $inc2 | sort -u` |
---|
505 | do |
---|
506 | [ -f $fuse0.[hfF]90 ] || continue |
---|
507 | lfuse0=$fuse0.f90 |
---|
508 | [ -f $fuse0.F90 ] && lfuse0=$fuse0.F90 |
---|
509 | luse0="$luse0\n$lfuse0\n\$(MODEL_LIB)/$fuse0.o" |
---|
510 | done |
---|
511 | done |
---|
512 | done |
---|
513 | |
---|
514 | #- search USE (and USE of USE and so on three levels) |
---|
515 | for fuse1 in `sed -n 's/^[ ]*[uU][sS][eE] [ ]*\([^!,;]*\).*/\1/p' $fic | sort -u` |
---|
516 | do |
---|
517 | [ -f $fuse1.[hfF]90 ] || continue |
---|
518 | lfuse1=$fuse1.f90 |
---|
519 | [ -f $fuse1.F90 ] && lfuse1=$fuse1.F90 |
---|
520 | luse1="$luse1\n$lfuse1\n\$(MODEL_LIB)/$fuse1.o" |
---|
521 | for fuse2 in `sed -n 's/^[ ]*[uU][sS][eE] [ ]*\([^!,;]*\).*/\1/p' $lfuse1 | sort -u` |
---|
522 | do |
---|
523 | [ -f $fuse2.[hfF]90 ] || continue |
---|
524 | lfuse2=$fuse2.f90 |
---|
525 | [ -f $fuse2.F90 ] && lfuse2=$fuse2.F90 |
---|
526 | luse2="$luse2\n$lfuse2\n\$(MODEL_LIB)/$fuse2.o" |
---|
527 | # on cherche les USE dans le fichier deja USE (3eme niveau! balaise!) |
---|
528 | for fuse3 in `sed -n 's/^#[ ]*[uU][sS][eE] [ ]*\([^!,;]*\).*/\1/p' $lfuse2 | sort -u` |
---|
529 | do |
---|
530 | [ -f $fuse3.[hfF]90 ] || continue |
---|
531 | luse3="$luse3\n$lfuse3\n\$(MODEL_LIB)($fuse3.o)" |
---|
532 | done |
---|
533 | done |
---|
534 | done |
---|
535 | #- |
---|
536 | #- dep contains all dependancies |
---|
537 | echo "\$(MODEL_LIB)/`echo $fic|awk -F. '{print $1}'`.o : \c" |
---|
538 | for depele in `echo $luse3 | sort -u` `echo $luse2 | sort -u` `echo $luse1 | sort -u` `echo $luse0 | sort -u` `echo $dep | sort -u` |
---|
539 | do |
---|
540 | echo "\\" |
---|
541 | echo " $depele \c" |
---|
542 | let i=i+1 # pour signaler le premier |
---|
543 | done |
---|
544 | |
---|
545 | #- |
---|
546 | #- add dependancies with IOIPSL library (if source files contains IOIPSL) |
---|
547 | grep -i 'use *ioipsl' ${fic} >/dev/null && ( echo "\\" ; echo " \$(IOIPSL_LIB) \c") |
---|
548 | |
---|
549 | #- |
---|
550 | #- add dependancies with IOIPSL library (if source files contains Agrif_*) |
---|
551 | grep -i 'use Agrif_*' ${fic} >/dev/null && ( echo "\\" ; echo " \$(AGRIF_LIB) \c") |
---|
552 | |
---|
553 | #- |
---|
554 | #- add dependancies with KEY_CPP (if source file includes cpp keys) |
---|
555 | if [ ${j} != "0" ] |
---|
556 | then |
---|
557 | echo "\\" |
---|
558 | echo " KEY_CPP \c" |
---|
559 | fi |
---|
560 | #- |
---|
561 | #- end with the file itself |
---|
562 | echo "\\" |
---|
563 | echo " $fic" |
---|
564 | fi |
---|
565 | fi |
---|
566 | echo $fic done >/dev/tty |
---|
567 | done |
---|
568 | #- |
---|
569 | #- Write some special rules --- |
---|
570 | echo '# agrif previous use' |
---|
571 | echo "firstagrif:" |
---|
572 | echo "ifeq (\$(AGRIF),use)" |
---|
573 | echo ' @if [ -z "`cat KEY_CPP | grep key_agrif`" ]; then $(RM) model.o $(MODDIR)/oce_$(NEMOLIB)/$(COMP)/*.mod $(SXMODEL_LIB); fi' |
---|
574 | echo "else" |
---|
575 | echo ' @if [ -n "`cat KEY_CPP | grep key_agrif`" ]; then $(RM) -r OPAFILES model.o $(MODDIR)/oce_$(NEMOLIB)/$(COMP)/*.mod $(SXMODEL_LIB); fi' |
---|
576 | echo "endif" |
---|
577 | #- |
---|
578 | echo '#- RB : this rule is a pretty miserable trick to be able to re-compile NEMP-AGRIF-mono after NEMO-AGRIF-mpp' |
---|
579 | echo '#- I guess the good correction should be in AGRIF/LIB/toamr.c for the conv, to remove useless allocation declarations in AGRIF_INC' |
---|
580 | echo '# recompile all in this case' |
---|
581 | echo "mpiagrif:" |
---|
582 | echo "ifeq (\$(AGRIF),use)" |
---|
583 | echo "ifeq (,\$(AGRIF_MPI))" |
---|
584 | echo ' @if [ -n "`cat KEY_CPP | grep key_mpp_mpi`" ]; then $(RM) -r OPAFILES model.o $(MODDIR)/oce_$(NEMOLIB)/$(COMP)/*.mod $(SXMODEL_LIB); fi' |
---|
585 | echo "endif" |
---|
586 | echo "endif" |
---|
587 | #- |
---|
588 | echo '# key changing control' |
---|
589 | echo "key: " |
---|
590 | echo " @echo CHANGE of CPP KEYS yes/no ?" |
---|
591 | echo " -@if [ \"\`cat KEY_CPP\`\" != \"\$(P_P:\$(prefix)%=%)\" ] ; then \\" |
---|
592 | echo " echo CPP options changed ; echo \"\$(P_P:\$(prefix)%=%)\" > KEY_CPP ; fi " |
---|
593 | #- |
---|
594 | echo '# check key values' |
---|
595 | echo "keyverif:" |
---|
596 | echo ' @echo CHECKING KEY' |
---|
597 | echo ' @echo KEY USED : ' |
---|
598 | echo ' @for v in ` echo $(P_P:$(prefix)%=%) ` ; \' |
---|
599 | echo ' do \' |
---|
600 | echo ' echo $$v ;\' |
---|
601 | echo ' w=`echo $$v | cut -c1-3` ; \' |
---|
602 | echo ' if [ $$w = `echo "key"` ] ; then \' |
---|
603 | echo ' r=n ; \' |
---|
604 | echo ' echo " $(KEY_LIST) " | (grep $$v >/dev/null 2>&1) || r=o ; \' |
---|
605 | echo ' if [ $$r != "n" ] ; then \' |
---|
606 | echo ' echo "UNKNOWN KEY" ;\' |
---|
607 | echo ' false ; \' |
---|
608 | echo ' exit ; \' |
---|
609 | echo ' fi \' |
---|
610 | echo ' fi \' |
---|
611 | echo ' done' |
---|
612 | echo '# Checking the number of routines' |
---|
613 | echo "src_file_list: EMPTY" |
---|
614 | echo ' @echo CHECKING THE NUMBER AND NAMES OF SOURCE FILES ' |
---|
615 | echo ' @$(RM) `ls | fgrep -v -f .patron` ' |
---|
616 | echo ' @check=`grep OPA_SRC .config` ; \' |
---|
617 | echo ' if [ -n "$$check" ] ; then \' |
---|
618 | echo ' echo " use OPA_SRC files" ; \' |
---|
619 | echo ' ln -sf ../../../modeles/NEMO/OPA_SRC/*.[Ffh]90 . ; \' |
---|
620 | echo ' ln -sf ../../../modeles/NEMO/OPA_SRC/DYN/*.[Ffh]90 . ; \' |
---|
621 | echo ' ln -sf ../../../modeles/NEMO/OPA_SRC/TRA/*.[Ffh]90 . ; \' |
---|
622 | echo ' ln -sf ../../../modeles/NEMO/OPA_SRC/TRD/*.[Ffh]90 . ; \' |
---|
623 | echo ' ln -sf ../../../modeles/NEMO/OPA_SRC/DIA/*.[Ffh]90 . ; \' |
---|
624 | echo ' ln -sf ../../../modeles/NEMO/OPA_SRC/DOM/*.[Ffh]90 . ; \' |
---|
625 | echo ' ln -sf ../../../modeles/NEMO/OPA_SRC/OBC/*.[Ffh]90 . ; \' |
---|
626 | echo ' ln -sf ../../../modeles/NEMO/OPA_SRC/BDY/*.[Ffh]90 . ; \' |
---|
627 | echo ' ln -sf ../../../modeles/NEMO/OPA_SRC/FLO/*.[Ffh]90 . ; \' |
---|
628 | echo ' ln -sf ../../../modeles/NEMO/OPA_SRC/LDF/*.[Ffh]90 . ; \' |
---|
629 | echo ' ln -sf ../../../modeles/NEMO/OPA_SRC/ZDF/*.[Ffh]90 . ; \' |
---|
630 | echo ' ln -sf ../../../modeles/NEMO/OPA_SRC/SOL/*.[Ffh]90 . ; \' |
---|
631 | echo ' ln -sf ../../../modeles/NEMO/OPA_SRC/DTA/*.[Ffh]90 . ; \' |
---|
632 | echo ' ln -sf ../../../modeles/NEMO/OPA_SRC/SBC/*.[Ffh]90 . ; \' |
---|
633 | echo ' ln -sf ../../../modeles/NEMO/OPA_SRC/IOM/*.[Ffh]90 . ; \' |
---|
634 | echo ' fi ' |
---|
635 | echo ' @check=`grep LIM_SRC_2 .config` ; \' |
---|
636 | echo ' if [ -n "$$check" ] ; then \' |
---|
637 | echo ' echo " use LIM_SRC_2 files" ; \' |
---|
638 | echo ' ln -sf ../../../modeles/NEMO/LIM_SRC_2/*.[Ffh]90 . ; \' |
---|
639 | echo ' fi ' |
---|
640 | echo ' @check=`grep LIM_SRC_3 .config` ; \' |
---|
641 | echo ' if [ -n "$$check" ] ; then \' |
---|
642 | echo ' echo " use LIM_SRC_3 files" ; \' |
---|
643 | echo ' ln -sf ../../../modeles/NEMO/LIM_SRC_3/*.[Ffh]90 . ; \' |
---|
644 | echo ' fi ' |
---|
645 | echo ' @check=`grep NST_SRC .config` ; \' |
---|
646 | echo ' if [ -n "$$check" ] ; then \' |
---|
647 | echo ' echo " use NST_SRC files" ; \' |
---|
648 | echo ' \$(RM) agrif_opa_interp.F90 ; \' |
---|
649 | echo ' \$(RM) agrif_opa_sponge.F90 ; \' |
---|
650 | echo ' \$(RM) agrif_opa_update.F90 ; \' |
---|
651 | echo ' ln -sf ../../../modeles/NEMO/NST_SRC/*.[Ffh]90 . ; \' |
---|
652 | echo ' fi ' |
---|
653 | echo ' @check=`grep C1D_SRC .config` ; \' |
---|
654 | echo ' if [ -n "$$check" ] ; then \' |
---|
655 | echo ' echo " use C1D_SRC files" ; \' |
---|
656 | echo ' ln -sf ../../../modeles/NEMO/C1D_SRC/*.[Ffh]90 . ; \' |
---|
657 | echo ' fi ' |
---|
658 | echo ' @check=`grep TOP_SRC .config` ; \' |
---|
659 | echo ' if [ -n "$$check" ] ; then \' |
---|
660 | echo ' echo " use TOP_SRC files" ; \' |
---|
661 | echo ' \$(RM) trcstp.F90 ; \' |
---|
662 | echo ' \$(RM) sms.F90 ; \' |
---|
663 | echo ' \$(RM) initrc.F90 ; \' |
---|
664 | echo ' ln -sf ../../../modeles/NEMO/TOP_SRC/*.[Ffh]90 . ; \' |
---|
665 | echo ' ln -sf ../../../modeles/NEMO/TOP_SRC/TRP/*.[Ffh]90 . ; \' |
---|
666 | echo ' ln -sf ../../../modeles/NEMO/TOP_SRC/PISCES/*.[Ffh]90 . ; \' |
---|
667 | echo ' ln -sf ../../../modeles/NEMO/TOP_SRC/LOBSTER/*.[Ffh]90 . ; \' |
---|
668 | echo ' ln -sf ../../../modeles/NEMO/TOP_SRC/CFC/*.[Ffh]90 . ; \' |
---|
669 | echo ' ln -sf ../../../modeles/NEMO/TOP_SRC/C14b/*.[Ffh]90 . ; \' |
---|
670 | echo ' ln -sf ../../../modeles/NEMO/TOP_SRC/MY_TRC/*.[Ffh]90 . ; \' |
---|
671 | echo ' ln -sf ../../../modeles/NEMO/TOP_SRC/DUMMY/*.[Ffh]90 . ; \' |
---|
672 | echo ' fi ' |
---|
673 | echo ' @check=`grep OFF_SRC .config` ; \' |
---|
674 | echo ' if [ -n "$$check" ] ; then \' |
---|
675 | echo ' echo " use OFF_SRC files" ; \' |
---|
676 | echo ' ln -sf ../../../modeles/NEMO/OFF_SRC/*.[Ffh]90 . ; \' |
---|
677 | echo ' ln -sf ../../../modeles/NEMO/OFF_SRC/*/*.[Ffh]90 . ; \' |
---|
678 | echo ' fi ' |
---|
679 | echo ' ' |
---|
680 | echo ' @mn=`awk '"'"'{ print $$1 }'"'"' .config ` ; \' |
---|
681 | echo ' myrep=../../../config/$$mn/MY_SRC ; \' |
---|
682 | echo ' echo "*** Dealing with my modified source code, located in" $$myrep ; \' |
---|
683 | echo ' for i in `ls $$myrep` ; do \' |
---|
684 | echo ' [ -f $$i ] && \$(RM) $$i ;\' |
---|
685 | echo ' done ; \' |
---|
686 | echo ' myrep_list=`(cd $$myrep ; ls *.[Ffh]90 *.[Ffh] *.mk)` ; \' |
---|
687 | echo ' if [ -n "$$myrep_list" ] ; then \' |
---|
688 | echo ' for F in $$myrep_list; do \' |
---|
689 | echo ' echo "---> Reconstruct link to MY_SRC/$$F" ; \' |
---|
690 | echo ' ln -sf $$myrep/$$F . ; \' |
---|
691 | echo ' done ; \' |
---|
692 | echo ' fi ' |
---|
693 | echo ' ' |
---|
694 | echo ' @\$(RM) tmplist' |
---|
695 | echo ' @ls -1 | fgrep -v -f .patron >tmplist' |
---|
696 | echo ' @cmp tmplist SRC_FILE_LIST.temp || { echo some routines have been added or suppressed ; \' |
---|
697 | echo ' sdiff -s tmplist SRC_FILE_LIST.temp ; cp tmplist SRC_FILE_LIST.temp ; \' |
---|
698 | echo ' \$(RM) model.o \$(MODEL_LIB)/*.o \$(EXEC_BIN) ; \' |
---|
699 | echo ' echo "Rebuilding the AA_make files" ; \' |
---|
700 | echo ' cd .. ; ../NVTK/fait_AA_make ; echo " " ; \' |
---|
701 | echo ' echo "THE ins_make COMMAND in modipsl/util MUST BE RERUN PLEASE DO SO BEFORE gmake" ; \' |
---|
702 | echo ' echo "========================================== " ; \' |
---|
703 | echo ' ../../util/ins_make -w \$(NEMOLIB) ; echo " " ; false ; exit ; }' |
---|
704 | echo "EMPTY: " |
---|
705 | exec > /dev/null |
---|
706 | |
---|