Skip to Content.
Sympa Menu

sm-commit - [SM-Commit] GIT changes to master grimoire by Thomas Orgis (1541704a4b822eef333df9d996afcfba947d06ed)

sm-commit AT lists.ibiblio.org

Subject: Source Mage code commit list

List archive

Chronological Thread  
  • From: Thomas Orgis <scm AT sourcemage.org>
  • To: sm-commit AT lists.ibiblio.org
  • Subject: [SM-Commit] GIT changes to master grimoire by Thomas Orgis (1541704a4b822eef333df9d996afcfba947d06ed)
  • Date: Wed, 20 Jun 2018 19:58:19 +0000

GIT changes to master grimoire by Thomas Orgis <sobukus AT sourcemage.org>:

libs/fftw/BUILD | 56
+++++++++++++++++++++++++++++++++++---------------
libs/fftw/CONFIGURE | 31 ++++++++++++++++-----------
libs/fftw/DEPENDS | 5 ++++
libs/fftw/DETAILS | 3 ++
libs/fftw/HISTORY | 7 ++++++
libs/fftw/INSTALL | 10 +++-----
libs/fftw/PRE_BUILD | 20 +++++++++++------
libs/fftw/UP_TRIGGERS | 3 ++
8 files changed, 93 insertions(+), 42 deletions(-)

New commits:
commit 1541704a4b822eef333df9d996afcfba947d06ed
Author: Thomas Orgis <sobukus AT sourcemage.org>
Commit: Thomas Orgis <sobukus AT sourcemage.org>

fftw: switch to separate libraries (upstream default)

This installs the FFTW libraries as separate files, not with a build
combining serial and multithreaded functionality in one library. This
is the usual expected way and fixes software that just counts on
-lfftw3f_threads being available.

A version suffix smgl1 is introduced to enable UP_TRIGGERS to fix spells
that might get broken by the build change. This suffix shall be dropped
on the next version update.

diff --git a/libs/fftw/BUILD b/libs/fftw/BUILD
index a0bff89..aaabb1e 100755
--- a/libs/fftw/BUILD
+++ b/libs/fftw/BUILD
@@ -1,22 +1,46 @@
if [[ $FORTRAN == "n" ]]; then
OPTS="$OPTS --disable-fortran"
fi &&
-CFLAGS="${CFLAGS/-Os/}" &&

-OPTS="$OPTS $FFTW_THREADS $FFTW_OPTS --disable-fma" &&
-OPTS="$OPTS --enable-shared" &&
+# Ensure we got shared libs. It is expected nowadays.
+COMMON_OPTS="$FFTW_OPTS_NEW $OPTS --enable-shared" &&

-COMMON_OPTS="${OPTS}" &&
+# There are others available via custom configure.
+# We just enable a runtime-chosen set of optimizations that should
+# benefit the masses.
+case $FFTW_VECTOR in
+ sse)
+ SINGLE_OPTS+=' --enable-sse'
+ ;;
+ sse2)
+ SINGLE_OPTS+=' --enable-sse'
+ DOUBLE_OPTS+=' --enable-sse2'
+ ;;
+ avx)
+ SINGLE_OPTS+=' --enable-sse --enable-avx'
+ DOUBLE_OPTS+=' --enable-sse2 --enable-avx'
+ ;;
+ avx2)
+ SINGLE_OPTS+=' --enable-sse --enable-avx2'
+ DOUBLE_OPTS+=' --enable-sse2 --enable-avx2'
+ ;;
+esac &&

-
-cd $SOURCE_DIRECTORY/fftw-single-$VERSION &&
-OPTS="$COMMON_OPTS --enable-float $FFTW_FLOATOPTS" &&
-default_build &&
-
-cd $SOURCE_DIRECTORY/fftw-double-$VERSION &&
-OPTS="$COMMON_OPTS $FFTW_DOUBLEOPTS" &&
-default_build &&
-
-cd $SOURCE_DIRECTORY/fftw-longdouble-$VERSION &&
-OPTS="$COMMON_OPTS --enable-long-double" &&
-default_build
+# Build each precision by itself.
+for p in $FFTW_PRECISION; do
+ case "$p" in
+ double)
+ OPTS="$COMMON_OPTS $DOUBLE_OPTS" &&
+ cd "$SOURCE_DIRECTORY/double"
+ ;;
+ single)
+ OPTS="$COMMON_OPTS $SINGLE_OPTS --enable-float" &&
+ cd "$SOURCE_DIRECTORY/$p"
+ ;;
+ longdouble)
+ OPTS="$COMMON_OPTS --enable-long-double" &&
+ cd "$SOURCE_DIRECTORY/$p"
+ ;;
+ esac &&
+ default_build || exit 1
+done
diff --git a/libs/fftw/CONFIGURE b/libs/fftw/CONFIGURE
index e2b6100..30d18a9 100755
--- a/libs/fftw/CONFIGURE
+++ b/libs/fftw/CONFIGURE
@@ -1,13 +1,18 @@
-config_query_option FFTW_THREADS "Compile FFTW SMP threads library?" n \
- "--enable-threads --with-combined-threads" \
- "--disable-threads --without-combined-threads" &&
-
-config_query FORTRAN "Compile in fortran bindings?" n &&
-if [[ "${SMGL_COMPAT_ARCHS[1]}" == "ia32" ]]; then
- config_query_option FFTW_DOUBLEOPTS "x86: enable SSE2 for doubles?" n
--enable-sse2 --enable-sse2 &&
- config_query_option FFTW_FLOATOPTS "x86: enable SSE for floats?" n
--enable-sse --disable-sse
-fi &&
-if [[ "${SMGL_COMPAT_ARCHS[1]}" == "ppc" ]]; then
- config_query_option FFTW_FLOATOPTS "ppc: enable AltiVec for floats?" n
--enable-altivec --disable-altivec
-fi
-#config_query_option FFTW_OPTS "Enable opts for fused multiply-add (p.ex.
ppc)?" n --enable-fma --disable-fma
+. $GRIMOIRE/config_query_multi.function &&
+config_query_multi FFTW_PRECISION "Choose precisions to build:" \
+ double single longdouble &&
+# There is more AVX, but not sure what I can test without CPU support.
+config_query_list FFTW_VECTOR \
+ "Enforce vector instruction level (compiler flags have to support this):" \
+ none sse sse2 avx avx2 &&
+config_query_option FFTW_OPTS_NEW "Parallel fftw using pthreads?" n \
+ "--enable-threads" \
+ "--disable-threads" &&
+config_query_option FFTW_OPTS_NEW "Parallel fftw using OpenMP?" n \
+ "--enable-openmp" \
+ "--disable-openmp" &&
+# It was a long time ago that we had to be careful with enabling SSE or FMA.
+# Remove the options for that.
+persistent_remove FFTW_DOUBLEOPTS &&
+persistent_remove FFTW_FLOATOPTS &&
+persistent_remove FFTW_OPTS
diff --git a/libs/fftw/DEPENDS b/libs/fftw/DEPENDS
new file mode 100755
index 0000000..a56e263
--- /dev/null
+++ b/libs/fftw/DEPENDS
@@ -0,0 +1,5 @@
+if [[ $FORTRAN == "y" ]]; then
+ depends -sub FORTRAN gcc
+fi &&
+optional_depends openmpi "--enable-mpi" "--disable-mpi" \
+ "for MPI-parallel fftw"
diff --git a/libs/fftw/DETAILS b/libs/fftw/DETAILS
index 27b4b3d..371a935 100755
--- a/libs/fftw/DETAILS
+++ b/libs/fftw/DETAILS
@@ -3,6 +3,9 @@

SOURCE_HASH=sha512:ab918b742a7c7dcb56390a0a0014f517a6dff9a2e4b4591060deeb2c652bf3c6868aa74559a422a276b853289b4b701bdcbd3d4d8c08943acf29167a7be81a38
SOURCE=$SPELL-$VERSION.tar.gz
SOURCE_DIRECTORY=$BUILD_DIRECTORY/$SPELL-$VERSION
+# HACK: incrememnting the version to enable triggering with the changed
build.
+# Remove this line on the next upgrade past 3.3.8!
+ VERSION=${VERSION}smgl1
SOURCE_URL[0]=https://www.fftw.org/$SOURCE
SOURCE_URL[1]=ftp://ftp.fftw.org/pub/$SPELL/$SOURCE
LICENSE[0]=GPL
diff --git a/libs/fftw/HISTORY b/libs/fftw/HISTORY
index d2a0e5a..222d5eb 100644
--- a/libs/fftw/HISTORY
+++ b/libs/fftw/HISTORY
@@ -1,3 +1,10 @@
+2018-06-20 Thomas Orgis <sobukus AT sourcemage.org>
+ * CONFIGURE, PRE_BUILD, BUILD, INSTALL: drop combined threads,
+ upstream default for UNIX is separate libs, streamlined things
+ * DETAILS: add VERSION suffix for triggering
+ * DEPENDS: added, openmpi dependency
+ * UP_TRIGGERS: added, check dependent spells for the separate lib
switch
+
2018-06-02 Treeve Jelbert <treeve AT sourcemage.org>
* DETAILS: version 3.3.8

diff --git a/libs/fftw/INSTALL b/libs/fftw/INSTALL
index 83cec70..500a3c0 100755
--- a/libs/fftw/INSTALL
+++ b/libs/fftw/INSTALL
@@ -1,6 +1,4 @@
-cd $SOURCE_DIRECTORY/fftw-single-$VERSION &&
-default_install &&
-cd $SOURCE_DIRECTORY/fftw-double-$VERSION &&
-default_install &&
-cd $SOURCE_DIRECTORY/fftw-longdouble-$VERSION &&
-default_install
+for p in $FFTW_PRECISION; do
+ cd "$SOURCE_DIRECTORY/$p" &&
+ default_install || exit 1
+done
diff --git a/libs/fftw/PRE_BUILD b/libs/fftw/PRE_BUILD
index a389802..80a2a71 100755
--- a/libs/fftw/PRE_BUILD
+++ b/libs/fftw/PRE_BUILD
@@ -1,8 +1,14 @@
-mk_source_dir $SOURCE_DIRECTORY &&
-cd $SOURCE_DIRECTORY &&
+mk_source_dir "$SOURCE_DIRECTORY" &&
+cd "$SOURCE_DIRECTORY" &&
unpack_file &&
-cd ${SOURCE_DIRECTORY}/fftw-$VERSION &&
-cd - >/dev/null &&
-cp -r $SOURCE_DIRECTORY/fftw-$VERSION $SOURCE_DIRECTORY/fftw-single-$VERSION
&&
-cp -r $SOURCE_DIRECTORY/fftw-$VERSION $SOURCE_DIRECTORY/fftw-double-$VERSION
&&
-mv $SOURCE_DIRECTORY/fftw-$VERSION $SOURCE_DIRECTORY/fftw-longdouble-$VERSION
+mv fftw-* double &&
+for p in $FFTW_PRECISION; do
+ case "$p" in
+ double)
+ # the default build
+ ;;
+ *)
+ cp -r double "$p"
+ ;;
+ esac
+done
diff --git a/libs/fftw/UP_TRIGGERS b/libs/fftw/UP_TRIGGERS
new file mode 100755
index 0000000..90402dd
--- /dev/null
+++ b/libs/fftw/UP_TRIGGERS
@@ -0,0 +1,3 @@
+. "$GRIMOIRE/FUNCTIONS" &&
+# We introduced the split libraries with 3.3.8smgl1.
+check_dependents_versionjump $SPELL $VERSION 3.3.8smgl1



  • [SM-Commit] GIT changes to master grimoire by Thomas Orgis (1541704a4b822eef333df9d996afcfba947d06ed), Thomas Orgis, 06/20/2018

Archive powered by MHonArc 2.6.24.

Top of Page