cannam@127: OPTIONS_AUTOMAKE=gnu cannam@127: lib_LTLIBRARIES = libfftw3@PREC_SUFFIX@.la cannam@127: cannam@127: # pkgincludedir = $(includedir)/fftw3@PREC_SUFFIX@ cannam@127: # nodist_pkginclude_HEADERS = config.h cannam@127: cannam@127: # recompile genfft if maintainer mode is true cannam@127: if MAINTAINER_MODE cannam@127: GENFFT = genfft cannam@127: else cannam@127: GENFFT = cannam@127: endif cannam@127: cannam@127: ACLOCAL_AMFLAGS=-I m4 cannam@127: cannam@127: # when using combined thread libraries (necessary on Windows), we want cannam@127: # to build threads/ first, because libfftw3_threads is added to cannam@127: # libfftw3. cannam@127: # cannam@127: # Otherwise, we want to build libfftw3_threads after libfftw3 cannam@127: # so that we can track the fact that libfftw3_threads depends upon cannam@127: # libfftw3. cannam@127: # cannam@127: # This is the inescapable result of combining three bad ideas cannam@127: # (threads, Windows, and shared libraries). cannam@127: # cannam@127: if COMBINED_THREADS cannam@127: CHICKEN_EGG=threads . cannam@127: else cannam@127: CHICKEN_EGG=. threads cannam@127: endif cannam@127: cannam@127: # Only build in doc/ if not disabled by user (i.e. not all cannam@127: # tools are available, such as fig2dev in maintainer mode) cannam@127: if BUILD_DOC cannam@127: DOCDIR=doc cannam@127: else cannam@127: DOCDIR= cannam@127: endif cannam@127: cannam@127: SUBDIRS=support $(GENFFT) kernel simd-support dft rdft reodft api \ cannam@127: libbench2 $(CHICKEN_EGG) tests mpi $(DOCDIR) tools m4 cannam@127: EXTRA_DIST=COPYRIGHT bootstrap.sh CONVENTIONS fftw.pc.in cannam@127: cannam@127: SIMD_LIBS = \ cannam@127: simd-support/libsimd_support.la \ cannam@127: simd-support/libsimd_sse2_nonportable.la cannam@127: cannam@127: if HAVE_SSE2 cannam@127: SSE2_LIBS = dft/simd/sse2/libdft_sse2_codelets.la \ cannam@127: rdft/simd/sse2/librdft_sse2_codelets.la cannam@127: endif cannam@127: cannam@127: if HAVE_AVX cannam@127: AVX_LIBS = dft/simd/avx/libdft_avx_codelets.la \ cannam@127: rdft/simd/avx/librdft_avx_codelets.la cannam@127: endif cannam@127: cannam@127: if HAVE_AVX_128_FMA cannam@127: AVX_128_FMA_LIBS = dft/simd/avx-128-fma/libdft_avx_128_fma_codelets.la \ cannam@127: rdft/simd/avx-128-fma/librdft_avx_128_fma_codelets.la cannam@127: endif cannam@127: cannam@127: if HAVE_AVX2 cannam@127: AVX2_LIBS = dft/simd/avx2/libdft_avx2_codelets.la \ cannam@127: dft/simd/avx2-128/libdft_avx2_128_codelets.la \ cannam@127: rdft/simd/avx2/librdft_avx2_codelets.la \ cannam@127: rdft/simd/avx2-128/librdft_avx2_128_codelets.la cannam@127: endif cannam@127: cannam@127: if HAVE_AVX512 cannam@127: AVX512_LIBS = dft/simd/avx512/libdft_avx512_codelets.la \ cannam@127: rdft/simd/avx512/librdft_avx512_codelets.la cannam@127: endif cannam@127: cannam@127: if HAVE_KCVI cannam@127: KCVI_LIBS = dft/simd/kcvi/libdft_kcvi_codelets.la \ cannam@127: rdft/simd/kcvi/librdft_kcvi_codelets.la cannam@127: endif cannam@127: cannam@127: if HAVE_ALTIVEC cannam@127: ALTIVEC_LIBS = dft/simd/altivec/libdft_altivec_codelets.la \ cannam@127: rdft/simd/altivec/librdft_altivec_codelets.la cannam@127: endif cannam@127: cannam@127: if HAVE_VSX cannam@127: VSX_LIBS = dft/simd/vsx/libdft_vsx_codelets.la \ cannam@127: rdft/simd/vsx/librdft_vsx_codelets.la cannam@127: endif cannam@127: cannam@127: if HAVE_NEON cannam@127: NEON_LIBS = dft/simd/neon/libdft_neon_codelets.la \ cannam@127: rdft/simd/neon/librdft_neon_codelets.la cannam@127: endif cannam@127: cannam@127: if HAVE_GENERIC_SIMD128 cannam@127: GENERIC_SIMD128_LIBS = dft/simd/generic-simd128/libdft_generic_simd128_codelets.la \ cannam@127: rdft/simd/generic-simd128/librdft_generic_simd128_codelets.la cannam@127: endif cannam@127: cannam@127: if HAVE_GENERIC_SIMD256 cannam@127: GENERIC_SIMD256_LIBS = dft/simd/generic-simd256/libdft_generic_simd256_codelets.la \ cannam@127: rdft/simd/generic-simd256/librdft_generic_simd256_codelets.la cannam@127: endif cannam@127: cannam@127: if THREADS cannam@127: if COMBINED_THREADS cannam@127: COMBINED_THREADLIBS=threads/libfftw3@PREC_SUFFIX@_threads.la cannam@127: endif cannam@127: endif cannam@127: cannam@127: libfftw3@PREC_SUFFIX@_la_SOURCES = cannam@127: cannam@127: libfftw3@PREC_SUFFIX@_la_LIBADD = \ cannam@127: kernel/libkernel.la \ cannam@127: dft/libdft.la \ cannam@127: dft/scalar/libdft_scalar.la \ cannam@127: dft/scalar/codelets/libdft_scalar_codelets.la \ cannam@127: rdft/librdft.la \ cannam@127: rdft/scalar/librdft_scalar.la \ cannam@127: rdft/scalar/r2cf/librdft_scalar_r2cf.la \ cannam@127: rdft/scalar/r2cb/librdft_scalar_r2cb.la \ cannam@127: rdft/scalar/r2r/librdft_scalar_r2r.la \ cannam@127: reodft/libreodft.la \ cannam@127: api/libapi.la \ cannam@127: $(SIMD_LIBS) $(SSE2_LIBS) $(AVX_LIBS) $(AVX_128_FMA_LIBS) \ cannam@127: $(AVX2_LIBS) $(ALTIVEC_LIBS) \ cannam@127: $(VSX_LIBS) $(NEON_LIBS) $(KCVI_LIBS) $(AVX512_LIBS) \ cannam@127: $(GENERIC_SIMD128_LIBS) $(GENERIC_SIMD256_LIBS) \ cannam@127: $(COMBINED_THREADLIBS) cannam@127: cannam@127: if QUAD cannam@127: # cannot use -no-undefined since dependent on libquadmath cannam@127: libfftw3@PREC_SUFFIX@_la_LDFLAGS = -version-info @SHARED_VERSION_INFO@ $(ENVIRONMENT_LIBFFTW3_LDFLAGS) cannam@127: else cannam@127: libfftw3@PREC_SUFFIX@_la_LDFLAGS = -no-undefined -version-info \ cannam@127: @SHARED_VERSION_INFO@ $(ENVIRONMENT_LIBFFTW3_LDFLAGS) cannam@127: endif cannam@127: cannam@127: fftw3@PREC_SUFFIX@.pc: fftw.pc cannam@127: cp -f fftw.pc fftw3@PREC_SUFFIX@.pc cannam@127: pkgconfigdir = $(libdir)/pkgconfig cannam@127: pkgconfig_DATA = fftw3@PREC_SUFFIX@.pc cannam@127: cannam@127: WISDOM_DIR = /etc/fftw cannam@127: WISDOM = wisdom@PREC_SUFFIX@ cannam@127: cannam@127: WISDOM_TIME=12 # default to 12-hour limit, i.e. overnight cannam@127: WISDOM_FLAGS=--verbose --canonical --time-limit=$(WISDOM_TIME) cannam@127: cannam@127: wisdom: cannam@127: tools/fftw@PREC_SUFFIX@-wisdom -o $@ $(WISDOM_FLAGS) cannam@127: cannam@127: install-wisdom: wisdom cannam@127: $(mkinstalldirs) $(WISDOM_DIR) cannam@127: $(INSTALL_DATA) wisdom $(WISDOM_DIR)/$(WISDOM)