Makefile.am 30.1 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 111 112 113 114 115 116 117 118 119
  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 \
  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 \
120
  src/general/precision_macros.h \
121
  src/general/precision_typedefs.h \
122
  src/general/precision_kinds.F90
123

124 125
if ENABLE_LEGACY
EXTRA_libelpa@SUFFIX@_private_la_DEPENDENCIES += \
126 127 128 129 130 131 132 133 134 135 136 137 138 139
  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
140
endif
141

142
if HAVE_DETAILED_TIMINGS
143 144 145 146 147 148 149 150 151
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
152 153 154 155 156 157

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

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

163
if WITH_GPU_VERSION
Andreas Marek's avatar
Andreas Marek committed
164
  libelpa@SUFFIX@_private_la_SOURCES +=  src/GPU/cudaFunctions.cu src/GPU/cuUtils.cu src/elpa2/GPU/ev_tridi_band_gpu_c_v2.cu
165
  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
166 167
endif

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

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

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

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

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

Andreas Marek's avatar
Andreas Marek committed
191
if WITH_REAL_BGP_KERNEL
Andreas Marek's avatar
Andreas Marek committed
192
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_bgp.f90
193 194
endif

Andreas Marek's avatar
Andreas Marek committed
195
if WITH_REAL_BGQ_KERNEL
Andreas Marek's avatar
Andreas Marek committed
196
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_bgq.f90
197 198
endif

199
if WITH_REAL_SSE_ASSEMBLY_KERNEL
Andreas Marek's avatar
Andreas Marek committed
200
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/asm_x86_64_double_precision.s
201
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
202
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/asm_x86_64_single_precision.s
203
endif
204

Andreas Marek's avatar
Andreas Marek committed
205
else
206
if WITH_COMPLEX_SSE_ASSEMBLY_KERNEL
Andreas Marek's avatar
Andreas Marek committed
207
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/asm_x86_64_double_precision.s
208
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
209
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/asm_x86_64_single_precision.s
210
endif
211 212
endif
endif
Andreas Marek's avatar
Andreas Marek committed
213

214 215
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
216 217 218
#if WANT_SINGLE_PRECISION_REAL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_2hv_single_precision.c
#endif
219 220
endif

221 222
if WITH_REAL_VSX_BLOCK2_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_vsx_2hv_double_precision.c
223 224 225
if WANT_SINGLE_PRECISION_REAL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_vsx_2hv_single_precision.c
endif
226 227
endif

228
if WITH_REAL_SSE_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
229
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_2hv_double_precision.c
230
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
231
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_2hv_single_precision.c
232
endif
233 234
endif

Andreas Marek's avatar
Andreas Marek committed
235
if WITH_REAL_AVX_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
236
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_2hv_double_precision.c
237
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
238
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_2hv_single_precision.c
239
endif
240 241
else
if WITH_REAL_AVX2_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
242
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_2hv_double_precision.c
243
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
244
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_2hv_single_precision.c
245
endif
246
endif
247 248
endif

249
if WITH_REAL_AVX512_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
250
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_2hv_double_precision.c
251
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
252
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_2hv_single_precision.c
253
endif
254 255
endif

256 257
if WITH_REAL_SPARC64_BLOCK4_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_4hv_double_precision.c
258 259 260
#if WANT_SINGLE_PRECISION_REAL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_4hv_single_precision.c
#endif
261
endif
262 263 264 265 266 267 268

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
269

270
if WITH_REAL_SSE_BLOCK4_KERNEL
Andreas Marek's avatar
Andreas Marek committed
271
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_4hv_double_precision.c
272
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
273
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_4hv_single_precision.c
274
endif
275 276
endif

Andreas Marek's avatar
Andreas Marek committed
277
if WITH_REAL_AVX_BLOCK4_KERNEL
Andreas Marek's avatar
Andreas Marek committed
278
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_4hv_double_precision.c
279
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
280
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_4hv_single_precision.c
281
endif
282 283
else
if WITH_REAL_AVX2_BLOCK4_KERNEL
Andreas Marek's avatar
Andreas Marek committed
284
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_4hv_double_precision.c
285
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
286
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_4hv_single_precision.c
287
endif
288
endif
289 290
endif

291
if WITH_REAL_AVX512_BLOCK4_KERNEL
Andreas Marek's avatar
Andreas Marek committed
292
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_4hv_double_precision.c
293
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
294
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_4hv_single_precision.c
295
endif
296 297
endif

298 299
if WITH_REAL_SPARC64_BLOCK6_KERNEL
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_6hv_double_precision.c
300 301 302
#if WANT_SINGLE_PRECISION_REAL
#  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sparc64_6hv_single_precision.c
#endif
303
endif
304

305 306 307 308 309 310
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
311

312
if WITH_REAL_SSE_BLOCK6_KERNEL
Andreas Marek's avatar
Andreas Marek committed
313
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_6hv_double_precision.c
314
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
315
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_sse_6hv_single_precision.c
316
endif
317 318
endif

Andreas Marek's avatar
Andreas Marek committed
319
if WITH_REAL_AVX_BLOCK6_KERNEL
Andreas Marek's avatar
Andreas Marek committed
320
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_6hv_double_precision.c
321
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
322
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_6hv_single_precision.c
323
endif
324 325
else
if WITH_REAL_AVX2_BLOCK6_KERNEL
Andreas Marek's avatar
Andreas Marek committed
326
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_6hv_double_precision.c
327
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
328
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx-avx2_6hv_single_precision.c
329
endif
330
endif
331 332
endif

333
if WITH_REAL_AVX512_BLOCK6_KERNEL
Andreas Marek's avatar
Andreas Marek committed
334
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_6hv_double_precision.c
335
if WANT_SINGLE_PRECISION_REAL
Andreas Marek's avatar
Andreas Marek committed
336
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real_avx512_6hv_single_precision.c
337
endif
338 339
endif

340 341 342 343 344 345 346 347 348 349 350 351 352
#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
353

354
if WITH_COMPLEX_SSE_BLOCK1_KERNEL
Andreas Marek's avatar
Andreas Marek committed
355
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sse_1hv_double_precision.c
356
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
357
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sse_1hv_single_precision.c
358
endif
359 360
endif

Andreas Marek's avatar
Andreas Marek committed
361
if WITH_COMPLEX_AVX_BLOCK1_KERNEL
Andreas Marek's avatar
Andreas Marek committed
362
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_1hv_double_precision.c
363
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
364
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_1hv_single_precision.c
365
endif
366 367
else
if WITH_COMPLEX_AVX2_BLOCK1_KERNEL
Andreas Marek's avatar
Andreas Marek committed
368
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_1hv_double_precision.c
369
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
370
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_1hv_single_precision.c
371
endif
372
endif
373 374
endif

375 376

if WITH_COMPLEX_AVX512_BLOCK1_KERNEL
Andreas Marek's avatar
Andreas Marek committed
377
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx512_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_avx512_1hv_single_precision.c
380
endif
381 382
endif

383 384 385 386 387 388 389 390 391 392 393 394 395
#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
396

397
if WITH_COMPLEX_SSE_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
398
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_sse_2hv_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_sse_2hv_single_precision.c
401
endif
402 403
endif

Andreas Marek's avatar
Andreas Marek committed
404
if WITH_COMPLEX_AVX_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
405
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_2hv_double_precision.c
406
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
407
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_2hv_single_precision.c
408
endif
409 410
else
if WITH_COMPLEX_AVX2_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
411
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_2hv_double_precision.c
412
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
413
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx-avx2_2hv_single_precision.c
414
endif
415
endif
416 417
endif

418
if WITH_COMPLEX_AVX512_BLOCK2_KERNEL
Andreas Marek's avatar
Andreas Marek committed
419
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx512_2hv_double_precision.c
420
if WANT_SINGLE_PRECISION_COMPLEX
Andreas Marek's avatar
Andreas Marek committed
421
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/complex_avx512_2hv_single_precision.c
422
endif
423 424
endif

425
# Cuda files
426
.cu.lo:
427
	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
428

429 430 431 432 433
# Assembly files
LTCCASCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
	$(LIBTOOLFLAGS) --mode=compile $(CCAS) $(AM_CCASFLAGS) \
	$(CCASFLAGS)

434 435 436
include generated_headers.am
BUILT_SOURCES = $(generated_headers)

437
# install public headers and Fortran modules files in the include/ dir
438
elpa_includedir = $(includedir)/elpa@SUFFIX@-@PACKAGE_VERSION@
439 440 441 442 443 444 445
nobase_elpa_include_HEADERS = \
  $(wildcard modules/*) \
  elpa/elpa.h \
  elpa/elpa_generic.h \
  elpa/elpa_legacy.h

nobase_nodist_elpa_include_HEADERS = \
446 447 448
  elpa/elpa_constants.h \
  elpa/elpa_generated.h \
  elpa/elpa_generated_legacy.h
449

Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
450
dist_man_MANS = \
Andreas Marek's avatar
Andreas Marek committed
451
  man/elpa2_print_kernels.1 \
Andreas Marek's avatar
Andreas Marek committed
452
  man/elpa_init.3 \
Andreas Marek's avatar
Andreas Marek committed
453
  man/elpa_allocate.3 \
Andreas Marek's avatar
Andreas Marek committed
454
  man/elpa_set.3 \
Andreas Marek's avatar
Andreas Marek committed
455
  man/elpa_setup.3 \
456
  man/elpa_eigenvalues.3 \
457
  man/elpa_eigenvectors.3 \
458
  man/elpa_generalized_eigenvectors.3 \
459
  man/elpa_generalized_eigenvalues.3 \
460
  man/elpa_cholesky.3 \
461
  man/elpa_invert_triangular.3 \
462
  man/elpa_solve_tridiagonal.3 \
463
  man/elpa_hermitian_multiply.3 \
Andreas Marek's avatar
Andreas Marek committed
464
  man/elpa_deallocate.3 \
Andreas Marek's avatar
Andreas Marek committed
465
  man/elpa_uninit.3
466 467 468

if ENABLE_LEGACY
dist_man_MANS += \
469 470 471 472 473 474 475 476
  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 \
477
  man/elpa_get_communicators.3 \
478 479 480 481 482 483 484 485 486 487 488
  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 \
489 490 491 492 493
  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
494 495
endif

Andreas Marek's avatar
Andreas Marek committed
496

497
if WANT_SINGLE_PRECISION_REAL
498
if ENABLE_LEGACY
499 500 501 502 503
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
504
endif
505
endif
506 507

if WANT_SINGLE_PRECISION_COMPLEX
508
if ENABLE_LEGACY
509 510 511 512 513 514
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
515
endif
516

517
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
518

519 520
# pkg-config stuff
pkgconfigdir = $(libdir)/pkgconfig
521
pkgconfig_DATA = @PKG_CONFIG_FILE@
522

523 524
# programs
bin_PROGRAMS = \
525
  elpa2_print_kernels@SUFFIX@
526

527 528
noinst_PROGRAMS =
check_SCRIPTS =
529

530 531
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
532 533 534

# library with shared sources for the test files
noinst_LTLIBRARIES += libelpatest@SUFFIX@.la
535
libelpatest@SUFFIX@_la_FCFLAGS = $(test_program_fcflags)
536
libelpatest@SUFFIX@_la_SOURCES = \
537 538 539 540 541 542
  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 \
543
  test/shared/test_analytic.F90 \
544
  test/shared/test_output_type.F90
Andreas Marek's avatar
Andreas Marek committed
545

546 547 548 549 550
if WITH_SCALAPACK_TESTS
libelpatest@SUFFIX@_la_SOURCES += \
  test/shared/test_scalapack.F90
endif

551
if HAVE_REDIRECT
552
libelpatest@SUFFIX@_la_SOURCES += \
553 554
  test/shared/test_redir.c \
  test/shared/test_redirect.F90
555 556 557 558
endif


elpa2_print_kernels@SUFFIX@_SOURCES = src/elpa2/elpa2_print_kernels.F90
559
elpa2_print_kernels@SUFFIX@_LDADD = libelpa@SUFFIX@.la
560
elpa2_print_kernels@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)modules
561

562
include test_programs.am
563

564 565
if ENABLE_LEGACY
include legacy_test_programs.am
566 567
endif

568 569
#include test_programs_manual.am

570
noinst_PROGRAMS += double_instance@SUFFIX@
571
check_SCRIPTS += double_instance@SUFFIX@_default.sh
572
double_instance@SUFFIX@_SOURCES = test/Fortran/elpa2/double_instance.F90
573
double_instance@SUFFIX@_LDADD = $(test_program_ldadd)
574
double_instance@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
575

576
noinst_PROGRAMS += real_2stage_banded@SUFFIX@
577
check_SCRIPTS += real_2stage_banded@SUFFIX@_default.sh
Andreas Marek's avatar
Andreas Marek committed
578
real_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/real_2stage_banded.F90
579
real_2stage_banded@SUFFIX@_LDADD = $(test_program_ldadd)
580
real_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
581

582
noinst_PROGRAMS += complex_2stage_banded@SUFFIX@
583
check_SCRIPTS += complex_2stage_banded@SUFFIX@_default.sh
Andreas Marek's avatar
Andreas Marek committed
584
complex_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/complex_2stage_banded.F90
585
complex_2stage_banded@SUFFIX@_LDADD = $(test_program_ldadd)
586
complex_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules
587 588

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

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

604 605 606 607 608
#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
609

610 611 612 613 614
#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)
615

616 617
# python wrapper
pyelpadir = $(pythondir)/pyelpa
618
if WITH_PYTHON
619
pyelpa_PYTHON = python/pyelpa/__init__.py python/pyelpa/distributedmatrix.py
620
pyelpa_LTLIBRARIES = wrapper.la
621 622 623 624
else
pyelpa_PYTHON =
pyelpa_LTLIBRARIES =
endif
625
nodist_wrapper_la_SOURCES = python/pyelpa/wrapper.c
626 627
wrapper_la_LDFLAGS = -module -avoid-version -shared $(AM_LDFLAGS)
wrapper_la_LIBADD = libelpa@SUFFIX@.la
628
wrapper_la_CFLAGS = $(PYTHON_INCLUDE) $(NUMPY_INCLUDE) $(AM_CFLAGS)
629

630
python/pyelpa/wrapper.c: python/pyelpa/wrapper.pyx
631
	cython $< -o $@
632

633
# test scripts
634
TASKS ?= 2
635
if WITH_MPI
636
  wrapper=$(MPI_BINARY) -n $${TASKS:-$(TASKS)}
637
else
638
  wrapper=
639
endif
640
TESTS = $(check_SCRIPTS)
641 642 643 644 645 646
%_extended.sh: %
	@echo "#!/bin/bash" > $@
	@echo 'if [ "$$CHECK_LEVEL" = "extended" ] ; then $(wrapper) ./$^ $$TEST_FLAGS ; else exit 77; fi' >> $@
	@chmod +x $@

%_default.sh: %
647
	@echo "#!/bin/bash" > $@
648
	@echo '$(wrapper)' ./$^ '$$TEST_FLAGS' >> $@
649
	@chmod +x $@
650

651 652 653 654 655 656
if WITH_PYTHON_TESTS
check_SCRIPTS += test_python.sh
endif

test_python.sh:
	@echo '#!/bin/bash' > $@
657 658
# this is kind of hacky... is there a better way to get wrapper.so?
	@echo 'export PYTHONPATH=$$PYTHONPATH:$(top_srcdir)/python:./.libs' >> $@
659
# the dlopen flags are needed for MKL to work properly...
660 661
# only in os from python 3.3 on
	@echo "$(wrapper) $(PYTHON) -c 'import sys, os; sys.setdlopenflags(os.RTLD_NOW | os.RTLD_GLOBAL); import pytest; pytest.main([\"$(top_srcdir)/python\"])'" >> $@
662 663
	@chmod +x $@

664 665
include doxygen.am

666
CLEANFILES = \
Andreas Marek's avatar
Andreas Marek committed
667
  elpa-generated.h \
Andreas Marek's avatar
Andreas Marek committed
668
  elpa1_test* \
669
  elpa2_test*\
Andreas Marek's avatar
Andreas Marek committed
670 671
  elpa2_real* \
  elpa1_real* \
672
  elpa*.sh \
673
  test*.sh \
Andreas Marek's avatar
Andreas Marek committed
674 675 676 677 678 679 680 681
  legacy_real* \
  legacy_complex* \
  legacy_single_real* \
  legacy_single_complex* \
  single_real* \
  single_complex* \
  real* \
  complex* \
682
  double_instance* \
683
  *.i \
Sebastian Ohlmann's avatar
Sebastian Ohlmann committed
684 685
  python/pyelpa/wrapper.c \
  check_python.sh
686 687

clean-local:
688
	-rm -rf modules/* private_modules/* test_modules/* .fortran_dependencies/*
Andreas Marek's avatar
Andreas Marek committed
689 690 691 692 693 694 695
	-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
696
	-rm -rf $(generated_headers)
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
697 698 699

distclean-local:
	-rm config-f90.h
700
	-rm -rf ./src/elpa2/kernels/.deps
701 702
	-rm -rf ./src/.deps
	-rm -rf ./test/.deps
703
	-rmdir ./src/elpa2/kernels/
704 705
	-rmdir ./src
	-rmdir ./test
706
	-rmdir ./m4
707
	-rmdir modules/
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
708
	-rmdir .fortran_dependencies/
709

710
EXTRA_DIST = \
711
  elpa.spec \
712
  elpa/elpa.h \
713
  elpa/elpa_generic.h \
714
  elpa/elpa_legacy.h \
715
  fdep/fortran_dependencies.mk \
716
  fdep/fortran_dependencies.pl \
717
  manual_cpp \
718
  nvcc_wrap \
Andreas Marek's avatar
Andreas Marek committed
719
  remove_xcompiler \
720
  src/GPU/cuUtils_template.cu \
Andreas Marek's avatar
Andreas Marek committed
721
  src/elpa_api_math_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
722
  src/elpa_impl_math_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
723
  src/elpa_impl_generalized_transform_template.F90 \
724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761
  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
762
  src/elpa2/kernels/real_vsx_2hv_template.c \
763 764
  src/elpa2/kernels/real_vsx_4hv_template.c \
  src/elpa2/kernels/real_vsx_6hv_template.c \
765 766 767 768 769 770 771 772 773 774 775 776
  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 \
  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 \
777
  src/elpa_generalized/cannon_forw_template.c \
778
  src/elpa_generalized/cannon_back_template.c \
779
  src/elpa_index.h \
780
  src/fortran_constants.h \
781 782
  src/general/map_global_to_local.F90 \
  src/general/precision_macros.h \
783
  src/general/precision_typedefs.h \
784
  src/general/precision_kinds.F90 \
785 786 787 788 789 790
  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
791
  test/shared/test_analytic_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
792 793 794 795 796 797
  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 \
798 799 800 801 802
  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
803 804 805 806 807 808 809
  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 \
810
  test_project_C/src/test_blacs_infrastructure.F90\
Andreas Marek's avatar
Andreas Marek committed
811 812 813 814 815 816 817 818 819 820 821 822
  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
823

824 825
if ENABLE_LEGACY
EXTRA_DIST += \
826 827 828 829 830 831 832 833 834 835 836 837 838 839 840
  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
841
endif
842

Pavel Kus's avatar
Pavel Kus committed
843 844 845 846 847
if WITH_SCALAPACK_TESTS
EXTRA_DIST += \
  test/shared/test_scalapack_template.F90
endif

848
# python wrapper files
849 850
EXTRA_DIST += python/pyelpa/__init__.py \
	      python/pyelpa/distributedmatrix.py \
851 852 853 854 855
	      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
856

857 858 859
LIBTOOL_DEPS = @LIBTOOL_DEPS@
libtool: $(LIBTOOL_DEPS)
	$(SHELL) ./config.status libtool
860

861

862
@FORTRAN_MODULE_DEPS@
863 864 865 866 867

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

868
# $1  Object name
869
define require_elpa_lib
870
$1: libelpa@SUFFIX@.la
871 872

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