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