cannam@127
|
1 OPTIONS_AUTOMAKE=gnu
|
cannam@127
|
2 lib_LTLIBRARIES = libfftw3@PREC_SUFFIX@.la
|
cannam@127
|
3
|
cannam@127
|
4 # pkgincludedir = $(includedir)/fftw3@PREC_SUFFIX@
|
cannam@127
|
5 # nodist_pkginclude_HEADERS = config.h
|
cannam@127
|
6
|
cannam@127
|
7 # recompile genfft if maintainer mode is true
|
cannam@127
|
8 if MAINTAINER_MODE
|
cannam@127
|
9 GENFFT = genfft
|
cannam@127
|
10 else
|
cannam@127
|
11 GENFFT =
|
cannam@127
|
12 endif
|
cannam@127
|
13
|
cannam@127
|
14 ACLOCAL_AMFLAGS=-I m4
|
cannam@127
|
15
|
cannam@127
|
16 # when using combined thread libraries (necessary on Windows), we want
|
cannam@127
|
17 # to build threads/ first, because libfftw3_threads is added to
|
cannam@127
|
18 # libfftw3.
|
cannam@127
|
19 #
|
cannam@127
|
20 # Otherwise, we want to build libfftw3_threads after libfftw3
|
cannam@127
|
21 # so that we can track the fact that libfftw3_threads depends upon
|
cannam@127
|
22 # libfftw3.
|
cannam@127
|
23 #
|
cannam@127
|
24 # This is the inescapable result of combining three bad ideas
|
cannam@127
|
25 # (threads, Windows, and shared libraries).
|
cannam@127
|
26 #
|
cannam@127
|
27 if COMBINED_THREADS
|
cannam@127
|
28 CHICKEN_EGG=threads .
|
cannam@127
|
29 else
|
cannam@127
|
30 CHICKEN_EGG=. threads
|
cannam@127
|
31 endif
|
cannam@127
|
32
|
cannam@127
|
33 # Only build in doc/ if not disabled by user (i.e. not all
|
cannam@127
|
34 # tools are available, such as fig2dev in maintainer mode)
|
cannam@127
|
35 if BUILD_DOC
|
cannam@127
|
36 DOCDIR=doc
|
cannam@127
|
37 else
|
cannam@127
|
38 DOCDIR=
|
cannam@127
|
39 endif
|
cannam@127
|
40
|
cannam@127
|
41 SUBDIRS=support $(GENFFT) kernel simd-support dft rdft reodft api \
|
cannam@127
|
42 libbench2 $(CHICKEN_EGG) tests mpi $(DOCDIR) tools m4
|
cannam@127
|
43 EXTRA_DIST=COPYRIGHT bootstrap.sh CONVENTIONS fftw.pc.in
|
cannam@127
|
44
|
cannam@127
|
45 SIMD_LIBS = \
|
cannam@127
|
46 simd-support/libsimd_support.la \
|
cannam@127
|
47 simd-support/libsimd_sse2_nonportable.la
|
cannam@127
|
48
|
cannam@127
|
49 if HAVE_SSE2
|
cannam@127
|
50 SSE2_LIBS = dft/simd/sse2/libdft_sse2_codelets.la \
|
cannam@127
|
51 rdft/simd/sse2/librdft_sse2_codelets.la
|
cannam@127
|
52 endif
|
cannam@127
|
53
|
cannam@127
|
54 if HAVE_AVX
|
cannam@127
|
55 AVX_LIBS = dft/simd/avx/libdft_avx_codelets.la \
|
cannam@127
|
56 rdft/simd/avx/librdft_avx_codelets.la
|
cannam@127
|
57 endif
|
cannam@127
|
58
|
cannam@127
|
59 if HAVE_AVX_128_FMA
|
cannam@127
|
60 AVX_128_FMA_LIBS = dft/simd/avx-128-fma/libdft_avx_128_fma_codelets.la \
|
cannam@127
|
61 rdft/simd/avx-128-fma/librdft_avx_128_fma_codelets.la
|
cannam@127
|
62 endif
|
cannam@127
|
63
|
cannam@127
|
64 if HAVE_AVX2
|
cannam@127
|
65 AVX2_LIBS = dft/simd/avx2/libdft_avx2_codelets.la \
|
cannam@127
|
66 dft/simd/avx2-128/libdft_avx2_128_codelets.la \
|
cannam@127
|
67 rdft/simd/avx2/librdft_avx2_codelets.la \
|
cannam@127
|
68 rdft/simd/avx2-128/librdft_avx2_128_codelets.la
|
cannam@127
|
69 endif
|
cannam@127
|
70
|
cannam@127
|
71 if HAVE_AVX512
|
cannam@127
|
72 AVX512_LIBS = dft/simd/avx512/libdft_avx512_codelets.la \
|
cannam@127
|
73 rdft/simd/avx512/librdft_avx512_codelets.la
|
cannam@127
|
74 endif
|
cannam@127
|
75
|
cannam@127
|
76 if HAVE_KCVI
|
cannam@127
|
77 KCVI_LIBS = dft/simd/kcvi/libdft_kcvi_codelets.la \
|
cannam@127
|
78 rdft/simd/kcvi/librdft_kcvi_codelets.la
|
cannam@127
|
79 endif
|
cannam@127
|
80
|
cannam@127
|
81 if HAVE_ALTIVEC
|
cannam@127
|
82 ALTIVEC_LIBS = dft/simd/altivec/libdft_altivec_codelets.la \
|
cannam@127
|
83 rdft/simd/altivec/librdft_altivec_codelets.la
|
cannam@127
|
84 endif
|
cannam@127
|
85
|
cannam@127
|
86 if HAVE_VSX
|
cannam@127
|
87 VSX_LIBS = dft/simd/vsx/libdft_vsx_codelets.la \
|
cannam@127
|
88 rdft/simd/vsx/librdft_vsx_codelets.la
|
cannam@127
|
89 endif
|
cannam@127
|
90
|
cannam@127
|
91 if HAVE_NEON
|
cannam@127
|
92 NEON_LIBS = dft/simd/neon/libdft_neon_codelets.la \
|
cannam@127
|
93 rdft/simd/neon/librdft_neon_codelets.la
|
cannam@127
|
94 endif
|
cannam@127
|
95
|
cannam@127
|
96 if HAVE_GENERIC_SIMD128
|
cannam@127
|
97 GENERIC_SIMD128_LIBS = dft/simd/generic-simd128/libdft_generic_simd128_codelets.la \
|
cannam@127
|
98 rdft/simd/generic-simd128/librdft_generic_simd128_codelets.la
|
cannam@127
|
99 endif
|
cannam@127
|
100
|
cannam@127
|
101 if HAVE_GENERIC_SIMD256
|
cannam@127
|
102 GENERIC_SIMD256_LIBS = dft/simd/generic-simd256/libdft_generic_simd256_codelets.la \
|
cannam@127
|
103 rdft/simd/generic-simd256/librdft_generic_simd256_codelets.la
|
cannam@127
|
104 endif
|
cannam@127
|
105
|
cannam@127
|
106 if THREADS
|
cannam@127
|
107 if COMBINED_THREADS
|
cannam@127
|
108 COMBINED_THREADLIBS=threads/libfftw3@PREC_SUFFIX@_threads.la
|
cannam@127
|
109 endif
|
cannam@127
|
110 endif
|
cannam@127
|
111
|
cannam@127
|
112 libfftw3@PREC_SUFFIX@_la_SOURCES =
|
cannam@127
|
113
|
cannam@127
|
114 libfftw3@PREC_SUFFIX@_la_LIBADD = \
|
cannam@127
|
115 kernel/libkernel.la \
|
cannam@127
|
116 dft/libdft.la \
|
cannam@127
|
117 dft/scalar/libdft_scalar.la \
|
cannam@127
|
118 dft/scalar/codelets/libdft_scalar_codelets.la \
|
cannam@127
|
119 rdft/librdft.la \
|
cannam@127
|
120 rdft/scalar/librdft_scalar.la \
|
cannam@127
|
121 rdft/scalar/r2cf/librdft_scalar_r2cf.la \
|
cannam@127
|
122 rdft/scalar/r2cb/librdft_scalar_r2cb.la \
|
cannam@127
|
123 rdft/scalar/r2r/librdft_scalar_r2r.la \
|
cannam@127
|
124 reodft/libreodft.la \
|
cannam@127
|
125 api/libapi.la \
|
cannam@127
|
126 $(SIMD_LIBS) $(SSE2_LIBS) $(AVX_LIBS) $(AVX_128_FMA_LIBS) \
|
cannam@127
|
127 $(AVX2_LIBS) $(ALTIVEC_LIBS) \
|
cannam@127
|
128 $(VSX_LIBS) $(NEON_LIBS) $(KCVI_LIBS) $(AVX512_LIBS) \
|
cannam@127
|
129 $(GENERIC_SIMD128_LIBS) $(GENERIC_SIMD256_LIBS) \
|
cannam@127
|
130 $(COMBINED_THREADLIBS)
|
cannam@127
|
131
|
cannam@127
|
132 if QUAD
|
cannam@127
|
133 # cannot use -no-undefined since dependent on libquadmath
|
cannam@127
|
134 libfftw3@PREC_SUFFIX@_la_LDFLAGS = -version-info @SHARED_VERSION_INFO@ $(ENVIRONMENT_LIBFFTW3_LDFLAGS)
|
cannam@127
|
135 else
|
cannam@127
|
136 libfftw3@PREC_SUFFIX@_la_LDFLAGS = -no-undefined -version-info \
|
cannam@127
|
137 @SHARED_VERSION_INFO@ $(ENVIRONMENT_LIBFFTW3_LDFLAGS)
|
cannam@127
|
138 endif
|
cannam@127
|
139
|
cannam@127
|
140 fftw3@PREC_SUFFIX@.pc: fftw.pc
|
cannam@127
|
141 cp -f fftw.pc fftw3@PREC_SUFFIX@.pc
|
cannam@127
|
142 pkgconfigdir = $(libdir)/pkgconfig
|
cannam@127
|
143 pkgconfig_DATA = fftw3@PREC_SUFFIX@.pc
|
cannam@127
|
144
|
cannam@127
|
145 WISDOM_DIR = /etc/fftw
|
cannam@127
|
146 WISDOM = wisdom@PREC_SUFFIX@
|
cannam@127
|
147
|
cannam@127
|
148 WISDOM_TIME=12 # default to 12-hour limit, i.e. overnight
|
cannam@127
|
149 WISDOM_FLAGS=--verbose --canonical --time-limit=$(WISDOM_TIME)
|
cannam@127
|
150
|
cannam@127
|
151 wisdom:
|
cannam@127
|
152 tools/fftw@PREC_SUFFIX@-wisdom -o $@ $(WISDOM_FLAGS)
|
cannam@127
|
153
|
cannam@127
|
154 install-wisdom: wisdom
|
cannam@127
|
155 $(mkinstalldirs) $(WISDOM_DIR)
|
cannam@127
|
156 $(INSTALL_DATA) wisdom $(WISDOM_DIR)/$(WISDOM)
|