1 | include $(DOMHOME)/HOSTS/$(DOM_HOSTTYPE)/makefile.h 2 | 3 | # Canceling implicit rule %.F => %.o 4 | %.o : %.F 5 | %.o : %.mod 6 | 7 | # 8 | # Version and outpath 9 | # ------------------- 10 | # 11 | 12 | HOST = $(DOMHOME)/HOSTS/$(DOM_HOSTTYPE) 13 | OUT = $(HOST) 14 | TOOLD = $(DOMHOME)/TOOLS/PREDATAS 15 | MODIR = $(TOOLD)/MODULES 16 | COMMON= $(DOMHOME)/TOOLS/COMMON 17 | 18 | # 19 | # Sources directories 20 | # ------------------- 21 | # 22 | 23 | DATAS = $(TOOLD)/DATAS 24 | EXTERN = $(DOMHOME)/TOOLS/EXTERNAL 25 | FUNC = $(TOOLD)/FUNCTIONS 26 | GENC = $(TOOLD)/GENERIC 27 | INOUT = $(TOOLD)/INOUT 28 | SRC = $(TOOLD)/SRC 29 | QUAD = $(TOOLD)/QUADRATURE 30 | CONST = $(DOMHOME)/SOURCES/MAIN 31 | 32 | INCFILE = $(HOST)/dom.inc 33 | 34 | # 35 | # Quiet mode 36 | # 37 | .SILENT : 38 | 39 | # 40 | # Suffixes 41 | # -------- 42 | 43 | .SUFFIXES: .o .F .HH _m4.h 44 | 45 | # 46 | # Intermediate files to keep 47 | # -------------------------- 48 | 49 | .PRECIOUS : %.o %_m4.f %.mod 50 | 51 | 52 | # 53 | # Executable file 54 | # --------------- 55 | # 56 | 57 | PREDTEXEC = $(OUT)/predatas_$(DOM_VERSION).e_$(DOM_HOSTTYPE) 58 | 59 | # 60 | # List of object files for PREDATAS 61 | # --------------------------------- 62 | # 63 | 64 | EXTERN_OBJ = \ 65 | $(EXTERN)/avbp_coor.o \ 66 | $(EXTERN)/avbp_exBound.o \ 67 | $(EXTERN)/avbp_conn.o 68 | 69 | DATAS_OBJ = \ 70 | $(DATAS)/mod_datas.o \ 71 | $(DATAS)/addfatnode.o \ 72 | $(DATAS)/addface.o \ 73 | $(DATAS)/addcell.o \ 74 | $(DATAS)/link_neighbour_cell.o \ 75 | $(DATAS)/lookforface.o \ 76 | $(DATAS)/testlinking.o \ 77 | $(DATAS)/create_cell_link.o 78 | 79 | GENC_OBJ = \ 80 | $(GENC)/calculatearea.o \ 81 | $(GENC)/calculatenormal.o \ 82 | $(GENC)/calculatecenter.o \ 83 | $(GENC)/calculatevol.o \ 84 | $(GENC)/projection.o 85 | 86 | FUNC_OBJ = \ 87 | $(FUNC)/compare.o 88 | 89 | CONST_OBJ = \ 90 | $(CONST)/dom_constants.h \ 91 | $(TOOLD)/SRC/predatas_const.h 92 | 93 | QUAD_OBJ = \ 94 | $(QUAD)/quadrature2D.o \ 95 | $(QUAD)/createdirections.o 96 | 97 | INOUT_OBJ = \ 98 | $(COMMON)/gambit_read.o \ 99 | $(INOUT)/detectpatch.o \ 100 | $(INOUT)/test2dom.o \ 101 | $(INOUT)/avbp2dom.o \ 102 | $(INOUT)/gambit2dom.o \ 103 | $(INOUT)/readstructure.o \ 104 | $(INOUT)/writeinfiles.o 105 | 106 | MAIN_OBJ = \ 107 | $(TOOLD)/SRC/predatas.o 108 | 109 | # 110 | # All PREDATAS objects 111 | # -------------------- 112 | # 113 | 114 | ALL_OBJS = $(EXTERN_OBJ) $(GENC_OBJ) $(FUNC_OBJ) $(DATAS_OBJ) $(QUAD_OBJ) $(INOUT_OBJ) $(MAIN_OBJ) 115 | 116 | # 117 | # PREDATAS compilation 118 | # -------------------- 119 | # 120 | 121 | all : $(PREDTEXEC) 122 | @echo 123 | @echo "****************************************" 124 | @echo 125 | @echo " Executable created :" 126 | @echo $(PREDTEXEC) 127 | @echo 128 | @echo "****************************************" 129 | @$(RM) *.o *_m4.f *.mod dom.inc *.h 130 | 131 | $(PREDTEXEC) : $(ALL_OBJS) 132 | @echo 133 | @echo "****************************************" 134 | @echo 135 | @echo "Linking Object Files ...." 136 | @echo 137 | @$(FFS) $(LDFLAGS) -o $(PREDTEXEC) $(ALL_OBJS) 138 | @echo "****************************************" 139 | @echo 140 | 141 | # 142 | # Special dependencies 143 | # ---------------------- 144 | 145 | $(DATAS)/testlinking.o: $(MODIR)/datas.mod 146 | $(DATAS)/link_neighbour_cell.o: $(MODIR)/datas.mod 147 | $(DATAS)/create_cell_link.o: $(MODIR)/datas.mod 148 | $(DATAS)/addface.o: $(MODIR)/datas.mod 149 | $(DATAS)/addcell.o: $(MODIR)/datas.mod 150 | $(DATAS)/addfatnode.o: $(MODIR)/datas.mod 151 | $(DATAS)/lookforface.o: $(MODIR)/datas.mod 152 | 153 | $(GENC)/calculatecenter.o: $(MODIR)/datas.mod 154 | $(GENC)/calculatearea.o: $(MODIR)/datas.mod 155 | $(GENC)/calculatenormal.o: $(MODIR)/datas.mod 156 | 157 | $(INOUT)/printcellsinfo.o: $(MODIR)/datas.mod 158 | $(INOUT)/readstructure.o: $(MODIR)/datas.mod 159 | $(INOUT)/test2dom.o: $(MODIR)/datas.mod 160 | $(INOUT)/writeinfiles_test.o: $(MODIR)/datas.mod 161 | $(INOUT)/writeinfiles.o: $(MODIR)/datas.mod 162 | $(INOUT)/gambit2dom.o: $(MODIR)/datas.mod 163 | $(INOUT)/writedatas.o: $(MODIR)/datas.mod 164 | $(INOUT)/avbp2dom.o: $(MODIR)/datas.mod 165 | $(INOUT)/printfacesinfo.o: $(MODIR)/datas.mod 166 | 167 | $(INOUT)/gambit2dom.o : $(MODIR)/gambit_read.mod 168 | 169 | $(INOUT)/detectpatch.o : $(MODIR)/avbp_exbound.mod 170 | 171 | $(INOUT)/avbp2dom.o : $(MODIR)/avbp_exbound.mod $(MODIR)/avbp_coor.mod $(MODIR)/avbp_conn.mod 172 | 173 | $(GENC)/calculatevol.o : $(CONST)/dom_constants.h 174 | 175 | $(INOUT)/readstructure.o : $(SRC)/predatas_const.h 176 | 177 | # 178 | # Cleaning PREDATAS 179 | # 180 | 181 | clean: clean_DATAS clean_EXTERN clean_GENC clean_FUNC clean_QUAD clean_INOUT clean_MAIN clean_CONST 182 | @echo 183 | @echo "****************************************" 184 | @echo 185 | @echo "Removing MODULES" 186 | @echo 187 | @$(RM) $(MODIR)/*.mod 188 | @echo "****************************************" 189 | 190 | clean_DATAS : 191 | @echo 192 | @echo "****************************************" 193 | @echo 194 | @echo "Removing DATAS object files" 195 | @echo 196 | @$(RM) $(DATAS_OBJ) 197 | @echo "Removing DATAS .f files" 198 | @echo 199 | @$(RM) $(DATAS)/*_m4.*f 200 | @$(RM) dom.inc *.h *_m4.f *.c *.o 201 | @echo "****************************************" 202 | 203 | clean_EXTERN : 204 | @echo 205 | @echo "****************************************" 206 | @echo 207 | @echo "Removing EXTERNAL object files" 208 | @echo 209 | @$(RM) $(EXTERN_OBJ) 210 | @echo "Removing EXTERNAL .f files" 211 | @echo 212 | @$(RM) $(EXTERN)/*_m4.f 213 | @$(RM) dom.inc *.h *_m4.f *.c *.o 214 | @echo "****************************************" 215 | 216 | clean_GENC : 217 | @echo 218 | @echo "****************************************" 219 | @echo 220 | @echo "Removing GENERIC object files" 221 | @echo 222 | @$(RM) $(GENC_OBJ) 223 | @echo "Removing GENERIC .f files" 224 | @echo 225 | @$(RM) $(GENC)/*_m4.*f 226 | @$(RM) dom.inc *.h *_m4.f *.c *.o 227 | @echo "****************************************" 228 | 229 | clean_FUNC : 230 | @echo 231 | @echo "****************************************" 232 | @echo 233 | @echo "Removing FUNCTIONS object files" 234 | @echo 235 | @$(RM) $(FUNC_OBJ) 236 | @echo "Removing FUNCTIONS .f files" 237 | @echo 238 | @$(RM) $(FUNC)/*_m4.*f 239 | @$(RM) dom.inc *.h *_m4.f *.c *.o 240 | @echo "****************************************" 241 | 242 | clean_QUAD : 243 | @echo 244 | @echo "****************************************" 245 | @echo 246 | @echo "Removing QUAD object files" 247 | @echo 248 | @$(RM) $(QUAD_OBJ) 249 | @echo "Removing QUAD .f files" 250 | @echo 251 | @$(RM) $(QUAD)/*_m4.*f 252 | @$(RM) dom.inc *.h *_m4.f *.c *.o 253 | @echo "****************************************" 254 | 255 | clean_INOUT : 256 | @echo 257 | @echo "****************************************" 258 | @echo 259 | @echo "Removing INOUT object files" 260 | @echo 261 | @$(RM) $(INOUT_OBJ) 262 | @echo "Removing INOUT .f files" 263 | @echo 264 | @$(RM) $(INOUT)/*_m4.*f 265 | @$(RM) $(COMMON)/*_m4.*f 266 | @$(RM) dom.inc *.h *_m4.f *.c *.o 267 | @echo "****************************************" 268 | 269 | clean_MAIN : 270 | @echo 271 | @echo "****************************************" 272 | @echo 273 | @echo "Removing MAIN object files" 274 | @echo 275 | @$(RM) $(MAIN_OBJ) 276 | @echo "Removing MAIN .f files" 277 | @echo 278 | @$(RM) $(TOOLD)/SRC/predatas_m4.f 279 | @$(RM) $(TOOLD)/SRC/predatas.o 280 | @$(RM) dom.inc *.h *_m4.f *.c *.o 281 | @echo "****************************************" 282 | 283 | clean_CONST : 284 | @echo 285 | @echo "****************************************" 286 | @echo 287 | @echo "Removing *.h files " 288 | @echo 289 | @$(RM) $(CONST)/*.h 290 | @$(RM) $(TOOLD)/SRC/*.h 291 | @echo "****************************************" 292 | 293 | # 294 | # Special rules 295 | # 296 | 297 | $(DATAS)/mod_datas.o: $(DATAS)/mod_datas_m4.f 298 | @echo " Compiling " $*_m4.f 299 | @echo 300 | @$(FFS) -I$(MODIR) -c $(FFSLAGS) -o $@ $(@:%.o=%_m4.f) 301 | @$(MV) datas.mod $(MODIR)/ 302 | @echo "****************************************" 303 | @echo 304 | 305 | $(COMMON)/gambit_read.o: $(COMMON)/gambit_read_m4.f 306 | @echo " Compiling " $*_m4.f 307 | @echo 308 | @$(FFS) -I$(MODIR) -I$(CONST) -c $(FFSLAGS) -o $@ $(@:%.o=%_m4.f) 309 | @$(MV) $(@:$(COMMON)/%.o=%.mod) $(MODIR)/ 310 | @echo "****************************************" 311 | @echo 312 | 313 | $(EXTERN)/avbp_exBound.o: $(EXTERN)/avbp_exBound_m4.f 314 | @echo " Compiling " $*_m4.f 315 | @echo 316 | @$(FFS) -I$(MODIR) -c $(FFSLAGS) -o $@ $(@:%.o=%_m4.f) 317 | @$(MV) avbp_exbound.mod $(MODIR)/ 318 | @echo "****************************************" 319 | @echo 320 | 321 | $(EXTERN)/avbp_coor.o: $(EXTERN)/avbp_coor_m4.f 322 | @echo " Compiling " $*_m4.f 323 | @echo 324 | @$(FFS) -I$(MODIR) -c $(FFSLAGS) -o $@ $(@:%.o=%_m4.f) 325 | @$(MV) $(@:$(EXTERN)/%.o=%.mod) $(MODIR)/ 326 | @echo "****************************************" 327 | @echo 328 | 329 | $(EXTERN)/avbp_conn.o: $(EXTERN)/avbp_conn_m4.f 330 | @echo " Compiling " $*_m4.f 331 | @echo 332 | @$(FFS) -I$(MODIR) -c $(FFSLAGS) -o $@ $(@:%.o=%_m4.f) 333 | @$(MV) $(@:$(EXTERN)/%.o=%.mod) $(MODIR)/ 334 | @echo "****************************************" 335 | @echo 336 | 337 | $(MODIR)/datas.mod: $(DATAS)/mod_datas.o 338 | @touch $@ 339 | 340 | $(MODIR)/gambit_read.mod: $(COMMON)/gambit_read.o 341 | @touch $@ 342 | 343 | $(MODIR)/avbp_exbound.mod: $(EXTERN)/avbp_exBound.o 344 | @touch $@ 345 | 346 | $(MODIR)/avbp_coor.mod: $(EXTERN)/avbp_coor.o 347 | @touch $@ 348 | 349 | $(MODIR)/avbp_conn.mod: $(EXTERN)/avbp_conn.o 350 | @touch $@ 351 | 352 | # 353 | # Suffix Rules: 354 | # 355 | 356 | dom.inc : $(INCFILE) 357 | @echo 358 | @echo "****************************************" 359 | @echo "Linking dom.inc" 360 | @$(RM) dom.inc 361 | @$(LN) $(INCFILE) . 362 | @echo "****************************************" 363 | @echo 364 | 365 | %_m4.f : %.F dom.inc 366 | @echo 367 | @echo "****************************************" 368 | @echo 369 | @echo " Preprocessing " $*.F 370 | @$(M4DIR) $*.F > $*_m4.f 371 | @sed '1d' $*_m4.f > tmp_m4.f 372 | @$(MV) tmp_m4.f $*_m4.f 373 | 374 | %.o : %_m4.f 375 | @echo " Compiling " $*_m4.f 376 | @$(FFS) -I$(MODIR) -I$(CONST) -I$(SRC) -c $(FFSLAGS) -o $@ $*_m4.f 377 | @echo 378 | @echo "****************************************" 379 | 380 | %.h : %.HH dom.inc 381 | @echo 382 | @echo "****************************************" 383 | @echo " Preprocessing " $*.HH 384 | @$(M4DIR) $*.HH > $*.h 385 | @echo 386 | @echo "****************************************" 387 |