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