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