Makefile.am 30.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 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 \
465 466
  man/elpa_load_settings.3 \
  man/elpa_store_settings.3 \
Andreas Marek's avatar
Andreas Marek committed
467
  man/elpa_uninit.3
468 469 470

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

Andreas Marek's avatar
Andreas Marek committed
498

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

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

519
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
520

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

525 526
# programs
bin_PROGRAMS = \
527
  elpa2_print_kernels@SUFFIX@
528

529 530
noinst_PROGRAMS =
check_SCRIPTS =
531

532 533
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
534 535 536

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

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

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


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

564
include test_programs.am
565

566 567
if ENABLE_LEGACY
include legacy_test_programs.am
568 569
endif

570 571
#include test_programs_manual.am

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

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

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

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

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

606 607 608 609 610
#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
611

612 613 614 615 616
#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)
617

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

632
python/pyelpa/wrapper.c: python/pyelpa/wrapper.pyx
633
	cython $< -o $@
634

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

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

653 654 655 656 657 658
if WITH_PYTHON_TESTS
check_SCRIPTS += test_python.sh
endif

test_python.sh:
	@echo '#!/bin/bash' > $@
659
# this is kind of hacky... is there a better way to get wrapper.so?
660 661 662 663
	@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' >> $@
664
# the dlopen flags are needed for MKL to work properly...
665
# only in os from python 3.3 on
666
	@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
667
	@echo 'exit_code=$$?' >> $@
668
	@echo 'rm -rf python-copy || exit 1' >> $@
Sebastian Ohlmann's avatar
Sebastian Ohlmann committed
669
	@echo 'exit $$exit_code' >> $@
670 671
	@chmod +x $@

672 673
include doxygen.am

674
CLEANFILES = \
Andreas Marek's avatar
Andreas Marek committed
675
  elpa-generated.h \
Andreas Marek's avatar
Andreas Marek committed
676
  elpa1_test* \
677
  elpa2_test*\
Andreas Marek's avatar
Andreas Marek committed
678 679
  elpa2_real* \
  elpa1_real* \
680
  elpa*.sh \
681
  test*.sh \
Andreas Marek's avatar
Andreas Marek committed
682 683 684 685 686 687 688 689
  legacy_real* \
  legacy_complex* \
  legacy_single_real* \
  legacy_single_complex* \
  single_real* \
  single_complex* \
  real* \
  complex* \
690
  double_instance* \
691
  *.i \
Sebastian Ohlmann's avatar
Sebastian Ohlmann committed
692 693
  python/pyelpa/wrapper.c \
  check_python.sh
694 695

clean-local:
696
	-rm -rf modules/* private_modules/* test_modules/* .fortran_dependencies/*
Andreas Marek's avatar
Andreas Marek committed
697 698 699 700 701 702 703
	-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
704
	-rm -rf $(generated_headers)
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
705 706 707

distclean-local:
	-rm config-f90.h
708
	-rm -rf ./src/elpa2/kernels/.deps
709 710
	-rm -rf ./src/.deps
	-rm -rf ./test/.deps
711
	-rmdir ./src/elpa2/kernels/
712 713
	-rmdir ./src
	-rmdir ./test
714
	-rmdir ./m4
715
	-rmdir modules/
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
716
	-rmdir .fortran_dependencies/
717

718
EXTRA_DIST = \
719
  elpa.spec \
720
  elpa/elpa.h \
721
  elpa/elpa_generic.h \
722
  elpa/elpa_legacy.h \
723
  fdep/fortran_dependencies.mk \
724
  fdep/fortran_dependencies.pl \
725
  manual_cpp \
726
  nvcc_wrap \
Andreas Marek's avatar
Andreas Marek committed
727
  remove_xcompiler \
728
  src/GPU/cuUtils_template.cu \
Andreas Marek's avatar
Andreas Marek committed
729
  src/elpa_api_math_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
730
  src/elpa_impl_math_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
731
  src/elpa_impl_generalized_transform_template.F90 \
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 762 763 764 765 766 767 768 769
  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
770
  src/elpa2/kernels/real_vsx_2hv_template.c \
771 772
  src/elpa2/kernels/real_vsx_4hv_template.c \
  src/elpa2/kernels/real_vsx_6hv_template.c \
773 774 775 776 777 778 779 780 781 782 783 784
  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 \
785
  src/elpa_generalized/cannon_forw_template.c \
786
  src/elpa_generalized/cannon_back_template.c \
787
  src/elpa_index.h \
788
  src/fortran_constants.h \
789 790
  src/general/map_global_to_local.F90 \
  src/general/precision_macros.h \
791
  src/general/precision_typedefs.h \
792
  src/general/precision_kinds.F90 \
793 794 795 796 797 798
  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
799
  test/shared/test_analytic_template.F90 \
Andreas Marek's avatar
Andreas Marek committed
800 801 802 803 804 805
  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 \
806 807 808 809 810
  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
811 812 813 814 815 816 817
  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 \
818
  test_project_C/src/test_blacs_infrastructure.F90\
Andreas Marek's avatar
Andreas Marek committed
819 820 821 822 823 824 825 826 827 828 829 830
  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
831

832 833
if ENABLE_LEGACY
EXTRA_DIST += \
834 835 836 837 838 839 840 841 842 843 844 845 846 847 848
  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
849
endif
850

Pavel Kus's avatar
Pavel Kus committed
851 852 853 854 855
if WITH_SCALAPACK_TESTS
EXTRA_DIST += \
  test/shared/test_scalapack_template.F90
endif

856
# python wrapper files
857 858
EXTRA_DIST += python/pyelpa/__init__.py \
	      python/pyelpa/distributedmatrix.py \
859 860 861 862 863
	      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
864

865 866 867
LIBTOOL_DEPS = @LIBTOOL_DEPS@
libtool: $(LIBTOOL_DEPS)
	$(SHELL) ./config.status libtool
868

869

870
@FORTRAN_MODULE_DEPS@
871 872 873 874 875

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

876
# $1  Object name
877
define require_elpa_lib
878
$1: libelpa@SUFFIX@.la
879 880

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