1# Copyright 1998-2019 Lawrence Livermore National Security, LLC and other
2# HYPRE Project Developers. See the top-level COPYRIGHT file for details.
3#
4# SPDX-License-Identifier: (Apache-2.0 OR MIT)
5
6default:all
7
8include ../config/Makefile.config
9
10CINCLUDES = ${INCLUDES} ${MPIINCLUDE}
11
12CDEFS = -DHYPRE_TIMING -DHYPRE_FORTRAN
13CXXDEFS = -DNOFEI -DHYPRE_TIMING -DMPICH_SKIP_MPICXX
14
15C_COMPILE_FLAGS = \
16 -I$(srcdir)\
17 -I$(srcdir)/..\
18 -I${HYPRE_BUILD_DIR}/include\
19 $(SUPERLU_INCLUDE)\
20 $(DSUPERLU_INCLUDE)\
21 ${CINCLUDES}\
22 ${CDEFS}
23
24CXX_COMPILE_FLAGS = \
25 -I$(srcdir)\
26 -I$(srcdir)/..\
27 -I$(srcdir)/../FEI_mv/fei-base\
28 -I${HYPRE_BUILD_DIR}/include\
29 $(SUPERLU_INCLUDE)\
30 $(DSUPERLU_INCLUDE)\
31 ${CINCLUDES}\
32 ${CXXDEFS}
33
34F77_COMPILE_FLAGS = \
35 -I$(srcdir)\
36 -I$(srcdir)/..\
37 -I${HYPRE_BUILD_DIR}/include\
38 ${CINCLUDES}
39
40MPILIBFLAGS = ${MPILIBDIRS} ${MPILIBS} ${MPIFLAGS}
41LAPACKLIBFLAGS = ${LAPACKLIBDIRS} ${LAPACKLIBS}
42BLASLIBFLAGS = ${BLASLIBDIRS} ${BLASLIBS}
43LIBFLAGS = ${LDFLAGS} ${LIBS}
44
45ifeq ($(notdir $(firstword ${LINK_CC})), nvcc)
46   XLINK = -Xlinker=-rpath,${HYPRE_BUILD_DIR}/lib
47else
48   XLINK = -Wl,-rpath,${HYPRE_BUILD_DIR}/lib
49endif
50
51LFLAGS =\
52 -L${HYPRE_BUILD_DIR}/lib -lHYPRE\
53 ${XLINK}\
54 ${DSUPERLU_LIBS}\
55 ${SUPERLU_LIBS}\
56 ${MPILIBFLAGS}\
57 ${LAPACKLIBFLAGS}\
58 ${BLASLIBFLAGS}\
59 ${LIBFLAGS}
60
61##################################################################
62# Targets
63##################################################################
64
65HYPRE_DRIVERS =\
66 ij.c\
67 ij_assembly.c\
68 sstruct.c\
69 struct.c\
70 ams_driver.c\
71 maxwell_unscaled.c\
72 struct_migrate.c\
73 sstruct_fac.c\
74 ij_mv.c\
75 zboxloop.c
76
77HYPRE_DRIVERS_CXX =\
78 cxx_ij.cxx\
79 cxx_sstruct.cxx\
80 cxx_struct.cxx
81
82HYPRE_F77_EXAMPLES_DRIVERS =\
83 ex1_for.c\
84 ex3_for.c\
85 ex5_for.c\
86 ex6_for.c\
87 ex7_for.c
88
89HYPRE_DRIVERS_F77 =\
90 f77_ij.f\
91 f77_ij_mv.f\
92 f77_struct.f
93
94HYPRE_DRIVER_EXECS=${HYPRE_DRIVERS:.c=}
95HYPRE_F77_EXAMPLES_DRIVER_EXECS=${HYPRE_F77_EXAMPLES_DRIVERS:.c=}
96HYPRE_DRIVER_F77_EXECS=${HYPRE_DRIVERS_F77:.f=}
97HYPRE_DRIVER_CXX_EXECS=${HYPRE_DRIVERS_CXX:.cxx=}
98
99all: ${HYPRE_DRIVER_EXECS}
100
101all77: ${HYPRE_DRIVER_F77_EXECS}
102
103all++: ${HYPRE_DRIVER_CXX_EXECS}
104
105install:
106
107clean:
108	rm -f *.o *.obj
109	rm -rf pchdir tca.map *inslog*
110
111distclean: clean
112	rm -f ${HYPRE_DRIVER_EXECS}
113	rm -f ${HYPRE_F77_EXAMPLES_DRIVER_EXECS}
114	rm -f ${HYPRE_DRIVER_F77_EXECS}
115	rm -f ${HYPRE_DRIVER_CXX_EXECS} cxx_*
116	rm -f TEST_examples/*.out*
117	rm -f TEST_examples/*.err*
118	rm -f TEST_fac/*.out*
119	rm -f TEST_fac/*.err*
120	rm -f TEST_ij/*.out*
121	rm -f TEST_ij/*.err*
122	rm -f TEST_ij/*.txt*
123	rm -f TEST_ij/vectors.*
124	rm -f TEST_sstruct/*.out*
125	rm -f TEST_sstruct/*.err*
126	rm -f TEST_struct/*.out*
127	rm -f TEST_struct/*.err*
128	rm -f ex1 ex2 ex3 ex4 ex5 ex5big ex5b ex5b77 ex6 ex7 ex8 ex9 ex15big ex18comp
129
130##################################################################
131# Rules
132##################################################################
133
134# C
135
136ij: ij.o
137	@echo  "Building" $@ "... "
138	${LINK_CC} -o $@ $< ${LFLAGS}
139
140ij_assembly: ij_assembly.o
141	@echo  "Building" $@ "... "
142	${LINK_CC} -o $@ $< ${LFLAGS}
143
144sstruct: sstruct.o
145	@echo  "Building" $@ "... "
146	${LINK_CC} -o $@ $< ${LFLAGS}
147
148struct: struct.obj
149	@echo  "Building" $@ "... "
150	${LINK_CC} -o $@ $< ${LFLAGS}
151
152ams_driver: ams_driver.o
153	@echo  "Building" $@ "... "
154	${LINK_CC} -o $@ $< ${LFLAGS}
155
156maxwell_unscaled: maxwell_unscaled.o
157	@echo  "Building" $@ "... "
158	${LINK_CC} -o $@ $< ${LFLAGS}
159
160struct_migrate: struct_migrate.obj
161	@echo  "Building" $@ "... "
162	${LINK_CC} -o $@ $< ${LFLAGS}
163
164sstruct_fac: sstruct_fac.o
165	@echo  "Building" $@ "... "
166	${LINK_CC} -o $@ $< ${LFLAGS}
167
168ij_mv: ij_mv.o
169	@echo  "Building" $@ "... "
170	${LINK_CC} -o $@ $< ${LFLAGS}
171
172ij_device: ij_device.o
173	@echo  "Building" $@ "... "
174	${LINK_CC} -o $@ $< ${LFLAGS}
175
176ij_mm: ij_mm.o
177	@echo  "Building" $@ "... "
178	${LINK_CC} -o $@ $< ${LFLAGS}
179
180zboxloop: zboxloop.obj
181	@echo  "Building" $@ "... "
182	${LINK_CC} -o $@ $< ${LFLAGS}
183
184struct_newboxloop: struct_newboxloop.o $(KOKKOS_LINK_DEPENDS)
185	@echo  "Building" $@ "... "
186	${LINK_CC} -o $@ $< ${LFLAGS}
187
188test_mgr: test_mgr.o
189	@echo  "Building" $@ "... "
190	${LINK_CC} -o $@ $< ${LFLAGS}
191
192# RDF: Keep these for now
193
194hypre_set_precond: hypre_set_precond.o
195	@echo  "Building" $@ "... "
196	${LINK_CC} -o $@ $@.o ${LFLAGS}
197
198test_ij: hypre_set_precond.o test_ij.o
199	@echo  "Building" $@ "... "
200	${LINK_CC} -o $@ hypre_set_precond.o $@.o ${LFLAGS}
201
202driver_commpkg: driver_commpkg.o
203	@echo  "Building" $@ "... "
204	${LINK_CC} -o $@ $@.o ${LFLAGS}
205
206# C++
207
208fei: fei.o
209	@echo  "Building" $@ "... "
210	${LINK_CXX} -o $@ $@.o ${LFLAGS}
211
212cxx_ij: cxx_ij.o
213	@echo  "Building" $@ "... "
214	${LINK_CXX} -o $@ $@.o ${LFLAGS}
215cxx_ij.o: cxx_ij.cxx
216cxx_ij.cxx: ij.c
217	cp -fp ij.c cxx_ij.cxx
218
219cxx_sstruct: cxx_sstruct.o
220	@echo  "Building" $@ "... "
221	${LINK_CXX} -o $@ $@.o ${LFLAGS}
222cxx_sstruct.o: cxx_sstruct.cxx
223cxx_sstruct.cxx: sstruct.c
224	cp -fp sstruct.c cxx_sstruct.cxx
225
226cxx_struct: cxx_struct.o
227	@echo  "Building" $@ "... "
228	${LINK_CXX} -o $@ $@.o ${LFLAGS}
229cxx_struct.o: cxx_struct.cxx
230cxx_struct.cxx: struct.c
231	cp -fp struct.c cxx_struct.cxx
232
233# Fortran
234
235f77_ij: f77_ij.o
236	@echo  "Building" $@ "... "
237	${LINK_FC} -o $@ $@.o ${LFLAGS}
238
239f77_ij_mv: f77_ij_mv.o
240	@echo  "Building" $@ "... "
241	${LINK_FC} -o $@ $@.o ${LFLAGS}
242
243f77_struct: f77_struct.o
244	@echo  "Building" $@ "... "
245	${LINK_FC} -o $@ $@.o ${LFLAGS}
246
247# RDF: Keep these for now
248
249struct_for: fstruct_mv.o fstruct_ls.o struct_for.o
250	@echo  "Building" $@ "... "
251	${LINK_CC} -o $@ fstruct_mv.o fstruct_ls.o $@.o ${LFLAGS}
252
253ex1_for: fstruct_mv.o fstruct_ls.o ex1_for.o
254	@echo  "Building" $@ "... "
255	${LINK_CC} -o $@ fstruct_mv.o fstruct_ls.o $@.o ${LFLAGS}
256
257ex3_for: fstruct_mv.o fstruct_ls.o ex3_for.o
258	@echo  "Building" $@ "... "
259	${LINK_CC} -o $@ fstruct_mv.o fstruct_ls.o $@.o ${LFLAGS}
260
261ex5_for: fij_mv.o fparcsr_mv.o fparcsr_ls.o ex5_for.o
262	@echo  "Building" $@ "... "
263	${LINK_CC} -o $@ fij_mv.o fparcsr_mv.o fparcsr_ls.o $@.o ${LFLAGS}
264
265ex6_for: fstruct_mv.o fstruct_ls.o fsstruct_mv.o fsstruct_ls.o ex6_for.o
266	@echo  "Building" $@ "... "
267	${LINK_CC} -o $@ fstruct_mv.o fstruct_ls.o fsstruct_mv.o fsstruct_ls.o $@.o ${LFLAGS}
268
269ex7_for: fstruct_mv.o fstruct_ls.o fsstruct_mv.o fsstruct_ls.o ex7_for.o
270	@echo  "Building" $@ "... "
271	${LINK_CC} -o $@ fstruct_mv.o fstruct_ls.o fsstruct_mv.o fsstruct_ls.o $@.o ${LFLAGS}
272
273for_maxwell: fparcsr_mv.o fsstruct_mv.o fsstruct_ls.o for_maxwell.o
274	@echo  "Building" $@ "... "
275	${LINK_CC} -o $@ fparcsr_mv.o fsstruct_mv.o fsstruct_ls.o $@.o ${LFLAGS}
276
277fij_mv: fij_mv.f
278	@echo  "Building" $@ "... "
279	${LINK_FC} -c $@
280
281fparcsr_ls: fparcsr_ls.f
282	@echo  "Building" $@ "... "
283	${LINK_FC} -c $@
284
285fparcsr_mv: fparcsr_mv.f
286	@echo  "Building" $@ "... "
287	${LINK_FC} -c $@
288
289fsstruct_ls: fsstruct_ls.f
290	@echo  "Building" $@ "... "
291	${LINK_FC} -c $@
292
293fsstruct_mv: fsstruct_mv.f
294	@echo  "Building" $@ "... "
295	${LINK_FC} -c $@
296
297fstruct_ls: fstruct_ls.f
298	@echo  "Building" $@ "... "
299	${LINK_FC} -c $@
300
301fstruct_mv: fstruct_mv.f
302	@echo  "Building" $@ "... "
303	${LINK_FC} -c $@
304