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))))