[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