Makefile.am 31.4 KB
Newer Older
1
## Process this file with automake to produce Makefile.in
2

3
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} -I m4
4

Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
5
AM_FCFLAGS = $(SCALAPACK_FCFLAGS) $(FC_MODINC)modules
6
AM_LDFLAGS = $(SCALAPACK_LDFLAGS)
7

Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
8
9
FCLD = @ACTUAL_FC@

10
# libelpa
11
12
13
14
lib_LTLIBRARIES = libelpa@SUFFIX@.la
libelpa@SUFFIX@_la_LINK = $(FCLINK) $(AM_LDFLAGS) -version-info $(ELPA_SO_VERSION)
libelpa@SUFFIX@_la_LIBADD = libelpa@SUFFIX@_public.la libelpa@SUFFIX@_private.la
libelpa@SUFFIX@_la_SOURCES =
15

16
17
# parts with public interface
noinst_LTLIBRARIES = libelpa@SUFFIX@_public.la
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
18
libelpa@SUFFIX@_public_la_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)modules $(FC_MODINC)private_modules
19
libelpa@SUFFIX@_public_la_SOURCES = \
20
21
  src/elpa.F90 \
  src/elpa_api.F90 \
22
  src/elpa_constants.F90
23
24
25

if ENABLE_LEGACY
libelpa@SUFFIX@_public_la_SOURCES += \
26
  src/elpa_driver/legacy_interface/elpa.F90 \
27
  src/elpa1/legacy_interface/elpa1.F90 \
28
29
  src/elpa2/legacy_interface/elpa2.F90 \
  src/elpa2/legacy_interface/elpa2_utilities.F90 \
30
  src/elpa1/legacy_interface/elpa1_auxiliary.F90
31
endif
32
33
34

# internal parts
noinst_LTLIBRARIES += libelpa@SUFFIX@_private.la
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
35
libelpa@SUFFIX@_private_la_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
36
libelpa@SUFFIX@_private_la_SOURCES = \
37
  src/elpa_impl.F90 \
38
  src/elpa_autotune_impl.F90 \
39
  src/elpa_abstract_impl.F90 \
40
41
42
  src/helpers/mod_precision.F90 \
  src/helpers/mod_mpi.F90 \
  src/helpers/mod_mpi_stubs.F90 \
43
  src/helpers/mod_omp.F90 \
44
45
46
47
48
49
  src/elpa_generated_fortran_interfaces.F90 \
  src/elpa2/mod_redist_band.F90 \
  src/elpa2/mod_pack_unpack_cpu.F90 \
  src/elpa2/mod_compute_hh_trafo.F90 \
  src/helpers/aligned_mem.F90 \
  src/elpa1/elpa1_compute_private.F90 \
50
  src/elpa1/elpa1_auxiliary.F90 \
51
52
53
54
55
56
57
58
59
60
61
62
63
  src/elpa2/elpa2_determine_workload.F90 \
  src/elpa2/elpa2_compute.F90 \
  src/elpa2/kernels/mod_single_hh_trafo_real.F90 \
  src/GPU/check_for_gpu.F90 \
  src/GPU/mod_cuda.F90 \
  src/elpa2/GPU/interface_c_kernel.F90 \
  src/elpa2/mod_pack_unpack_gpu.F90 \
  src/elpa2/qr/qr_utils.F90 \
  src/elpa2/qr/elpa_qrkernels.F90 \
  src/elpa2/qr/elpa_pdlarfb.F90 \
  src/elpa2/qr/elpa_pdgeqrf.F90 \
  src/elpa1/elpa1.F90 \
  src/elpa2/elpa2.F90 \
64
  src/elpa_generalized/cannon.c \
65
  #src/elpa_generalized/test_c_bindings.c \
66
  src/helpers/matrix_plot.F90 \
67
68
  src/elpa_index.c

Andreas Marek's avatar
Andreas Marek committed
69
70
71
libelpa@SUFFIX@_private_la_SOURCES += src/elpa_c_interface.c 


72
73
74
75
76
77
78
79
80
81
# elpa_utilities.F90 is private in new API, public in legacy
if ENABLE_LEGACY
libelpa@SUFFIX@_public_la_SOURCES += \
  src/general/elpa_utilities.F90
else
libelpa@SUFFIX@_private_la_SOURCES += \
  src/general/elpa_utilities.F90
endif


82
83
if ENABLE_LEGACY
libelpa@SUFFIX@_private_la_SOURCES += \
84
  src/elpa_driver/legacy_interface/elpa_driver_c_interface.F90 \
85
  src/elpa1/legacy_interface/elpa_1stage_c_interface.F90 \
86
  src/elpa2/legacy_interface/elpa_2stage_c_interface.F90
87
endif
88

89
EXTRA_libelpa@SUFFIX@_private_la_DEPENDENCIES = \
90
91
  src/elpa1/elpa_reduce_add_vectors.F90 \
  src/elpa1/elpa_transpose_vectors.F90 \
Andreas Marek's avatar
Andreas Marek committed
92
  src/elpa_api_math_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
93
94
  src/elpa_impl_math_template.F90 \
  src/elpa_impl_generalized_transform_template.F90 \
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
  src/elpa1/elpa1_compute_template.F90 \
  src/elpa2/elpa2_compute_real_template.F90 \
  src/elpa2/elpa2_compute_complex_template.F90 \
  src/elpa1/elpa1_template.F90 \
  src/elpa2/elpa2_template.F90 \
  src/elpa2/qr/qr_utils_template.F90 \
  src/elpa2/qr/elpa_pdlarfb_template.F90 \
  src/elpa2/qr/elpa_pdgeqrf_template.F90 \
  src/elpa2/elpa2_bandred_template.F90 \
  src/elpa2/elpa2_symm_matrix_allreduce_real_template.F90 \
  src/elpa2/elpa2_trans_ev_band_to_full_template.F90 \
  src/elpa2/elpa2_tridiag_band_template.F90 \
  src/elpa2/elpa2_trans_ev_tridi_to_band_template.F90 \
  src/elpa2/elpa2_herm_matrix_allreduce_complex_template.F90 \
  src/elpa2/kernels/real_template.F90 \
  src/elpa2/kernels/complex_template.F90 \
  src/elpa2/kernels/simple_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
112
  src/elpa2/kernels/simple_block4_template.F90 \
113
114
115
116
117
118
119
120
121
  src/elpa2/pack_unpack_cpu.F90 \
  src/elpa2/pack_unpack_gpu.F90 \
  src/elpa2/compute_hh_trafo.F90 \
  src/elpa2/redist_band.F90 \
  src/general/sanity.F90 \
  src/elpa1/elpa_cholesky_template.F90 \
  src/elpa1/elpa_invert_trm.F90 \
  src/elpa1/elpa_multiply_a_b.F90 \
  src/elpa1/elpa_solve_tridi_impl_public.F90 \
122
  src/general/precision_macros.h \
123
  src/general/precision_typedefs.h \
124
  src/general/precision_kinds.F90
125

126
127
if ENABLE_LEGACY
EXTRA_libelpa@SUFFIX@_private_la_DEPENDENCIES += \
128
129
130
131
132
133
134
135
136
137
138
139
140
141
  src/elpa1/legacy_interface/elpa1_template.F90 \
  src/elpa2/legacy_interface/elpa2_template.F90 \
  src/elpa1/legacy_interface/elpa1_c_interface_template.F90 \
  src/elpa2/legacy_interface/elpa2_c_interface_template.F90 \
  src/elpa_driver/legacy_interface/elpa_driver_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_solve_tridi_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_mult_at_b_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_mult_ah_b_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_invert_trm_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_cholesky_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_cholesky_template.F90 \
  src/elpa1/legacy_interface/elpa_invert_trm.F90 \
  src/elpa1/legacy_interface/elpa_multiply_a_b.F90 \
  src/elpa1/legacy_interface/elpa_solve_tridi.F90
142
endif
143

144
if HAVE_DETAILED_TIMINGS
145
146
147
148
149
150
151
152
153
libelpa@SUFFIX@_private_la_SOURCES += \
  src/ftimings/ftimings.F90 \
  src/ftimings/ftimings_type.F90 \
  src/ftimings/ftimings_value.F90 \
  src/ftimings/highwater_mark.c \
  src/ftimings/resident_set_size.c \
  src/ftimings/time.c \
  src/ftimings/virtual_memory.c \
  src/ftimings/papi.c
154
155
156
157
158
159

if ENABLE_LEGACY
libelpa@SUFFIX@_private_la_SOURCES += \
  src/helpers/timer.F90
endif

160
else
161
162
libelpa@SUFFIX@_private_la_SOURCES += \
  src/helpers/timer_dummy.F90
163
164
endif

165
if WITH_GPU_VERSION
Andreas Marek's avatar
Andreas Marek committed
166
  libelpa@SUFFIX@_private_la_SOURCES +=  src/GPU/cudaFunctions.cu src/GPU/cuUtils.cu src/elpa2/GPU/ev_tridi_band_gpu_c_v2.cu
167
  EXTRA_libelpa@SUFFIX@_private_la_DEPENDENCIES +=   src/elpa2/GPU/ev_tridi_band_gpu_c_v2_complex_template.cu src/elpa2/GPU/ev_tridi_band_gpu_c_v2_real_template.cu
168
169
endif

170
if !WITH_MPI
171
  libelpa@SUFFIX@_private_la_SOURCES += src/helpers/mod_time_c.F90
172
if !HAVE_DETAILED_TIMINGS
173
  libelpa@SUFFIX@_private_la_SOURCES += src/ftimings/time.c
174
175
176
endif
endif

Andreas Marek's avatar
Andreas Marek committed
177
if WITH_REAL_GENERIC_KERNEL
Andreas Marek's avatar
Andreas Marek committed
178
  libelpa@SUFFIX@_private_la_SOURCES +=  src/elpa2/kernels/real.F90
179
180
endif

Andreas Marek's avatar
Andreas Marek committed
181
if WITH_COMPLEX_GENERIC_KERNEL
Andreas Marek's avatar
Andreas Marek committed
182
  libelpa@SUFFIX@_private_la_SOURCES +=  src/elpa2/kernels/complex.F90
183
184
endif

Andreas Marek's avatar
Andreas Marek committed
185
if WITH_REAL_GENERIC_SIMPLE_KERNEL
Andreas Marek's avatar
Andreas Marek committed
186
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_simple.F90
187
188
endif

Andreas Marek's avatar
Andreas Marek committed
189
if WITH_COMPLEX_GENERIC_SIMPLE_KERNEL
Andreas Marek's avatar
Andreas Marek committed
190
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_simple.F90
191
192
endif

Andreas Marek's avatar
Andreas Marek committed
193
194
195
196
if WITH_REAL_GENERIC_SIMPLE_BLOCK4_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_simple_block4.F90
endif

Andreas Marek's avatar
Andreas Marek committed
197
198
199
#if WITH_REAL_GENERIC_SIMPLE_BLOCK6_KERNEL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_simple_block6.F90
#endif
Andreas Marek's avatar
Andreas Marek committed
200
if WITH_REAL_BGP_KERNEL
Andreas Marek's avatar
Andreas Marek committed
201
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_bgp.f90
202
203
endif

Andreas Marek's avatar
Andreas Marek committed
204
if WITH_REAL_BGQ_KERNEL
Andreas Marek's avatar
Andreas Marek committed
205
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_bgq.f90
206
207
endif

208
if WITH_REAL_SSE_ASSEMBLY_KERNEL
Andreas Marek's avatar
Andreas Marek committed
209
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/asm_x86_64_double_precision.s
210
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
211
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/asm_x86_64_single_precision.s
212
endif
213

Andreas Marek's avatar
Andreas Marek committed
214
else
215
if WITH_COMPLEX_SSE_ASSEMBLY_KERNEL
Andreas Marek's avatar
Andreas Marek committed
216
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/asm_x86_64_double_precision.s
217
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
218
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/asm_x86_64_single_precision.s
219
endif
220
221
endif
endif
Andreas Marek's avatar
Andreas Marek committed
222

223
224
if WITH_REAL_SPARC64_BLOCK2_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_2hv_double_precision.c
Andreas Marek's avatar
Andreas Marek committed
225
226
227
#if WANT_SINGLE_PRECISION_REAL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_2hv_single_precision.c
#endif
228
229
endif

230
231
232
233
234
235
236
if WITH_REAL_NEON_ARCH64_BLOCK2_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_neon_arch64_2hv_double_precision.c
if WANT_SINGLE_PRECISION_REAL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_neon_arch64_2hv_single_precision.c
endif
endif

237
238
if WITH_REAL_VSX_BLOCK2_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_vsx_2hv_double_precision.c
239
240
241
if WANT_SINGLE_PRECISION_REAL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_vsx_2hv_single_precision.c
endif
242
243
endif

244
if WITH_REAL_SSE_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
245
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_2hv_double_precision.c
246
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
247
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_2hv_single_precision.c
248
endif
249
250
endif

Andreas Marek's avatar
Andreas Marek committed
251
if WITH_REAL_AVX_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
252
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_2hv_double_precision.c
253
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
254
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_2hv_single_precision.c
255
endif
256
257
else
if WITH_REAL_AVX2_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
258
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_2hv_double_precision.c
259
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
260
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_2hv_single_precision.c
261
endif
262
endif
263
264
endif

265
if WITH_REAL_AVX512_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
266
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_2hv_double_precision.c
267
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
268
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_2hv_single_precision.c
269
endif
270
271
endif

272
273
if WITH_REAL_SPARC64_BLOCK4_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_4hv_double_precision.c
274
275
276
#if WANT_SINGLE_PRECISION_REAL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_4hv_single_precision.c
#endif
277
endif
278

279
280
281
282
283
284
285
if WITH_REAL_NEON_ARCH64_BLOCK4_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_neon_arch64_4hv_double_precision.c
if WANT_SINGLE_PRECISION_REAL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_neon_arch64_4hv_single_precision.c
endif
endif

286
287
288
289
290
291
if WITH_REAL_VSX_BLOCK4_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_vsx_4hv_double_precision.c
if WANT_SINGLE_PRECISION_REAL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_vsx_4hv_single_precision.c
endif
endif
292

293
if WITH_REAL_SSE_BLOCK4_KERNEL
Andreas Marek's avatar
Andreas Marek committed
294
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_4hv_double_precision.c
295
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
296
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_4hv_single_precision.c
297
endif
298
299
endif

Andreas Marek's avatar
Andreas Marek committed
300
if WITH_REAL_AVX_BLOCK4_KERNEL
Andreas Marek's avatar
Andreas Marek committed
301
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_4hv_double_precision.c
302
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
303
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_4hv_single_precision.c
304
endif
305
306
else
if WITH_REAL_AVX2_BLOCK4_KERNEL
Andreas Marek's avatar
Andreas Marek committed
307
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_4hv_double_precision.c
308
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
309
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_4hv_single_precision.c
310
endif
311
endif
312
313
endif

314
if WITH_REAL_AVX512_BLOCK4_KERNEL
Andreas Marek's avatar
Andreas Marek committed
315
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_4hv_double_precision.c
316
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
317
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_4hv_single_precision.c
318
endif
319
320
endif

321
322
if WITH_REAL_SPARC64_BLOCK6_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_6hv_double_precision.c
323
324
325
#if WANT_SINGLE_PRECISION_REAL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_6hv_single_precision.c
#endif
326
endif
327

328
329
330
331
332
333
334
if WITH_REAL_NEON_ARCH64_BLOCK6_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_neon_arch64_6hv_double_precision.c
if WANT_SINGLE_PRECISION_REAL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_neon_arch64_6hv_single_precision.c
endif
endif

335
336
337
338
339
340
if WITH_REAL_VSX_BLOCK6_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_vsx_6hv_double_precision.c
if WANT_SINGLE_PRECISION_REAL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_vsx_6hv_single_precision.c
endif
endif
341

342
if WITH_REAL_SSE_BLOCK6_KERNEL
Andreas Marek's avatar
Andreas Marek committed
343
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_6hv_double_precision.c
344
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
345
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_6hv_single_precision.c
346
endif
347
348
endif

Andreas Marek's avatar
Andreas Marek committed
349
if WITH_REAL_AVX_BLOCK6_KERNEL
Andreas Marek's avatar
Andreas Marek committed
350
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_6hv_double_precision.c
351
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
352
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_6hv_single_precision.c
353
endif
354
355
else
if WITH_REAL_AVX2_BLOCK6_KERNEL
Andreas Marek's avatar
Andreas Marek committed
356
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_6hv_double_precision.c
357
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
358
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_6hv_single_precision.c
359
endif
360
endif
361
362
endif

363
if WITH_REAL_AVX512_BLOCK6_KERNEL
Andreas Marek's avatar
Andreas Marek committed
364
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_6hv_double_precision.c
365
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
366
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_6hv_single_precision.c
367
endif
368
369
endif

370
371
372
373
374
375
376
377
378
379
380
381
382
#if WITH_COMPLEX_SPARC64_BLOCK1_KERNEL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sparc64_1hv_double_precision.c
#if WANT_SINGLE_PRECISION_COMPLEX
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sparc64_1hv_single_precision.c
#endif
#endif
#
#if WITH_COMPLEX_VSX_BLOCK1_KERNEL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_vsx_1hv_double_precision.c
#if WANT_SINGLE_PRECISION_COMPLEX
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_vsx_1hv_single_precision.c
#endif
#endif
383

384
if WITH_COMPLEX_SSE_BLOCK1_KERNEL
Andreas Marek's avatar
Andreas Marek committed
385
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sse_1hv_double_precision.c
386
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
387
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sse_1hv_single_precision.c
388
endif
389
390
endif

Andreas Marek's avatar
Andreas Marek committed
391
if WITH_COMPLEX_AVX_BLOCK1_KERNEL
Andreas Marek's avatar
Andreas Marek committed
392
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_1hv_double_precision.c
393
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
394
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_1hv_single_precision.c
395
endif
396
397
else
if WITH_COMPLEX_AVX2_BLOCK1_KERNEL
Andreas Marek's avatar
Andreas Marek committed
398
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_1hv_double_precision.c
399
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
400
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_1hv_single_precision.c
401
endif
402
endif
403
404
endif

405
406

if WITH_COMPLEX_AVX512_BLOCK1_KERNEL
Andreas Marek's avatar
Andreas Marek committed
407
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx512_1hv_double_precision.c
408
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
409
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx512_1hv_single_precision.c
410
endif
411
412
endif

413
414
415
416
417
418
419
420
421
422
423
424
425
#if WITH_COMPLEX_SPARC64_BLOCK2_KERNEL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sparc64_2hv_double_precision.c
#if WANT_SINGLE_PRECISION_COMPLEX
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sparc64_2hv_single_precision.c
#endif
#endif
#
#if WITH_COMPLEX_VSX_BLOCK2_KERNEL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_vsx_2hv_double_precision.c
#if WANT_SINGLE_PRECISION_COMPLEX
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_vsx_2hv_single_precision.c
#endif
#endif
426

427
if WITH_COMPLEX_SSE_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
428
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sse_2hv_double_precision.c
429
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
430
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sse_2hv_single_precision.c
431
endif
432
433
endif

Andreas Marek's avatar
Andreas Marek committed
434
if WITH_COMPLEX_AVX_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
435
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_2hv_double_precision.c
436
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
437
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_2hv_single_precision.c
438
endif
439
440
else
if WITH_COMPLEX_AVX2_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
441
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_2hv_double_precision.c
442
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
443
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_2hv_single_precision.c
444
endif
445
endif
446
447
endif

448
if WITH_COMPLEX_AVX512_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
449
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx512_2hv_double_precision.c
450
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
451
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx512_2hv_single_precision.c
452
endif
453
454
endif

455
# Cuda files
456
.cu.lo:
457
	NVCC="$(NVCC)" libtool --mode=compile --tag=CC $(top_srcdir)/nvcc_wrap $(NVCCFLAGS) $(LDFLAGS) -I$(top_builddir)/ -I$(top_srcdir)/  -c $< -o $@
Andreas Marek's avatar
Andreas Marek committed
458

459
460
461
462
463
# Assembly files
LTCCASCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
	$(LIBTOOLFLAGS) --mode=compile $(CCAS) $(AM_CCASFLAGS) \
	$(CCASFLAGS)

464
465
466
include generated_headers.am
BUILT_SOURCES = $(generated_headers)

467
# install public headers and Fortran modules files in the include/ dir
468
elpa_includedir = $(includedir)/elpa@SUFFIX@-@PACKAGE_VERSION@
469
470
471
472
473
474
475
nobase_elpa_include_HEADERS = \
  $(wildcard modules/*) \
  elpa/elpa.h \
  elpa/elpa_generic.h \
  elpa/elpa_legacy.h

nobase_nodist_elpa_include_HEADERS = \
476
  elpa/elpa_version.h \
477
478
  elpa/elpa_constants.h \
  elpa/elpa_generated.h \
Andreas Marek's avatar
Andreas Marek committed
479
  elpa/elpa_generated_c_api.h \
480
  elpa/elpa_generated_legacy.h
481

Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
482
dist_man_MANS = \
Andreas Marek's avatar
Andreas Marek committed
483
  man/elpa2_print_kernels.1 \
Andreas Marek's avatar
Andreas Marek committed
484
  man/elpa_init.3 \
Andreas Marek's avatar
Andreas Marek committed
485
  man/elpa_allocate.3 \
Andreas Marek's avatar
Andreas Marek committed
486
  man/elpa_set.3 \
Andreas Marek's avatar
Andreas Marek committed
487
  man/elpa_setup.3 \
488
  man/elpa_eigenvalues.3 \
489
  man/elpa_eigenvectors.3 \
490
  man/elpa_generalized_eigenvectors.3 \
491
  man/elpa_generalized_eigenvalues.3 \
492
  man/elpa_cholesky.3 \
493
  man/elpa_invert_triangular.3 \
494
  man/elpa_solve_tridiagonal.3 \
495
  man/elpa_hermitian_multiply.3 \
Andreas Marek's avatar
Andreas Marek committed
496
  man/elpa_deallocate.3 \
497
498
  man/elpa_load_settings.3 \
  man/elpa_store_settings.3 \
Andreas Marek's avatar
Andreas Marek committed
499
500
501
502
  man/elpa_print_settings.3 \
  man/elpa_autotune_save_state.3 \
  man/elpa_autotune_load_state.3 \
  man/elpa_autotune_print_state.3 \
Andreas Marek's avatar
Andreas Marek committed
503
  man/elpa_uninit.3
504
505
506

if ENABLE_LEGACY
dist_man_MANS += \
507
508
509
510
511
512
513
514
  man/solve_evp_real_1stage_double.3 \
  man/solve_evp_complex_1stage_double.3 \
  man/solve_evp_real_2stage_double.3 \
  man/solve_evp_complex_2stage_double.3 \
  man/elpa_solve_evp_real_1stage_double.3 \
  man/elpa_solve_evp_complex_1stage_double.3 \
  man/elpa_solve_evp_real_2stage_double.3 \
  man/elpa_solve_evp_complex_2stage_double.3 \
515
  man/elpa_get_communicators.3 \
516
517
518
519
520
521
522
523
524
525
526
  man/elpa_mult_at_b_real_double.3 \
  man/elpa_mult_at_b_real_single.3 \
  man/elpa_mult_ah_b_complex_double.3 \
  man/elpa_mult_ah_b_complex_single.3 \
  man/elpa_invert_trm_real_double.3 \
  man/elpa_invert_trm_real_single.3 \
  man/elpa_invert_trm_complex_double.3 \
  man/elpa_invert_trm_complex_single.3 \
  man/elpa_solve_evp_real_double.3 \
  man/elpa_solve_evp_real_single.3 \
  man/elpa_solve_evp_complex_double.3 \
527
528
529
530
531
  man/elpa_solve_evp_complex_single.3 \
  man/elpa_autotune_setup.3 \
  man/elpa_autotune_step.3 \
  man/elpa_autotune_set_best.3 \
  man/elpa_autotune_deallocate.3
532
533
endif

Andreas Marek's avatar
Andreas Marek committed
534

535
if WANT_SINGLE_PRECISION_REAL
536
if ENABLE_LEGACY
537
538
539
540
541
dist_man_MANS += \
  man/solve_evp_real_1stage_single.3 \
  man/elpa_solve_evp_real_1stage_single.3 \
  man/elpa_solve_evp_real_2stage_single.3 \
  man/solve_evp_real_2stage_single.3
542
endif
543
endif
544
545

if WANT_SINGLE_PRECISION_COMPLEX
546
if ENABLE_LEGACY
547
548
549
550
551
552
dist_man_MANS += \
  man/solve_evp_complex_1stage_single.3 \
  man/elpa_solve_evp_complex_1stage_single.3 \
  man/elpa_solve_evp_complex_2stage_single.3 \
  man/solve_evp_complex_2stage_single.3
endif
553
endif
554

555
dist_doc_DATA = README.md USERS_GUIDE.md USERS_GUIDE_DEPRECATED_LEGACY_API.md INSTALL.md CONTRIBUTING.md LICENSE Changelog COPYING/COPYING COPYING/gpl.txt COPYING/lgpl.txt
556

557
558
# pkg-config stuff
pkgconfigdir = $(libdir)/pkgconfig
559
pkgconfig_DATA = @PKG_CONFIG_FILE@
560

561
562
# programs
bin_PROGRAMS = \
563
  elpa2_print_kernels@SUFFIX@
564

565
566
noinst_PROGRAMS =
check_SCRIPTS =
567

568
569
test_program_ldadd = libelpatest@SUFFIX@.la libelpa@SUFFIX@.la
test_program_fcflags = $(AM_FCFLAGS) $(FC_MODOUT)test_modules $(FC_MODINC)test_modules $(FC_MODINC)modules $(FC_MODINC)private_modules
570
571
572

# library with shared sources for the test files
noinst_LTLIBRARIES += libelpatest@SUFFIX@.la
573
libelpatest@SUFFIX@_la_FCFLAGS = $(test_program_fcflags)
574
libelpatest@SUFFIX@_la_SOURCES = \
575
576
577
578
579
580
  test/shared/test_util.F90 \
  test/shared/test_read_input_parameters.F90 \
  test/shared/test_check_correctness.F90 \
  test/shared/test_setup_mpi.F90 \
  test/shared/test_blacs_infrastructure.F90 \
  test/shared/test_prepare_matrix.F90 \
581
  test/shared/test_analytic.F90 \
582
  test/shared/test_output_type.F90
Andreas Marek's avatar
Andreas Marek committed
583

584
585
586
587
588
if WITH_SCALAPACK_TESTS
libelpatest@SUFFIX@_la_SOURCES += \
  test/shared/test_scalapack.F90
endif

589
if HAVE_REDIRECT
590
libelpatest@SUFFIX@_la_SOURCES += \
591
592
  test/shared/test_redir.c \
  test/shared/test_redirect.F90
593
594
595
596
endif


elpa2_print_kernels@SUFFIX@_SOURCES = src/elpa2/elpa2_print_kernels.F90
597
elpa2_print_kernels@SUFFIX@_LDADD = libelpa@SUFFIX@.la
598
elpa2_print_kernels@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)modules
599

600
include test_programs.am
601

602
603
if ENABLE_LEGACY
include legacy_test_programs.am
604
605
endif

606
607
#include test_programs_manual.am

608
noinst_PROGRAMS += double_instance@SUFFIX@
609
check_SCRIPTS += double_instance@SUFFIX@_default.sh
610
double_instance@SUFFIX@_SOURCES = test/Fortran/elpa2/double_instance.F90
611
double_instance@SUFFIX@_LDADD = $(test_program_ldadd)
612
double_instance@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
613

614
noinst_PROGRAMS += real_2stage_banded@SUFFIX@
615
check_SCRIPTS += real_2stage_banded@SUFFIX@_default.sh
Andreas Marek's avatar
Andreas Marek committed
616
real_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/real_2stage_banded.F90
617
real_2stage_banded@SUFFIX@_LDADD = $(test_program_ldadd)
618
real_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
619

620
noinst_PROGRAMS += complex_2stage_banded@SUFFIX@
621
check_SCRIPTS += complex_2stage_banded@SUFFIX@_default.sh
Andreas Marek's avatar
Andreas Marek committed
622
complex_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/complex_2stage_banded.F90
623
complex_2stage_banded@SUFFIX@_LDADD = $(test_program_ldadd)
624
complex_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
625
626

if WANT_SINGLE_PRECISION_REAL
627
noinst_PROGRAMS += single_real_2stage_banded@SUFFIX@
628
check_SCRIPTS += single_real_2stage_banded@SUFFIX@_default.sh
Andreas Marek's avatar
Andreas Marek committed
629
single_real_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/single_real_2stage_banded.F90
630
single_real_2stage_banded@SUFFIX@_LDADD = $(test_program_ldadd)
631
single_real_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
632
633
634
endif

if WANT_SINGLE_PRECISION_COMPLEX
635
noinst_PROGRAMS += single_complex_2stage_banded@SUFFIX@
636
check_SCRIPTS += single_complex_2stage_banded@SUFFIX@_default.sh
Andreas Marek's avatar
Andreas Marek committed
637
single_complex_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/single_complex_2stage_banded.F90
638
single_complex_2stage_banded@SUFFIX@_LDADD = $(test_program_ldadd)
639
single_complex_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
640
641
endif

642
643
644
645
646
#noinst_PROGRAMS += test_c_bindings@SUFFIX@
#check_SCRIPTS += test_c_bindings@SUFFIX@_default.sh
#test_c_bindings@SUFFIX@_SOURCES = test/Fortran/elpa_generalized/test_bindings.F90
#test_c_bindings@SUFFIX@_LDADD = $(test_program_ldadd) $(FCLIBS)
#test_c_bindings@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
647

648
649
650
651
652
#noinst_PROGRAMS += test_c_cannon@SUFFIX@
#check_SCRIPTS += test_c_cannon@SUFFIX@_default.sh
#test_c_cannon@SUFFIX@_SOURCES = test/C/elpa_generalized/test_cannon.c
#test_c_cannon@SUFFIX@_LDADD = $(test_program_ldadd) $(FCLIBS)
#test_c_cannon@SUFFIX@_CFLAGS = $(test_program_cflags)
653

654
655
# python wrapper
pyelpadir = $(pythondir)/pyelpa
656
if WITH_PYTHON
657
pyelpa_PYTHON = python/pyelpa/__init__.py python/pyelpa/distributedmatrix.py
658
pyelpa_LTLIBRARIES = wrapper.la
659
660
661
662
else
pyelpa_PYTHON =
pyelpa_LTLIBRARIES =
endif
663
nodist_wrapper_la_SOURCES = python/pyelpa/wrapper.c
664
665
wrapper_la_LDFLAGS = -module -avoid-version -shared $(AM_LDFLAGS)
wrapper_la_LIBADD = libelpa@SUFFIX@.la
666
wrapper_la_CFLAGS = $(PYTHON_INCLUDE) $(NUMPY_INCLUDE) $(AM_CFLAGS)
667

668
python/pyelpa/wrapper.c: python/pyelpa/wrapper.pyx
669
	cython $< -o $@
670

671
# test scripts
672
TASKS ?= 2
673
if WITH_MPI
674
  wrapper=$(MPI_BINARY) -n $${TASKS:-$(TASKS)}
675
else
676
  wrapper=
677
endif
678
TESTS = $(check_SCRIPTS)
679
680
681
682
683
684
%_extended.sh: %
	@echo "#!/bin/bash" > $@
	@echo 'if [ "$$CHECK_LEVEL" = "extended" ] ; then $(wrapper) ./$^ $$TEST_FLAGS ; else exit 77; fi' >> $@
	@chmod +x $@

%_default.sh: %
685
	@echo "#!/bin/bash" > $@
686
	@echo '$(wrapper)' ./$^ '$$TEST_FLAGS' >> $@
687
	@chmod +x $@
688

689
690
691
692
693
694
if WITH_PYTHON_TESTS
check_SCRIPTS += test_python.sh
endif

test_python.sh:
	@echo '#!/bin/bash' > $@
695
# this is kind of hacky... is there a better way to get wrapper.so?
696
697
698
699
	@echo 'export PYTHONPATH=./python-copy:$$PYTHONPATH' >> $@
	@echo 'cp -r $(abs_top_srcdir)/python python-copy || exit 1' >> $@
	@echo 'chmod u+rwX -R python-copy || exit 1' >> $@
	@echo 'cp .libs/wrapper.so python-copy/pyelpa/ || exit 1' >> $@
700
# the dlopen flags are needed for MKL to work properly...
701
# only in os from python 3.3 on
702
	@echo "$(wrapper) $(PYTHON) -c 'import sys, os; sys.setdlopenflags(os.RTLD_NOW | os.RTLD_GLOBAL); import pytest; sys.exit(pytest.main([\"./python-copy\", \"-p\", \"no:cacheprovider\"]))'" >> $@
Sebastian Ohlmann's avatar
Sebastian Ohlmann committed
703
	@echo 'exit_code=$$?' >> $@
704
	@echo 'rm -rf python-copy || exit 1' >> $@
Sebastian Ohlmann's avatar
Sebastian Ohlmann committed
705
	@echo 'exit $$exit_code' >> $@
706
707
	@chmod +x $@

708
709
include doxygen.am

710
CLEANFILES = \
Andreas Marek's avatar
Andreas Marek committed
711
712
  elpa_generated.h \
  elpa_generated_c_api.h \
Andreas Marek's avatar
Andreas Marek committed
713
  elpa1_test* \
714
  elpa2_test*\
Andreas Marek's avatar
Andreas Marek committed
715
716
  elpa2_real* \
  elpa1_real* \
717
  elpa*.sh \
718
  test*.sh \
Andreas Marek's avatar
Andreas Marek committed
719
720
721
722
723
724
725
726
  legacy_real* \
  legacy_complex* \
  legacy_single_real* \
  legacy_single_complex* \
  single_real* \
  single_complex* \
  real* \
  complex* \
727
  double_instance* \
728
  *.i \
Sebastian Ohlmann's avatar
Sebastian Ohlmann committed
729
730
  python/pyelpa/wrapper.c \
  check_python.sh
731
732

clean-local:
733
	-rm -rf modules/* private_modules/* test_modules/* .fortran_dependencies/*
Andreas Marek's avatar
Andreas Marek committed
734
735
736
737
738
739
740
	-rm -rf test_*.sh
	-rm -rf legacy_*.sh
	-rm -rf real_2stage*.sh
	-rm -rf complex_2stage*.sh
	-rm -rf single_complex_2stage*.sh
	-rm -rf single_real_2stage*.sh
	-rm -rf double_instance_onenode*.sh
741
	-rm -rf $(generated_headers)
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
742
743

distclean-local:
Andreas Marek's avatar
Andreas Marek committed
744
745
746
747
748
	-rm -rf ./m4
	-rm -rf ./src
	-rm -rf ./test
	-rm -rf ./modules
	-rm -rf .fortran_dependencies
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
749
	-rm config-f90.h
750
	-rm -rf ./test/.deps
Andreas Marek's avatar
Andreas Marek committed
751
	-rm -rf elpa/elpa_generated_c_api.h
752

753
EXTRA_DIST = \
754
  elpa.spec \
755
  elpa/elpa.h \
756
  elpa/elpa_generic.h \
757
  elpa/elpa_legacy.h \
758
  fdep/fortran_dependencies.mk \
759
  fdep/fortran_dependencies.pl \
760
  manual_cpp \
761
  nvcc_wrap \
Andreas Marek's avatar
Andreas Marek committed
762
  remove_xcompiler \
763
  src/GPU/cuUtils_template.cu \
Andreas Marek's avatar
Andreas Marek committed
764
  src/elpa_api_math_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
765
  src/elpa_impl_math_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
766
  src/elpa_impl_generalized_transform_template.F90 \
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
  src/elpa1/elpa1_compute_template.F90 \
  src/elpa1/elpa1_merge_systems_real_template.F90 \
  src/elpa1/elpa1_solve_tridi_real_template.F90 \
  src/elpa1/elpa1_template.F90 \
  src/elpa1/elpa1_tools_template.F90 \
  src/elpa1/elpa1_trans_ev_template.F90 \
  src/elpa1/elpa1_tridiag_template.F90 \
  src/elpa1/elpa_cholesky_template.F90 \
  src/elpa1/elpa_invert_trm.F90 \
  src/elpa1/elpa_multiply_a_b.F90 \
  src/elpa1/elpa_reduce_add_vectors.F90 \
  src/elpa1/elpa_solve_tridi_impl_public.F90 \
  src/elpa1/elpa_transpose_vectors.F90 \
  src/elpa2/GPU/ev_tridi_band_gpu_c_v2_complex_template.cu \
  src/elpa2/GPU/ev_tridi_band_gpu_c_v2_real_template.cu \
  src/elpa2/compute_hh_trafo.F90 \
  src/elpa2/elpa2_bandred_template.F90 \
  src/elpa2/elpa2_compute_complex_template.F90 \
  src/elpa2/elpa2_compute_real_template.F90 \
  src/elpa2/elpa2_herm_matrix_allreduce_complex_template.F90 \
  src/elpa2/elpa2_symm_matrix_allreduce_real_template.F90 \
  src/elpa2/elpa2_template.F90 \
  src/elpa2/elpa2_trans_ev_band_to_full_template.F90 \
  src/elpa2/elpa2_trans_ev_tridi_to_band_template.F90 \
  src/elpa2/elpa2_tridiag_band_template.F90 \
  src/elpa2/kernels/complex_avx-avx2_1hv_template.c \
  src/elpa2/kernels/complex_avx-avx2_2hv_template.c \
  src/elpa2/kernels/complex_avx512_1hv_template.c \
  src/elpa2/kernels/complex_avx512_2hv_template.c \
  src/elpa2/kernels/complex_sse_1hv_template.c \
  src/elpa2/kernels/complex_sse_2hv_template.c \
  src/elpa2/kernels/complex_template.F90 \
799
800
  src/elpa2/kernels/real_vsx_4hv_template.c \
  src/elpa2/kernels/real_vsx_6hv_template.c \
Andreas Marek's avatar
Andreas Marek committed
801
  src/elpa2/kernels/real_128bit_256bit_512bit_BLOCK_template.c \
802
803
  src/elpa2/kernels/real_template.F90 \
  src/elpa2/kernels/simple_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
804
  src/elpa2/kernels/simple_block4_template.F90 \
805
806
807
808
809
810
811
  src/elpa2/pack_unpack_cpu.F90 \
  src/elpa2/pack_unpack_gpu.F90 \
  src/elpa2/qr/elpa_pdgeqrf_template.F90 \
  src/elpa2/qr/elpa_pdlarfb_template.F90 \
  src/elpa2/qr/elpa_qrkernels_template.F90 \
  src/elpa2/qr/qr_utils_template.F90 \
  src/elpa2/redist_band.F90 \
812
  src/elpa_generalized/cannon_forw_template.c \
813
  src/elpa_generalized/cannon_back_template.c \
814
  src/elpa_index.h \
815
  src/fortran_constants.h \
816
817
  src/general/map_global_to_local.F90 \
  src/general/precision_macros.h \
818
  src/general/precision_typedefs.h \
819
  src/general/precision_kinds.F90 \
820
821
822
823
824
825
  src/general/prow_pcol.F90 \
  src/general/sanity.F90 \
  test/Fortran/assert.h \
  test/Fortran/elpa_print_headers.F90 \
  test/shared/test_check_correctness_template.F90 \
  test/shared/test_prepare_matrix_template.F90 \
Pavel Kus's avatar
Pavel Kus committed
826
  test/shared/test_analytic_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
827
828
829
830
831
832
  test_project_1stage/Makefile.am \
  test_project_1stage/autogen.sh \
  test_project_1stage/configure.ac \
  test_project_1stage/fdep \
  test_project_1stage/m4 \
  test_project_1stage/src/test_real.F90 \
833
834
835
836
837
  test_project_2stage/Makefile.am \
  test_project_2stage/autogen.sh \
  test_project_2stage/configure.ac \
  test_project_2stage/fdep \
  test_project_2stage/m4 \
Pavel Kus's avatar
Pavel Kus committed
838
839
840
841
842
843
844
  test_project_2stage/src/test_real2.F90 \
  test_project_C/Makefile.am \
  test_project_C/autogen.sh \
  test_project_C/configure.ac \
  test_project_C/fdep \
  test_project_C/m4 \
  test_project_C/src/test_real.c \
845
  test_project_C/src/test_blacs_infrastructure.F90\
Andreas Marek's avatar
Andreas Marek committed
846
847
848
849
850
851
852
853
854
855
856
857
  test_project_1stage_legacy_api/Makefile.am \
  test_project_1stage_legacy_api/autogen.sh \
  test_project_1stage_legacy_api/configure.ac \
  test_project_1stage_legacy_api/fdep \
  test_project_1stage_legacy_api/m4 \
  test_project_1stage_legacy_api/src/test_real.F90 \
  test_project_2stage_legacy_api/Makefile.am \
  test_project_2stage_legacy_api/autogen.sh \
  test_project_2stage_legacy_api/configure.ac \
  test_project_2stage_legacy_api/fdep \
  test_project_2stage_legacy_api/m4 \
  test_project_2stage_legacy_api/src/test_real2.F90
858

859
860
if ENABLE_LEGACY
EXTRA_DIST += \
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
  src/elpa1/elpa1_solve_tridi_real_template.F90 \
  src/elpa1/legacy_interface/elpa1_template.F90 \
  src/elpa2/legacy_interface/elpa2_template.F90 \
  src/elpa1/legacy_interface/elpa1_c_interface_template.F90 \
  src/elpa2/legacy_interface/elpa2_c_interface_template.F90 \
  src/elpa_driver/legacy_interface/elpa_driver_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_solve_tridi_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_mult_at_b_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_mult_ah_b_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_invert_trm_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_cholesky_c_interface_template.F90 \
  src/elpa1/legacy_interface/elpa_cholesky_template.F90 \
  src/elpa1/legacy_interface/elpa_invert_trm.F90 \
  src/elpa1/legacy_interface/elpa_multiply_a_b.F90 \
  src/elpa1/legacy_interface/elpa_solve_tridi.F90
876
endif
877

Pavel Kus's avatar
Pavel Kus committed
878
879
880
881
882
if WITH_SCALAPACK_TESTS
EXTRA_DIST += \
  test/shared/test_scalapack_template.F90
endif

883
# python wrapper files
884
885
EXTRA_DIST += python/pyelpa/__init__.py \
	      python/pyelpa/distributedmatrix.py \
886
887
888
889
890
	      python/pyelpa/wrapper.pyx \
	      python/tests/test_elpa_import.py \
	      python/tests/test_mpi4py.py \
	      python/tests/test_numroc.py \
	      python/tests/test_with_mpi.py
891

892
893
894
LIBTOOL_DEPS = @LIBTOOL_DEPS@
libtool: $(LIBTOOL_DEPS)
	$(SHELL) ./config.status libtool
895

896

897
@FORTRAN_MODULE_DEPS@
898
899
900
901
902

# Fortran module dependencies only work within each target,
# specify that the test programs need a finished library before
# one can compile them

903
# $1  Object name
904
define require_elpa_lib
905
$1: libelpa@SUFFIX@.la
906
907

endef
908
$(foreach p,$(bin_PROGRAMS) $(noinst_PROGRAMS),$(foreach o,$($p_OBJECTS),$(eval $(call require_elpa_lib,$o))))