[vsipl++] [patch] add --disable-fft-double etc.
Nathan (Jasper) Myers
ncm at codesourcery.com
Fri Dec 23 19:33:38 UTC 2005
Committed, unchanged except ChangeLog.
On Thu, Dec 22, 2005 at 04:24:43PM -0800, Nathan (Jasper) Myers wrote:
> The patch below implements configure options
> --disable-fft-float --disable-fft-double --disable-fft-long-double
> to omit building support for those operations.
>
> This is in addition to Don's --with-fft=none. For the moment the two
> don't interact, but that will change, trivially, when built-in FFTW3
> is used in fill in omissions from other libraries.
>
> Not committed yet. OK?
>
> Nathan Myers
> ncm
>
> Index: ChangeLog
> ===================================================================
> RCS file: /home/cvs/Repository/vpp/ChangeLog,v
> retrieving revision 1.351
> diff -u -p -r1.351 ChangeLog
> --- ChangeLog 22 Dec 2005 16:31:40 -0000 1.351
> +++ ChangeLog 23 Dec 2005 00:15:19 -0000
> @@ -1,3 +1,9 @@
> +2005-12-22 Nathan Myers <ncm at codesourcery.com>
> +
> + * configure.ac, vendor/GNUmakefile.inc.in: Add configure options
> + --disable-fft-double etc., and arrange not to build/install/clean
> + built-in FFTW3 libs so disabled.
> +
> 2005-12-22 Stefan Seefeld <stefan at codesourcery.com>
>
> * GNUmakefile.in: Define and use 'suffix' during installation.
> Index: configure.ac
> ===================================================================
> RCS file: /home/cvs/Repository/vpp/configure.ac,v
> retrieving revision 1.64
> diff -u -p -r1.64 configure.ac
> --- configure.ac 22 Dec 2005 16:26:29 -0000 1.64
> +++ configure.ac 23 Dec 2005 00:15:19 -0000
> @@ -62,7 +62,7 @@ AC_ARG_WITH(mpi_prefix,
> dnl If the user specified --with-mpi-prefix, they mean to use MPI for sure.
> [enable_mpi=yes])
>
> -### Mecury Scientific Algorithm (SAL)
> +### Mercury Scientific Algorithm (SAL)
> AC_ARG_ENABLE([sal],
> AS_HELP_STRING([--enable-sal],
> [use SAL if found (default is to not search for it)]),,
> @@ -119,6 +119,22 @@ AC_ARG_WITH(fftw2_prefix,
> Headers must be in PATH/include; libraries in PATH/lib.]),
> [with_fft=fftw2])
>
> +AC_ARG_ENABLE([fft-float],
> + AS_HELP_STRING([--disable-fft-float],
> + [Omit support for FFT applied to float elements]),,
> + [enable_fft_float=yes])
> +
> +AC_ARG_ENABLE([fft-double],
> + AS_HELP_STRING([--disable-fft-double],
> + [Omit support for FFT applied to double elements]),,
> + [enable_fft_double=yes])
> +
> +AC_ARG_ENABLE([fft-long-double],
> + AS_HELP_STRING([--disable-fft-long-double],
> + [Omit support for FFT applied to long double elements]),,
> + [enable_fft_long_double=yes])
> +
> +
>
> # LAPACK and related libraries (Intel MKL)
> AC_ARG_WITH([lapack],
> @@ -364,26 +380,31 @@ enable_fftw2="no"
> enable_ipp_fft="no"
> build_fftw3="no"
>
> -if test "$chose_fft" = "no" \
> - -o "$with_fft" = "fftw3" \
> - -o "$with_fft" = "builtin"; then
> - enable_fftw3="yes"
> -elif test "$with_fft" = "fftw2-float"; then
> - enable_fftw2="yes"
> - enable_fftw2_float="yes"
> -elif test "$with_fft" = "fftw2-double"; then
> - enable_fftw2="yes"
> - enable_fftw2_double="yes"
> -elif test "$with_fft" = "fftw2-generic"; then
> - enable_fftw2="yes"
> - enable_fftw2_generic="yes"
> - enable_fftw2_float="yes"
> -elif test "$with_fft" = "ipp"; then
> - enable_ipp_fft="yes"
> -elif test "$with_fft" != "none"; then
> - AC_MSG_ERROR([Argument to --with-fft= must be one of fftw3, fftw2-float,
> - fftw2-double, fftw2-generic, ipp, builtin, or none.])
> -fi
> +if test "$enable_fft_float" = yes -o \
> + "$enable_fft_double" = yes -o \
> + "$enable_fft_long_double" = yes ; then
> +
> + if test "$chose_fft" = "no" \
> + -o "$with_fft" = "fftw3" \
> + -o "$with_fft" = "builtin"; then
> + enable_fftw3="yes"
> + elif test "$with_fft" = "fftw2-float"; then
> + enable_fftw2="yes"
> + enable_fftw2_float="yes"
> + elif test "$with_fft" = "fftw2-double"; then
> + enable_fftw2="yes"
> + enable_fftw2_double="yes"
> + elif test "$with_fft" = "fftw2-generic"; then
> + enable_fftw2="yes"
> + enable_fftw2_generic="yes"
> + enable_fftw2_float="yes"
> + elif test "$with_fft" = "ipp"; then
> + enable_ipp_fft="yes"
> + elif test "$with_fft" != "none"; then
> + AC_MSG_ERROR([Argument to --with-fft= must be one of fftw3, fftw2-float,
> + fftw2-double, fftw2-generic, ipp, builtin, or none.])
> + fi
> +fi
>
> if test "$enable_fftw3" != "no" ; then
> build_fftw3=yes
> @@ -394,12 +415,26 @@ if test "$enable_fftw3" != "no" ; then
> # We will certainly have a complete FFTW3 environment, even if we have to
> # build it ourselves.
>
> - AC_DEFINE_UNQUOTED(VSIP_IMPL_FFT_USE_FLOAT, 1,
> - [Define to build code for float-precision FFT.])
> - AC_DEFINE_UNQUOTED(VSIP_IMPL_FFT_USE_DOUBLE, 1,
> - [Define to build code for double-precision FFT.])
> - AC_DEFINE_UNQUOTED(VSIP_IMPL_FFT_USE_LONG_DOUBLE, 1,
> - [Define to build code for long-double-precision FFT.])
> + libs=
> + syms=
> + if test "$enable_fft_float" = yes ; then
> + AC_DEFINE_UNQUOTED(VSIP_IMPL_FFT_USE_FLOAT, 1,
> + [Define to build code for float-precision FFT.])
> + libs="$libs -lfftw3f"
> + syms="$syms const char* fftwf_version;"
> + fi
> + if test "$enable_fft_double" = yes ; then
> + AC_DEFINE_UNQUOTED(VSIP_IMPL_FFT_USE_DOUBLE, 1,
> + [Define to build code for double-precision FFT.])
> + libs="$libs -lfftw3"
> + syms="$syms const char* fftw_version;"
> + fi
> + if test "$enable_fft_long_double" = yes; then
> + AC_DEFINE_UNQUOTED(VSIP_IMPL_FFT_USE_LONG_DOUBLE, 1,
> + [Define to build code for long-double-precision FFT.])
> + libs="$libs -lfftw3l"
> + syms="$syms const char* fftwl_version;"
> + fi
> AC_DEFINE_UNQUOTED(VSIP_IMPL_FFTW3, 1,
> [Define to build using FFTW3 headers.])
>
> @@ -410,12 +445,10 @@ if test "$enable_fftw3" != "no" ; then
> fi
>
> AC_MSG_CHECKING([for external FFTW3 library])
> - LIBS="$LIBS -lfftw3f -lfftw3 -lfftw3l"
> + LIBS="$LIBS $libs"
> AC_LINK_IFELSE(
> [AC_LANG_PROGRAM([[#include <fftw3.h>]],
> - [[const char *fftwf_version;
> - const char *fftw_version;
> - const char *fftwl_version;]])],
> + [[$syms]])],
> [AC_MSG_RESULT([enabled.])
> keep_LIBS="$LIBS"
> keep_CPPFLAGS="$CPPFLAGS"
> @@ -439,6 +472,7 @@ if test "$build_fftw3" != "no"; then
>
> # Build and use builtin fftw3.
> AC_MSG_CHECKING([for built-in FFTW3 library source])
> + libs=
> fftw3_configure="$srcdir/vendor/fftw/configure"
> if test -e "$fftw3_configure"; then
> AC_MSG_RESULT([found])
> @@ -462,24 +496,31 @@ if test "$build_fftw3" != "no"; then
> (ppc*) fftw3_f_simd="--enable-altivec" ;;
> esac
> AC_MSG_NOTICE([fftw3 config options: $fftw3_opts $fftw3_simd.])
> - AC_MSG_NOTICE([fftw3 float config options: '$fftw3_f_simd'.])
> - AC_MSG_NOTICE([fftw3 double config options: '$fftw3_d_simd'.])
> - AC_MSG_NOTICE([fftw3 long-double config options: '$fftw3_l_simd'.])
>
> echo "==============================================================="
>
> - mkdir -p vendor/fftw3f
> - AC_MSG_NOTICE([Configuring fftw3f (float).])
> - (cd vendor/fftw3f; $fftw3_configure $fftw3_f_simd $fftw3_opts --enable-float)
> -
> - mkdir -p vendor/fftw3
> - AC_MSG_NOTICE([Configuring fftw3 (double).])
> - (cd vendor/fftw3; $fftw3_configure $fftw3_d_simd $fftw3_opts )
> -
> - # fftw3l config doesn't get SIMD option
> - mkdir -p vendor/fftw3l
> - AC_MSG_NOTICE([Configuring fftw3l (long double).])
> - (cd vendor/fftw3l; $fftw3_configure $fftw3_l_simd $fftw3_opts --enable-long-double)
> + if test "$enable_fft_float" = yes; then
> + mkdir -p vendor/fftw3f
> + AC_MSG_NOTICE([Configuring fftw3f (float).])
> + AC_MSG_NOTICE([extra config options: '$fftw3_f_simd'.])
> + (cd vendor/fftw3f; $fftw3_configure $fftw3_f_simd $fftw3_opts --enable-float)
> + libs="$libs -lfftw3f"
> + fi
> + if test "$enable_fft_double" = yes; then
> + mkdir -p vendor/fftw3
> + AC_MSG_NOTICE([Configuring fftw3 (double).])
> + AC_MSG_NOTICE([extra config options: '$fftw3_d_simd'.])
> + (cd vendor/fftw3; $fftw3_configure $fftw3_d_simd $fftw3_opts )
> + libs="$libs -lfftw3"
> + fi
> + if test "$enable_fft_long_double" = yes; then
> + # fftw3l config doesn't get SIMD option
> + mkdir -p vendor/fftw3l
> + AC_MSG_NOTICE([Configuring fftw3l (long double).])
> + AC_MSG_NOTICE([extra config options: '$fftw3_l_simd'.])
> + (cd vendor/fftw3l; $fftw3_configure $fftw3_l_simd $fftw3_opts --enable-long-double)
> + libs="$libs -lfftw3l"
> + fi
>
> echo "==============================================================="
>
> @@ -494,16 +535,27 @@ There are no regular files here, only sy
> ln -s "$fftw3_src_prefix"/api/fftw3.h vendor/fftw/include/fftw3.h
> mkdir -p vendor/fftw/lib
> # these don't refer to anything yet.
> - ln -s ../../fftw3f/.libs/libfftw3f.a vendor/fftw/lib/libfftw3f.a
> - ln -s ../../fftw3/.libs/libfftw3.a vendor/fftw/lib/libfftw3.a
> - ln -s ../../fftw3l/.libs/libfftw3l.a vendor/fftw/lib/libfftw3l.a
> + if test "$enable_fft_float" = yes; then
> + ln -s ../../fftw3f/.libs/libfftw3f.a vendor/fftw/lib/libfftw3f.a
> + AC_SUBST(USE_BUILTIN_FFTW_FLOAT, 1)
> + fi
> + if test "$enable_fft_double" = yes; then
> + ln -s ../../fftw3/.libs/libfftw3.a vendor/fftw/lib/libfftw3.a
> + AC_SUBST(USE_BUILTIN_FFTW_DOUBLE, 1)
> + fi
> + if test "$enable_fft_long_double" = yes; then
> + ln -s ../../fftw3l/.libs/libfftw3l.a vendor/fftw/lib/libfftw3l.a
> + AC_SUBST(USE_BUILTIN_FFTW_LONG_DOUBLE, 1)
> + fi
> else
> AC_MSG_RESULT([not found])
> fi
>
> - if test -f "vendor/fftw3f/Makefile" -a \
> - -f "vendor/fftw3/Makefile" -a \
> - -f "vendor/fftw3l/Makefile" ; then
> +
> + if test \( "$enable_fft_float" != yes -o -f "vendor/fftw3f/Makefile" \) -a \
> + \( "$enable_fft_double" != yes -o -f "vendor/fftw3/Makefile" \) -a \
> + \( "$enable_fft_long_double" != yes -o -f "vendor/fftw3l/Makefile" \)
> + then
> AC_MSG_RESULT([Built-in FFTW3 configures successful.])
> else
> AC_MSG_ERROR([Built-in FFTW3 configures FAILED, see config.log
> @@ -517,7 +569,7 @@ There are no regular files here, only sy
> my_abs_top_srcdir="$curdir/$srcdir"
> fi
>
> - FFTW3_LIBS="-lfftw3f -lfftw3 -lfftw3l"
> + FFTW3_LIBS="$libs"
> AC_MSG_NOTICE([Will link with $FFTW3_LIBS.])
>
> AC_SUBST(USE_BUILTIN_FFTW, 1)
> @@ -861,10 +913,14 @@ int main(int, char **)
> AC_SUBST(VSIP_IMPL_IPP_FFT, 1)
> AC_DEFINE_UNQUOTED(VSIP_IMPL_IPP_FFT, 1,
> [Define to use Intel's IPP library to perform FFTs.])
> - AC_DEFINE_UNQUOTED(VSIP_IMPL_FFT_USE_FLOAT, $vsip_impl_use_float,
> - [Define to build code with support for FFT on float types.])
> - AC_DEFINE_UNQUOTED(VSIP_IMPL_FFT_USE_DOUBLE, $vsip_impl_use_double,
> - [Define to build code with support for FFT on double types.])
> + if test "$enable_fft_float" = yes; then
> + AC_DEFINE_UNQUOTED(VSIP_IMPL_FFT_USE_FLOAT, $vsip_impl_use_float,
> + [Define to build code with support for FFT on float types.])
> + fi
> + if test "$enable_fft_double" = yes; then
> + AC_DEFINE_UNQUOTED(VSIP_IMPL_FFT_USE_DOUBLE, $vsip_impl_use_double,
> + [Define to build code with support for FFT on double types.])
> + fi
> fi
> fi
> fi
> Index: vendor/GNUmakefile.inc.in
> ===================================================================
> RCS file: /home/cvs/Repository/vpp/vendor/GNUmakefile.inc.in,v
> retrieving revision 1.5
> diff -u -p -r1.5 GNUmakefile.inc.in
> --- vendor/GNUmakefile.inc.in 22 Dec 2005 06:53:52 -0000 1.5
> +++ vendor/GNUmakefile.inc.in 23 Dec 2005 00:15:19 -0000
> @@ -14,6 +14,9 @@
>
> USE_BUILTIN_ATLAS := @USE_BUILTIN_ATLAS@
> USE_BUILTIN_FFTW := @USE_BUILTIN_FFTW@
> +USE_BUILTIN_FFTW_FLOAT := @USE_BUILTIN_FFTW_FLOAT@
> +USE_BUILTIN_FFTW_DOUBLE := @USE_BUILTIN_FFTW_DOUBLE@
> +USE_BUILTIN_FFTW_LONG_DOUBLE := @USE_BUILTIN_FFTW_LONG_DOUBLE@
>
> vendor_REF_LAPACK = vendor/lapack/lapack.a
> vendor_PRE_LAPACK = vendor/atlas/lib/libprelapack.a
> @@ -74,41 +77,51 @@ endif
>
> ifdef USE_BUILTIN_FFTW
>
> -vendor_FFTW_LIBS := \
> - vendor/fftw3f/.libs/libfftw3f.a \
> - vendor/fftw3/.libs/libfftw3.a \
> - vendor/fftw3l/.libs/libfftw3l.a
> -
> -all:: $(vendor_FFTW_LIBS)
> -
> -libs:: $(vendor_FFTW_LIBS)
> -
> -vendor/fftw3f/.libs/libfftw3f.a:
> +ifdef USE_BUILTIN_FFTW_FLOAT
> +LIBFFTW_FLOAT := vendor/fftw3f/.libs/libfftw3f.a
> +$(LIBFFTW_FLOAT):
> @echo "Building FFTW float (see fftw-f.build.log)"
> @$(MAKE) -C vendor/fftw3f > fftw-f.build.log 2>&1
> -
> -vendor/fftw3/.libs/libfftw3.a:
> +else
> +LIBFFTW_LONG_FLOAT :=
> +endif
> +ifdef USE_BUILTIN_FFTW_DOUBLE
> +LIBFFTW_DOUBLE := vendor/fftw3/.libs/libfftw3.a
> +$(LIBFFTW_DOUBLE):
> @echo "Building FFTW double (see fftw-d.build.log)"
> @$(MAKE) -C vendor/fftw3 > fftw-d.build.log 2>&1
> +else
> +LIBFFTW_DOUBLE :=
> +endif
>
> -vendor/fftw3l/.libs/libfftw3l.a:
> +ifdef USE_BUILTIN_FFTW_LONG_DOUBLE
> +LIBFFTW_LONG_DOUBLE := vendor/fftw3l/.libs/libfftw3l.a
> +$(LIBFFTW_LONG_DOUBLE):
> @echo "Building FFTW double (see fftw-l.build.log)"
> @$(MAKE) -C vendor/fftw3l > fftw-l.build.log 2>&1
> +else
> +LIBFFTW_LONG_DOUBLE :=
> +endif
> +
> +vendor_FFTW_LIBS := $(LIBFFTW_FLOAT) $(LIBFFTW_DOUBLE) $(LIBFFTW_LONG_DOUBLE)
> +
> +all:: $(vendor_FFTW_LIBS)
> +
> +libs:: $(vendor_FFTW_LIBS)
>
> clean::
> @echo "Cleaning FFTW (see fftw.clean.log)"
> - @$(MAKE) -C vendor/fftw3f clean > fftw.clean.log 2>&1
> - @$(MAKE) -C vendor/fftw3 clean >> fftw.clean.log 2>&1
> - @$(MAKE) -C vendor/fftw3l clean >> fftw.clean.log 2>&1
> -
> + @for ldir in $(subst /.libs/,,$(dir $(vendor_FFTW_LIBS))); do \
> + echo "$(MAKE) -C $$ldir clean "; \
> + $(MAKE) -C $$ldir clean; done > fftw.clean.log 2>&1
>
> # note: configure script constructs vendor/fftw/ symlinks used here.
> install::
> @echo "Installing FFTW"
> $(INSTALL) -d $(libdir)
> - $(INSTALL_DATA) vendor/fftw/lib/libfftw3f.a $(libdir)
> - $(INSTALL_DATA) vendor/fftw/lib/libfftw3.a $(libdir)
> - $(INSTALL_DATA) vendor/fftw/lib/libfftw3l.a $(libdir)
> + @for lib in $(vendor_FFTW_LIBS); do \
> + echo "$(INSTALL_DATA) $$lib $(libdir)"; \
> + $(INSTALL_DATA) $$lib $(libdir); done
> $(INSTALL) -d $(includedir)
> $(INSTALL_DATA) $(srcdir)/vendor/fftw/api/fftw3.h $(includedir)
> endif
More information about the vsipl++
mailing list