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

3
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} -I m4
4

5
AM_FCFLAGS = $(SCALAPACK_FCFLAGS) @FC_MODINC@modules
6
AM_LDFLAGS = $(SCALAPACK_LDFLAGS)
7
8
9

# libelpa

10
11
# parts with public interface
noinst_LTLIBRARIES = libelpa@SUFFIX@_public.la
12
libelpa@SUFFIX@_public_la_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@modules @FC_MODINC@private_modules
13
14
15
16
17
18
19
20
libelpa@SUFFIX@_public_la_SOURCES = \
        src/elpa1.F90 \
        src/elpa2.F90 \
        src/elpa2_utilities.F90 \
        src/elpa_utilities.F90

# internal parts
noinst_LTLIBRARIES += libelpa@SUFFIX@_private.la
21
libelpa@SUFFIX@_private_la_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
22
libelpa@SUFFIX@_private_la_SOURCES = \
23
        src/mod_precision.F90 \
24
25
26
27
28
29
30
        src/mod_mpi.F90 \
        src/mod_mpi_stubs.F90 \
        src/mod_pack_unpack_real.F90 \
        src/mod_compute_hh_trafo_real.F90 \
        src/mod_compute_hh_trafo_complex.F90 \
        src/mod_pack_unpack_complex.F90 \
        src/aligned_mem.F90 \
31
        src/elpa1_compute.F90 \
32
        src/elpa2_compute.F90 \
33
34
        src/elpa2_kernels/mod_fortran_interfaces.F90 \
        src/elpa2_kernels/mod_single_hh_trafo_real.F90 \
35
        src/elpa_c_interface.F90 \
36
37
38
39
        src/check_for_gpu.F90 \
        src/mod_cuda.F90 \
        src/interface_c_kernel.F90 \
        src/mod_pack_unpack_real_gpu.F90 \
40
        src/elpa_qr/qr_utils.F90 \
41
        src/elpa_qr/elpa_qrkernels.F90 \
42
43
44
        src/elpa_qr/elpa_pdlarfb.F90 \
        src/elpa_qr/elpa_pdgeqrf.F90

45
EXTRA_libelpa@SUFFIX@_private_la_DEPENDENCIES = \
46
47
        src/elpa_reduce_add_vectors.X90 \
        src/elpa_transpose_vectors.X90 \
48
49
50
51
        src/elpa1_compute_complex_template.X90 \
        src/elpa1_compute_real_template.X90 \
        src/elpa2_compute_real_template.X90 \
        src/elpa2_compute_complex_template.X90 \
52
        src/redist_band.X90
53

54
55
lib_LTLIBRARIES = libelpa@SUFFIX@.la
libelpa@SUFFIX@_la_LINK = $(FCLINK) $(AM_LDFLAGS) -version-info $(ELPA_SO_VERSION) -lstdc++
56
57
libelpa@SUFFIX@_la_LIBADD = libelpa@SUFFIX@_public.la libelpa@SUFFIX@_private.la
libelpa@SUFFIX@_la_SOURCES =
58

59

60
if HAVE_DETAILED_TIMINGS
61
  libelpa@SUFFIX@_private_la_SOURCES += \
62
63
64
65
66
67
68
69
70
        src/timer.F90 \
        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
71
72
endif

73
if WITH_GPU_VERSION
74
75
  libelpa@SUFFIX@_private_la_SOURCES +=  src/cudaFunctions.cu src/cuUtils.cu src/ev_tridi_band_gpu_c_v2.cu
  EXTRA_libelpa@SUFFIX@_private_la_DEPENDENCIES +=   src/ev_tridi_band_gpu_c_v2_complex_template.Xcu src/ev_tridi_band_gpu_c_v2_real_template.Xcu
76
77
endif

78
if !WITH_MPI
79
  libelpa@SUFFIX@_private_la_SOURCES += src/mod_time_c.F90
80
if !HAVE_DETAILED_TIMINGS
81
  libelpa@SUFFIX@_private_la_SOURCES += src/ftimings/time.c
82
83
84
endif
endif

Andreas Marek's avatar
Andreas Marek committed
85
if WITH_REAL_GENERIC_KERNEL
86
  libelpa@SUFFIX@_private_la_SOURCES +=  src/elpa2_kernels/elpa2_kernels_real.F90
87
88
endif

Andreas Marek's avatar
Andreas Marek committed
89
if WITH_COMPLEX_GENERIC_KERNEL
90
  libelpa@SUFFIX@_private_la_SOURCES +=  src/elpa2_kernels/elpa2_kernels_complex.F90
91
92
endif

Andreas Marek's avatar
Andreas Marek committed
93
if WITH_REAL_GENERIC_SIMPLE_KERNEL
94
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_simple.F90
95
96
endif

Andreas Marek's avatar
Andreas Marek committed
97
if WITH_COMPLEX_GENERIC_SIMPLE_KERNEL
98
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_simple.F90
99
100
endif

Andreas Marek's avatar
Andreas Marek committed
101
if WITH_REAL_BGP_KERNEL
102
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_bgp.f90
103
104
endif

Andreas Marek's avatar
Andreas Marek committed
105
if WITH_REAL_BGQ_KERNEL
106
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_bgq.f90
107
108
endif

109
if WITH_REAL_SSE_ASSEMBLY_KERNEL
110
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_asm_x86_64_double_precision.s
111
if WANT_SINGLE_PRECISION_REAL
112
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_asm_x86_64_single_precision.s
113
endif
114

Andreas Marek's avatar
Andreas Marek committed
115
else
116
if WITH_COMPLEX_SSE_ASSEMBLY_KERNEL
117
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_asm_x86_64_double_precision.s
118
if WANT_SINGLE_PRECISION_COMPLEX
119
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_asm_x86_64_single_precision.s
120
endif
121
122
endif
endif
Andreas Marek's avatar
Andreas Marek committed
123

124
if WITH_REAL_SSE_BLOCK2_KERNEL
125
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_sse_2hv_double_precision.c
126
if WANT_SINGLE_PRECISION_REAL
127
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_sse_2hv_single_precision.c
128
endif
129
130
endif

Andreas Marek's avatar
Andreas Marek committed
131
if WITH_REAL_AVX_BLOCK2_KERNEL
132
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_avx-avx2_2hv_double_precision.c
133
if WANT_SINGLE_PRECISION_REAL
134
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_avx-avx2_2hv_single_precision.c
135
endif
136
137
else
if WITH_REAL_AVX2_BLOCK2_KERNEL
138
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_avx-avx2_2hv_double_precision.c
139
if WANT_SINGLE_PRECISION_REAL
140
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_avx-avx2_2hv_single_precision.c
141
endif
142
endif
143
144
endif

145
if WITH_REAL_SSE_BLOCK4_KERNEL
146
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_sse_4hv_double_precision.c
147
if WANT_SINGLE_PRECISION_REAL
148
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_sse_4hv_single_precision.c
149
endif
150
151
endif

Andreas Marek's avatar
Andreas Marek committed
152
if WITH_REAL_AVX_BLOCK4_KERNEL
153
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_avx-avx2_4hv_double_precision.c
154
if WANT_SINGLE_PRECISION_REAL
155
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_avx-avx2_4hv_single_precision.c
156
endif
157
158
else
if WITH_REAL_AVX2_BLOCK4_KERNEL
159
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_avx-avx2_4hv_double_precision.c
160
if WANT_SINGLE_PRECISION_REAL
161
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_avx-avx2_4hv_single_precision.c
162
endif
163
endif
164
165
endif

166
if WITH_REAL_SSE_BLOCK6_KERNEL
167
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_sse_6hv_double_precision.c
168
if WANT_SINGLE_PRECISION_REAL
169
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_sse_6hv_single_precision.c
170
endif
171
172
endif

Andreas Marek's avatar
Andreas Marek committed
173
if WITH_REAL_AVX_BLOCK6_KERNEL
174
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_avx-avx2_6hv_double_precision.c
175
if WANT_SINGLE_PRECISION_REAL
176
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_avx-avx2_6hv_single_precision.c
177
endif
178
179
else
if WITH_REAL_AVX2_BLOCK6_KERNEL
180
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_avx-avx2_6hv_double_precision.c
181
if WANT_SINGLE_PRECISION_REAL
182
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_avx-avx2_6hv_single_precision.c
183
endif
184
endif
185
186
endif

187
if WITH_COMPLEX_SSE_BLOCK1_KERNEL
188
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_sse_1hv_double_precision.c
189
if WANT_SINGLE_PRECISION_COMPLEX
190
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_sse_1hv_single_precision.c
191
endif
192
193
endif

Andreas Marek's avatar
Andreas Marek committed
194
if WITH_COMPLEX_AVX_BLOCK1_KERNEL
195
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_avx-avx2_1hv_double_precision.c
196
if WANT_SINGLE_PRECISION_COMPLEX
197
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_avx-avx2_1hv_single_precision.c
198
endif
199
200
else
if WITH_COMPLEX_AVX2_BLOCK1_KERNEL
201
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_avx-avx2_1hv_double_precision.c
202
if WANT_SINGLE_PRECISION_COMPLEX
203
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_avx-avx2_1hv_single_precision.c
204
endif
205
endif
206
207
endif

208
if WITH_COMPLEX_SSE_BLOCK2_KERNEL
209
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_sse_2hv_double_precision.c
210
if WANT_SINGLE_PRECISION_COMPLEX
211
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_sse_2hv_single_precision.c
212
endif
213
214
endif

Andreas Marek's avatar
Andreas Marek committed
215
if WITH_COMPLEX_AVX_BLOCK2_KERNEL
216
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_avx-avx2_2hv_double_precision.c
217
if WANT_SINGLE_PRECISION_COMPLEX
218
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_avx-avx2_2hv_single_precision.c
219
endif
220
221
else
if WITH_COMPLEX_AVX2_BLOCK2_KERNEL
222
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_avx-avx2_2hv_double_precision.c
223
if WANT_SINGLE_PRECISION_COMPLEX
224
  libelpa@SUFFIX@_private_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_avx-avx2_2hv_single_precision.c
225
endif
226
endif
227
228
endif

229
.cu.lo:
230
	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
231

232
233
234
include generated_headers.am
BUILT_SOURCES = $(generated_headers)

235
# install public Fortran modules files in the include/ dir
236
elpa_includedir = $(includedir)/elpa@SUFFIX@-@PACKAGE_VERSION@
237
nobase_elpa_include_HEADERS = $(wildcard modules/*)
Andreas Marek's avatar
Andreas Marek committed
238
nobase_elpa_include_HEADERS += elpa/elpa.h elpa/elpa_kernel_constants.h elpa/elpa_generated.h
239

Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
240
dist_man_MANS = \
241
           man/solve_evp_real.3 \
242
	   man/solve_evp_real_1stage_double.3 \
Andreas Marek's avatar
Andreas Marek committed
243
	   man/solve_evp_complex.3 \
244
245
246
	   man/solve_evp_complex_1stage_double.3 \
	   man/solve_evp_real_2stage_double.3 \
	   man/solve_evp_complex_2stage_double.3 \
Andreas Marek's avatar
Andreas Marek committed
247
	   man/get_elpa_row_col_comms.3 \
248
	   man/get_elpa_communicators.3 \
249
	   man/elpa2_print_kernels.1
Andreas Marek's avatar
Andreas Marek committed
250

251
252
if WANT_SINGLE_PRECISION_REAL

253
dist_man_MANS += man/solve_evp_real_1stage_single.3 \
254
255
256
257
258
	    man/solve_evp_real_2stage_single.3
endif

if WANT_SINGLE_PRECISION_COMPLEX

259
dist_man_MANS += man/solve_evp_complex_1stage_single.3 \
260
261
262
	    man/solve_evp_complex_2stage_single.3
endif

263
dist_doc_DATA = README.md USERS_GUIDE.md INSTALL.md CONTRIBUTING.md LICENSE Changelog COPYING/COPYING COPYING/gpl.txt COPYING/lgpl.txt
264

265
266
# pkg-config stuff
pkgconfigdir = $(libdir)/pkgconfig
267
pkgconfig_DATA = @PKG_CONFIG_FILE@
268

269
270
# programs
bin_PROGRAMS = \
271
  elpa2_print_kernels@SUFFIX@
272
273

noinst_PROGRAMS = \
274
  elpa1_test_real@SUFFIX@ \
275
276
  elpa1_test_complex@SUFFIX@ \
  elpa2_test_real@SUFFIX@ \
Andreas Marek's avatar
Andreas Marek committed
277
278
279
280
  elpa2_test_real_default_kernel@SUFFIX@ \
  elpa2_test_real_default_kernel_qr_decomposition@SUFFIX@ \
  elpa2_test_real_choose_kernel_with_api@SUFFIX@ \
  elpa2_test_complex@SUFFIX@ \
281
282
283
284
285
286
287
  elpa2_test_complex_default_kernel@SUFFIX@ \
  elpa2_test_complex_choose_kernel_with_api@SUFFIX@

#if WITH_OPENMP
# nothing yet
#endif

288
if !WITH_OPENMP
Andreas Marek's avatar
Andreas Marek committed
289
noinst_PROGRAMS += \
290
  elpa1_test_real_with_c@SUFFIX@ \
Andreas Marek's avatar
Andreas Marek committed
291
292
293
294
295
296
  elpa1_test_real_c_version@SUFFIX@ \
  elpa1_test_complex_c_version@SUFFIX@ \
  elpa2_test_real_c_version@SUFFIX@ \
  elpa2_test_complex_c_version@SUFFIX@
endif

297
298
if WANT_SINGLE_PRECISION_COMPLEX
noinst_PROGRAMS += \
299
300
  elpa1_test_complex_single_precision@SUFFIX@ \
  elpa2_test_complex_single_precision@SUFFIX@ \
301
302
303
304
305
306
  elpa2_test_complex_default_kernel_single_precision@SUFFIX@ \
  elpa2_test_complex_choose_kernel_with_api_single_precision@SUFFIX@
endif

if WANT_SINGLE_PRECISION_REAL
noinst_PROGRAMS += \
307
308
  elpa1_test_real_single_precision@SUFFIX@ \
  elpa2_test_real_single_precision@SUFFIX@ \
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
  elpa2_test_real_default_kernel_single_precision@SUFFIX@ \
  elpa2_test_real_default_kernel_qr_decomposition_single_precision@SUFFIX@ \
  elpa2_test_real_choose_kernel_with_api_single_precision@SUFFIX@
endif

if WITH_GPU_VERSION
noinst_PROGRAMS += \
  elpa2_test_complex_gpu_version@SUFFIX@ \
  elpa2_test_real_gpu_version@SUFFIX@

if WANT_SINGLE_PRECISION_REAL
noinst_PROGRAMS += \
  elpa2_test_real_gpu_version_single_precision@SUFFIX@
endif

if WANT_SINGLE_PRECISION_COMPLEX
noinst_PROGRAMS += \
  elpa2_test_complex_gpu_version_single_precision@SUFFIX@
endif

endif

331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
build_lib = libelpa@SUFFIX@.la libelpatest@SUFFIX@.la

# library with shared sources for the test files
noinst_LTLIBRARIES += libelpatest@SUFFIX@.la
libelpatest@SUFFIX@_la_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
libelpatest@SUFFIX@_la_SOURCES = \
	test/shared_sources/util.F90 \
	test/shared_sources/read_input_parameters.F90  \
	test/shared_sources/check_correctnes.F90 \
	test/shared_sources/setup_mpi.F90 \
	test/shared_sources/blacs_infrastructure.F90 \
	test/shared_sources/prepare_matrix.F90 \
	test/shared_sources/mod_output_types.F90 \
	test/shared_sources/mod_from_c.F90 \
	test/shared_sources/call_elpa1.c
Andreas Marek's avatar
Andreas Marek committed
346

347
if HAVE_REDIRECT
348
349
350
libelpatest@SUFFIX@_la_SOURCES += \
	test/shared_sources/redir.c \
	test/shared_sources/redirect.F90
351
352
endif

Andreas Marek's avatar
Andreas Marek committed
353
if !WITH_OPENMP
354
elpa1_test_real_c_version@SUFFIX@_SOURCES = test/c_test_programs/elpa1_test_real_c_version.c
Andreas Marek's avatar
Andreas Marek committed
355
elpa1_test_real_c_version@SUFFIX@_LDADD = $(build_lib)
356
elpa1_test_real_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
357
elpa1_test_real_c_version@SUFFIX@_LINK = $(LINK) $(FCLIBS)
358
EXTRA_elpa1_test_real_c_version@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
Andreas Marek's avatar
Andreas Marek committed
359

360
elpa1_test_real_with_c@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa1_real_c.F90
361
elpa1_test_real_with_c@SUFFIX@_LDADD = $(build_lib)
362
elpa1_test_real_with_c@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
363
EXTRA_elpa1_test_real_with_c@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
364

365
elpa1_test_complex_c_version@SUFFIX@_SOURCES = test/c_test_programs/elpa1_test_complex_c_version.c
Andreas Marek's avatar
Andreas Marek committed
366
elpa1_test_complex_c_version@SUFFIX@_LDADD = $(build_lib)
367
elpa1_test_complex_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
Andreas Marek's avatar
Andreas Marek committed
368
elpa1_test_complex_c_version@SUFFIX@_LINK = $(LINK) $(FCLIBS)
369
EXTRA_elpa1_test_complex_c_version@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
Andreas Marek's avatar
Andreas Marek committed
370

371
elpa2_test_real_c_version@SUFFIX@_SOURCES = test/c_test_programs/elpa2_test_real_c_version.c
Andreas Marek's avatar
Andreas Marek committed
372
elpa2_test_real_c_version@SUFFIX@_LDADD = $(build_lib)
373
elpa2_test_real_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
Andreas Marek's avatar
Andreas Marek committed
374
elpa2_test_real_c_version@SUFFIX@_LINK = $(LINK) $(FCLIBS)
375
EXTRA_elpa2_test_real_c_version@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
Andreas Marek's avatar
Andreas Marek committed
376

377
elpa2_test_complex_c_version@SUFFIX@_SOURCES = test/c_test_programs/elpa2_test_complex_c_version.c
Andreas Marek's avatar
Andreas Marek committed
378
elpa2_test_complex_c_version@SUFFIX@_LDADD = $(build_lib)
379
elpa2_test_complex_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
Andreas Marek's avatar
Andreas Marek committed
380
elpa2_test_complex_c_version@SUFFIX@_LINK = $(LINK) $(FCLIBS)
381
EXTRA_elpa2_test_complex_c_version@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
Andreas Marek's avatar
Andreas Marek committed
382
endif
Andreas Marek's avatar
Andreas Marek committed
383

384
elpa1_test_real@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa1_real.F90
385
elpa1_test_real@SUFFIX@_LDADD = $(build_lib)
386
elpa1_test_real@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
Lorenz Huedepohl's avatar
Typo  
Lorenz Huedepohl committed
387
EXTRA_elpa1_test_real@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
388

389
elpa2_test_real@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_real.F90
390
elpa2_test_real@SUFFIX@_LDADD = $(build_lib)
391
elpa2_test_real@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
392
EXTRA_elpa2_test_real@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
393

394
elpa2_test_real_default_kernel@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_real_default_kernel.F90
395
elpa2_test_real_default_kernel@SUFFIX@_LDADD = $(build_lib)
396
elpa2_test_real_default_kernel@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
397
EXTRA_elpa2_test_real_default_kernel@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
398

399
elpa2_test_real_default_kernel_qr_decomposition@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_real_qr_default_kernel.F90
400
elpa2_test_real_default_kernel_qr_decomposition@SUFFIX@_LDADD = $(build_lib)
401
elpa2_test_real_default_kernel_qr_decomposition@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
402
EXTRA_elpa2_test_real_default_kernel_qr_decomposition@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
403

404
elpa2_test_real_choose_kernel_with_api@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_real_kernel_by_api.F90
405
elpa2_test_real_choose_kernel_with_api@SUFFIX@_LDADD = $(build_lib)
406
elpa2_test_real_choose_kernel_with_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
407
EXTRA_elpa2_test_real_choose_kernel_with_api@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
Andreas Marek's avatar
Andreas Marek committed
408

409
elpa1_test_complex@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa1_complex.F90
410
elpa1_test_complex@SUFFIX@_LDADD = $(build_lib)
411
elpa1_test_complex@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
412
EXTRA_elpa1_test_complex@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
Andreas Marek's avatar
Andreas Marek committed
413

414
elpa2_test_complex@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_complex.F90
415
elpa2_test_complex@SUFFIX@_LDADD = $(build_lib)
416
elpa2_test_complex@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
417
EXTRA_elpa2_test_complex@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
418

419
elpa2_test_complex_default_kernel@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_complex_default_kernel.F90
420
elpa2_test_complex_default_kernel@SUFFIX@_LDADD = $(build_lib)
421
elpa2_test_complex_default_kernel@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
422
EXTRA_elpa2_test_complex_default_kernel@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
423

424
elpa2_test_complex_choose_kernel_with_api@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_complex_kernel_by_api.F90
425
elpa2_test_complex_choose_kernel_with_api@SUFFIX@_LDADD = $(build_lib)
426
elpa2_test_complex_choose_kernel_with_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
427
EXTRA_elpa2_test_complex_choose_kernel_with_api@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
Andreas Marek's avatar
Andreas Marek committed
428

429
elpa2_print_kernels@SUFFIX@_SOURCES = src/elpa2_print_kernels.F90
430
elpa2_print_kernels@SUFFIX@_LDADD = $(build_lib)
431
elpa2_print_kernels@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
Andreas Marek's avatar
Andreas Marek committed
432

433
if WANT_SINGLE_PRECISION_REAL
434
elpa1_test_real_single_precision@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa1_real_single.F90
435
elpa1_test_real_single_precision@SUFFIX@_LDADD = $(build_lib)
436
elpa1_test_real_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
437
EXTRA_elpa1_test_real_single_precision@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
438

439
elpa2_test_real_single_precision@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_real_single.F90
440
441
elpa2_test_real_single_precision@SUFFIX@_LDFLAGS = -static
elpa2_test_real_single_precision@SUFFIX@_LDADD = $(build_lib)
442
elpa2_test_real_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
443
EXTRA_elpa2_test_real_single_precision@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
444

445
elpa2_test_real_default_kernel_single_precision@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_real_default_kernel_single.F90
446
elpa2_test_real_default_kernel_single_precision@SUFFIX@_LDADD = $(build_lib)
447
#elpa2_test_real_default_kernel_single_precision@SUFFIX@_LDFLAGS = -static
448
elpa2_test_real_default_kernel_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
449
EXTRA_elpa2_test_real_default_kernel_single_precision@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
450

451
elpa2_test_real_default_kernel_qr_decomposition_single_precision@SUFFIX@_SOURCES = \
452
	        test/fortran_test_programs/test_elpa2_real_qr_default_kernel_single.F90
453
elpa2_test_real_default_kernel_qr_decomposition_single_precision@SUFFIX@_LDADD = $(build_lib)
454
elpa2_test_real_default_kernel_qr_decomposition_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
455
EXTRA_elpa2_test_real_default_kernel_qr_decomposition_single_precision@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
456

457
elpa2_test_real_choose_kernel_with_api_single_precision@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_real_kernel_by_api_single.F90
458
elpa2_test_real_choose_kernel_with_api_single_precision@SUFFIX@_LDADD = $(build_lib)
459
elpa2_test_real_choose_kernel_with_api_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
460
EXTRA_elpa2_test_real_choose_kernel_with_api_single_precision@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
461
462
463
endif

if WANT_SINGLE_PRECISION_COMPLEX
464
elpa1_test_complex_single_precision@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa1_complex_single.F90
465
elpa1_test_complex_single_precision@SUFFIX@_LDADD = $(build_lib)
466
elpa1_test_complex_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
467
EXTRA_elpa1_test_complex_single_precision@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
468

469
elpa2_test_complex_single_precision@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_complex_single.F90
470
elpa2_test_complex_single_precision@SUFFIX@_LDADD = $(build_lib)
471
elpa2_test_complex_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
472
EXTRA_elpa2_test_complex_single_precision@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
473

474
elpa2_test_complex_default_kernel_single_precision@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_complex_default_kernel_single.F90 $(shared_sources) $(redirect_sources)
475
elpa2_test_complex_default_kernel_single_precision@SUFFIX@_LDADD = $(build_lib)
476
#elpa2_test_complex_default_kernel_single_precision@SUFFIX@_LDFLAGS = -static
477
elpa2_test_complex_default_kernel_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
478
EXTRA_elpa2_test_complex_default_kernel_single_precision@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
479

480
elpa2_test_complex_choose_kernel_with_api_single_precision@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_complex_kernel_by_api_single.F90
481
elpa2_test_complex_choose_kernel_with_api_single_precision@SUFFIX@_LDADD = $(build_lib)
482
elpa2_test_complex_choose_kernel_with_api_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
483
EXTRA_elpa2_test_complex_choose_kernel_with_api_single_precision@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
484
485
486
endif

if WITH_GPU_VERSION
487
elpa2_test_real_gpu_version@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_real_gpu.F90
488
elpa2_test_real_gpu_version@SUFFIX@_LDADD = $(build_lib)
489
elpa2_test_real_gpu_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
490
EXTRA_elpa2_test_real_gpu_version@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
491

492
elpa2_test_complex_gpu_version@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_complex_gpu.F90
493
elpa2_test_complex_gpu_version@SUFFIX@_LDADD = $(build_lib)
494
elpa2_test_complex_gpu_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
495
EXTRA_elpa2_test_complex_gpu_version@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
496
497

if WANT_SINGLE_PRECISION_REAL
498
elpa2_test_real_gpu_version_single_precision@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_real_gpu_single.F90
499
elpa2_test_real_gpu_version_single_precision@SUFFIX@_LDADD = $(build_lib)
500
elpa2_test_real_gpu_version_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
501
EXTRA_elpa2_test_real_gpu_version_single_precision@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
502
503
504
endif

if WANT_SINGLE_PRECISION_COMPLEX
505
elpa2_test_complex_gpu_version_single_precision@SUFFIX@_SOURCES = test/fortran_test_programs/test_elpa2_complex_gpu_single.F90
506
elpa2_test_complex_gpu_version_single_precision@SUFFIX@_LDADD = $(build_lib)
507
elpa2_test_complex_gpu_version_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
508
EXTRA_elpa2_test_complex_gpu_version_single_precision@SUFFIX@_DEPENDENCIES = test/fortran_test_programs/elpa_test_programs_print_headers.X90
509
510
511
512
endif

endif

513
check_SCRIPTS = \
514
515
516
517
518
519
520
521
522
  elpa1_test_real@SUFFIX@.sh \
  elpa2_test_real@SUFFIX@.sh \
  elpa2_test_real_default_kernel@SUFFIX@.sh \
  elpa1_test_complex@SUFFIX@.sh \
  elpa2_test_complex@SUFFIX@.sh \
  elpa2_test_complex_default_kernel@SUFFIX@.sh \
  elpa2_test_real_default_kernel_qr_decomposition@SUFFIX@.sh \
  elpa2_test_real_choose_kernel_with_api@SUFFIX@.sh \
  elpa2_test_complex_choose_kernel_with_api@SUFFIX@.sh \
523
  elpa2_print_kernels@SUFFIX@
524

Andreas Marek's avatar
Andreas Marek committed
525
526
if !WITH_OPENMP
check_SCRIPTS += \
527
  elpa1_test_real_with_c@SUFFIX@.sh \
528
529
530
531
  elpa1_test_real_c_version@SUFFIX@.sh \
  elpa1_test_complex_c_version@SUFFIX@.sh \
  elpa2_test_real_c_version@SUFFIX@.sh \
  elpa2_test_complex_c_version@SUFFIX@.sh
Andreas Marek's avatar
Andreas Marek committed
532
533
endif

534
535
if WANT_SINGLE_PRECISION_REAL
check_SCRIPTS += \
536
537
538
539
540
  elpa1_test_real_single_precision@SUFFIX@.sh \
  elpa2_test_real_single_precision@SUFFIX@.sh \
  elpa2_test_real_default_kernel_single_precision@SUFFIX@.sh \
  elpa2_test_real_default_kernel_qr_decomposition_single_precision@SUFFIX@.sh \
  elpa2_test_real_choose_kernel_with_api_single_precision@SUFFIX@.sh
541
542
543
544
endif

if WANT_SINGLE_PRECISION_COMPLEX
check_SCRIPTS += \
545
546
  elpa1_test_complex_single_precision@SUFFIX@.sh \
  elpa2_test_complex_single_precision@SUFFIX@.sh \
547
548
  elpa2_test_complex_default_kernel_single_precision@SUFFIX@.sh \
  elpa2_test_complex_choose_kernel_with_api_single_precision@SUFFIX@.sh
549
550
551
552
endif

if WITH_GPU_VERSION
check_SCRIPTS += \
553
554
  elpa2_test_real_gpu_version@SUFFIX@.sh \
  elpa2_test_complex_gpu_version@SUFFIX@.sh
555
556
if WANT_SINGLE_PRECISION_REAL
check_SCRIPTS += \
557
  elpa2_test_real_gpu_version_single_precision@SUFFIX@.sh
558
559
560
endif
if WANT_SINGLE_PRECISION_COMPLEX
check_SCRIPTS += \
561
  elpa2_test_complex_gpu_version_single_precision@SUFFIX@.sh
562
563
564
565
endif

endif

566
# test scripts
567
MPIEXEC ?= mpiexec -n 2
568
if WITH_MPI
569
  wrapper=$(MPIEXEC)
570
else
571
  wrapper=
572
endif
573
574
TESTS = $(check_SCRIPTS)
%.sh: %
575
	echo '$(wrapper) ./$^ $$TEST_FLAGS' > $@
576
	chmod +x $@
577

578
# Preprocessed files (just used for manual inspection)
579
580
mod_precision.i: $(top_srcdir)/src/mod_precision.F90
	$(CPP) $(CPPFLAGS) -I$(top_builddir)/ -I$(top_srcdir)/ -c $(top_srcdir)/src/mod_precision.F90 -o $@
Andreas Marek's avatar
Andreas Marek committed
581

Andreas Marek's avatar
Andreas Marek committed
582
elpa2_utilities.i: $(top_srcdir)/src/elpa2_utilities.F90
583
	$(CPP) $(CPPFLAGS) -I$(top_builddir)/ -I$(top_srcdir)/ -c $(top_srcdir)/src/elpa2_utilities.F90 -o $@
Andreas Marek's avatar
Andreas Marek committed
584

Andreas Marek's avatar
Andreas Marek committed
585
elpa2.i: $(top_srcdir)/src/elpa2.F90
586
	$(CPP) $(CPPFLAGS) -I$(top_builddir)/ -I$(top_srcdir)/ -c $(top_srcdir)/src/elpa2.F90 -o $@
587

Andreas Marek's avatar
Andreas Marek committed
588
elpa1.i: $(top_srcdir)/src/elpa1.F90
589
	$(CPP) $(CPPFLAGS) -I$(top_builddir)/ -I$(top_srcdir)/ -c $(top_srcdir)/src/elpa1.F90 -o $@
590

591
592
593
elpa1_compute.i: $(top_srcdir)/src/elpa1_compute.F90
	$(CPP) $(CPPFLAGS) -I$(top_builddir)/ -I$(top_srcdir)/ -c $(top_srcdir)/src/elpa1_compute.F90 -o $@

594
595
596
elpa2_compute.i: $(top_srcdir)/src/elpa2_compute.F90
	$(CPP) $(CPPFLAGS) -I$(top_builddir)/ -I$(top_srcdir)/ -c $(top_srcdir)/src/elpa2_compute.F90 -o $@

597
598
599
elpa2_kernels_real.i: $(top_srcdir)/src/elpa2_kernels/elpa2_kernels_real.F90
	$(CPP) $(CPPFLAGS) -I$(top_builddir)/ -c $(top_srcdir)/src/elpa2_kernels/elpa2_kernels_real.F90 -o $@

600
601
602
mod_compute_hh_trafo_real.i: $(top_srcdir)/src/mod_compute_hh_trafo_real.F90
	$(CPP) $(CPPFLAGS) -I$(top_builddir)/ -c $(top_srcdir)/src/mod_compute_hh_trafo_real.F90 -o $@

603
604
605
mod_compute_hh_trafo_complex.i: $(top_srcdir)/src/mod_compute_hh_trafo_complex.F90
	$(CPP) $(CPPFLAGS) -I$(top_builddir)/ -c $(top_srcdir)/src/mod_compute_hh_trafo_complex.F90 -o $@

606
607
test_real.i: $(top_srcdir)/test/fortran_test_programs/test_elpa1_real.F90
	$(CPP) $(CPPFLAGS) -I$(top_builddir)/ -c $(top_srcdir)/test/fortran_test_programs/test_elpa1_real.F90 -o $@
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626

blacs_infrastructure.i: $(top_srcdir)/test/shared_sources/blacs_infrastructure.F90
	$(CPP) $(CPPFLAGS) -I$(top_builddir)/ -c $(top_srcdir)/test/shared_sources/blacs_infrastructure.F90 -o $@

check_correctnes.i: $(top_srcdir)/test/shared_sources/check_correctnes.F90
	$(CPP) $(CPPFLAGS) -I$(top_builddir)/ -c $(top_srcdir)/test/shared_sources/check_correctnes.F90 -o $@

prepare_matrix.i: $(top_srcdir)/test/shared_sources/prepare_matrix.F90
	$(CPP) $(CPPFLAGS) -I$(top_builddir)/ -c $(top_srcdir)/test/shared_sources/prepare_matrix.F90 -o $@

read_input_parameters.i: $(top_srcdir)/test/shared_sources/read_input_parameters.F90
	$(CPP) $(CPPFLAGS) -I$(top_builddir)/ -c $(top_srcdir)/test/shared_sources/read_input_parameters.F90 -o $@

setup_mpi.i: $(top_srcdir)/test/shared_sources/setup_mpi.F90
	$(CPP) $(CPPFLAGS) -I$(top_builddir)/ -c $(top_srcdir)/test/shared_sources/setup_mpi.F90 -o $@

cuUtils.i: $(top_srcdir)/src/cuUtils.cu
	$(CPP) $(CPPFLAGS) -I$(top_builddir)/ -c $(top_srcdir)/src/cuUtils.cu -o $@

627
628
include doxygen.am

629
CLEANFILES = \
Andreas Marek's avatar
Andreas Marek committed
630
  elpa-generated.h \
Andreas Marek's avatar
Andreas Marek committed
631
  elpa1_test* \
632
  elpa2_test*\
633
  *.i
634
635

clean-local:
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
636
	-rm -rf modules/* private_modules/* .fortran_dependencies/*
637
	-rm -rf $(generated_headers)
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
638
639
640

distclean-local:
	-rm config-f90.h
641
642
643
	-rm -rf ./src/elpa2_kernels/.deps
	-rm -rf ./src/.deps
	-rm -rf ./test/.deps
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
644
	-rmdir ./src/elpa2_kernels/
645
646
	-rmdir ./src
	-rmdir ./test
647
	-rmdir ./m4
648
	-rmdir modules/
Lorenz Huedepohl's avatar
Lorenz Huedepohl committed
649
	-rmdir .fortran_dependencies/
650

651
652
653
EXTRA_DIST = \
  fdep/fortran_dependencies.pl \
  fdep/fortran_dependencies.mk \
654
  test/fortran_test_programs/elpa_test_programs_print_headers.X90 \
655
656
  src/elpa_reduce_add_vectors.X90 \
  src/elpa_transpose_vectors.X90 \
657
658
659
660
  src/elpa1_compute_real_template.X90 \
  src/elpa1_compute_complex_template.X90 \
  src/elpa2_compute_real_template.X90 \
  src/elpa2_compute_complex_template.X90 \
661
  src/redist_band.X90 \
662
663
664
665
666
  src/elpa_qr/elpa_qrkernels.X90 \
  src/ev_tridi_band_gpu_c_v2_complex_template.Xcu \
  src/ev_tridi_band_gpu_c_v2_real_template.Xcu \
  src/cuUtils_complex_template.Xcu \
  src/cuUtils_real_template.Xcu \
667
  nvcc_wrap \
668
  elpa.spec
669

670
671
672
673
674
675
## Rules to re-generated the headers
#elpa/elpa_generated.h: $(top_srcdir)/src/elpa_c_interface.F90
#	grep -h "^ *!c>" $^ | sed 's/^ *!c>//;' > $@ || { rm $@; exit 1; }
#
#test/shared_sources/generated.h: $(wildcard $(top_srcdir)/test/shared_sources/*.F90)
#	grep -h "^ *!c>" $^ | sed 's/^ *!c>//;' > $@ || { rm $@; exit 1; }
676

677
678
679
LIBTOOL_DEPS = @LIBTOOL_DEPS@
libtool: $(LIBTOOL_DEPS)
	$(SHELL) ./config.status libtool
680

681

682
@FORTRAN_MODULE_DEPS@
683
684
685
686
687

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

688
# $1  Object name
689
define require_elpa_lib
690
$1: libelpa@SUFFIX@.la
691
692

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