1 | include $(DOMHOME)/HOSTS/$(DOM_HOSTTYPE)/makefile.h 2 | 3 | # 4 | # Version and outpath 5 | # ------------------- 6 | # 7 | 8 | HOST = $(DOMHOME)/HOSTS/$(DOM_HOSTTYPE) 9 | OUT = $(HOST) 10 | 11 | # 12 | # Remove .f files? (yes/no) 13 | # ----------------- 14 | # 15 | 16 | CLEANf = yes 17 | 18 | 19 | # 20 | # Sources directories 21 | # ------------------- 22 | # 23 | 24 | FUNC = $(DOMHOME)/SOURCES/FUNCTIONS 25 | INOUT = $(DOMHOME)/SOURCES/INOUT 26 | MAIN = $(DOMHOME)/SOURCES/MAIN 27 | MASTR = $(DOMHOME)/SOURCES/MAIN/MASTER 28 | MODEL = $(DOMHOME)/SOURCES/MODEL 29 | MODIR = $(DOMHOME)/SOURCES/MODULES 30 | QUAD = $(DOMHOME)/SOURCES/QUADRATURE 31 | SCHM = $(DOMHOME)/SOURCES/SCHEMES 32 | SLAVE = $(DOMHOME)/SOURCES/MAIN/SLAVE 33 | 34 | INCFILE = $(HOST)/dom.inc 35 | 36 | # 37 | # Suffixes 38 | # -------- 39 | 40 | .SUFFIXES: 41 | .SUFFIXES:.o .F .HH .h 42 | 43 | # 44 | # Executable files 45 | # ---------------- 46 | # 47 | 48 | DOMEXEC = $(OUT)/mpiprissma_$(DOM_VERSION).e_$(DOM_HOSTTYPE) 49 | 50 | # 51 | # Modules 52 | # ------- 53 | # 54 | 55 | MODULES = \ 56 | $(MAIN)/mod_pmm \ 57 | $(MAIN)/mod_inout \ 58 | $(SLAVE)/mod_slave \ 59 | $(MASTR)/mod_prissma 60 | 61 | # 62 | # File dependency 63 | # --------------- 64 | # 65 | 66 | D1 = $(MAIN)/mod_pmm 67 | D2 = $(MAIN)/mod_inout 68 | D3 = $(SLAVE)/mod_slave 69 | D4 = $(MASTR)/mod_prissma 70 | 71 | D5 = $(MASTR)/mod_prissma $(MAIN)/mod_inout $(SLAVE)/mod_slave 72 | D6 = $(MASTR)/mod_prissma $(MAIN)/mod_pmm 73 | D7 = $(SLAVE)/mod_slave $(MAIN)/mod_inout 74 | 75 | D8 = $(MASTR)/mod_prissma $(MAIN)/mod_inout $(MAIN)/mod_pmm 76 | D9 = $(SLAVE)/mod_slave $(MAIN)/mod_inout $(MAIN)/mod_pmm 77 | 78 | D10= $(MAIN)/mod_pmm $(MAIN)/mod_inout 79 | D11= $(SLAVE)/mod_slave $(MAIN)/mod_pmm 80 | 81 | # 82 | # Independent files 83 | # ----------------- 84 | # 85 | 86 | FUNC_= \ 87 | $(FUNC)/blae \ 88 | $(FUNC)/planck 89 | 90 | INOUT_ = \ 91 | $(INOUT)/readtab 92 | 93 | MODEL_= \ 94 | $(MODEL)/kbarandphi \ 95 | $(MODEL)/findi \ 96 | $(MODEL)/tmno 97 | 98 | QUAD_= \ 99 | $(QUAD)/stcd \ 100 | $(QUAD)/gicd \ 101 | $(QUAD)/cdss \ 102 | $(QUAD)/cofg \ 103 | $(QUAD)/gauleg \ 104 | $(QUAD)/k_distributeur 105 | 106 | SCHM_= \ 107 | $(SCHM)/exposcheme \ 108 | $(SCHM)/mfscheme 109 | 110 | # 111 | # Module dependency 112 | # ----------------- 113 | # 114 | 115 | SUB_D0 = $(FUNC_) $(INOUT_) $(MODEL_) $(QUAD_) $(SCHM_) 116 | 117 | SUB_D1 = \ 118 | $(MAIN)/pmm_begin \ 119 | $(MAIN)/pmm_end \ 120 | $(MAIN)/pmm_returnvectors \ 121 | $(MAIN)/pmm_sendpartition \ 122 | $(MAIN)/pmm_sendvectors \ 123 | $(MODEL)/emissiv \ 124 | $(MODEL)/emissiv_snb \ 125 | $(MAIN)/mpiprissma \ 126 | $(MASTR)/master \ 127 | $(SLAVE)/slave_return \ 128 | $(SLAVE)/slave_receive 129 | 130 | SUB_D2 = \ 131 | $(MAIN)/pmm_readinput \ 132 | 133 | SUB_D3 = \ 134 | $(INOUT)/param_slave \ 135 | $(SLAVE)/slave_partition \ 136 | $(FUNC)/find_ibnd 137 | 138 | SUB_D4 = \ 139 | $(MASTR)/master_integrate 140 | 141 | SUB_D5 = \ 142 | $(INOUT)/outprocessing 143 | 144 | SUB_D6 = \ 145 | $(MASTR)/master_control 146 | 147 | SUB_D7 = \ 148 | $(SCHM)/band_integ \ 149 | $(INOUT)/read_data_slave 150 | 151 | SUB_D8 = \ 152 | $(INOUT)/read_data \ 153 | $(MASTR)/partition \ 154 | $(MASTR)/sendtoslaves 155 | 156 | SUB_D9 = \ 157 | $(SLAVE)/slave_receive_vectors \ 158 | $(slave.F.html">SLAVE)/slave \ 159 | $(SLAVE)/slave_vectors 160 | 161 | SUB_D10 = \ 162 | $(MODEL)/fsck_case \ 163 | $(MODEL)/tab_case \ 164 | $(MODEL)/snb_case \ 165 | $(MODEL)/wsgg_case 166 | 167 | SUB_D11 = \ 168 | $(FUNC)/gather \ 169 | $(FUNC)/gather_faces \ 170 | $(FUNC)/scatter \ 171 | $(SCHM)/spatial_scheme 172 | 173 | # 174 | # Constants 175 | # --------- 176 | # 177 | 178 | CONSTS = \ 179 | $(MAIN)/dom_constants.h \ 180 | $(MAIN)/pmm_constants.h 181 | 182 | # 183 | # Subroutine compilation order 184 | # ---------------------------- 185 | # 186 | 187 | SUB = \ 188 | $(SUB_D0) \ 189 | $(SUB_D1) \ 190 | $(SUB_D2) \ 191 | $(SUB_D3) \ 192 | $(SUB_D4) \ 193 | $(SUB_D5) \ 194 | $(SUB_D6) \ 195 | $(SUB_D7) \ 196 | $(SUB_D8) \ 197 | $(SUB_D9) \ 198 | $(SUB_D10) \ 199 | $(SUB_D11) 200 | 201 | # 202 | # All objects 203 | # ----------- 204 | # 205 | 206 | ALL_OBJ = $(MODULES:=.o) $(SUB:=.o) 207 | 208 | # 209 | # Compilation 210 | # ----------- 211 | # 212 | 213 | all : link_dominc link_const allmodules subroutines 214 | @echo 215 | @echo "****************************************" 216 | @echo 217 | @echo "Linking Object Files ...." 218 | @echo 219 | @$(FF) $(LDFLAGS) -o $(DOMEXEC) $(ALL_OBJ) $(PLIBS) 220 | @chmod a+x $(DOMEXEC) 221 | @echo "Removing include files" 222 | @$(RM) dom.inc *.h *_m4.F90 *.c *.o *.mod 223 | @echo 224 | @echo "Executable created :" 225 | @echo $(DOMEXEC) 226 | @echo 227 | @echo "****************************************" 228 | @echo 229 | 230 | allmodules : $(MODULES:=.o) 231 | 232 | subroutines : $(SUB:=.o) 233 | 234 | $(SUB_D1:=.o) : $(D1:=.mod) 235 | 236 | $(SUB_D2:=.o) : $(D2:=.mod) 237 | 238 | $(SUB_D3:=.o) : $(D3:=.mod) 239 | 240 | $(SUB_D4:=.o) : $(D4:=.mod) 241 | 242 | $(SUB_D5:=.o) : $(D5:=.mod) 243 | 244 | $(SUB_D6:=.o) : $(D6:=.mod) 245 | 246 | $(SUB_D7:=.o) : $(D7:=.mod) 247 | 248 | $(SUB_D8:=.o) : $(D8:=.mod) 249 | 250 | $(SUB_D9:=.o) : $(D9:=.mod) 251 | 252 | $(SUB_D10:=.o) : $(D10:=.mod) 253 | 254 | $(SUB_D11:=.o) : $(D11:=.mod) 255 | 256 | link_dominc : 257 | @echo 258 | @echo "****************************************" 259 | @echo "Linking dom.inc" 260 | @$(RM) dom.inc 261 | @$(LN) $(INCFILE) . 262 | @echo "****************************************" 263 | @echo 264 | 265 | link_const : $(CONSTS) 266 | @echo 267 | @echo "****************************************" 268 | @echo "Linking .h files" 269 | @$(RM) *.h 270 | @$(LN) $(CONSTS) . 271 | @echo "****************************************" 272 | @echo 273 | 274 | # 275 | # Cleaning 276 | # -------- 277 | # 278 | 279 | clean : clean_obj clean_modules clean_const 280 | 281 | clean_const : 282 | @echo 283 | @echo "****************************************" 284 | @echo 285 | @echo "Removing *.h files " 286 | @echo 287 | @$(RM) $(CONSTS) 288 | @$(RM) *.h ./dom.inc 289 | @echo 290 | @echo "****************************************" 291 | 292 | clean_modules : 293 | @echo 294 | @echo "****************************************" 295 | @echo 296 | @echo "Removing *.mod files " 297 | @echo 298 | @$(RM) *.mod 299 | @$(RM) $(MODULES:=.mod) 300 | @echo 301 | @echo "****************************************" 302 | 303 | clean_obj : 304 | @echo 305 | @echo "****************************************" 306 | @echo 307 | @echo "Removing *.f files " 308 | @echo 309 | @$(RM) $(ALL_OBJ) 310 | @$(RM) $(ALL_OBJ:%.o=%_m4.F90) 311 | @$(RM) *.o 312 | @echo 313 | @echo "****************************************" 314 | 315 | # 316 | # Suffix rules 317 | # ------------ 318 | # 319 | 320 | .F.o : 321 | @echo 322 | @echo "****************************************" 323 | @echo "Preprocessing " $*.F 324 | @$(M4DIR) $*.F > $*_m4.F90 325 | @sed '1d' $*_m4.F90 > tmp_m4.F90 326 | @$(MV) tmp_m4.F90 $*_m4.F90 327 | @echo "Compiling " $*_m4.F90 328 | @$(FF) -I./ -I$(MASTR) -I$(MAIN) -I$(SLAVE) -c $(FFLAGS) $*_m4.F90 329 | @-if [ -f $(notdir $*).mod ] ; then $(CP) $(notdir $*).mod $*.mod ; fi 330 | @$(MV) *.o $*.o 331 | @-if(test $(CLEANf) = yes) then $(RM) $*_m4.F90 ; fi 332 | @echo "****************************************" 333 | @echo 334 | 335 | .HH.h : 336 | @echo 337 | @echo "****************************************" 338 | @echo "Preprocessing " $*.HH 339 | @$(M4DIR) $*.HH > $*.h 340 | @-touch $*.h 341 | @echo "****************************************" 342 | @echo