Makefile.am 31 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 43 44 45 46 47 48
  src/helpers/mod_precision.F90 \
  src/helpers/mod_mpi.F90 \
  src/helpers/mod_mpi_stubs.F90 \
  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 \
49
  src/elpa1/elpa1_auxiliary.F90 \
50 51 52 53 54 55 56 57 58 59 60 61 62
  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 \
63
  src/elpa_generalized/cannon.c \
64
  #src/elpa_generalized/test_c_bindings.c \
65
  src/helpers/matrix_plot.F90 \
66 67
  src/elpa_index.c

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


71 72 73 74 75 76 77 78 79 80
# 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


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

88
EXTRA_libelpa@SUFFIX@_private_la_DEPENDENCIES = \
89 90
  src/elpa1/elpa_reduce_add_vectors.F90 \
  src/elpa1/elpa_transpose_vectors.F90 \
Andreas Marek's avatar
Andreas Marek committed
91
  src/elpa_api_math_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
92 93
  src/elpa_impl_math_template.F90 \
  src/elpa_impl_generalized_transform_template.F90 \
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
  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
111
  src/elpa2/kernels/simple_block4_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
112
  src/elpa2/kernels/simple_block6_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
if WITH_REAL_VSX_BLOCK2_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_vsx_2hv_double_precision.c
232 233 234
if WANT_SINGLE_PRECISION_REAL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_vsx_2hv_single_precision.c
endif
235 236
endif

237
if WITH_REAL_SSE_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
238
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_2hv_double_precision.c
239
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
240
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_2hv_single_precision.c
241
endif
242 243
endif

Andreas Marek's avatar
Andreas Marek committed
244
if WITH_REAL_AVX_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
245
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_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_avx-avx2_2hv_single_precision.c
248
endif
249 250
else
if WITH_REAL_AVX2_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
251
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_2hv_double_precision.c
252
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
253
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_2hv_single_precision.c
254
endif
255
endif
256 257
endif

258
if WITH_REAL_AVX512_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
259
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_2hv_double_precision.c
260
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
261
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_2hv_single_precision.c
262
endif
263 264
endif

265 266
if WITH_REAL_SPARC64_BLOCK4_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_4hv_double_precision.c
267 268 269
#if WANT_SINGLE_PRECISION_REAL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_4hv_single_precision.c
#endif
270
endif
271 272 273 274 275 276 277

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
278

279
if WITH_REAL_SSE_BLOCK4_KERNEL
Andreas Marek's avatar
Andreas Marek committed
280
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_4hv_double_precision.c
281
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
282
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_4hv_single_precision.c
283
endif
284 285
endif

Andreas Marek's avatar
Andreas Marek committed
286
if WITH_REAL_AVX_BLOCK4_KERNEL
Andreas Marek's avatar
Andreas Marek committed
287
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_4hv_double_precision.c
288
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
289
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_4hv_single_precision.c
290
endif
291 292
else
if WITH_REAL_AVX2_BLOCK4_KERNEL
Andreas Marek's avatar
Andreas Marek committed
293
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_4hv_double_precision.c
294
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
295
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_4hv_single_precision.c
296
endif
297
endif
298 299
endif

300
if WITH_REAL_AVX512_BLOCK4_KERNEL
Andreas Marek's avatar
Andreas Marek committed
301
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_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_avx512_4hv_single_precision.c
304
endif
305 306
endif

307 308
if WITH_REAL_SPARC64_BLOCK6_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_6hv_double_precision.c
309 310 311
#if WANT_SINGLE_PRECISION_REAL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_6hv_single_precision.c
#endif
312
endif
313

314 315 316 317 318 319
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
320

321
if WITH_REAL_SSE_BLOCK6_KERNEL
Andreas Marek's avatar
Andreas Marek committed
322
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_6hv_double_precision.c
323
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
324
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_6hv_single_precision.c
325
endif
326 327
endif

Andreas Marek's avatar
Andreas Marek committed
328
if WITH_REAL_AVX_BLOCK6_KERNEL
Andreas Marek's avatar
Andreas Marek committed
329
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_6hv_double_precision.c
330
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
331
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_6hv_single_precision.c
332
endif
333 334
else
if WITH_REAL_AVX2_BLOCK6_KERNEL
Andreas Marek's avatar
Andreas Marek committed
335
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_6hv_double_precision.c
336
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
337
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_6hv_single_precision.c
338
endif
339
endif
340 341
endif

342
if WITH_REAL_AVX512_BLOCK6_KERNEL
Andreas Marek's avatar
Andreas Marek committed
343
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_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_avx512_6hv_single_precision.c
346
endif
347 348
endif

349 350 351 352 353 354 355 356 357 358 359 360 361
#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
362

363
if WITH_COMPLEX_SSE_BLOCK1_KERNEL
Andreas Marek's avatar
Andreas Marek committed
364
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sse_1hv_double_precision.c
365
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
366
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sse_1hv_single_precision.c
367
endif
368 369
endif

Andreas Marek's avatar
Andreas Marek committed
370
if WITH_COMPLEX_AVX_BLOCK1_KERNEL
Andreas Marek's avatar
Andreas Marek committed
371
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_1hv_double_precision.c
372
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
373
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_1hv_single_precision.c
374
endif
375 376
else
if WITH_COMPLEX_AVX2_BLOCK1_KERNEL
Andreas Marek's avatar
Andreas Marek committed
377
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_1hv_double_precision.c
378
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
379
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_1hv_single_precision.c
380
endif
381
endif
382 383
endif

384 385

if WITH_COMPLEX_AVX512_BLOCK1_KERNEL
Andreas Marek's avatar
Andreas Marek committed
386
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx512_1hv_double_precision.c
387
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
388
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx512_1hv_single_precision.c
389
endif
390 391
endif

392 393 394 395 396 397 398 399 400 401 402 403 404
#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
405

406
if WITH_COMPLEX_SSE_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
407
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sse_2hv_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_sse_2hv_single_precision.c
410
endif
411 412
endif

Andreas Marek's avatar
Andreas Marek committed
413
if WITH_COMPLEX_AVX_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
414
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_2hv_double_precision.c
415
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
416
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_2hv_single_precision.c
417
endif
418 419
else
if WITH_COMPLEX_AVX2_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
420
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_2hv_double_precision.c
421
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
422
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_2hv_single_precision.c
423
endif
424
endif
425 426
endif

427
if WITH_COMPLEX_AVX512_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
428
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx512_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_avx512_2hv_single_precision.c
431
endif
432 433
endif

434
# Cuda files
435
.cu.lo:
436
	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
437

438 439 440 441 442
# Assembly files
LTCCASCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
	$(LIBTOOLFLAGS) --mode=compile $(CCAS) $(AM_CCASFLAGS) \
	$(CCASFLAGS)

443 444 445
include generated_headers.am
BUILT_SOURCES = $(generated_headers)

446
# install public headers and Fortran modules files in the include/ dir
447
elpa_includedir = $(includedir)/elpa@SUFFIX@-@PACKAGE_VERSION@
448 449 450 451 452 453 454
nobase_elpa_include_HEADERS = \
  $(wildcard modules/*) \
  elpa/elpa.h \
  elpa/elpa_generic.h \
  elpa/elpa_legacy.h

nobase_nodist_elpa_include_HEADERS = \
455
  elpa/elpa_version.h \
456 457 458
  elpa/elpa_constants.h \
  elpa/elpa_generated.h \
  elpa/elpa_generated_legacy.h
459

Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
460
dist_man_MANS = \
Andreas Marek's avatar
Andreas Marek committed
461
  man/elpa2_print_kernels.1 \
Andreas Marek's avatar
Andreas Marek committed
462
  man/elpa_init.3 \
Andreas Marek's avatar
Andreas Marek committed
463
  man/elpa_allocate.3 \
Andreas Marek's avatar
Andreas Marek committed
464
  man/elpa_set.3 \
Andreas Marek's avatar
Andreas Marek committed
465
  man/elpa_setup.3 \
466
  man/elpa_eigenvalues.3 \
467
  man/elpa_eigenvectors.3 \
468
  man/elpa_generalized_eigenvectors.3 \
469
  man/elpa_generalized_eigenvalues.3 \
470
  man/elpa_cholesky.3 \
471
  man/elpa_invert_triangular.3 \
472
  man/elpa_solve_tridiagonal.3 \
473
  man/elpa_hermitian_multiply.3 \
Andreas Marek's avatar
Andreas Marek committed
474
  man/elpa_deallocate.3 \
475 476
  man/elpa_load_settings.3 \
  man/elpa_store_settings.3 \
Andreas Marek's avatar
Andreas Marek committed
477 478 479 480
  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
481
  man/elpa_uninit.3
482 483 484

if ENABLE_LEGACY
dist_man_MANS += \
485 486 487 488 489 490 491 492
  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 \
493
  man/elpa_get_communicators.3 \
494 495 496 497 498 499 500 501 502 503 504
  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 \
505 506 507 508 509
  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
510 511
endif

Andreas Marek's avatar
Andreas Marek committed
512

513
if WANT_SINGLE_PRECISION_REAL
514
if ENABLE_LEGACY
515 516 517 518 519
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
520
endif
521
endif
522 523

if WANT_SINGLE_PRECISION_COMPLEX
524
if ENABLE_LEGACY
525 526 527 528 529 530
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
531
endif
532

533
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
534

535 536
# pkg-config stuff
pkgconfigdir = $(libdir)/pkgconfig
537
pkgconfig_DATA = @PKG_CONFIG_FILE@
538

539 540
# programs
bin_PROGRAMS = \
541
  elpa2_print_kernels@SUFFIX@
542

543 544
noinst_PROGRAMS =
check_SCRIPTS =
545

546 547
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
548 549 550

# library with shared sources for the test files
noinst_LTLIBRARIES += libelpatest@SUFFIX@.la
551
libelpatest@SUFFIX@_la_FCFLAGS = $(test_program_fcflags)
552
libelpatest@SUFFIX@_la_SOURCES = \
553 554 555 556 557 558
  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 \
559
  test/shared/test_analytic.F90 \
560
  test/shared/test_output_type.F90
Andreas Marek's avatar
Andreas Marek committed
561

562 563 564 565 566
if WITH_SCALAPACK_TESTS
libelpatest@SUFFIX@_la_SOURCES += \
  test/shared/test_scalapack.F90
endif

567
if HAVE_REDIRECT
568
libelpatest@SUFFIX@_la_SOURCES += \
569 570
  test/shared/test_redir.c \
  test/shared/test_redirect.F90
571 572 573 574
endif


elpa2_print_kernels@SUFFIX@_SOURCES = src/elpa2/elpa2_print_kernels.F90
575
elpa2_print_kernels@SUFFIX@_LDADD = libelpa@SUFFIX@.la
576
elpa2_print_kernels@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)modules
577

578
include test_programs.am
579

580 581
if ENABLE_LEGACY
include legacy_test_programs.am
582 583
endif

584 585
#include test_programs_manual.am

586
noinst_PROGRAMS += double_instance@SUFFIX@
587
check_SCRIPTS += double_instance@SUFFIX@_default.sh
588
double_instance@SUFFIX@_SOURCES = test/Fortran/elpa2/double_instance.F90
589
double_instance@SUFFIX@_LDADD = $(test_program_ldadd)
590
double_instance@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
591

592
noinst_PROGRAMS += real_2stage_banded@SUFFIX@
593
check_SCRIPTS += real_2stage_banded@SUFFIX@_default.sh
Andreas Marek's avatar
Andreas Marek committed
594
real_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/real_2stage_banded.F90
595
real_2stage_banded@SUFFIX@_LDADD = $(test_program_ldadd)
596
real_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
597

598
noinst_PROGRAMS += complex_2stage_banded@SUFFIX@
599
check_SCRIPTS += complex_2stage_banded@SUFFIX@_default.sh
Andreas Marek's avatar
Andreas Marek committed
600
complex_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/complex_2stage_banded.F90
601
complex_2stage_banded@SUFFIX@_LDADD = $(test_program_ldadd)
602
complex_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
603 604

if WANT_SINGLE_PRECISION_REAL
605
noinst_PROGRAMS += single_real_2stage_banded@SUFFIX@
606
check_SCRIPTS += single_real_2stage_banded@SUFFIX@_default.sh
Andreas Marek's avatar
Andreas Marek committed
607
single_real_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/single_real_2stage_banded.F90
608
single_real_2stage_banded@SUFFIX@_LDADD = $(test_program_ldadd)
609
single_real_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
610 611 612
endif

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

620 621 622 623 624
#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
625

626 627 628 629 630
#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)
631

632 633
# python wrapper
pyelpadir = $(pythondir)/pyelpa
634
if WITH_PYTHON
635
pyelpa_PYTHON = python/pyelpa/__init__.py python/pyelpa/distributedmatrix.py
636
pyelpa_LTLIBRARIES = wrapper.la
637 638 639 640
else
pyelpa_PYTHON =
pyelpa_LTLIBRARIES =
endif
641
nodist_wrapper_la_SOURCES = python/pyelpa/wrapper.c
642 643
wrapper_la_LDFLAGS = -module -avoid-version -shared $(AM_LDFLAGS)
wrapper_la_LIBADD = libelpa@SUFFIX@.la
644
wrapper_la_CFLAGS = $(PYTHON_INCLUDE) $(NUMPY_INCLUDE) $(AM_CFLAGS)
645

646
python/pyelpa/wrapper.c: python/pyelpa/wrapper.pyx
647
	cython $< -o $@
648

649
# test scripts
650
TASKS ?= 2
651
if WITH_MPI
652
  wrapper=$(MPI_BINARY) -n $${TASKS:-$(TASKS)}
653
else
654
  wrapper=
655
endif
656
TESTS = $(check_SCRIPTS)
657 658 659 660 661 662
%_extended.sh: %
	@echo "#!/bin/bash" > $@
	@echo 'if [ "$$CHECK_LEVEL" = "extended" ] ; then $(wrapper) ./$^ $$TEST_FLAGS ; else exit 77; fi' >> $@
	@chmod +x $@

%_default.sh: %
663
	@echo "#!/bin/bash" > $@
664
	@echo '$(wrapper)' ./$^ '$$TEST_FLAGS' >> $@
665
	@chmod +x $@
666

667 668 669 670 671 672
if WITH_PYTHON_TESTS
check_SCRIPTS += test_python.sh
endif

test_python.sh:
	@echo '#!/bin/bash' > $@
673
# this is kind of hacky... is there a better way to get wrapper.so?
674 675 676 677
	@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' >> $@
678
# the dlopen flags are needed for MKL to work properly...
679
# only in os from python 3.3 on
680
	@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
681
	@echo 'exit_code=$$?' >> $@
682
	@echo 'rm -rf python-copy || exit 1' >> $@
Sebastian Ohlmann's avatar
Sebastian Ohlmann committed
683
	@echo 'exit $$exit_code' >> $@
684 685
	@chmod +x $@

686 687
include doxygen.am

688
CLEANFILES = \
Andreas Marek's avatar
Andreas Marek committed
689
  elpa-generated.h \
Andreas Marek's avatar
Andreas Marek committed
690
  elpa1_test* \
691
  elpa2_test*\
Andreas Marek's avatar
Andreas Marek committed
692 693
  elpa2_real* \
  elpa1_real* \
694
  elpa*.sh \
695
  test*.sh \
Andreas Marek's avatar
Andreas Marek committed
696 697 698 699 700 701 702 703
  legacy_real* \
  legacy_complex* \
  legacy_single_real* \
  legacy_single_complex* \
  single_real* \
  single_complex* \
  real* \
  complex* \
704
  double_instance* \
705
  *.i \
Sebastian Ohlmann's avatar
Sebastian Ohlmann committed
706 707
  python/pyelpa/wrapper.c \
  check_python.sh
708 709

clean-local:
710
	-rm -rf modules/* private_modules/* test_modules/* .fortran_dependencies/*
Andreas Marek's avatar
Andreas Marek committed
711 712 713 714 715 716 717
	-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
718
	-rm -rf $(generated_headers)
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
719 720 721

distclean-local:
	-rm config-f90.h
722
	-rm -rf ./src/elpa2/kernels/.deps
723 724
	-rm -rf ./src/.deps
	-rm -rf ./test/.deps
725
	-rmdir ./src/elpa2/kernels/
726 727
	-rmdir ./src
	-rmdir ./test
728
	-rmdir ./m4
729
	-rmdir modules/
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
730
	-rmdir .fortran_dependencies/
731

732
EXTRA_DIST = \
733
  elpa.spec \
734
  elpa/elpa.h \
735
  elpa/elpa_generic.h \
736
  elpa/elpa_legacy.h \
737
  fdep/fortran_dependencies.mk \
738
  fdep/fortran_dependencies.pl \
739
  manual_cpp \
740
  nvcc_wrap \
Andreas Marek's avatar
Andreas Marek committed
741
  remove_xcompiler \
742
  src/GPU/cuUtils_template.cu \
Andreas Marek's avatar
Andreas Marek committed
743
  src/elpa_api_math_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
744
  src/elpa_impl_math_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
745
  src/elpa_impl_generalized_transform_template.F90 \
746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783
  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 \
  src/elpa2/kernels/real_avx-avx2_2hv_template.c \
  src/elpa2/kernels/real_avx-avx2_4hv_template.c \
  src/elpa2/kernels/real_avx-avx2_6hv_template.c \
  src/elpa2/kernels/real_avx512_2hv_template.c \
  src/elpa2/kernels/real_avx512_4hv_template.c \
  src/elpa2/kernels/real_avx512_6hv_template.c \
Andreas Marek's avatar
Andreas Marek committed
784
  src/elpa2/kernels/real_vsx_2hv_template.c \
785 786
  src/elpa2/kernels/real_vsx_4hv_template.c \
  src/elpa2/kernels/real_vsx_6hv_template.c \
787 788 789 790 791
  src/elpa2/kernels/real_sse_2hv_template.c \
  src/elpa2/kernels/real_sse_4hv_template.c \
  src/elpa2/kernels/real_sse_6hv_template.c \
  src/elpa2/kernels/real_template.F90 \
  src/elpa2/kernels/simple_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
792
  src/elpa2/kernels/simple_block4_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
793
  src/elpa2/kernels/simple_block6_template.F90 \
794 795 796 797 798 799 800
  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 \
801
  src/elpa_generalized/cannon_forw_template.c \
802
  src/elpa_generalized/cannon_back_template.c \
803
  src/elpa_index.h \
804
  src/fortran_constants.h \
805 806
  src/general/map_global_to_local.F90 \
  src/general/precision_macros.h \
807
  src/general/precision_typedefs.h \
808
  src/general/precision_kinds.F90 \
809 810 811 812 813 814
  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
815
  test/shared/test_analytic_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
816 817 818 819 820 821
  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 \
822 823 824 825 826
  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
827 828 829 830 831 832 833
  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 \
834
  test_project_C/src/test_blacs_infrastructure.F90\
Andreas Marek's avatar
Andreas Marek committed
835 836 837 838 839 840 841 842 843 844 845 846
  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
847

848 849
if ENABLE_LEGACY
EXTRA_DIST += \
850 851 852 853 854 855 856 857 858 859 860 861 862 863 864
  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
865
endif
866

Pavel Kus's avatar
Pavel Kus committed
867 868 869 870 871
if WITH_SCALAPACK_TESTS
EXTRA_DIST += \
  test/shared/test_scalapack_template.F90
endif

872
# python wrapper files
873 874
EXTRA_DIST += python/pyelpa/__init__.py \
	      python/pyelpa/distributedmatrix.py \
875 876 877 878 879
	      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
880

881 882 883
LIBTOOL_DEPS = @LIBTOOL_DEPS@
libtool: $(LIBTOOL_DEPS)
	$(SHELL) ./config.status libtool
884

885

886
@FORTRAN_MODULE_DEPS@
887 888 889 890 891

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

892
# $1  Object name
893
define require_elpa_lib
894
$1: libelpa@SUFFIX@.la