-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathMakefile
104 lines (79 loc) · 2.17 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#
# Usage:
# make mod # To compile module
# make # To compile all routines and link it to HDF5 libraries
# make clean # to remove *.o *.exe *.mod
#
SRC=src/
TEST=tests/
#PROG=wrapper
TEST1=test_funcs
TEST2=test_objs
LIST_MOD_F=\
$(SRC)Types_mod.f90\
$(SRC)Strings_Func_mod.f90\
$(SRC)H5_func_mod.f90\
$(SRC)H5_OO_mod.f90
LIST_SUB_F=\
# work compilation
#DIRLIBRARY_H=/usr/local/hdf5-1.8.11/hdf5
#LIBRARY_HF=hdf5_fortran
#LIBRARY_H=hdf5
#LIB=lib
#INC=include
# home compilation
DIRLIBRARY_H=/usr
LIBRARY_HF=hdf5_serial_fortran
LIBRARY_H=hdf5_serial
LIBRARY_HFL=hdf5_serialhl_fortran
LIBRARY_HL=hdf5_serial_hl
LIB=lib/x86_64-linux-gnu
INC=include/hdf5/serial/
# *.f90 -> *.o
LIST_MOD_O=$(LIST_MOD_F:.f90=.o)
LIST_SUB_O=$(LIST_SUB_F:.f90=.o)
#Compiler
FC = gfortran
#options for
FFLAGS= -fbounds-check -O0 -fconvert=big-endian -finit-local-zero -cpp -DLITTLE_ENDIAN -Wsurprising -ffree-line-length-none -I $(DIRLIBRARY_H)/$(INC) -I $(DIRLIBRARY_H)/$(LIB)
$(TEST1).exe: $(TEST)$(TEST1).o $(LIST_MOD_O) $(LIST_SUB_O) \
$(DIRLIBRARY_H)/$(LIB)/lib$(LIBRARY_HF).a \
$(DIRLIBRARY_H)/$(LIB)/lib$(LIBRARY_H).a \
$(DIRLIBRARY_H)/$(LIB)/lib$(LIBRARY_HL).a \
$(DIRLIBRARY_H)/$(LIB)/lib$(LIBRARY_HFL).a
$(FC) $(FFLAGS) $(TEST)$(TEST1).o $(LIST_MOD_O) $(LIST_SUB_O) \
-L$(DIRLIBRARY_H)/$(LIB) \
-l$(LIBRARY_HF) \
-L$(DIRLIBRARY_H)/$(LIB) \
-l$(LIBRARY_H) \
-l$(LIBRARY_HL) \
-l$(LIBRARY_HFL) \
-o $@
$(TEST2).exe: $(TEST)$(TEST2).o $(LIST_MOD_O) $(LIST_SUB_O) \
$(DIRLIBRARY_H)/$(LIB)/lib$(LIBRARY_HF).a \
$(DIRLIBRARY_H)/$(LIB)/lib$(LIBRARY_H).a \
$(DIRLIBRARY_H)/$(LIB)/lib$(LIBRARY_HL).a \
$(DIRLIBRARY_H)/$(LIB)/lib$(LIBRARY_HFL).a
$(FC) $(FFLAGS) $(TEST)$(TEST2).o $(LIST_MOD_O) $(LIST_SUB_O) \
-L$(DIRLIBRARY_H)/$(LIB) \
-l$(LIBRARY_HF) \
-L$(DIRLIBRARY_H)/$(LIB) \
-l$(LIBRARY_H) \
-l$(LIBRARY_HL) \
-l$(LIBRARY_HFL) \
-o $@
# -l$(LIBRARY_HL) \
# -l$(LIBRARY_HFL) \
# $(DIRLIBRARY_H)/$(LIB)/lib$(LIBRARY_HL).a \
# $(DIRLIBRARY_H)/$(LIB)/lib$(LIBRARY_HFL).a
clean:
rm -f $(SRC)*.o $(TEST)*.o *.exe *.mod *.o
mod:
$(FC) -c $(FFLAGS) $(LIST_MOD_F)
all:
make clean
make mod
make
.SUFFIXES: .f90 .o
.f90.o :
$(FC) -c $(FFLAGS) $*.f90 -o $*.o