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