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