0bf33f7a037737edb919c87c12ea2b7e0421703b
[charm.git] / src / libs / ck-libs / ParFUM / Makefile
1
2 CDIR=../../../..
3 CHARMC=$(CDIR)/bin/charmc $(OPTS)
4
5 #Headers internal to ParFUM
6 INTERNALHEADERS= ParFUM_internals.h ParFUM_locking.h ParFUM_Mesh_Modify.h ParFUM_Adapt_Algs.h ParFUM_Adapt.h ParFUM_Interpolate.h ParFUM_SA.h import.h adapt_adj.h bulk_adapt_ops.h bulk_adapt.h
7
8 #Headers to be copied to include directory so application users can see them
9 HEADERS= ParFUM.h ParFUMf.h  $(INTERNALHEADERS)
10
11 #Headers generated from .ci files
12 GENHEADERS= ParFUM.def.h ParFUM.decl.h ParFUM_Adapt.decl.h ParFUM_Adapt.def.h ParFUM_SA.def.h ParFUM_SA.decl.h
13
14 HEADDEP= $(GENHEADERS) $(HEADERS) $(INTERNALHEADERS)
15
16 OBJS=ParFUM.o mesh.o symmetries.o partition.o map.o compat.o call_init.o parallel_part.o mesh_modify.o mesh_adjacency.o adapt.o adapt_algs.o adapt_if.o interpolate.o lock.o util.o lock_node.o adapt_lock.o ParFUM_SA.o global_numbering.o import.o adapt_adj.o bulk_adapt_ops.o bulk_adapt.o mesh_feature_detect.o MsaHashtable.o
17
18 COMPAT=compat_init.o compat_finit.o compat_driver.o compat_fdriver.o 
19 LIB=libmoduleParFUM
20
21 LIBDIR=$(CDIR)/lib
22 DEST=$(LIBDIR)/$(LIB).a
23 COMPATLIB=$(LIBDIR)/libParFUM-compat.a
24 PARFUMMAIN=$(LIBDIR)/libParFUMmain.o
25
26 INCS=-I.
27
28 .PHONY: all
29 all: $(DEST) $(COMPATLIB) $(PARFUMMAIN) headers
30
31 ParFUM.def.h: ParFUM.decl.h
32 ParFUM.decl.h: ParFUM.ci
33         $(CHARMC) ParFUM.ci
34 ParFUM_Adapt.def.h: ParFUM_Adapt.decl.h
35 ParFUM_Adapt.decl.h: mesh_modify.ci
36         $(CHARMC) mesh_modify.ci
37 ParFUM_SA.def.h: ParFUM_SA.decl.h
38 ParFUM_SA.decl.h: ParFUM_SA.ci
39         $(CHARMC) ParFUM_SA.ci
40
41 # Build libmoduleParFUM
42 $(DEST): $(OBJS) $(COMPAT) $(HEADDEP)
43         $(CHARMC) $(OBJS) -o $@
44         cp $(LIB).dep $(LIBDIR)/$(LIB).dep
45
46 # Build libParFUM-compat
47 $(COMPATLIB): $(COMPAT)
48         $(CHARMC) $(COMPAT) -o $@
49
50 # Build fortran file with definitions for init and driver. 
51 # This allows us to use a single library with either fortran or c
52 $(PARFUMMAIN): main.C $(HEADDEP)
53         $(CHARMC) main.C -o $(PARFUMMAIN)
54
55 # Copy header files to include directory
56 .PHONY: headers
57 headers: $(HEADDEP)
58         cp $(HEADERS) $(CDIR)/include/
59         cp $(GENHEADERS) $(CDIR)/include/
60
61 #Automatic rules for some reason break because they don't use the dependencies
62 #.SUFFIXES: .c .o .C
63 #.c.o: $(HEADDEP) $< 
64 #       $(CHARMC) -c $<
65 #.C.o: $(HEADDEP) $<
66 #       $(CHARMC) -c $<
67
68
69 MsaHashtable.o: MsaHashtable.C $(HEADDEP)
70         $(CHARMC) -c MsaHashtable.C $(INCS)
71
72 mesh_modify.o: mesh_modify.C $(HEADDEP)
73         $(CHARMC) -c mesh_modify.C $(INCS)
74
75 ParFUM_SA.o: ParFUM_SA.C $(HEADDEP)
76         $(CHARMC) -c ParFUM_SA.C $(INCS)
77
78 ParFUM.o: ParFUM.C $(HEADDEP)
79         $(CHARMC) -c ParFUM.C $(INCS)
80
81 mesh.o: mesh.C $(HEADDEP)
82         $(CHARMC) -c mesh.C $(INCS)
83
84 symmetries.o: symmetries.C $(HEADDEP)
85         $(CHARMC) -c symmetries.C $(INCS)
86
87 partition.o: partition.C $(HEADDEP)
88         $(CHARMC) -c partition.C $(INCS)
89
90 map.o: map.C $(HEADDEP)
91         $(CHARMC) -c map.C $(INCS)
92
93 compat.o: compat.C $(HEADDEP)
94         $(CHARMC) -c compat.C $(INCS)
95
96 call_init.o: call_init.c $(HEADDEP)
97         $(CHARMC) -c call_init.c $(INCS)
98
99 parallel_part.o: parallel_part.C $(HEADDEP) MsaHashtable.h
100         $(CHARMC) -c parallel_part.C $(INCS)
101
102 mesh_adjacency.o: mesh_adjacency.C $(HEADDEP)
103         $(CHARMC) -c mesh_adjacency.C $(INCS)
104
105 mesh_feature_detect.o: mesh_feature_detect.C $(HEADDEP)
106         $(CHARMC) -c mesh_feature_detect.C $(INCS)
107
108 adapt.o: adapt.C $(HEADDEP)
109         $(CHARMC) -c adapt.C $(INCS)
110
111 adapt_if.o: adapt_if.C $(HEADDEP)
112         $(CHARMC) -c adapt_if.C $(INCS)
113
114 adapt_algs.o: adapt_algs.C $(HEADDEP)
115         $(CHARMC) -c adapt_algs.C $(INCS)
116
117 interpolate.o: interpolate.C $(HEADDEP)
118         $(CHARMC) -c interpolate.C $(INCS)
119
120 lock.o: lock.C $(HEADDEP)
121         $(CHARMC) -c lock.C $(INCS)
122
123 util.o: util.C $(HEADDEP)
124         $(CHARMC) -c util.C $(INCS)
125
126 lock_node.o: lock_node.C $(HEADDEP)
127         $(CHARMC) -c lock_node.C $(INCS)
128
129 adapt_lock.o: adapt_lock.C $(HEADDEP)
130         $(CHARMC) -c adapt_lock.C $(INCS)
131
132 collide.o: collide.C $(HEADDEP)
133         $(CHARMC) -c collide.C $(INCS)
134
135 compat_init.o: compat_init.c $(HEADDEP)
136         $(CHARMC) -c compat_init.c $(INCS)
137
138 compat_finit.o: compat_finit.c $(HEADDEP)
139         $(CHARMC) -c compat_finit.c $(INCS)
140
141 compat_driver.o: compat_driver.c $(HEADDEP)
142         $(CHARMC) -c compat_driver.c $(INCS)
143
144 compat_fdriver.o: compat_fdriver.c $(HEADDEP)
145         $(CHARMC) -c compat_fdriver.c $(INCS)
146
147 global_numbering.o: global_numbering.C $(HEADDEP)
148         $(CHARMC) -c global_numbering.C $(INCS)
149
150 import.o: import.C $(HEADDEP)
151         $(CHARMC) -c import.C $(INCS)
152
153 adapt_adj.o: adapt_adj.C $(HEADDEP)
154         $(CHARMC) -c adapt_adj.C $(INCS)
155
156 bulk_adapt_ops.o: bulk_adapt_ops.C $(HEADDEP)
157         $(CHARMC) -c bulk_adapt_ops.C $(INCS)
158
159 bulk_adapt.o: bulk_adapt.C $(HEADDEP)
160         $(CHARMC) -c bulk_adapt.C $(INCS)
161
162 docs: ParFUM.doxy ParFUM_Adapt_Algs.h ParFUM_Adapt.h ParFUMf.h ParFUM.h ParFUM_internals.h ParFUM_Interpolate.h ParFUM_locking.h ParFUM_Mesh_Modify.h adapt_algs.C adapt.C adapt_if.C adapt_lock.C collide.C compat.C interpolate.C lock.C lock_node.C main.C map.C mesh_adjacency.C mesh.C mesh_modify.C MsaHashtable.C parallel_part.C ParFUM.C partition.C symmetries.C util.C call_init.c compat_driver.c compat_fdriver.c compat_finit.c compat_init.c ParFUM_SA.C global_numbering.C import.C import.h
163         doxygen ParFUM.doxy
164
165 # clean up
166 .PHONY: clean
167 clean:
168         rm -rf *.a *.def.h *.decl.h *.o *~ SunWS_cache $(DEST) $(COMPATLIB) $(GENHEADERS)