From 897bd14b8e14246481ef53ffbb1d2c9e633c9494 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Mon, 16 Nov 2020 09:11:12 +0000 Subject: [PATCH 01/93] Avoid any smoothing when setting initial ratio --- src/dsp/Resampler.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/dsp/Resampler.cpp b/src/dsp/Resampler.cpp index c6ad53c..ff38423 100644 --- a/src/dsp/Resampler.cpp +++ b/src/dsp/Resampler.cpp @@ -578,6 +578,7 @@ protected: int m_iinsize; int m_ioutsize; double m_prevRatio; + bool m_ratioUnset; int m_debugLevel; }; @@ -590,6 +591,7 @@ D_SRC::D_SRC(Resampler::Quality quality, int channels, double, m_iinsize(0), m_ioutsize(0), m_prevRatio(1.0), + m_ratioUnset(true), m_debugLevel(debugLevel) { if (m_debugLevel > 0) { @@ -680,7 +682,14 @@ D_SRC::resampleInterleaved(float *const R__ out, outcount = int(ceil(incount * ratio) + 5); } - if (ratio != m_prevRatio) { + if (m_ratioUnset) { + + // The first time we set a ratio, we want to do it directly + src_set_ratio(m_src, ratio); + m_ratioUnset = false; + m_prevRatio = ratio; + + } else if (ratio != m_prevRatio) { // If we are processing a block of appreciable length, turn it // into two recursive calls, one for the short smoothing block @@ -736,6 +745,7 @@ void D_SRC::reset() { src_reset(m_src); + m_ratioUnset = true; } #endif /* HAVE_LIBSAMPLERATE */ From 58fc334e901c4962fa6af8f999e45209e8ed216e Mon Sep 17 00:00:00 2001 From: 'Michel Alexandre Salim Date: Tue, 17 Nov 2020 16:48:50 -0800 Subject: [PATCH 02/93] Preserve permissions when installing files Use `cp -p` rather than `cp` --- Makefile.in | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Makefile.in b/Makefile.in index fdddb72..78a7bae 100644 --- a/Makefile.in +++ b/Makefile.in @@ -186,32 +186,32 @@ install: all $(MKDIR) -p $(DESTDIR)$(INSTALL_INCDIR) $(MKDIR) -p $(DESTDIR)$(INSTALL_LIBDIR) $(MKDIR) -p $(DESTDIR)$(INSTALL_PKGDIR) - cp $(PUBLIC_INCLUDES) $(DESTDIR)$(INSTALL_INCDIR) - cp $(STATIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR) + cp -p $(PUBLIC_INCLUDES) $(DESTDIR)$(INSTALL_INCDIR) + cp -p $(STATIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR) rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_ABI_VERSION) rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION) rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(JNINAME)$(DYNAMIC_EXTENSION) - cp $(DYNAMIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION) + cp -p $(DYNAMIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION) ln -s $(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_ABI_VERSION) ln -s $(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION) - test -f $(JNI_TARGET) && cp -f $(JNI_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(JNINAME)$(DYNAMIC_EXTENSION) || true + test -f $(JNI_TARGET) && cp -fp $(JNI_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(JNINAME)$(DYNAMIC_EXTENSION) || true sed "s,%PREFIX%,$(PREFIX)," rubberband.pc.in \ > $(DESTDIR)$(INSTALL_PKGDIR)/rubberband.pc ifeq ($(WITH_PROGRAMS), yes) $(MKDIR) -p $(DESTDIR)$(INSTALL_BINDIR) - cp $(PROGRAM_TARGET) $(DESTDIR)$(INSTALL_BINDIR) + cp -p $(PROGRAM_TARGET) $(DESTDIR)$(INSTALL_BINDIR) endif ifeq ($(WITH_VAMP), yes) $(MKDIR) -p $(DESTDIR)$(INSTALL_VAMPDIR) - cp $(VAMP_TARGET) $(DESTDIR)$(INSTALL_VAMPDIR) - cp vamp/vamp-rubberband.cat $(DESTDIR)$(INSTALL_VAMPDIR) + cp -p $(VAMP_TARGET) $(DESTDIR)$(INSTALL_VAMPDIR) + cp -p vamp/vamp-rubberband.cat $(DESTDIR)$(INSTALL_VAMPDIR) endif ifeq ($(WITH_LADSPA), yes) $(MKDIR) -p $(DESTDIR)$(INSTALL_LADSPADIR) $(MKDIR) -p $(DESTDIR)$(INSTALL_LRDFDIR) - cp $(LADSPA_TARGET) $(DESTDIR)$(INSTALL_LADSPADIR) - cp ladspa/ladspa-rubberband.cat $(DESTDIR)$(INSTALL_LADSPADIR) - cp ladspa/ladspa-rubberband.rdf $(DESTDIR)$(INSTALL_LRDFDIR) + cp -p $(LADSPA_TARGET) $(DESTDIR)$(INSTALL_LADSPADIR) + cp -p ladspa/ladspa-rubberband.cat $(DESTDIR)$(INSTALL_LADSPADIR) + cp -p ladspa/ladspa-rubberband.rdf $(DESTDIR)$(INSTALL_LRDFDIR) endif clean: From d140f026d2a1a532e2f9195712360cd09127c819 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 1 Dec 2020 10:22:11 +0000 Subject: [PATCH 03/93] Build manifest for sr.ht CI --- .build.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .build.yml diff --git a/.build.yml b/.build.yml new file mode 100644 index 0000000..36ea747 --- /dev/null +++ b/.build.yml @@ -0,0 +1,18 @@ +image: ubuntu/18.04 +packages: + - pkg-config + - libsamplerate0-dev + - libsndfile1-dev + - libfftw3-dev + - ladspa-sdk + - vamp-plugin-sdk +sources: + - hg+https://hg.sr.ht/~breakfastquay/rubberband +tasks: + - setup: | + cd rubberband + ./configure + - build: | + cd rubberband + make + From 5af9b04be907b8bcdbadcd76d96780b253e7ab18 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 1 Dec 2020 10:31:25 +0000 Subject: [PATCH 04/93] Experimental email trigger --- .build.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.build.yml b/.build.yml index 36ea747..5bd899e 100644 --- a/.build.yml +++ b/.build.yml @@ -15,4 +15,8 @@ tasks: - build: | cd rubberband make - +triggers: + - action: email + condition: always + to: chris.cannam@breakfastquay.com + From 3297cfab0c247e763fe0ead40487f76fe3b69c51 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 1 Dec 2020 11:56:53 +0000 Subject: [PATCH 05/93] Switch Linux build badge to SourceHut from Travis --- .travis.yml | 10 ---------- README.md | 3 ++- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/.travis.yml b/.travis.yml index eb3bafc..95f4e40 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,18 +8,8 @@ sudo: - false os: - - linux - osx -addons: - apt: - packages: - - libsndfile-dev - - libsamplerate-dev - - libfftw3-dev - - vamp-plugin-sdk - - ladspa-sdk - cache: directories: - $HOME/Library/Caches/Homebrew diff --git a/README.md b/README.md index bfcc98f..56cc643 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,8 @@ tempo and pitch of an audio recording independently of one another. CI builds: -* [![Build Status](https://travis-ci.org/breakfastquay/rubberband.svg?branch=master)](https://travis-ci.org/breakfastquay/rubberband) (Linux, macOS, iOS) +* [![Build status](https://builds.sr.ht/~breakfastquay/rubberband.svg)](https://builds.sr.ht/~breakfastquay/rubberband?) (Linux) +* [![Build Status](https://travis-ci.org/breakfastquay/rubberband.svg?branch=master)](https://travis-ci.org/breakfastquay/rubberband) (macOS, iOS) * [![Build Status](https://ci.appveyor.com/api/projects/status/hhhhpf718jwhpyf6?svg=true)](https://ci.appveyor.com/project/breakfastquay/rubberband) (Windows) From 16487324fc283924368ab85f07ba29f75ca7f4d5 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 10 Dec 2020 09:25:28 +0000 Subject: [PATCH 06/93] Replace __MSVC__ define (which needs to be defined manually in the build) with _MSC_VER (which the compiler defines itself) throughout --- main/main.cpp | 4 ++-- src/base/Profiler.cpp | 2 +- src/system/sysutils.cpp | 2 +- src/system/sysutils.h | 12 ++++++------ 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/main/main.cpp b/main/main.cpp index f6b259c..d4e1085 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -35,7 +35,7 @@ #include "system/sysutils.h" -#ifdef __MSVC__ +#ifdef _MSC_VER #include "getopt/getopt.h" #else #include @@ -52,7 +52,7 @@ using namespace RubberBand; using RubberBand::gettimeofday; #endif -#ifdef __MSVC__ +#ifdef _MSC_VER using RubberBand::usleep; #endif diff --git a/src/base/Profiler.cpp b/src/base/Profiler.cpp index ca68353..000ea28 100644 --- a/src/base/Profiler.cpp +++ b/src/base/Profiler.cpp @@ -30,7 +30,7 @@ #include -#ifdef __MSVC__ +#ifdef _MSC_VER // Ugh --cc #define snprintf sprintf_s #endif diff --git a/src/system/sysutils.cpp b/src/system/sysutils.cpp index 0b30b09..3cd0d6e 100644 --- a/src/system/sysutils.cpp +++ b/src/system/sysutils.cpp @@ -237,7 +237,7 @@ system_get_process_status(int pid) #ifdef _WIN32 void system_memorybarrier() { -#ifdef __MSVC__ +#ifdef _MSC_VER MemoryBarrier(); #else /* (mingw) */ LONG Barrier = 0; diff --git a/src/system/sysutils.h b/src/system/sysutils.h index 18cf04b..945fc32 100644 --- a/src/system/sysutils.h +++ b/src/system/sysutils.h @@ -24,7 +24,7 @@ #ifndef _RUBBERBAND_SYSUTILS_H_ #define _RUBBERBAND_SYSUTILS_H_ -#ifdef __MSVC__ +#ifdef _MSC_VER # if _MSC_VER < 1800 # include "float_cast/float_cast.h" # endif @@ -43,7 +43,7 @@ # define R__ #endif -#if defined(__MSVC__) +#if defined(_MSC_VER) # include # include # define alloca _alloca @@ -65,11 +65,11 @@ # endif #endif -#if defined(__MSVC__) && _MSC_VER < 1700 +#if defined(_MSC_VER) && _MSC_VER < 1700 # define uint8_t unsigned __int8 # define uint16_t unsigned __int16 # define uint32_t unsigned __int32 -#elif defined(__MSVC__) +#elif defined(_MSC_VER) # define ssize_t long # include #else @@ -93,9 +93,9 @@ struct timeval { long tv_sec; long tv_usec; }; void gettimeofday(struct timeval *p, void *tz); #endif // _WIN32 -#ifdef __MSVC__ +#ifdef _MSC_VER void usleep(unsigned long); -#endif // __MSVC__ +#endif // _MSC_VER inline double mod(double x, double y) { return x - (y * floor(x / y)); } inline float modf(float x, float y) { return x - (y * float(floor(x / y))); } From 13a6dd7c24a9ba09453bc25f9516f89099389732 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 8 Jan 2021 11:44:50 +0000 Subject: [PATCH 07/93] Update configure so as to fail if ladspa header is not found and --disable-ladspa is not provided --- configure | 3299 ++++++++++++++++++++++++++------------------------ configure.ac | 11 +- 2 files changed, 1735 insertions(+), 1575 deletions(-) diff --git a/configure b/configure index cf80b90..5e31a40 100755 --- a/configure +++ b/configure @@ -1,11 +1,11 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for RubberBand 1.9.0. +# Generated by GNU Autoconf 2.70 for RubberBand 1.9.0. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2017, 2020 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation @@ -16,14 +16,16 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -33,46 +35,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -81,13 +83,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -96,8 +91,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -109,30 +108,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -154,20 +133,22 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else +else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( @@ -187,42 +168,52 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : -else +else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" + if (eval "$as_required") 2>/dev/null +then : as_have_required=yes -else +else $as_nop as_have_required=no fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : -else +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base + as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : break 2 fi fi @@ -230,14 +221,21 @@ fi esac as_found=false done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi - if test "x$CONFIG_SHELL" != x; then : + if test "x$CONFIG_SHELL" != x +then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also @@ -255,18 +253,19 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf@gnu.org and + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: chris.cannam@breakfastquay.com about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run @@ -294,6 +293,7 @@ as_fn_unset () } as_unset=as_fn_unset + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -311,6 +311,14 @@ as_fn_exit () as_fn_set_status $1 exit $1 } # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_mkdir_p # ------------- @@ -325,7 +333,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -334,7 +342,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -373,12 +381,13 @@ as_fn_executable_p () # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -390,18 +399,27 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- @@ -413,9 +431,9 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -442,7 +460,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -486,7 +504,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall @@ -500,6 +518,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits exit } + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -513,6 +535,13 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -588,40 +617,36 @@ PACKAGE_URL='' ac_unique_file="src/StretcherImpl.h" # Factoring default headers for most tests. ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include +#include +#ifdef HAVE_STDIO_H +# include #endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS +#ifdef HAVE_STDLIB_H # include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif #endif #ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif # include #endif -#ifdef HAVE_STRINGS_H -# include -#endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif #ifdef HAVE_UNISTD_H # include #endif" +ac_header_c_list= ac_subst_vars='LTLIBOBJS LIBOBJS Vamp_LIBS @@ -635,9 +660,6 @@ SRC_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG -EGREP -GREP -CPP ac_ct_CC CFLAGS CC @@ -670,6 +692,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -707,7 +730,6 @@ CPPFLAGS CCC CC CFLAGS -CPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR @@ -757,6 +779,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -786,8 +809,6 @@ do *) ac_optarg=yes ;; esac - # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; @@ -828,9 +849,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -854,9 +875,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1009,6 +1030,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1058,9 +1088,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1074,9 +1104,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1120,9 +1150,9 @@ Try \`$0 --help' for more information" *) # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; @@ -1138,7 +1168,7 @@ if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1146,7 +1176,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1202,7 +1232,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | +printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1299,6 +1329,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1342,7 +1373,6 @@ Some influential environment variables: you have headers in a nonstandard directory CC C compiler command CFLAGS C compiler flags - CPP C preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path @@ -1378,9 +1408,9 @@ if test "$ac_init_help" = "recursive"; then case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1408,7 +1438,8 @@ esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive @@ -1416,7 +1447,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1426,9 +1457,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF RubberBand configure 1.9.0 -generated by GNU Autoconf 2.69 +generated by GNU Autoconf 2.70 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2020 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1445,14 +1476,14 @@ fi ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1460,14 +1491,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1483,14 +1515,14 @@ fi ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1498,14 +1530,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1515,85 +1548,6 @@ fi } # ac_fn_c_try_compile -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in @@ -1601,128 +1555,59 @@ fi ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## --------------------------------------------- ## -## Report this to chris.cannam@breakfastquay.com ## -## --------------------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -} # ac_fn_c_check_header_mongrel cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by RubberBand $as_me 1.9.0, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.70. Invocation command line was - $ $0 $@ + $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log @@ -1755,8 +1640,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS @@ -1791,7 +1680,7 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; @@ -1826,11 +1715,13 @@ done # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo - $as_echo "## ---------------- ## + printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo @@ -1841,8 +1732,8 @@ trap 'exit_status=$? case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -1866,7 +1757,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ) echo - $as_echo "## ----------------- ## + printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo @@ -1874,14 +1765,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## + printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo @@ -1889,15 +1780,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - $as_echo "## ----------- ## + printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo @@ -1905,8 +1796,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; echo fi test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && @@ -1920,63 +1811,48 @@ ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -$as_echo "/* confdefs.h */" > confdefs.h +printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac + ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" + +for ac_site_file in $ac_site_files do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi @@ -1986,19 +1862,552 @@ if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi +# Test code for whether the C++ compiler supports C++98 (global declarations) +ac_cxx_conftest_cxx98_globals=' +// Does the compiler advertise C++98 conformance? +#if !defined __cplusplus || __cplusplus < 199711L +# error "Compiler does not advertise C++98 conformance" +#endif + +// These inclusions are to reject old compilers that +// lack the unsuffixed header files. +#include +#include + +// and are *not* freestanding headers in C++98. +extern void assert (int); +namespace std { + extern int strcmp (const char *, const char *); +} + +// Namespaces, exceptions, and templates were all added after "C++ 2.0". +using std::exception; +using std::strcmp; + +namespace { + +void test_exception_syntax() +{ + try { + throw "test"; + } catch (const char *s) { + // Extra parentheses suppress a warning when building autoconf itself, + // due to lint rules shared with more typical C programs. + assert (!(strcmp) (s, "test")); + } +} + +template struct test_template +{ + T const val; + explicit test_template(T t) : val(t) {} + template T add(U u) { return static_cast(u) + val; } +}; + +} // anonymous namespace +' + +# Test code for whether the C++ compiler supports C++98 (body of main) +ac_cxx_conftest_cxx98_main=' + assert (argc); + assert (! argv[0]); +{ + test_exception_syntax (); + test_template tt (2.0); + assert (tt.add (4) == 6.0); + assert (true && !false); +} +' + +# Test code for whether the C++ compiler supports C++11 (global declarations) +ac_cxx_conftest_cxx11_globals=' +// Does the compiler advertise C++ 2011 conformance? +#if !defined __cplusplus || __cplusplus < 201103L +# error "Compiler does not advertise C++11 conformance" +#endif + +namespace cxx11test +{ + constexpr int get_val() { return 20; } + + struct testinit + { + int i; + double d; + }; + + class delegate + { + public: + delegate(int n) : n(n) {} + delegate(): delegate(2354) {} + + virtual int getval() { return this->n; }; + protected: + int n; + }; + + class overridden : public delegate + { + public: + overridden(int n): delegate(n) {} + virtual int getval() override final { return this->n * 2; } + }; + + class nocopy + { + public: + nocopy(int i): i(i) {} + nocopy() = default; + nocopy(const nocopy&) = delete; + nocopy & operator=(const nocopy&) = delete; + private: + int i; + }; + + // for testing lambda expressions + template Ret eval(Fn f, Ret v) + { + return f(v); + } + + // for testing variadic templates and trailing return types + template auto sum(V first) -> V + { + return first; + } + template auto sum(V first, Args... rest) -> V + { + return first + sum(rest...); + } +} +' + +# Test code for whether the C++ compiler supports C++11 (body of main) +ac_cxx_conftest_cxx11_main=' +{ + // Test auto and decltype + auto a1 = 6538; + auto a2 = 48573953.4; + auto a3 = "String literal"; + + int total = 0; + for (auto i = a3; *i; ++i) { total += *i; } + + decltype(a2) a4 = 34895.034; +} +{ + // Test constexpr + short sa[cxx11test::get_val()] = { 0 }; +} +{ + // Test initializer lists + cxx11test::testinit il = { 4323, 435234.23544 }; +} +{ + // Test range-based for + int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, + 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; + for (auto &x : array) { x += 23; } +} +{ + // Test lambda expressions + using cxx11test::eval; + assert (eval ([](int x) { return x*2; }, 21) == 42); + double d = 2.0; + assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); + assert (d == 5.0); + assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); + assert (d == 5.0); +} +{ + // Test use of variadic templates + using cxx11test::sum; + auto a = sum(1); + auto b = sum(1, 2); + auto c = sum(1.0, 2.0, 3.0); +} +{ + // Test constructor delegation + cxx11test::delegate d1; + cxx11test::delegate d2(); + cxx11test::delegate d3(45); +} +{ + // Test override and final + cxx11test::overridden o1(55464); +} +{ + // Test nullptr + char *c = nullptr; +} +{ + // Test template brackets + test_template<::test_template> v(test_template(12)); +} +{ + // Unicode literals + char const *utf8 = u8"UTF-8 string \u2500"; + char16_t const *utf16 = u"UTF-8 string \u2500"; + char32_t const *utf32 = U"UTF-32 string \u2500"; +} +' + +# Test code for whether the C compiler supports C++11 (complete). +ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} +${ac_cxx_conftest_cxx11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_cxx_conftest_cxx98_main} + ${ac_cxx_conftest_cxx11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C++98 (complete). +ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_cxx_conftest_cxx98_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +// Does the compiler advertise C99 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +// Does the compiler advertise C11 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false @@ -2009,12 +2418,12 @@ for ac_var in $ac_precious_vars; do eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) @@ -2023,24 +2432,24 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -2050,11 +2459,12 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi done if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## @@ -2069,12 +2479,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # Check whether --enable-programs was given. -if test "${enable_programs+set}" = set; then : +if test ${enable_programs+y} +then : enableval=$enable_programs; case "${enableval}" in yes | no ) WITH_PROGRAMS="${enableval}" ;; *) as_fn_error $? "bad value ${enableval} for --disable-programs" "$LINENO" 5 ;; esac -else +else $as_nop WITH_PROGRAMS="yes" fi @@ -2082,12 +2493,13 @@ fi # Check whether --enable-vamp was given. -if test "${enable_vamp+set}" = set; then : +if test ${enable_vamp+y} +then : enableval=$enable_vamp; case "${enableval}" in yes | no ) WITH_VAMP="${enableval}" ;; *) as_fn_error $? "bad value ${enableval} for --disable-vamp" "$LINENO" 5 ;; esac -else +else $as_nop WITH_VAMP="yes" fi @@ -2095,12 +2507,13 @@ fi # Check whether --enable-ladspa was given. -if test "${enable_ladspa+set}" = set; then : +if test ${enable_ladspa+y} +then : enableval=$enable_ladspa; case "${enableval}" in yes | no ) WITH_LADSPA="${enableval}" ;; *) as_fn_error $? "bad value ${enableval} for --disable-ladspa" "$LINENO" 5 ;; esac -else +else $as_nop WITH_LADSPA="yes" fi @@ -2108,6 +2521,12 @@ fi + + + + + + ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -2118,15 +2537,16 @@ if test -z "$CXX"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else @@ -2134,11 +2554,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2149,11 +2573,11 @@ fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf "%s\n" "$CXX" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2162,15 +2586,16 @@ fi fi if test -z "$CXX"; then ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else @@ -2178,11 +2603,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2193,11 +2622,11 @@ fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +printf "%s\n" "$ac_ct_CXX" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2209,8 +2638,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX @@ -2220,7 +2649,7 @@ fi fi fi # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do @@ -2230,7 +2659,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -2240,7 +2669,7 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -2248,7 +2677,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -2260,9 +2689,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 -$as_echo_n "checking whether the C++ compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 +printf %s "checking whether the C++ compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" @@ -2283,11 +2712,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -2304,7 +2734,7 @@ do # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -2320,44 +2750,46 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else +else $as_nop ac_file='' fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 -$as_echo_n "checking for C++ compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 +printf %s "checking for C++ compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -2371,15 +2803,15 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext @@ -2388,7 +2820,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; @@ -2400,8 +2832,8 @@ _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in @@ -2409,10 +2841,10 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in @@ -2420,39 +2852,40 @@ $as_echo "$ac_try_echo"; } >&5 *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C++ compiled programs. + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -2466,11 +2899,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in @@ -2479,31 +2913,32 @@ $as_echo "$ac_try_echo"; } >&5 break;; esac done -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 +printf %s "checking whether the compiler supports GNU C++... " >&6; } +if test ${ac_cv_cxx_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -2513,29 +2948,33 @@ main () return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi -ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +printf %s "checking whether $CXX accepts -g... " >&6; } +if test ${ac_cv_prog_cxx_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no @@ -2544,57 +2983,60 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : ac_cv_prog_cxx_g=yes -else +else $as_nop CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : -else +else $as_nop ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : ac_cv_prog_cxx_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } +if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then @@ -2609,12 +3051,120 @@ else CXXFLAGS= fi fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 +printf %s "checking for $CXX option to enable C++11 features... " >&6; } +if test ${ac_cv_prog_cxx_cxx11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cxx_cxx11=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx11_program +_ACEOF +for ac_arg in '' -std=gnu++11 -std=c++11 -std=gnu++0x -std=c++0x -qlanglvl=extended0x -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx11" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX + +fi +# AC_CACHE_VAL +ac_prog_cxx_stdcxx_options= +case "x$ac_cv_prog_cxx_cxx11" in #( + x) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } ;; #( + xno) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } ;; #( + *) : + ac_prog_cxx_stdcxx_options=" $ac_cv_prog_cxx_cxx11" + CXX=$CXX$ac_prog_cxx_stdcxx_options + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } ;; +esac +if test "x$ac_cv_prog_cxx_cxx11" != xno +then : + ac_prog_cxx_stdcxx=cxx11 + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 + ac_cv_prog_cxx_cxx98=$ac_cv_prog_cxx_cxx11 +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 +printf %s "checking for $CXX option to enable C++98 features... " >&6; } +if test ${ac_cv_prog_cxx_cxx98+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cxx_cxx98=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx98_program +_ACEOF +for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx98=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx98" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX + +fi +# AC_CACHE_VAL +ac_prog_cxx_stdcxx_options= +case "x$ac_cv_prog_cxx_cxx98" in #( + x) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } ;; #( + xno) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } ;; #( + *) : + ac_prog_cxx_stdcxx_options=" $ac_cv_prog_cxx_cxx98" + CXX=$CXX$ac_prog_cxx_stdcxx_options + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } ;; +esac +if test "x$ac_cv_prog_cxx_cxx98" != xno +then : + ac_prog_cxx_stdcxx=cxx98 + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 +else $as_nop + ac_prog_cxx_stdcxx=no + ac_cv_prog_cxx_stdcxx=no +fi + +fi + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -2623,11 +3173,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -2635,11 +3186,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2650,11 +3205,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2663,11 +3218,12 @@ if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -2675,11 +3231,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2690,11 +3250,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -2702,8 +3262,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2716,11 +3276,12 @@ if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -2728,11 +3289,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2743,11 +3308,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2756,11 +3321,12 @@ fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -2769,15 +3335,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2793,18 +3363,18 @@ if test $ac_prog_rejected = yes; then # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2815,11 +3385,12 @@ if test -z "$CC"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -2827,11 +3398,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2842,11 +3417,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2859,11 +3434,12 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -2871,11 +3447,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2886,11 +3466,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2902,8 +3482,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2911,25 +3491,129 @@ esac fi fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion; do +for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -2939,20 +3623,21 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -2962,29 +3647,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi -ac_test_CFLAGS=${CFLAGS+set} +ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no @@ -2993,57 +3682,60 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes -else +else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then @@ -3058,73 +3750,119 @@ else CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +ac_prog_cc_stdc_options= +case "x$ac_cv_prog_cc_c11" in #( + x) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } ;; #( + xno) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } ;; #( + *) : + ac_prog_cc_stdc_options=" $ac_cv_prog_cc_c11" + CC="$CC$ac_prog_cc_stdc_options" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c11" != xno +then : + ac_prog_cc_stdc=c11 + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc1x -qlanglvl=extc99 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +ac_prog_cc_stdc_options= +case "x$ac_cv_prog_cc_c99" in #( + x) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } ;; #( + xno) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } ;; #( + *) : + ac_prog_cc_stdc_options=" $ac_cv_prog_cc_c99" + CC="$CC$ac_prog_cc_stdc_options" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c99" != xno +then : + ac_prog_cc_stdc=c99 + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} +$ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext @@ -3132,19 +3870,30 @@ CC=$ac_save_CC fi # AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +ac_prog_cc_stdc_options= +case "x$ac_cv_prog_cc_c89" in #( + x) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } ;; #( + xno) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } ;; #( + *) : + ac_prog_cc_stdc_options=" $ac_cv_prog_cc_c89" + CC="$CC$ac_prog_cc_stdc_options" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } ;; esac -if test "x$ac_cv_prog_cc_c89" != xno; then : +if test "x$ac_cv_prog_cc_c89" != xno +then : + ac_prog_cc_stdc=c89 + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 +else $as_nop + ac_prog_cc_stdc=no + ac_cv_prog_cc_stdc=no +fi + +fi fi @@ -3155,628 +3904,6 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __APPLE_CC__ - not a universal capable compiler - #endif - typedef int dummy; - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # Check for potential -arch flags. It is not universal unless - # there are at least two -arch flags with different values. - ac_arch= - ac_prev= - for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do - if test -n "$ac_prev"; then - case $ac_word in - i?86 | x86_64 | ppc | ppc64) - if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then - ac_arch=$ac_word - else - ac_cv_c_bigendian=universal - break - fi - ;; - esac - ac_prev= - elif test "x$ac_word" = "x-arch"; then - ac_prev=arch - fi - done -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test $ac_cv_c_bigendian = unknown; then - # See if sys/param.h defines the BYTE_ORDER macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ - && LITTLE_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to _BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#ifndef _BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # Compile a test program. - if test "$cross_compiling" = yes; then : - # Try to guess by grepping values from an object file. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -short int ascii_mm[] = - { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = - { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; - int use_ascii (int i) { - return ascii_mm[i] + ascii_ii[i]; - } - short int ebcdic_ii[] = - { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = - { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; - int use_ebcdic (int i) { - return ebcdic_mm[i] + ebcdic_ii[i]; - } - extern int foo; - -int -main () -{ -return use_ascii (foo) == use_ebcdic (foo); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then - ac_cv_c_bigendian=yes - fi - if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi - fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long int l; - char c[sizeof (long int)]; - } u; - u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_bigendian=no -else - ac_cv_c_bigendian=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } - case $ac_cv_c_bigendian in #( - yes) - $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h -;; #( - no) - ;; #( - universal) - -$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h - - ;; #( - *) - as_fn_error $? "unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; - esac - - @@ -3788,11 +3915,12 @@ if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. @@ -3802,11 +3930,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3818,11 +3950,11 @@ esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf "%s\n" "$PKG_CONFIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3831,11 +3963,12 @@ if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. @@ -3845,11 +3978,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3861,11 +3998,11 @@ esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then @@ -3873,8 +4010,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG @@ -3886,30 +4023,30 @@ fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SRC" >&5 -$as_echo_n "checking for SRC... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SRC" >&5 +printf %s "checking for SRC... " >&6; } if test -n "$SRC_CFLAGS"; then pkg_cv_SRC_CFLAGS="$SRC_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"samplerate\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"samplerate\""; } >&5 ($PKG_CONFIG --exists --print-errors "samplerate") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SRC_CFLAGS=`$PKG_CONFIG --cflags "samplerate" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -3923,10 +4060,10 @@ if test -n "$SRC_LIBS"; then pkg_cv_SRC_LIBS="$SRC_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"samplerate\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"samplerate\""; } >&5 ($PKG_CONFIG --exists --print-errors "samplerate") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SRC_LIBS=`$PKG_CONFIG --libs "samplerate" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -3940,8 +4077,8 @@ fi if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -3967,10 +4104,10 @@ Alternatively, you may set the environment variables SRC_CFLAGS and SRC_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -3984,8 +4121,8 @@ See \`config.log' for more details" "$LINENO" 5; } else SRC_CFLAGS=$pkg_cv_SRC_CFLAGS SRC_LIBS=$pkg_cv_SRC_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } fi @@ -3994,17 +4131,17 @@ fi if test "x$WITH_PROGRAMS" = "xyes"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SNDFILE" >&5 -$as_echo_n "checking for SNDFILE... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SNDFILE" >&5 +printf %s "checking for SNDFILE... " >&6; } if test -n "$SNDFILE_CFLAGS"; then pkg_cv_SNDFILE_CFLAGS="$SNDFILE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndfile\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndfile\""; } >&5 ($PKG_CONFIG --exists --print-errors "sndfile") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SNDFILE_CFLAGS=`$PKG_CONFIG --cflags "sndfile" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -4018,10 +4155,10 @@ if test -n "$SNDFILE_LIBS"; then pkg_cv_SNDFILE_LIBS="$SNDFILE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndfile\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndfile\""; } >&5 ($PKG_CONFIG --exists --print-errors "sndfile") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SNDFILE_LIBS=`$PKG_CONFIG --libs "sndfile" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -4035,8 +4172,8 @@ fi if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -4062,10 +4199,10 @@ Alternatively, you may set the environment variables SNDFILE_CFLAGS and SNDFILE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -4079,8 +4216,8 @@ See \`config.log' for more details" "$LINENO" 5; } else SNDFILE_CFLAGS=$pkg_cv_SNDFILE_CFLAGS SNDFILE_LIBS=$pkg_cv_SNDFILE_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } fi fi @@ -4089,17 +4226,17 @@ fi pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FFTW" >&5 -$as_echo_n "checking for FFTW... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for FFTW" >&5 +printf %s "checking for FFTW... " >&6; } if test -n "$FFTW_CFLAGS"; then pkg_cv_FFTW_CFLAGS="$FFTW_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fftw3\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fftw3\""; } >&5 ($PKG_CONFIG --exists --print-errors "fftw3") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FFTW_CFLAGS=`$PKG_CONFIG --cflags "fftw3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -4113,10 +4250,10 @@ if test -n "$FFTW_LIBS"; then pkg_cv_FFTW_LIBS="$FFTW_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fftw3\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fftw3\""; } >&5 ($PKG_CONFIG --exists --print-errors "fftw3") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FFTW_LIBS=`$PKG_CONFIG --libs "fftw3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -4130,8 +4267,8 @@ fi if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -4157,10 +4294,10 @@ Alternatively, you may set the environment variables FFTW_CFLAGS and FFTW_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -4174,54 +4311,81 @@ See \`config.log' for more details" "$LINENO" 5; } else FFTW_CFLAGS=$pkg_cv_FFTW_CFLAGS FFTW_LIBS=$pkg_cv_FFTW_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } fi if test "x$WITH_LADSPA" = "xyes"; then - for ac_header in ladspa.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "ladspa.h" "ac_cv_header_ladspa_h" "$ac_includes_default" -if test "x$ac_cv_header_ladspa_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LADSPA_H 1 -_ACEOF +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + +fi + for ac_header in ladspa.h +do : + ac_fn_c_check_header_compile "$LINENO" "ladspa.h" "ac_cv_header_ladspa_h" "$ac_includes_default" +if test "x$ac_cv_header_ladspa_h" = xyes +then : + printf "%s\n" "#define HAVE_LADSPA_H 1" >>confdefs.h + +else $as_nop + as_fn_error $? "LADSPA header not found + +Consider installing the LADSPA SDK or configuring with --disable-ladspa" "$LINENO" 5 fi done +fi +ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" +if test "x$ac_cv_header_pthread_h" = xyes +then : + printf "%s\n" "#define HAVE_PTHREAD_H 1" >>confdefs.h fi -for ac_header in pthread.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" -if test "x$ac_cv_header_pthread_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_PTHREAD_H 1 -_ACEOF - -fi - -done if test "x$WITH_VAMP" = "xyes"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Vamp" >&5 -$as_echo_n "checking for Vamp... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Vamp" >&5 +printf %s "checking for Vamp... " >&6; } if test -n "$Vamp_CFLAGS"; then pkg_cv_Vamp_CFLAGS="$Vamp_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vamp-sdk\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vamp-sdk\""; } >&5 ($PKG_CONFIG --exists --print-errors "vamp-sdk") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_Vamp_CFLAGS=`$PKG_CONFIG --cflags "vamp-sdk" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -4235,10 +4399,10 @@ if test -n "$Vamp_LIBS"; then pkg_cv_Vamp_LIBS="$Vamp_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vamp-sdk\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vamp-sdk\""; } >&5 ($PKG_CONFIG --exists --print-errors "vamp-sdk") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_Vamp_LIBS=`$PKG_CONFIG --libs "vamp-sdk" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -4252,8 +4416,8 @@ fi if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -4279,10 +4443,10 @@ Alternatively, you may set the environment variables Vamp_CFLAGS and Vamp_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -4296,8 +4460,8 @@ See \`config.log' for more details" "$LINENO" 5; } else Vamp_CFLAGS=$pkg_cv_Vamp_CFLAGS Vamp_LIBS=$pkg_cv_Vamp_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } fi fi @@ -4344,8 +4508,8 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -4375,15 +4539,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; /^ac_cv_env_/b end t clear :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else @@ -4397,8 +4561,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;} fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -4451,7 +4615,7 @@ U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -4463,13 +4627,12 @@ LTLIBOBJS=$ac_ltlibobjs - : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL @@ -4492,14 +4655,16 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -4509,46 +4674,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -4557,13 +4722,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -4572,8 +4730,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -4585,30 +4747,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] @@ -4621,13 +4763,14 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -4654,18 +4797,20 @@ as_fn_unset () { eval $1=; unset $1;} } as_unset=as_fn_unset + # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -4677,12 +4822,13 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` @@ -4713,7 +4859,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -4735,6 +4881,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -4748,6 +4898,12 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -4789,7 +4945,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -4798,7 +4954,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -4861,7 +5017,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by RubberBand $as_me 1.9.0, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.70. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -4910,14 +5066,16 @@ $config_files Report bugs to ." _ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ RubberBand config.status 1.9.0 -configured by $0, generated by GNU Autoconf 2.69, +configured by $0, generated by GNU Autoconf 2.70, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2020 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -4954,21 +5112,21 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; + printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; + printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; + printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; @@ -4996,7 +5154,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" @@ -5010,7 +5168,7 @@ exec 5>>config.log sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - $as_echo "$ac_log" + printf "%s\n" "$ac_log" } >&5 _ACEOF @@ -5035,7 +5193,7 @@ done # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree @@ -5263,7 +5421,7 @@ do esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done @@ -5271,17 +5429,17 @@ do # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | + ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac @@ -5298,7 +5456,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | +printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -5322,9 +5480,9 @@ $as_echo X"$ac_file" | case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -5377,8 +5535,8 @@ ac_sed_dataroot=' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' @@ -5420,9 +5578,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" @@ -5469,8 +5627,9 @@ if test "$no_create" != yes; then $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi + diff --git a/configure.ac b/configure.ac index a3a7fdd..aca9b2e 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ -AC_INIT(RubberBand, 1.9.0, chris.cannam@breakfastquay.com) +AC_INIT([RubberBand],[1.9.0],[chris.cannam@breakfastquay.com]) AC_ARG_ENABLE(programs, [ --disable-programs disable compilation of programs], @@ -34,8 +34,6 @@ AC_SUBST(WITH_LADSPA) AC_CONFIG_SRCDIR(src/StretcherImpl.h) AC_PROG_CXX AC_PROG_CC -AC_HEADER_STDC -AC_C_BIGENDIAN PKG_CHECK_MODULES([SRC],[samplerate]) AC_SUBST(SRC_CFLAGS) @@ -52,7 +50,9 @@ AC_SUBST(FFTW_CFLAGS) AC_SUBST(FFTW_LIBS) if test "x$WITH_LADSPA" = "xyes"; then - AC_CHECK_HEADERS(ladspa.h) + AC_CHECK_HEADERS(ladspa.h, [], [AC_MSG_ERROR([LADSPA header not found + +Consider installing the LADSPA SDK or configure with --disable-ladspa])]) fi AC_CHECK_HEADERS(pthread.h) @@ -75,5 +75,6 @@ if test "x$GCC" = "xyes"; then fi changequote([,])dnl -AC_OUTPUT([Makefile]) +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT From f1a051a4f5e148b21c72c535d2d47137fd27bc97 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 8 Jan 2021 11:58:13 +0000 Subject: [PATCH 08/93] Experimental action --- .github/workflows/macos-ios.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/macos-ios.yml diff --git a/.github/workflows/macos-ios.yml b/.github/workflows/macos-ios.yml new file mode 100644 index 0000000..c8fd468 --- /dev/null +++ b/.github/workflows/macos-ios.yml @@ -0,0 +1,22 @@ +name: macOS and iOS CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: macos-latest + + steps: + - uses: actions/checkout@v2 + - name: deps + run: brew install libsndfile + - name: make macos + run: make -f Makefile.osx clean all + - name: make ios + run: make -f Makefile.ios clean all + From a1cf6f1ac8bd414b3ea156e28a47435a720ba707 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 8 Jan 2021 12:02:10 +0000 Subject: [PATCH 09/93] + other headers --- .github/workflows/macos-ios.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/macos-ios.yml b/.github/workflows/macos-ios.yml index c8fd468..9b5487a 100644 --- a/.github/workflows/macos-ios.yml +++ b/.github/workflows/macos-ios.yml @@ -14,7 +14,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: deps - run: brew install libsndfile + run: brew install libsndfile ladspa-sdk vamp-plugin-sdk - name: make macos run: make -f Makefile.osx clean all - name: make ios From 338eb593c8201d3b6e08b6a3a04b704fdb7eec8a Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 8 Jan 2021 12:04:53 +0000 Subject: [PATCH 10/93] Homebrew complains that "Linux is required" for (the single header) ladspa.h - bizarre, but whatever --- .github/workflows/macos-ios.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/macos-ios.yml b/.github/workflows/macos-ios.yml index 9b5487a..d82f219 100644 --- a/.github/workflows/macos-ios.yml +++ b/.github/workflows/macos-ios.yml @@ -14,7 +14,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: deps - run: brew install libsndfile ladspa-sdk vamp-plugin-sdk + run: brew install libsndfile vamp-plugin-sdk - name: make macos run: make -f Makefile.osx clean all - name: make ios From 497ec04c54e00921c77b6c0a67f1971785385a73 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 8 Jan 2021 12:08:13 +0000 Subject: [PATCH 11/93] Without LADSPA, don't build LADSPA plugin --- .github/workflows/macos-ios.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/macos-ios.yml b/.github/workflows/macos-ios.yml index d82f219..0886d5e 100644 --- a/.github/workflows/macos-ios.yml +++ b/.github/workflows/macos-ios.yml @@ -16,7 +16,7 @@ jobs: - name: deps run: brew install libsndfile vamp-plugin-sdk - name: make macos - run: make -f Makefile.osx clean all + run: make -f Makefile.osx clean library program vamp - name: make ios run: make -f Makefile.ios clean all From f2d4affeb3a8def0d0ecda9858e705379c47f2c8 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 8 Jan 2021 12:12:34 +0000 Subject: [PATCH 12/93] Ensure directories get made --- Makefile.ios | 2 +- Makefile.osx | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Makefile.ios b/Makefile.ios index a8d8087..b8ab5f7 100644 --- a/Makefile.ios +++ b/Makefile.ios @@ -31,7 +31,7 @@ default: lib $(STATIC_TARGET) all: lib $(STATIC_TARGET) -static: $(STATIC_TARGET) +static: lib $(STATIC_TARGET) PUBLIC_INCLUDES := \ rubberband/rubberband-c.h \ diff --git a/Makefile.osx b/Makefile.osx index 650c2f0..234a8d9 100644 --- a/Makefile.osx +++ b/Makefile.osx @@ -45,12 +45,12 @@ default: bin lib $(STATIC_TARGET) $(DYNAMIC_TARGET) $(PROGRAM_TARGET) all: bin lib $(STATIC_TARGET) $(DYNAMIC_TARGET) $(PROGRAM_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET) -static: $(STATIC_TARGET) -dynamic: $(DYNAMIC_TARGET) -library: $(STATIC_TARGET) $(DYNAMIC_TARGET) -program: $(PROGRAM_TARGET) -vamp: $(VAMP_TARGET) -ladspa: $(LADSPA_TARGET) +static: lib $(STATIC_TARGET) +dynamic: lib $(DYNAMIC_TARGET) +library: static dynamic +program: bin $(PROGRAM_TARGET) +vamp: lib $(VAMP_TARGET) +ladspa: lib $(LADSPA_TARGET) PUBLIC_INCLUDES := \ rubberband/rubberband-c.h \ From fc65f61b118e4c34cf1e060e338e1cd844adc3f3 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 8 Jan 2021 12:18:43 +0000 Subject: [PATCH 13/93] Replace Travis badge with GH Actions one --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 56cc643..76d4ea2 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ tempo and pitch of an audio recording independently of one another. CI builds: * [![Build status](https://builds.sr.ht/~breakfastquay/rubberband.svg)](https://builds.sr.ht/~breakfastquay/rubberband?) (Linux) -* [![Build Status](https://travis-ci.org/breakfastquay/rubberband.svg?branch=master)](https://travis-ci.org/breakfastquay/rubberband) (macOS, iOS) +* [![Build Status](https://github.com/breakfastquay/rubberband/workflows/macOS%20and%20iOS%20CI/badge.svg)](https://github.com/breakfastquay/rubberband/actions?query=workflow%3A%22macOS+and+iOS+CI%22) (macOS, iOS) * [![Build Status](https://ci.appveyor.com/api/projects/status/hhhhpf718jwhpyf6?svg=true)](https://ci.appveyor.com/project/breakfastquay/rubberband) (Windows) From 9afba0678769bd8c72f370bac20bc5cee6cce649 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 8 Jan 2021 15:33:42 +0000 Subject: [PATCH 14/93] Round these values to integers, otherwise we start getting scientific notation now our computers are all so fast --- main/main.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/main/main.cpp b/main/main.cpp index d4e1085..8a2aa62 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -648,7 +648,10 @@ int main(int argc, char **argv) etv.tv_usec -= tv.tv_usec; double sec = double(etv.tv_sec) + (double(etv.tv_usec) / 1000000.0); - cerr << "elapsed time: " << sec << " sec, in frames/sec: " << countIn/sec << ", out frames/sec: " << countOut/sec << endl; + cerr << "elapsed time: " << sec + << " sec, in frames/sec: " << int64_t(round(countIn/sec)) + << ", out frames/sec: " << int64_t(round(countOut/sec)) + << endl; } RubberBand::Profiler::dump(); From f15eba1c8f7b6d558009d86cb457f813b34a4367 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 8 Jan 2021 15:34:16 +0000 Subject: [PATCH 15/93] Rename Makefile.osx to Makefile.macos, make it arch-neutral, add a macos-universal variant that explicitly does x86_64 + arm64 build --- .github/workflows/macos-ios.yml | 8 +- .travis.yml | 2 +- Makefile.osx => Makefile.macos | 5 +- Makefile.macos-universal | 264 ++++++++++++++++++++++++++++++++ README.md | 27 ++-- 5 files changed, 291 insertions(+), 15 deletions(-) rename Makefile.osx => Makefile.macos (98%) create mode 100644 Makefile.macos-universal diff --git a/.github/workflows/macos-ios.yml b/.github/workflows/macos-ios.yml index 0886d5e..a62baa6 100644 --- a/.github/workflows/macos-ios.yml +++ b/.github/workflows/macos-ios.yml @@ -15,8 +15,12 @@ jobs: - uses: actions/checkout@v2 - name: deps run: brew install libsndfile vamp-plugin-sdk - - name: make macos - run: make -f Makefile.osx clean library program vamp + - name: make macos universal library + run: make -f Makefile.macos-universal clean library + - name: make macos native binaries + # (these depend on things installed from Homebrew, which I think + # doesn't install universal anything, so let's just make them native) + run: make -f Makefile.macos program vamp - name: make ios run: make -f Makefile.ios clean all diff --git a/.travis.yml b/.travis.yml index 95f4e40..11e4a96 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,5 +23,5 @@ before_install: - if [[ "$TRAVIS_OS_NAME" = "osx" ]] ; then brew update ; brew install libsndfile ; fi script: - - if [[ "$TRAVIS_OS_NAME" = "osx" ]] ; then make -f Makefile.osx && make -f Makefile.ios clean && make -f Makefile.ios ; else ./configure && make ; fi + - if [[ "$TRAVIS_OS_NAME" = "osx" ]] ; then make -f Makefile.macos && make -f Makefile.ios clean && make -f Makefile.ios ; else ./configure && make ; fi diff --git a/Makefile.osx b/Makefile.macos similarity index 98% rename from Makefile.osx rename to Makefile.macos index 234a8d9..0279574 100644 --- a/Makefile.osx +++ b/Makefile.macos @@ -2,8 +2,9 @@ PREFIX := /usr/local CXX := clang++ -stdlib=libc++ CC := clang -ARCHFLAGS := -arch x86_64 -mmacosx-version-min=10.7 -OPTFLAGS := -DNDEBUG -ffast-math -mfpmath=sse -msse -msse2 -O3 -ftree-vectorize + +ARCHFLAGS := -mmacosx-version-min=10.7 +OPTFLAGS := -DNDEBUG -ffast-math -O3 -ftree-vectorize CXXFLAGS := $(ARCHFLAGS) $(OPTFLAGS) -I. -Isrc -Irubberband -I/usr/local/include -DUSE_PTHREADS -DMALLOC_IS_ALIGNED -DHAVE_VDSP -DUSE_SPEEX -DNO_THREAD_CHECKS -DNO_TIMING diff --git a/Makefile.macos-universal b/Makefile.macos-universal new file mode 100644 index 0000000..719fc02 --- /dev/null +++ b/Makefile.macos-universal @@ -0,0 +1,264 @@ + +PREFIX := /usr/local +CXX := clang++ -stdlib=libc++ +CC := clang + +ARCHFLAGS := -arch arm64 -arch x86_64 -mmacosx-version-min=10.7 +OPTFLAGS := -DNDEBUG -ffast-math -O3 + +CXXFLAGS := $(ARCHFLAGS) $(OPTFLAGS) -I. -Isrc -Irubberband -I/usr/local/include -DUSE_PTHREADS -DMALLOC_IS_ALIGNED -DHAVE_VDSP -DUSE_SPEEX -DNO_THREAD_CHECKS -DNO_TIMING + +CFLAGS := $(ARCHFLAGS) $(OPTFLAGS) +LDFLAGS := $(ARCHFLAGS) -lpthread $(LDFLAGS) + +LIBRARY_LIBS := -framework Accelerate +PROGRAM_LIBS := -L$(PREFIX)/lib -lsndfile $(LIBRARY_LIBS) +VAMP_PLUGIN_LIBS := -L$(PREFIX)/lib -lvamp-sdk $(LIBRARY_LIBS) +LADSPA_PLUGIN_LIBS := $(LIBRARY_LIBS) + +MKDIR := mkdir +AR := ar + +INSTALL_BINDIR := $(PREFIX)/bin +INSTALL_INCDIR := $(PREFIX)/include/rubberband +INSTALL_LIBDIR := $(PREFIX)/lib +INSTALL_VAMPDIR := $(PREFIX)/lib/vamp +INSTALL_LADSPADIR := $(PREFIX)/lib/ladspa +INSTALL_LRDFDIR := $(PREFIX)/share/ladspa/rdf +INSTALL_PKGDIR := $(PREFIX)/lib/pkgconfig + +LIBNAME := librubberband + +DYNAMIC_EXTENSION := .dylib +DYNAMIC_FULL_VERSION := 2.1.2 +DYNAMIC_ABI_VERSION := 2 +DYNAMIC_LDFLAGS := -dynamiclib -install_name $(INSTALL_LIBDIR)/$(LIBNAME).$(DYNAMIC_ABI_VERSION)$(DYNAMIC_EXTENSION) -current_version $(DYNAMIC_FULL_VERSION) -compatibility_version $(DYNAMIC_ABI_VERSION) +VAMP_LDFLAGS := -dynamiclib -install_name vamp-rubberband.dylib -exported_symbols_list vamp/vamp-plugin.list +LADSPA_LDFLAGS := -dynamiclib -install_name ladspa-rubberband.dylib -exported_symbols_list ladspa/ladspa-plugin.list + +PROGRAM_TARGET := bin/rubberband +STATIC_TARGET := lib/$(LIBNAME).a +DYNAMIC_TARGET := lib/$(LIBNAME)$(DYNAMIC_EXTENSION) +VAMP_TARGET := lib/vamp-rubberband$(DYNAMIC_EXTENSION) +LADSPA_TARGET := lib/ladspa-rubberband$(DYNAMIC_EXTENSION) + +default: bin lib $(STATIC_TARGET) $(DYNAMIC_TARGET) $(PROGRAM_TARGET) + +all: bin lib $(STATIC_TARGET) $(DYNAMIC_TARGET) $(PROGRAM_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET) + +static: lib $(STATIC_TARGET) +dynamic: lib $(DYNAMIC_TARGET) +library: static dynamic +program: bin $(PROGRAM_TARGET) +vamp: lib $(VAMP_TARGET) +ladspa: lib $(LADSPA_TARGET) + +PUBLIC_INCLUDES := \ + rubberband/rubberband-c.h \ + rubberband/RubberBandStretcher.h + +LIBRARY_INCLUDES := \ + src/StretcherChannelData.h \ + src/float_cast/float_cast.h \ + src/StretcherImpl.h \ + src/StretchCalculator.h \ + src/base/Profiler.h \ + src/base/RingBuffer.h \ + src/base/Scavenger.h \ + src/dsp/AudioCurveCalculator.h \ + src/audiocurves/CompoundAudioCurve.h \ + src/audiocurves/ConstantAudioCurve.h \ + src/audiocurves/HighFrequencyAudioCurve.h \ + src/audiocurves/PercussiveAudioCurve.h \ + src/audiocurves/SilentAudioCurve.h \ + src/audiocurves/SpectralDifferenceAudioCurve.h \ + src/dsp/Resampler.h \ + src/dsp/FFT.h \ + src/dsp/MovingMedian.h \ + src/dsp/SincWindow.h \ + src/dsp/Window.h \ + src/system/Allocators.h \ + src/system/Thread.h \ + src/system/VectorOps.h \ + src/system/VectorOpsComplex.h \ + src/system/sysutils.h + +LIBRARY_SOURCES := \ + src/rubberband-c.cpp \ + src/RubberBandStretcher.cpp \ + src/StretcherProcess.cpp \ + src/StretchCalculator.cpp \ + src/base/Profiler.cpp \ + src/dsp/AudioCurveCalculator.cpp \ + src/audiocurves/CompoundAudioCurve.cpp \ + src/audiocurves/SpectralDifferenceAudioCurve.cpp \ + src/audiocurves/HighFrequencyAudioCurve.cpp \ + src/audiocurves/SilentAudioCurve.cpp \ + src/audiocurves/ConstantAudioCurve.cpp \ + src/audiocurves/PercussiveAudioCurve.cpp \ + src/dsp/Resampler.cpp \ + src/dsp/FFT.cpp \ + src/system/Allocators.cpp \ + src/system/sysutils.cpp \ + src/system/Thread.cpp \ + src/system/VectorOpsComplex.cpp \ + src/StretcherChannelData.cpp \ + src/StretcherImpl.cpp + +# For Speex resampler -- comment these lines out if not specifying USE_SPEEX +LIBRARY_INCLUDES := $(LIBRARY_INCLUDES) \ + src/speex/speex_resampler.h +LIBRARY_SOURCES := $(LIBRARY_SOURCES) \ + src/speex/resample.c + +PROGRAM_SOURCES := \ + main/main.cpp + +VAMP_HEADERS := \ + vamp/RubberBandVampPlugin.h + +VAMP_SOURCES := \ + vamp/RubberBandVampPlugin.cpp \ + vamp/libmain.cpp + +LADSPA_HEADERS := \ + ladspa/RubberBandPitchShifter.h + +LADSPA_SOURCES := \ + ladspa/RubberBandPitchShifter.cpp \ + ladspa/libmain.cpp + +LIBRARY_OBJECTS := $(LIBRARY_SOURCES:.cpp=.o) +LIBRARY_OBJECTS := $(LIBRARY_OBJECTS:.c=.o) + +PROGRAM_OBJECTS := $(PROGRAM_SOURCES:.cpp=.o) +VAMP_OBJECTS := $(VAMP_SOURCES:.cpp=.o) +LADSPA_OBJECTS := $(LADSPA_SOURCES:.cpp=.o) + +$(PROGRAM_TARGET): $(LIBRARY_OBJECTS) $(PROGRAM_OBJECTS) + $(CXX) -o $@ $^ $(PROGRAM_LIBS) $(LDFLAGS) + +$(STATIC_TARGET): $(LIBRARY_OBJECTS) + rm -f $@ + $(AR) rsc $@ $^ + +$(DYNAMIC_TARGET): $(LIBRARY_OBJECTS) + $(CXX) $(DYNAMIC_LDFLAGS) $^ -o $@ $(LIBRARY_LIBS) $(LDFLAGS) + +$(VAMP_TARGET): $(LIBRARY_OBJECTS) $(VAMP_OBJECTS) + $(CXX) $(VAMP_LDFLAGS) -o $@ $^ $(VAMP_PLUGIN_LIBS) $(LDFLAGS) + +$(LADSPA_TARGET): $(LIBRARY_OBJECTS) $(LADSPA_OBJECTS) + $(CXX) $(LADSPA_LDFLAGS) -o $@ $^ $(LADSPA_PLUGIN_LIBS) $(LDFLAGS) + +bin: + $(MKDIR) $@ +lib: + $(MKDIR) $@ + +install: default + $(MKDIR) -p $(DESTDIR)$(INSTALL_BINDIR) + $(MKDIR) -p $(DESTDIR)$(INSTALL_INCDIR) + $(MKDIR) -p $(DESTDIR)$(INSTALL_LIBDIR) + $(MKDIR) -p $(DESTDIR)$(INSTALL_VAMPDIR) + $(MKDIR) -p $(DESTDIR)$(INSTALL_LADSPADIR) + $(MKDIR) -p $(DESTDIR)$(INSTALL_LRDFDIR) + $(MKDIR) -p $(DESTDIR)$(INSTALL_PKGDIR) + cp $(PROGRAM_TARGET) $(DESTDIR)$(INSTALL_BINDIR) + cp $(PUBLIC_INCLUDES) $(DESTDIR)$(INSTALL_INCDIR) + cp $(STATIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR) + rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME).$(DYNAMIC_ABI_VERSION)$(DYNAMIC_EXTENSION) + rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION) + cp $(DYNAMIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME).$(DYNAMIC_FULL_VERSION)$(DYNAMIC_EXTENSION) + ln -s $(LIBNAME).$(DYNAMIC_FULL_VERSION)$(DYNAMIC_EXTENSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME).$(DYNAMIC_ABI_VERSION)$(DYNAMIC_EXTENSION) + ln -s $(LIBNAME).$(DYNAMIC_FULL_VERSION)$(DYNAMIC_EXTENSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION) + cp $(VAMP_TARGET) $(DESTDIR)$(INSTALL_VAMPDIR) + cp vamp/vamp-rubberband.cat $(DESTDIR)$(INSTALL_VAMPDIR) + cp $(LADSPA_TARGET) $(DESTDIR)$(INSTALL_LADSPADIR) + cp ladspa/ladspa-rubberband.cat $(DESTDIR)$(INSTALL_LADSPADIR) + cp ladspa/ladspa-rubberband.rdf $(DESTDIR)$(INSTALL_LRDFDIR) + sed "s,%PREFIX%,$(PREFIX)," rubberband.pc.in \ + > $(DESTDIR)$(INSTALL_PKGDIR)/rubberband.pc + +clean: + rm -f $(LIBRARY_OBJECTS) $(PROGRAM_OBJECTS) $(LADSPA_OBJECTS) $(VAMP_OBJECTS) + +distclean: clean + rm -f $(PROGRAM_TARGET) $(STATIC_TARGET) $(DYNAMIC_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET) + +depend: + makedepend -f Makefile.osx -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES) + + +# DO NOT DELETE + +src/rubberband-c.o: rubberband/rubberband-c.h +src/rubberband-c.o: rubberband/RubberBandStretcher.h +src/RubberBandStretcher.o: src/StretcherImpl.h +src/RubberBandStretcher.o: rubberband/RubberBandStretcher.h src/dsp/Window.h +src/RubberBandStretcher.o: src/dsp/FFT.h src/base/RingBuffer.h +src/RubberBandStretcher.o: src/base/Scavenger.h src/system/Thread.h +src/RubberBandStretcher.o: src/system/Thread.h src/system/sysutils.h +src/StretcherProcess.o: src/StretcherImpl.h rubberband/RubberBandStretcher.h +src/StretcherProcess.o: src/dsp/Window.h src/dsp/FFT.h src/base/RingBuffer.h +src/StretcherProcess.o: src/base/Scavenger.h src/system/Thread.h +src/StretcherProcess.o: src/system/Thread.h src/system/sysutils.h +src/StretcherProcess.o: src/audiocurves/PercussiveAudioCurve.h +src/StretcherProcess.o: src/dsp/AudioCurveCalculator.h +src/StretcherProcess.o: src/audiocurves/HighFrequencyAudioCurve.h +src/StretcherProcess.o: src/audiocurves/ConstantAudioCurve.h src/StretchCalculator.h +src/StretcherProcess.o: src/StretcherChannelData.h src/dsp/Resampler.h +src/StretcherProcess.o: src/base/Profiler.h src/system/VectorOps.h +src/StretcherProcess.o: src/system/sysutils.h +src/StretchCalculator.o: src/StretchCalculator.h src/system/sysutils.h +src/system/Thread.o: src/system/Thread.h +src/base/Profiler.o: src/base/Profiler.h src/system/sysutils.h +src/dsp/AudioCurveCalculator.o: src/dsp/AudioCurveCalculator.h +src/dsp/AudioCurveCalculator.o: src/system/sysutils.h +src/audiocurves/SpectralDifferenceAudioCurve.o: src/audiocurves/SpectralDifferenceAudioCurve.h +src/audiocurves/SpectralDifferenceAudioCurve.o: src/dsp/AudioCurveCalculator.h +src/audiocurves/SpectralDifferenceAudioCurve.o: src/system/sysutils.h +src/audiocurves/SpectralDifferenceAudioCurve.o: src/dsp/Window.h +src/audiocurves/SpectralDifferenceAudioCurve.o: src/system/VectorOps.h +src/audiocurves/SpectralDifferenceAudioCurve.o: src/system/sysutils.h +src/audiocurves/HighFrequencyAudioCurve.o: src/audiocurves/HighFrequencyAudioCurve.h +src/audiocurves/HighFrequencyAudioCurve.o: src/dsp/AudioCurveCalculator.h +src/audiocurves/HighFrequencyAudioCurve.o: src/system/sysutils.h +src/audiocurves/SilentAudioCurve.o: src/audiocurves/SilentAudioCurve.h +src/audiocurves/SilentAudioCurve.o: src/dsp/AudioCurveCalculator.h +src/audiocurves/SilentAudioCurve.o: src/system/sysutils.h +src/audiocurves/ConstantAudioCurve.o: src/audiocurves/ConstantAudioCurve.h +src/audiocurves/ConstantAudioCurve.o: src/dsp/AudioCurveCalculator.h +src/audiocurves/ConstantAudioCurve.o: src/system/sysutils.h +src/audiocurves/PercussiveAudioCurve.o: src/audiocurves/PercussiveAudioCurve.h +src/audiocurves/PercussiveAudioCurve.o: src/dsp/AudioCurveCalculator.h +src/audiocurves/PercussiveAudioCurve.o: src/system/sysutils.h src/system/VectorOps.h +src/audiocurves/PercussiveAudioCurve.o: src/system/sysutils.h +src/dsp/Resampler.o: src/dsp/Resampler.h src/system/sysutils.h +src/dsp/Resampler.o: src/base/Profiler.h +src/dsp/FFT.o: src/dsp/FFT.h src/system/sysutils.h src/system/Thread.h +src/dsp/FFT.o: src/base/Profiler.h src/system/VectorOps.h +src/dsp/FFT.o: src/system/sysutils.h +src/system/Allocators.o: src/system/Allocators.h src/system/VectorOps.h +src/system/Allocators.o: src/system/sysutils.h +src/system/sysutils.o: src/system/sysutils.h +src/StretcherChannelData.o: src/StretcherChannelData.h src/StretcherImpl.h +src/StretcherChannelData.o: rubberband/RubberBandStretcher.h src/dsp/Window.h +src/StretcherChannelData.o: src/dsp/FFT.h src/base/RingBuffer.h +src/StretcherChannelData.o: src/base/Scavenger.h src/system/Thread.h +src/StretcherChannelData.o: src/system/Thread.h src/system/sysutils.h +src/StretcherChannelData.o: src/dsp/Resampler.h src/system/Allocators.h +src/StretcherChannelData.o: src/system/VectorOps.h src/system/sysutils.h +src/StretcherImpl.o: src/StretcherImpl.h rubberband/RubberBandStretcher.h +src/StretcherImpl.o: src/dsp/Window.h src/dsp/FFT.h src/base/RingBuffer.h +src/StretcherImpl.o: src/base/Scavenger.h src/system/Thread.h src/system/Thread.h +src/StretcherImpl.o: src/system/sysutils.h src/audiocurves/PercussiveAudioCurve.h +src/StretcherImpl.o: src/dsp/AudioCurveCalculator.h +src/StretcherImpl.o: src/audiocurves/HighFrequencyAudioCurve.h +src/StretcherImpl.o: src/audiocurves/SpectralDifferenceAudioCurve.h src/dsp/Window.h +src/StretcherImpl.o: src/system/VectorOps.h src/system/sysutils.h +src/StretcherImpl.o: src/audiocurves/SilentAudioCurve.h src/audiocurves/ConstantAudioCurve.h +src/StretcherImpl.o: src/dsp/Resampler.h src/StretchCalculator.h +src/StretcherImpl.o: src/StretcherChannelData.h src/base/Profiler.h +main/main.o: rubberband/RubberBandStretcher.h src/system/sysutils.h +main/main.o: src/base/Profiler.h diff --git a/README.md b/README.md index 76d4ea2..8552a8b 100644 --- a/README.md +++ b/README.md @@ -272,16 +272,23 @@ The default target is "all". ### 4d. Building on macOS -A Makefile for macOS is provided as `Makefile.osx`. +Two Makefiles for macOS are provided, as `Makefile.macos` and +`Makefile.macos-universal`. `Makefile.macos` will build for your +native machine architecture; `Makefile.macos-universal` will build a +universal binary with both x86_64 and arm64 slices. The latter +requires macOS 11+, although the resulting binaries should work with +macOS 10.7 or newer if all the dependent libraries are also built +appropriately. You will also need the Xcode command-line tools +installed. -Adjust the Makefile according to your preference for compiler and -platform SDK, FFT and resampler implementations. The default is to -use the Accelerate framework and the Speex resampler. Then run -e.g. `make -f Makefile.osx library` in a terminal window to build. -You will need the Xcode command-line tools installed. +Adjust your selected Makefile according to your preference for +compiler and platform SDK, FFT and resampler implementations. The +default is to use the Accelerate framework and the Speex resampler. +Then run e.g. `make -f Makefile.macos library` in a terminal window to +build. (You probably don't want to use the configure script on macOS -- just -use `Makefile.osx` directly.) +use your preferred Makefile directly.) The following Makefile targets are available: @@ -311,9 +318,9 @@ commercial terms. ### 4e. Building for iOS -A Makefile for iOS is provided as `Makefile.ios`. It produces a -single static library containing both simulator and device binaries, -in both 32- and 64-bit architectures. +A Makefile for iOS (compiling on macOS) is provided as `Makefile.ios`. +It produces a single static library containing both simulator and +device binaries, in both 32- and 64-bit architectures. Run e.g. `make -f Makefile.ios` in a terminal window to build. You will need the Xcode command-line tools installed. From 9a97c74ca4d108dc127952c8c6c4838b37cc9425 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 8 Jan 2021 15:53:08 +0000 Subject: [PATCH 16/93] Ah, "latest" is still 10.15 so can't do universal there. Try 11.0 explicitly --- .github/workflows/macos-ios.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/macos-ios.yml b/.github/workflows/macos-ios.yml index a62baa6..b3929ce 100644 --- a/.github/workflows/macos-ios.yml +++ b/.github/workflows/macos-ios.yml @@ -9,7 +9,9 @@ on: jobs: build: - runs-on: macos-latest + # This did say "macos-latest", but it turns out "latest" is + # still 10.15 even though 11.0 is out. I know that feeling + runs-on: macos-11.0 steps: - uses: actions/checkout@v2 From 64f9122741253be0a0deaa1ee521240fb7f7419c Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 8 Jan 2021 16:19:16 +0000 Subject: [PATCH 17/93] Giving up for now on universal binaries in CI - the macOS 11 image is taking too long to start up --- .github/workflows/macos-ios.yml | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/.github/workflows/macos-ios.yml b/.github/workflows/macos-ios.yml index b3929ce..ff09c11 100644 --- a/.github/workflows/macos-ios.yml +++ b/.github/workflows/macos-ios.yml @@ -9,20 +9,14 @@ on: jobs: build: - # This did say "macos-latest", but it turns out "latest" is - # still 10.15 even though 11.0 is out. I know that feeling - runs-on: macos-11.0 + runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: deps run: brew install libsndfile vamp-plugin-sdk - - name: make macos universal library - run: make -f Makefile.macos-universal clean library - - name: make macos native binaries - # (these depend on things installed from Homebrew, which I think - # doesn't install universal anything, so let's just make them native) - run: make -f Makefile.macos program vamp + - name: make macos + run: make -f Makefile.macos clean library program vamp - name: make ios run: make -f Makefile.ios clean all From a14d32a680ce2b58e3d0b3bb7ae4603f6ad58db1 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 8 Jan 2021 17:11:18 +0000 Subject: [PATCH 18/93] Remove freqmap, it has its own branch now --- main/main.cpp | 530 +++++++++++++++++--------------------------------- 1 file changed, 180 insertions(+), 350 deletions(-) diff --git a/main/main.cpp b/main/main.cpp index 08db475..8a2aa62 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -35,7 +35,7 @@ #include "system/sysutils.h" -#ifdef __MSVC__ +#ifdef _MSC_VER #include "getopt/getopt.h" #else #include @@ -52,7 +52,7 @@ using namespace RubberBand; using RubberBand::gettimeofday; #endif -#ifdef __MSVC__ +#ifdef _MSC_VER using RubberBand::usleep; #endif @@ -104,10 +104,7 @@ int main(int argc, char **argv) bool haveRatio = false; - std::string timeMapFile; - std::string freqMapFile; - std::string pitchMapFile; - bool freqOrPitchMapSpecified = false; + std::string mapfile; enum { NoTransients, @@ -121,8 +118,6 @@ int main(int argc, char **argv) SoftDetector } detector = CompoundDetector; - bool ignoreClipping = false; - while (1) { int optionIndex = 0; @@ -155,9 +150,6 @@ int main(int argc, char **argv) { "threads", 0, 0, '@' }, { "quiet", 0, 0, 'q' }, { "timemap", 1, 0, 'M' }, - { "freqmap", 1, 0, 'Q' }, - { "pitchmap", 1, 0, 'C' }, - { "ignore-clipping", 0, 0, 'i' }, { 0, 0, 0, 0 } }; @@ -178,7 +170,7 @@ int main(int argc, char **argv) case 'R': realtime = true; break; case 'L': precise = false; break; case 'P': precise = true; break; - case 'F': formant = true; break; + case 'F': formant = true; break; case '0': threading = 1; break; case '@': threading = 2; break; case '1': transients = NoTransients; crispchanged = true; break; @@ -193,10 +185,7 @@ int main(int argc, char **argv) case '%': hqpitch = true; break; case 'c': crispness = atoi(optarg); break; case 'q': quiet = true; break; - case 'M': timeMapFile = optarg; break; - case 'Q': freqMapFile = optarg; freqOrPitchMapSpecified = true; break; - case 'C': pitchMapFile = optarg; freqOrPitchMapSpecified = true; break; - case 'i': ignoreClipping = true; break; + case 'M': mapfile = optarg; break; default: help = true; break; } } @@ -206,22 +195,13 @@ int main(int argc, char **argv) return 0; } - if (freqOrPitchMapSpecified) { - if (freqMapFile != "" && pitchMapFile != "") { - cerr << "ERROR: Please specify either pitch map or frequency map, not both" << endl; - return 1; - } - haveRatio = true; - realtime = true; - } - if (help || !haveRatio || optind + 2 != argc) { cerr << endl; - cerr << "Rubber Band" << endl; + cerr << "Rubber Band" << endl; cerr << "An audio time-stretching and pitch-shifting library and utility program." << endl; - cerr << "Copyright 2007-2020 Particular Programs Ltd." << endl; + cerr << "Copyright 2007-2020 Particular Programs Ltd." << endl; cerr << endl; - cerr << " Usage: " << argv[0] << " [options] " << endl; + cerr << " Usage: " << argv[0] << " [options] " << endl; cerr << endl; cerr << "You must specify at least one of the following time and pitch ratio options." << endl; cerr << endl; @@ -233,45 +213,23 @@ int main(int argc, char **argv) cerr << " -p, --pitch Raise pitch by X semitones, or" << endl; cerr << " -f, --frequency Change frequency by multiple X" << endl; cerr << endl; - cerr << "The following options provide ways of making the time and frequency ratios" << endl; - cerr << "change during the audio." << endl; + cerr << " -M, --timemap Use file F as the source for key frame map" << endl; cerr << endl; - cerr << " -M, --timemap Use file F as the source for time map" << endl; + cerr << "A map file consists of a series of lines each having two numbers separated" << endl; + cerr << "by a single space. These are source and target sample frame numbers for fixed" << endl; + cerr << "time points within the audio data, defining a varying stretch factor through" << endl; + cerr << "the audio. You must specify an overall stretch factor using e.g. -t as well." << endl; cerr << endl; - cerr << " A time map (or key-frame map) file contains a series of lines, each with two" << endl; - cerr << " sample frame numbers separated by a single space. These are source and" << endl; - cerr << " target frames for fixed time points within the audio data, defining a varying" << endl; - cerr << " stretch factor through the audio. When supplying a time map you must specify" << endl; - cerr << " an overall stretch factor using -t, -T, or -D as well, to determine the" << endl; - cerr << " total output duration." << endl; - cerr << endl; - cerr << " --pitchmap Use file F as the source for pitch map" << endl; - cerr << endl; - cerr << " A pitch map file contains a series of lines, each with two values: the input" << endl; - cerr << " sample frame number and a pitch offset in semitones, separated by a single" << endl; - cerr << " space. These specify a varying pitch factor through the audio. The offsets" << endl; - cerr << " are all relative to an initial offset specified by the pitch or frequency" << endl; - cerr << " option, or relative to no shift if neither was specified. Offsets are" << endl; - cerr << " not cumulative. This option implies realtime mode (-R) and also enables a" << endl; - cerr << " high-consistency pitch shifting mode, appropriate for dynamic pitch changes." << endl; - cerr << " Because of the use of realtime mode, the overall duration will not be exact." << endl; - cerr << endl; - cerr << " --freqmap Use file F as the source for frequency map" << endl; - cerr << endl; - cerr << " As --pitchmap, except that the second column in the file contains frequency" << endl; - cerr << " multipliers rather than pitch offsets (the same as the difference between" << endl; - cerr << " pitch and frequency options above)." << endl; - cerr << endl; - cerr << "The following options provide a simple way to adjust the sound. See below" << endl; + cerr << "The following options provide a simple way to adjust the sound. See below" << endl; cerr << "for more details." << endl; cerr << endl; cerr << " -c, --crisp Crispness (N = 0,1,2,3,4,5,6); default 5 (see below)" << endl; - cerr << " -F, --formant Enable formant preservation when pitch shifting" << endl; + cerr << " -F, --formant Enable formant preservation when pitch shifting" << endl; cerr << endl; cerr << "The remaining options fine-tune the processing mode and stretch algorithm." << endl; cerr << "These are mostly included for test purposes; the default settings and standard" << endl; cerr << "crispness parameter are intended to provide the best sounding set of options" << endl; - cerr << "for most situations. The default is to use none of these options." << endl; + cerr << "for most situations. The default is to use none of these options." << endl; cerr << endl; cerr << " -L, --loose Relax timing in hope of better transient preservation" << endl; cerr << " -P, --precise Ignored: The opposite of -L, this is default from 1.6" << endl; @@ -289,8 +247,6 @@ int main(int argc, char **argv) cerr << " --pitch-hq In RT mode, use a slower, higher quality pitch shift" << endl; cerr << " --centre-focus Preserve focus of centre material in stereo" << endl; cerr << " (at a cost in width and individual channel quality)" << endl; - cerr << " --ignore-clipping Ignore clipping at output; the default is to restart" << endl; - cerr << " with reduced gain if clipping occurs" << endl; cerr << endl; cerr << " -d, --debug Select debug level (N = 0,1,2,3); default 0, full 3" << endl; cerr << " (N.B. debug level 3 includes audible ticks in output)" << endl; @@ -308,7 +264,7 @@ int main(int argc, char **argv) cerr << " -c 5 default processing options" << endl; cerr << " -c 6 equivalent to --no-lamination --window-short (may be good for drums)" << endl; cerr << endl; - return 2; + return 2; } if (ratio <= 0.0) { @@ -321,12 +277,6 @@ int main(int argc, char **argv) cerr << " provided -- crispness will override these other options" << endl; } - if (hqpitch && freqOrPitchMapSpecified) { - cerr << "WARNING: High-quality pitch mode selected, but frequency or pitch map file is" << endl; - cerr << " provided -- pitch mode will be overridden by high-consistency mode" << endl; - hqpitch = false; - } - switch (crispness) { case -1: crispness = 5; break; case 0: detector = CompoundDetector; transients = NoTransients; lamination = false; longwin = true; shortwin = false; break; @@ -352,35 +302,34 @@ int main(int argc, char **argv) cerr << ")" << endl; } - std::map timeMap; - if (timeMapFile != "") { - std::ifstream ifile(timeMapFile.c_str()); + std::map mapping; + + if (mapfile != "") { + std::ifstream ifile(mapfile.c_str()); if (!ifile.is_open()) { - cerr << "ERROR: Failed to open time map file \"" - << timeMapFile << "\"" << endl; + cerr << "ERROR: Failed to open time map file \"" << mapfile << "\"" + << endl; return 1; } std::string line; int lineno = 0; while (!ifile.eof()) { std::getline(ifile, line); - while (line.length() > 0 && line[0] == ' ') { - line = line.substr(1); - } + while (line.length() > 0 && line[0] == ' ') line = line.substr(1); if (line == "") { ++lineno; continue; } std::string::size_type i = line.find_first_of(" "); if (i == std::string::npos) { - cerr << "ERROR: Time map file \"" << timeMapFile + cerr << "ERROR: Time map file \"" << mapfile << "\" is malformed at line " << lineno << endl; return 1; } size_t source = atoi(line.substr(0, i).c_str()); while (i < line.length() && line[i] == ' ') ++i; size_t target = atoi(line.substr(i).c_str()); - timeMap[source] = target; + mapping[source] = target; if (debug > 0) { cerr << "adding mapping from " << source << " to " << target << endl; } @@ -389,57 +338,7 @@ int main(int argc, char **argv) ifile.close(); if (!quiet) { - cerr << "Read " << timeMap.size() << " line(s) from time map file" << endl; - } - } - - std::map freqMap; - - if (freqOrPitchMapSpecified) { - std::string file = freqMapFile; - bool convertFromPitch = false; - if (pitchMapFile != "") { - file = pitchMapFile; - convertFromPitch = true; - } - std::ifstream ifile(file.c_str()); - if (!ifile.is_open()) { - cerr << "ERROR: Failed to open map file \"" << file << "\"" << endl; - return 1; - } - std::string line; - int lineno = 0; - while (!ifile.eof()) { - std::getline(ifile, line); - while (line.length() > 0 && line[0] == ' ') { - line = line.substr(1); - } - if (line == "") { - ++lineno; - continue; - } - std::string::size_type i = line.find_first_of(" "); - if (i == std::string::npos) { - cerr << "ERROR: Map file \"" << file - << "\" is malformed at line " << lineno << endl; - return 1; - } - size_t source = atoi(line.substr(0, i).c_str()); - while (i < line.length() && line[i] == ' ') ++i; - double freq = atof(line.substr(i).c_str()); - if (convertFromPitch) { - freq = pow(2.0, freq / 12.0); - } - freqMap[source] = freq; - if (debug > 0) { - cerr << "adding mapping for source frame " << source << " of frequency multiplier " << freq << endl; - } - ++lineno; - } - ifile.close(); - - if (!quiet) { - cerr << "Read " << freqMap.size() << " line(s) from frequency map file" << endl; + cerr << "Read " << mapping.size() << " line(s) from map file" << endl; } } @@ -455,9 +354,9 @@ int main(int argc, char **argv) sndfile = sf_open(fileName, SFM_READ, &sfinfo); if (!sndfile) { - cerr << "ERROR: Failed to open input file \"" << fileName << "\": " - << sf_strerror(sndfile) << endl; - return 1; + cerr << "ERROR: Failed to open input file \"" << fileName << "\": " + << sf_strerror(sndfile) << endl; + return 1; } if (sfinfo.samplerate == 0) { @@ -483,9 +382,9 @@ int main(int argc, char **argv) sndfileOut = sf_open(fileNameOut, SFM_WRITE, &sfinfoOut) ; if (!sndfileOut) { - cerr << "ERROR: Failed to open output file \"" << fileNameOut << "\" for writing: " - << sf_strerror(sndfileOut) << endl; - return 1; + cerr << "ERROR: Failed to open output file \"" << fileNameOut << "\" for writing: " + << sf_strerror(sndfileOut) << endl; + return 1; } int ibs = 1024; @@ -502,10 +401,6 @@ int main(int argc, char **argv) if (hqpitch) options |= RubberBandStretcher::OptionPitchHighQuality; if (together) options |= RubberBandStretcher::OptionChannelsTogether; - if (freqOrPitchMapSpecified) { - options |= RubberBandStretcher::OptionPitchHighConsistency; - } - switch (threading) { case 0: options |= RubberBandStretcher::OptionThreadingAuto; @@ -543,134 +438,46 @@ int main(int argc, char **argv) } if (pitchshift != 0.0) { - frequencyshift *= pow(2.0, pitchshift / 12.0); + frequencyshift *= pow(2.0, pitchshift / 12); } cerr << "Using time ratio " << ratio; + cerr << " and frequency ratio " << frequencyshift << endl; - if (!freqOrPitchMapSpecified) { - cerr << " and frequency ratio " << frequencyshift << endl; - } else { - cerr << " and initial frequency ratio " << frequencyshift << endl; - } - #ifdef _WIN32 RubberBand:: #endif timeval tv; (void)gettimeofday(&tv, 0); - + RubberBandStretcher::setDefaultDebugLevel(debug); - size_t countIn = 0, countOut = 0; + RubberBandStretcher ts(sfinfo.samplerate, channels, options, + ratio, frequencyshift); - float gain = 1.f; - bool successful = false; + ts.setExpectedInputDuration(sfinfo.frames); - while (!successful) { // we may have to repeat with a modified - // gain, if clipping occurs - successful = true; + float *fbuf = new float[channels * ibs]; + float **ibuf = new float *[channels]; + for (size_t i = 0; i < channels; ++i) ibuf[i] = new float[ibs]; - RubberBandStretcher ts(sfinfo.samplerate, channels, options, - ratio, frequencyshift); - ts.setExpectedInputDuration(sfinfo.frames); + int frame = 0; + int percent = 0; - float *fbuf = new float[channels * ibs]; - float **ibuf = new float *[channels]; - for (size_t i = 0; i < channels; ++i) { - ibuf[i] = new float[ibs]; + sf_seek(sndfile, 0, SEEK_SET); + + if (!realtime) { + + if (!quiet) { + cerr << "Pass 1: Studying..." << endl; } - int frame = 0; - int percent = 0; - - sf_seek(sndfile, 0, SEEK_SET); - - if (!realtime) { - - if (!quiet) { - cerr << "Pass 1: Studying..." << endl; - } - - while (frame < sfinfo.frames) { - - int count = -1; - - if ((count = sf_readf_float(sndfile, fbuf, ibs)) <= 0) break; - - for (size_t c = 0; c < channels; ++c) { - for (int i = 0; i < count; ++i) { - float value = fbuf[i * channels + c]; - ibuf[c][i] = value; - } - } - - bool final = (frame + ibs >= sfinfo.frames); - - ts.study(ibuf, count, final); - - int p = int((double(frame) * 100.0) / sfinfo.frames); - if (p > percent || frame == 0) { - percent = p; - if (!quiet) { - cerr << "\r" << percent << "% "; - } - } - - frame += ibs; - } - - if (!quiet) { - cerr << "\rCalculating profile..." << endl; - } - - sf_seek(sndfile, 0, SEEK_SET); - } - - frame = 0; - percent = 0; - - if (!timeMap.empty()) { - ts.setKeyFrameMap(timeMap); - } - - std::map::const_iterator freqMapItr = freqMap.begin(); - - countIn = 0; - countOut = 0; - bool clipping = false; - while (frame < sfinfo.frames) { int count = -1; - int thisBlockSize = ibs; - while (freqMapItr != freqMap.end()) { - size_t nextFreqFrame = freqMapItr->first + ts.getLatency(); - if (nextFreqFrame <= countIn) { - double s = frequencyshift * freqMapItr->second; - if (debug > 0) { - cerr << "at frame " << countIn - << " (requested at " << freqMapItr->first - << " plus latency " << ts.getLatency() - << ") updating frequency ratio to " << s << endl; - } - ts.setPitchScale(s); - ++freqMapItr; - } else { - if (nextFreqFrame < countIn + thisBlockSize) { - thisBlockSize = nextFreqFrame - countIn; - } - break; - } - } + if ((count = sf_readf_float(sndfile, fbuf, ibs)) <= 0) break; - if ((count = sf_readf_float(sndfile, fbuf, thisBlockSize)) < 0) { - break; - } - - countIn += count; - for (size_t c = 0; c < channels; ++c) { for (int i = 0; i < count; ++i) { float value = fbuf[i * channels + c]; @@ -678,70 +485,9 @@ int main(int argc, char **argv) } } - bool final = (frame + thisBlockSize >= sfinfo.frames); + bool final = (frame + ibs >= sfinfo.frames); - if (debug > 2) { - cerr << "count = " << count << ", ibs = " << thisBlockSize << ", frame = " << frame << ", frames = " << sfinfo.frames << ", final = " << final << endl; - } - - ts.process(ibuf, count, final); - - int avail = ts.available(); - if (debug > 1) cerr << "available = " << avail << endl; - - if (avail > 0) { - float **obf = new float *[channels]; - for (size_t i = 0; i < channels; ++i) { - obf[i] = new float[avail]; - } - ts.retrieve(obf, avail); - countOut += avail; - float *fobf = new float[channels * avail]; - for (size_t c = 0; c < channels; ++c) { - for (int i = 0; i < avail; ++i) { - float value = gain * obf[c][i]; - if (ignoreClipping) { // i.e. just clamp, don't bail out - if (value > 1.f) value = 1.f; - if (value < -1.f) value = -1.f; - } else { - if (value >= 1.f || value < -1.f) { - clipping = true; - gain = (0.999f / fabsf(obf[c][i])); - } - } - fobf[i * channels + c] = value; - } - } - sf_writef_float(sndfileOut, fobf, avail); - delete[] fobf; - for (size_t i = 0; i < channels; ++i) { - delete[] obf[i]; - } - delete[] obf; - } - - if (clipping) { - if (!quiet) { - cerr << "NOTE: Clipping detected at output sample " - << countOut << ", restarting with " - << "reduced gain of " << gain - << " (supply --ignore-clipping to avoid this)" << endl; - } - const float mingain = 0.75f; - if (gain < mingain) { - cerr << "WARNING: Clipped values were implausibly high: " - << "something wrong with input or process - " - << "not reducing gain below " << mingain << endl; - gain = mingain; - ignoreClipping = true; - } - successful = false; - break; - } - - if (frame == 0 && !realtime && !quiet) { - cerr << "Pass 2: Processing..." << endl; - } + ts.study(ibuf, count, final); int p = int((double(frame) * 100.0) / sfinfo.frames); if (p > percent || frame == 0) { @@ -751,55 +497,136 @@ int main(int argc, char **argv) } } - frame += thisBlockSize; + frame += ibs; } - if (!successful) { - sf_seek(sndfile, 0, SEEK_SET); - sf_seek(sndfileOut, 0, SEEK_SET); - continue; - } - if (!quiet) { - cerr << "\r " << endl; + cerr << "\rCalculating profile..." << endl; } - int avail; - while ((avail = ts.available()) >= 0) { + sf_seek(sndfile, 0, SEEK_SET); + } - if (debug > 1) { - cerr << "(completing) available = " << avail << endl; - } - - if (avail > 0) { - float **obf = new float *[channels]; - for (size_t i = 0; i < channels; ++i) { - obf[i] = new float[avail]; - } - ts.retrieve(obf, avail); - countOut += avail; - float *fobf = new float[channels * avail]; - for (size_t c = 0; c < channels; ++c) { - for (int i = 0; i < avail; ++i) { - float value = gain * obf[c][i]; - if (value > 1.f) value = 1.f; - if (value < -1.f) value = -1.f; - fobf[i * channels + c] = value; - } - } - - sf_writef_float(sndfileOut, fobf, avail); - delete[] fobf; - for (size_t i = 0; i < channels; ++i) { - delete[] obf[i]; - } - delete[] obf; - } else { - usleep(10000); - } - } + frame = 0; + percent = 0; + + if (!mapping.empty()) { + ts.setKeyFrameMap(mapping); } + size_t countIn = 0, countOut = 0; + + while (frame < sfinfo.frames) { + + int count = -1; + + if ((count = sf_readf_float(sndfile, fbuf, ibs)) < 0) break; + + countIn += count; + + for (size_t c = 0; c < channels; ++c) { + for (int i = 0; i < count; ++i) { + float value = fbuf[i * channels + c]; + ibuf[c][i] = value; + } + } + + bool final = (frame + ibs >= sfinfo.frames); + + if (debug > 2) { + cerr << "count = " << count << ", ibs = " << ibs << ", frame = " << frame << ", frames = " << sfinfo.frames << ", final = " << final << endl; + } + + ts.process(ibuf, count, final); + + int avail = ts.available(); + if (debug > 1) cerr << "available = " << avail << endl; + + if (avail > 0) { + float **obf = new float *[channels]; + for (size_t i = 0; i < channels; ++i) { + obf[i] = new float[avail]; + } + ts.retrieve(obf, avail); + countOut += avail; + float *fobf = new float[channels * avail]; + for (size_t c = 0; c < channels; ++c) { + for (int i = 0; i < avail; ++i) { + float value = obf[c][i]; + if (value > 1.f) value = 1.f; + if (value < -1.f) value = -1.f; + fobf[i * channels + c] = value; + } + } +// cout << "fobf mean: "; +// double d = 0; +// for (int i = 0; i < avail; ++i) { +// d += fobf[i]; +// } +// d /= avail; +// cout << d << endl; + sf_writef_float(sndfileOut, fobf, avail); + delete[] fobf; + for (size_t i = 0; i < channels; ++i) { + delete[] obf[i]; + } + delete[] obf; + } + + if (frame == 0 && !realtime && !quiet) { + cerr << "Pass 2: Processing..." << endl; + } + + int p = int((double(frame) * 100.0) / sfinfo.frames); + if (p > percent || frame == 0) { + percent = p; + if (!quiet) { + cerr << "\r" << percent << "% "; + } + } + + frame += ibs; + } + + if (!quiet) { + cerr << "\r " << endl; + } + int avail; + + while ((avail = ts.available()) >= 0) { + + if (debug > 1) { + cerr << "(completing) available = " << avail << endl; + } + + if (avail > 0) { + float **obf = new float *[channels]; + for (size_t i = 0; i < channels; ++i) { + obf[i] = new float[avail]; + } + ts.retrieve(obf, avail); + countOut += avail; + float *fobf = new float[channels * avail]; + for (size_t c = 0; c < channels; ++c) { + for (int i = 0; i < avail; ++i) { + float value = obf[c][i]; + if (value > 1.f) value = 1.f; + if (value < -1.f) value = -1.f; + fobf[i * channels + c] = value; + } + } + + sf_writef_float(sndfileOut, fobf, avail); + delete[] fobf; + for (size_t i = 0; i < channels; ++i) { + delete[] obf[i]; + } + delete[] obf; + } else { + usleep(10000); + } + } + sf_close(sndfile); sf_close(sndfileOut); @@ -810,7 +637,7 @@ int main(int argc, char **argv) #ifdef _WIN32 RubberBand:: #endif - timeval etv; + timeval etv; (void)gettimeofday(&etv, 0); etv.tv_sec -= tv.tv_sec; @@ -821,7 +648,10 @@ int main(int argc, char **argv) etv.tv_usec -= tv.tv_usec; double sec = double(etv.tv_sec) + (double(etv.tv_usec) / 1000000.0); - cerr << "elapsed time: " << sec << " sec, in frames/sec: " << countIn/sec << ", out frames/sec: " << countOut/sec << endl; + cerr << "elapsed time: " << sec + << " sec, in frames/sec: " << int64_t(round(countIn/sec)) + << ", out frames/sec: " << int64_t(round(countOut/sec)) + << endl; } RubberBand::Profiler::dump(); From eb612718de62519cfdfdd17ef6b7f1eb48f6d6d1 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 8 Jan 2021 17:38:25 +0000 Subject: [PATCH 19/93] Regen configure --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 5e31a40..9af6123 100755 --- a/configure +++ b/configure @@ -4359,7 +4359,7 @@ then : else $as_nop as_fn_error $? "LADSPA header not found -Consider installing the LADSPA SDK or configuring with --disable-ladspa" "$LINENO" 5 +Consider installing the LADSPA SDK or configure with --disable-ladspa" "$LINENO" 5 fi done From 35522c1f96e55071dff1add406666454acb17f84 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 5 Feb 2021 16:39:16 +0000 Subject: [PATCH 20/93] Fix pedantic warning with C++98 --- rubberband/RubberBandStretcher.h | 2 +- rubberband/rubberband-c.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rubberband/RubberBandStretcher.h b/rubberband/RubberBandStretcher.h index 015832b..ad16ca3 100644 --- a/rubberband/RubberBandStretcher.h +++ b/rubberband/RubberBandStretcher.h @@ -310,7 +310,7 @@ public: OptionPitchHighConsistency = 0x04000000, OptionChannelsApart = 0x00000000, - OptionChannelsTogether = 0x10000000, + OptionChannelsTogether = 0x10000000 // n.b. Options is int, so we must stop before 0x80000000 }; diff --git a/rubberband/rubberband-c.h b/rubberband/rubberband-c.h index 010d563..41bcfac 100644 --- a/rubberband/rubberband-c.h +++ b/rubberband/rubberband-c.h @@ -83,7 +83,7 @@ enum RubberBandOption { RubberBandOptionPitchHighConsistency = 0x04000000, RubberBandOptionChannelsApart = 0x00000000, - RubberBandOptionChannelsTogether = 0x10000000, + RubberBandOptionChannelsTogether = 0x10000000 }; typedef int RubberBandOptions; From d2e5cf3a6dba59c7ddcb2928d99040b8507621b4 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 5 Feb 2021 16:39:41 +0000 Subject: [PATCH 21/93] Fix incorrect initialisation --- src/speex/resample.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/speex/resample.c b/src/speex/resample.c index 2b60cef..b2e302e 100644 --- a/src/speex/resample.c +++ b/src/speex/resample.c @@ -90,10 +90,7 @@ static void *speex_alloc (int count, int size) #ifdef HAVE_IPP void *rv; #endif - -// fprintf(stderr, "speex_alloc(%d,%d)\n", count, size); - if (count * size < ALLOC_MINIMUM) { -// fprintf(stderr, "upgrading count from %d to %d\n", count, ALLOC_MINIMUM / size); + if (count * size < ALLOC_MINIMUM) { count = ALLOC_MINIMUM / size; } @@ -105,9 +102,7 @@ static void *speex_alloc (int count, int size) } else { rv = ippsMalloc_8u(count * size); } -// fprintf(stderr, "allocated at %p; now setting %d bytes to zero\n", rv, count*size); - memset(rv, count * size, 0); -// fprintf(stderr, "returning %p\n",rv); + memset(rv, 0, count * size); return rv; #else return calloc(count, size); From 1e64c2b3177eb05283c3d71b4bc8cc5592c6ed1e Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 5 Feb 2021 16:39:52 +0000 Subject: [PATCH 22/93] Fix compiler warning --- vamp/RubberBandVampPlugin.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vamp/RubberBandVampPlugin.cpp b/vamp/RubberBandVampPlugin.cpp index c25360d..4c6cab0 100644 --- a/vamp/RubberBandVampPlugin.cpp +++ b/vamp/RubberBandVampPlugin.cpp @@ -441,7 +441,7 @@ RubberBandVampPlugin::getRemainingFeatures() RubberBandVampPlugin::FeatureSet RubberBandVampPlugin::Impl::processOffline(const float *const *inputBuffers, - Vamp::RealTime timestamp) + Vamp::RealTime /* timestamp */) { if (!m_stretcher) { cerr << "ERROR: RubberBandVampPlugin::processOffline: " @@ -480,7 +480,7 @@ RubberBandVampPlugin::Impl::getRemainingFeaturesOffline() RubberBandVampPlugin::FeatureSet RubberBandVampPlugin::Impl::processRealTime(const float *const *inputBuffers, - Vamp::RealTime timestamp) + Vamp::RealTime /* timestamp */) { // This function is not in any way a real-time function (i.e. it // has no requirement to be RT safe); it simply operates the From 286e739933e0e330008c37397f7c403b53361293 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 5 Feb 2021 16:42:13 +0000 Subject: [PATCH 23/93] First cut at a Meson build --- .hgignore | 1 + meson.build | 416 ++++++++++++++++++++++++++++++++++++++++++++++ meson_options.txt | 18 ++ 3 files changed, 435 insertions(+) create mode 100644 meson.build create mode 100644 meson_options.txt diff --git a/.hgignore b/.hgignore index 2aef9ed..2070702 100644 --- a/.hgignore +++ b/.hgignore @@ -22,3 +22,4 @@ re:^x64/Debug/ re:^x64/Release/ re:^Release/ re:^Debug/ +build/ diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..3a349ad --- /dev/null +++ b/meson.build @@ -0,0 +1,416 @@ + +project( + 'Rubber Band Library', + 'c', 'cpp', + version: '1.9.0', + license: 'GPL-2.0', + default_options: [ + 'cpp_std=c++98', + 'warning_level=2', + 'buildtype=release', + 'b_ndebug=if-release', + 'b_lundef=true', + ], + meson_version: '>= 0.54.0' +) + +rubberband_dynamic_library_version = '2.1.2' + +system = build_machine.system() +architecture = host_machine.cpu_family() +pkg = import('pkgconfig') + + +# Define the project source sets + +public_headers = [ + 'rubberband/rubberband-c.h', + 'rubberband/RubberBandStretcher.h', +] + +library_sources = [ + 'src/rubberband-c.cpp', + 'src/RubberBandStretcher.cpp', + 'src/StretcherProcess.cpp', + 'src/StretchCalculator.cpp', + 'src/base/Profiler.cpp', + 'src/dsp/AudioCurveCalculator.cpp', + 'src/audiocurves/CompoundAudioCurve.cpp', + 'src/audiocurves/SpectralDifferenceAudioCurve.cpp', + 'src/audiocurves/HighFrequencyAudioCurve.cpp', + 'src/audiocurves/SilentAudioCurve.cpp', + 'src/audiocurves/ConstantAudioCurve.cpp', + 'src/audiocurves/PercussiveAudioCurve.cpp', + 'src/dsp/Resampler.cpp', + 'src/dsp/FFT.cpp', + 'src/system/Allocators.cpp', + 'src/system/sysutils.cpp', + 'src/system/Thread.cpp', + 'src/StretcherChannelData.cpp', + 'src/StretcherImpl.cpp', +] + +jni_sources = [ + 'src/jni/RubberBandStretcherJNI.cpp', +] + +java_sources = [ + 'com/breakfastquay/rubberband/RubberBandStretcher.java', +] + +program_sources = [ + 'main/main.cpp', +] + +vamp_sources = [ + 'vamp/RubberBandVampPlugin.cpp', + 'vamp/libmain.cpp', +] + +ladspa_sources = [ + 'ladspa/RubberBandPitchShifter.cpp', + 'ladspa/libmain.cpp', +] + +general_include_dirs = [ + 'rubberband', + 'src', +] + + +# Scan for any dependencies we may use later; all are optional +# We collect these first so our summary messages about selected build +# features all appear together at the end + +fftw3_dep = dependency('fftw3', version: '>= 3.0.0', required: false) +samplerate_dep = dependency('samplerate', version: '>= 0.1.8', required: false) +sndfile_dep = dependency('sndfile', version: '>= 1.0.16', required: false) +vamp_dep = dependency('vamp-sdk', version: '>= 2.9', required: false) +thread_dep = dependency('threads') +have_ladspa = meson.get_compiler('cpp').has_header('ladspa.h') + + +# Check FFT and resampler options and set up dependencies and paths + +feature_dependencies = [] +feature_defines = [] +feature_libraries = [] +feature_sources = [] +pkgconfig_requirements = [] + +resampler = get_option('resampler') +fft = get_option('fft') +ipp_path = get_option('ipp_path') + +if fft == 'auto' + if system == 'darwin' + fft = 'vdsp' + else + fft = 'kissfft' + endif +endif + +if resampler == 'auto' + if samplerate_dep.found() + resampler = 'libsamplerate' + else + resampler = 'speex' + endif +endif + +ipp_needed = false + +if fft == 'kissfft' + message('For FFT: using KissFFT') + if fftw3_dep.found() + message('(to use FFTW instead, reconfigure with -Dfft=fftw)') + endif + feature_sources += ['src/kissfft/kiss_fft.c', 'src/kissfft/kiss_fftr.c'] + feature_defines += ['-DUSE_KISSFFT'] + +elif fft == 'fftw' + if fftw3_dep.found() + message('For FFT: using FFTW') + else + error('For FFT: FFTW selected, but dependency not found') + endif + feature_dependencies += fftw3_dep + feature_defines += ['-DHAVE_FFTW3', '-DFFTW_DOUBLE_ONLY'] + pkgconfig_requirements += fftw3_dep + +elif fft == 'vdsp' + message('For FFT: using vDSP') + feature_defines += ['-DHAVE_VDSP'] + feature_libraries += ['-framework', 'Accelerate'] + +elif fft == 'ipp' + if ipp_path != '' + message('For FFT: IPP selected') + message('IPP path defined as ' + ipp_path) + else + error('For FFT: IPP selected, but ipp_path not specified') + endif + ipp_needed = true + +else + error('Unknown or unsupported FFT option: ' + fft) + +endif # fft + +if resampler == 'libsamplerate' + if samplerate_dep.found() + message('For resampler: using libsamplerate') + else + error('For resampler: libsamplerate selected, but dependency not found') + endif + feature_dependencies += samplerate_dep + feature_defines += ['-DHAVE_LIBSAMPLERATE'] + pkgconfig_requirements += samplerate_dep + +elif resampler == 'speex' + message('For resampler: speex selected') + message('(consider libsamplerate if time-varying pitch shift is required)') + feature_sources += ['src/speex/resample.c'] + feature_defines += ['-DUSE_SPEEX'] + +elif resampler == 'ipp' + if ipp_path != '' + message('For resampler: IPP selected') + message('(consider libsamplerate if time-varying pitch shift is required)') + message('IPP path defined as ' + ipp_path) + else + error('For resampler: IPP selected, but ipp_path not specified') + endif + ipp_needed = true + +else + error('Unknown or unsupported resampler option: ' + resampler) + +endif # resampler + +if ipp_needed + feature_defines += [ + '-DHAVE_IPP', + '-DUSE_IPP_STATIC', + '-I' + ipp_path / 'include' + ] + if architecture == 'x86' + feature_libraries += [ + '-L' + ipp_path / 'lib/ia32', + ] + elif architecture == 'x86_64' + feature_libraries += [ + '-L' + ipp_path / 'lib/intel64', + ] + else + error('IPP is not supported for this architecture') + endif + if system == 'windows' + feature_libraries += [ + '-lippsmt', '-lippvmmt', '-lippcoremt', + ] + elif system == 'linux' + feature_libraries += [ + '-Wl,-Bstatic', '-lipps', '-lippvm', '-lippcore', '-Wl,-Bdynamic', + ] + else + feature_libraries += [ + '-lipps', '-lippvm', '-lippcore', + ] + endif +endif # ipp_needed + + +# General platform and compiler expectations + +ladspa_symbol_args = [] +vamp_symbol_args = [] + +if get_option('buildtype').startswith('release') + feature_defines += ['-DNO_THREAD_CHECKS', '-DNO_TIMING', '-DNDEBUG'] +endif + +if system == 'darwin' + feature_defines += ['-DUSE_PTHREADS', '-DMALLOC_IS_ALIGNED'] + ladspa_symbol_args += [ + '-exported_symbols_list', meson.source_root() / 'ladspa/ladspa-plugin.list' + ] + vamp_symbol_args += [ + '-exported_symbols_list', meson.source_root() / 'vamp/vamp-plugin.list' + ] +elif system == 'windows' + if meson.get_compiler('cpp').get_id() == 'msvc' + feature_defines += ['-D__MSVC__', '-DNOMINMAX', '-D_USE_MATH_DEFINES'] + ladspa_symbol_args += ['-EXPORT:ladspa_descriptor'] + vamp_symbol_args += ['-EXPORT:vampGetPluginDescriptor'] + endif +else + feature_defines += ['-DUSE_PTHREADS', '-DHAVE_POSIX_MEMALIGN'] + ladspa_symbol_args += [ + '-Wl,--version-script=' + meson.source_root() / 'ladspa/ladspa-plugin.map' + ] + vamp_symbol_args += [ + '-Wl,--version-script=' + meson.source_root() / 'vamp/vamp-plugin.map' + ] +endif + + +# And the build targets: Static and dynamic libraries, command-line +# utility, LADSPA plugin, Vamp plugin + +message('Will build Rubber Band Library static library') +rubberband_static = static_library( + 'rubberband', + library_sources, + feature_sources, + include_directories: [ + general_include_dirs, + ], + cpp_args: [ + feature_defines, + ], + c_args: [ + feature_defines, + ], + dependencies: [ + feature_dependencies, + thread_dep, + ], + pic: true, + install: true, +) + +rubberband_static_dep = declare_dependency( + link_with: rubberband_static, +) + +if system != 'windows' + message('Will build Rubber Band Library dynamic library') + rubberband_dynamic = shared_library( + 'rubberband', + objects: rubberband_static.extract_all_objects(), + link_args: [ + feature_libraries, + ], + dependencies: [ + feature_dependencies, + thread_dep, + ], + version: rubberband_dynamic_library_version, + install: true, + ) +endif + +if have_ladspa + message('Will build LADSPA plugin') + rubberband_ladspa = shared_library( + 'ladspa-rubberband', + ladspa_sources, + include_directories: [ + general_include_dirs, + ], + cpp_args: [ + feature_defines, + ], + c_args: [ + feature_defines, + ], + link_args: [ + feature_libraries, + ladspa_symbol_args, + ], + dependencies: [ + rubberband_static_dep, + feature_dependencies, + thread_dep, + ], + name_prefix: '', + install: true, + install_dir: get_option('libdir') / 'ladspa', + ) + install_data( + 'ladspa/ladspa-rubberband.cat', + install_dir: get_option('libdir') / 'ladspa', + ) + install_data( + 'ladspa/ladspa-rubberband.rdf', + install_dir: get_option('datadir') / 'ladspa/rdf', + ) +else + message('Not building LADSPA plugin: ladspa.h header not found') +endif + +if vamp_dep.found() + message('Will build Vamp plugin') + rubberband_vamp = shared_library( + 'vamp-rubberband', + vamp_sources, + include_directories: [ + general_include_dirs, + ], + cpp_args: [ + feature_defines, + ], + c_args: [ + feature_defines, + ], + link_args: [ + feature_libraries, + vamp_symbol_args, + ], + dependencies: [ + rubberband_static_dep, + feature_dependencies, + vamp_dep, + thread_dep, + ], + name_prefix: '', + install: true, + install_dir: get_option('libdir') / 'vamp', + ) + install_data( + 'vamp/vamp-rubberband.cat', + install_dir: get_option('libdir') / 'vamp', + ) +else + message('Not building Vamp plugin: Vamp dependency not found') +endif + +if sndfile_dep.found() + message('Will build command-line utility') + rubberband_program = executable( + 'rubberband', + program_sources, + include_directories: [ + general_include_dirs, + ], + cpp_args: [ + feature_defines, + ], + c_args: [ + feature_defines, + ], + link_args: [ + feature_libraries, + ], + dependencies: [ + rubberband_static_dep, + feature_dependencies, + sndfile_dep, + thread_dep, + ], + install: true, + ) +else + message('Not building command-line utility: dependency libsndfile not found') +endif + +pkg.generate( + name: 'rubberband', + description: 'Audio time-stretching and pitch-shifting library', + url: 'https://breakfastquay.com/rubberband/', + version: meson.project_version(), + requires: pkgconfig_requirements, + libraries: '-L${libdir} -lrubberband', + extra_cflags: '-I${includedir}', +) diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000..c3e255f --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,18 @@ + +option('fft', + type: 'combo', + choices: ['auto', 'kissfft', 'fftw', 'vdsp', 'ipp'], + value: 'auto', + description: 'FFT library to use. The default (auto) will use vDSP if available, KissFFT otherwise.') + +option('resampler', + type: 'combo', + choices: ['auto', 'libsamplerate', 'speex', 'ipp'], + value: 'auto', + description: 'Resampler library to use. Recommended is libsamplerate. The default (auto) will use libsamplerate if available, speex otherwise.') + +option('ipp_path', + type: 'string', + value: '', + description: 'Path to Intel IPP libraries, if selected for any of the other options.') + From 424be79394de5de55680b344271571793ed09537 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 5 Feb 2021 17:08:17 +0000 Subject: [PATCH 24/93] Mac architecture selection --- meson.build | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/meson.build b/meson.build index 3a349ad..748d83d 100644 --- a/meson.build +++ b/meson.build @@ -97,6 +97,7 @@ feature_defines = [] feature_libraries = [] feature_sources = [] pkgconfig_requirements = [] +arch_flags = [] resampler = get_option('resampler') fft = get_option('fft') @@ -238,13 +239,26 @@ if system == 'darwin' vamp_symbol_args += [ '-exported_symbols_list', meson.source_root() / 'vamp/vamp-plugin.list' ] + if architecture == 'aarch64' + arch_flags = [ + '-mmacosx-version-min=11', + '-arch', 'arm64' + ] + elif architecture == 'x86_64' + arch_flags = [ + '-mmacosx-version-min=10.11', + '-arch', 'x86_64', + ] + endif # architecture + elif system == 'windows' if meson.get_compiler('cpp').get_id() == 'msvc' feature_defines += ['-D__MSVC__', '-DNOMINMAX', '-D_USE_MATH_DEFINES'] ladspa_symbol_args += ['-EXPORT:ladspa_descriptor'] vamp_symbol_args += ['-EXPORT:vampGetPluginDescriptor'] endif -else + +else # system not darwin or windows feature_defines += ['-DUSE_PTHREADS', '-DHAVE_POSIX_MEMALIGN'] ladspa_symbol_args += [ '-Wl,--version-script=' + meson.source_root() / 'ladspa/ladspa-plugin.map' @@ -252,7 +266,7 @@ else vamp_symbol_args += [ '-Wl,--version-script=' + meson.source_root() / 'vamp/vamp-plugin.map' ] -endif +endif # system # And the build targets: Static and dynamic libraries, command-line @@ -267,9 +281,11 @@ rubberband_static = static_library( general_include_dirs, ], cpp_args: [ + arch_flags, feature_defines, ], c_args: [ + arch_flags, feature_defines, ], dependencies: [ @@ -290,6 +306,7 @@ if system != 'windows' 'rubberband', objects: rubberband_static.extract_all_objects(), link_args: [ + arch_flags, feature_libraries, ], dependencies: [ @@ -310,12 +327,15 @@ if have_ladspa general_include_dirs, ], cpp_args: [ + arch_flags, feature_defines, ], c_args: [ + arch_flags, feature_defines, ], link_args: [ + arch_flags, feature_libraries, ladspa_symbol_args, ], @@ -349,12 +369,15 @@ if vamp_dep.found() general_include_dirs, ], cpp_args: [ + arch_flags, feature_defines, ], c_args: [ + arch_flags, feature_defines, ], link_args: [ + arch_flags, feature_libraries, vamp_symbol_args, ], @@ -385,12 +408,15 @@ if sndfile_dep.found() general_include_dirs, ], cpp_args: [ + arch_flags, feature_defines, ], c_args: [ + arch_flags, feature_defines, ], link_args: [ + arch_flags, feature_libraries, ], dependencies: [ From c23d30fc4ac2bcf3df36e99d0de1417ab666324c Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 5 Feb 2021 17:28:20 +0000 Subject: [PATCH 25/93] Windows fixes --- meson.build | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/meson.build b/meson.build index 748d83d..bbb98c0 100644 --- a/meson.build +++ b/meson.build @@ -5,8 +5,7 @@ project( version: '1.9.0', license: 'GPL-2.0', default_options: [ - 'cpp_std=c++98', - 'warning_level=2', + 'cpp_std=c++11', 'buildtype=release', 'b_ndebug=if-release', 'b_lundef=true', @@ -146,7 +145,7 @@ elif fft == 'vdsp' elif fft == 'ipp' if ipp_path != '' - message('For FFT: IPP selected') + message('For FFT: using IPP') message('IPP path defined as ' + ipp_path) else error('For FFT: IPP selected, but ipp_path not specified') @@ -169,14 +168,14 @@ if resampler == 'libsamplerate' pkgconfig_requirements += samplerate_dep elif resampler == 'speex' - message('For resampler: speex selected') + message('For resampler: using Speex') message('(consider libsamplerate if time-varying pitch shift is required)') feature_sources += ['src/speex/resample.c'] feature_defines += ['-DUSE_SPEEX'] elif resampler == 'ipp' if ipp_path != '' - message('For resampler: IPP selected') + message('For resampler: using IPP') message('(consider libsamplerate if time-varying pitch shift is required)') message('IPP path defined as ' + ipp_path) else @@ -227,6 +226,9 @@ endif # ipp_needed ladspa_symbol_args = [] vamp_symbol_args = [] +platform_static_name_prefix = [] +platform_static_name_suffix = [] + if get_option('buildtype').startswith('release') feature_defines += ['-DNO_THREAD_CHECKS', '-DNO_TIMING', '-DNDEBUG'] endif @@ -253,9 +255,13 @@ if system == 'darwin' elif system == 'windows' if meson.get_compiler('cpp').get_id() == 'msvc' - feature_defines += ['-D__MSVC__', '-DNOMINMAX', '-D_USE_MATH_DEFINES'] + feature_defines += ['-DWIN32', '-D__MSVC__', '-DNOMINMAX', '-D_USE_MATH_DEFINES'] ladspa_symbol_args += ['-EXPORT:ladspa_descriptor'] vamp_symbol_args += ['-EXPORT:vampGetPluginDescriptor'] + # Meson likes libxxx.a even on Windows, and so might we for a + # new library, but not here + platform_static_name_prefix = '' + platform_static_name_suffix = 'lib' endif else # system not darwin or windows @@ -292,6 +298,8 @@ rubberband_static = static_library( feature_dependencies, thread_dep, ], + name_prefix: platform_static_name_prefix, + name_suffix: platform_static_name_suffix, pic: true, install: true, ) From 4be543a4b2d573cc114708bbea6a79ceb57f0ecb Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 9 Feb 2021 10:13:45 +0000 Subject: [PATCH 26/93] Export DLL symbols --- rubberband/RubberBandStretcher.h | 10 +++++- rubberband/rubberband-c.h | 59 ++++++++++++++++++-------------- 2 files changed, 43 insertions(+), 26 deletions(-) diff --git a/rubberband/RubberBandStretcher.h b/rubberband/RubberBandStretcher.h index ad16ca3..1bc0829 100644 --- a/rubberband/RubberBandStretcher.h +++ b/rubberband/RubberBandStretcher.h @@ -28,6 +28,13 @@ #define RUBBERBAND_API_MAJOR_VERSION 2 #define RUBBERBAND_API_MINOR_VERSION 6 +#undef RUBBERBAND_DLLEXPORT +#ifdef _MSC_VER +#define RUBBERBAND_DLLEXPORT __declspec(dllexport) +#else +#define RUBBERBAND_DLLEXPORT +#endif + #include #include #include @@ -60,7 +67,8 @@ namespace RubberBand { -class RubberBandStretcher +class RUBBERBAND_DLLEXPORT +RubberBandStretcher { public: /** diff --git a/rubberband/rubberband-c.h b/rubberband/rubberband-c.h index 41bcfac..2a5e56d 100644 --- a/rubberband/rubberband-c.h +++ b/rubberband/rubberband-c.h @@ -32,6 +32,13 @@ extern "C" { #define RUBBERBAND_API_MAJOR_VERSION 2 #define RUBBERBAND_API_MINOR_VERSION 6 +#undef RB_EXTERN +#ifdef _MSC_VER +#define RB_EXTERN extern __declspec(dllexport) +#else +#define RB_EXTERN extern +#endif + /** * This is a C-linkage interface to the Rubber Band time stretcher. * @@ -91,52 +98,54 @@ typedef int RubberBandOptions; struct RubberBandState_; typedef struct RubberBandState_ *RubberBandState; -extern RubberBandState rubberband_new(unsigned int sampleRate, +RB_EXTERN RubberBandState rubberband_new(unsigned int sampleRate, unsigned int channels, RubberBandOptions options, double initialTimeRatio, double initialPitchScale); -extern void rubberband_delete(RubberBandState); +RB_EXTERN void rubberband_delete(RubberBandState); -extern void rubberband_reset(RubberBandState); +RB_EXTERN void rubberband_reset(RubberBandState); -extern void rubberband_set_time_ratio(RubberBandState, double ratio); -extern void rubberband_set_pitch_scale(RubberBandState, double scale); +RB_EXTERN void rubberband_set_time_ratio(RubberBandState, double ratio); +RB_EXTERN void rubberband_set_pitch_scale(RubberBandState, double scale); -extern double rubberband_get_time_ratio(const RubberBandState); -extern double rubberband_get_pitch_scale(const RubberBandState); +RB_EXTERN double rubberband_get_time_ratio(const RubberBandState); +RB_EXTERN double rubberband_get_pitch_scale(const RubberBandState); -extern unsigned int rubberband_get_latency(const RubberBandState); +RB_EXTERN unsigned int rubberband_get_latency(const RubberBandState); -extern void rubberband_set_transients_option(RubberBandState, RubberBandOptions options); -extern void rubberband_set_detector_option(RubberBandState, RubberBandOptions options); -extern void rubberband_set_phase_option(RubberBandState, RubberBandOptions options); -extern void rubberband_set_formant_option(RubberBandState, RubberBandOptions options); -extern void rubberband_set_pitch_option(RubberBandState, RubberBandOptions options); +RB_EXTERN void rubberband_set_transients_option(RubberBandState, RubberBandOptions options); +RB_EXTERN void rubberband_set_detector_option(RubberBandState, RubberBandOptions options); +RB_EXTERN void rubberband_set_phase_option(RubberBandState, RubberBandOptions options); +RB_EXTERN void rubberband_set_formant_option(RubberBandState, RubberBandOptions options); +RB_EXTERN void rubberband_set_pitch_option(RubberBandState, RubberBandOptions options); -extern void rubberband_set_expected_input_duration(RubberBandState, unsigned int samples); +RB_EXTERN void rubberband_set_expected_input_duration(RubberBandState, unsigned int samples); -extern unsigned int rubberband_get_samples_required(const RubberBandState); +RB_EXTERN unsigned int rubberband_get_samples_required(const RubberBandState); -extern void rubberband_set_max_process_size(RubberBandState, unsigned int samples); -extern void rubberband_set_key_frame_map(RubberBandState, unsigned int keyframecount, unsigned int *from, unsigned int *to); +RB_EXTERN void rubberband_set_max_process_size(RubberBandState, unsigned int samples); +RB_EXTERN void rubberband_set_key_frame_map(RubberBandState, unsigned int keyframecount, unsigned int *from, unsigned int *to); -extern void rubberband_study(RubberBandState, const float *const *input, unsigned int samples, int final); -extern void rubberband_process(RubberBandState, const float *const *input, unsigned int samples, int final); +RB_EXTERN void rubberband_study(RubberBandState, const float *const *input, unsigned int samples, int final); +RB_EXTERN void rubberband_process(RubberBandState, const float *const *input, unsigned int samples, int final); -extern int rubberband_available(const RubberBandState); -extern unsigned int rubberband_retrieve(const RubberBandState, float *const *output, unsigned int samples); +RB_EXTERN int rubberband_available(const RubberBandState); +RB_EXTERN unsigned int rubberband_retrieve(const RubberBandState, float *const *output, unsigned int samples); -extern unsigned int rubberband_get_channel_count(const RubberBandState); +RB_EXTERN unsigned int rubberband_get_channel_count(const RubberBandState); -extern void rubberband_calculate_stretch(RubberBandState); +RB_EXTERN void rubberband_calculate_stretch(RubberBandState); -extern void rubberband_set_debug_level(RubberBandState, int level); -extern void rubberband_set_default_debug_level(int level); +RB_EXTERN void rubberband_set_debug_level(RubberBandState, int level); +RB_EXTERN void rubberband_set_default_debug_level(int level); #ifdef __cplusplus } #endif +#undef RB_EXTERN + #endif From bea927e658c865dd47a7a7079f0de4cde1418429 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 9 Feb 2021 10:14:00 +0000 Subject: [PATCH 27/93] Ignore a couple more files & dirs --- .hgignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.hgignore b/.hgignore index 2070702..7c0b5fe 100644 --- a/.hgignore +++ b/.hgignore @@ -22,4 +22,6 @@ re:^x64/Debug/ re:^x64/Release/ re:^Release/ re:^Debug/ -build/ +build +build_* +UpgradeLog* From caeed3427d9c1df8bddb7296deeb4a5338586491 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 9 Feb 2021 10:16:02 +0000 Subject: [PATCH 28/93] Tidy & wording --- meson.build | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/meson.build b/meson.build index bbb98c0..4247200 100644 --- a/meson.build +++ b/meson.build @@ -17,6 +17,8 @@ rubberband_dynamic_library_version = '2.1.2' system = build_machine.system() architecture = host_machine.cpu_family() +cpp = meson.get_compiler('cpp') + pkg = import('pkgconfig') @@ -86,7 +88,7 @@ samplerate_dep = dependency('samplerate', version: '>= 0.1.8', required: false) sndfile_dep = dependency('sndfile', version: '>= 1.0.16', required: false) vamp_dep = dependency('vamp-sdk', version: '>= 2.9', required: false) thread_dep = dependency('threads') -have_ladspa = meson.get_compiler('cpp').has_header('ladspa.h') +have_ladspa = cpp.has_header('ladspa.h') # Check FFT and resampler options and set up dependencies and paths @@ -254,7 +256,7 @@ if system == 'darwin' endif # architecture elif system == 'windows' - if meson.get_compiler('cpp').get_id() == 'msvc' + if cpp.get_id() == 'msvc' feature_defines += ['-DWIN32', '-D__MSVC__', '-DNOMINMAX', '-D_USE_MATH_DEFINES'] ladspa_symbol_args += ['-EXPORT:ladspa_descriptor'] vamp_symbol_args += ['-EXPORT:vampGetPluginDescriptor'] @@ -308,23 +310,21 @@ rubberband_static_dep = declare_dependency( link_with: rubberband_static, ) -if system != 'windows' - message('Will build Rubber Band Library dynamic library') - rubberband_dynamic = shared_library( - 'rubberband', - objects: rubberband_static.extract_all_objects(), - link_args: [ - arch_flags, - feature_libraries, - ], - dependencies: [ - feature_dependencies, - thread_dep, - ], - version: rubberband_dynamic_library_version, - install: true, - ) -endif +message('Will build Rubber Band Library dynamic library') +rubberband_dynamic = shared_library( + 'rubberband', + objects: rubberband_static.extract_all_objects(), + link_args: [ + arch_flags, + feature_libraries, + ], + dependencies: [ + feature_dependencies, + thread_dep, + ], + version: rubberband_dynamic_library_version, + install: true, +) if have_ladspa message('Will build LADSPA plugin') @@ -436,7 +436,7 @@ if sndfile_dep.found() install: true, ) else - message('Not building command-line utility: dependency libsndfile not found') + message('Not building command-line utility: libsndfile dependency not found') endif pkg.generate( From 18c06ab8c431854056407c467f4755f761e36a8e Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 9 Feb 2021 11:12:20 +0000 Subject: [PATCH 29/93] Windows build fixes --- meson.build | 192 ++++++++++++++++++++++++++-------------------- meson_options.txt | 15 ++++ 2 files changed, 124 insertions(+), 83 deletions(-) diff --git a/meson.build b/meson.build index 4247200..6a25029 100644 --- a/meson.build +++ b/meson.build @@ -63,6 +63,13 @@ program_sources = [ 'main/main.cpp', ] +if system == 'windows' + program_sources += [ + 'src/getopt/getopt.c', + 'src/getopt/getopt_long.c' + ] +endif + vamp_sources = [ 'vamp/RubberBandVampPlugin.cpp', 'vamp/libmain.cpp', @@ -103,6 +110,7 @@ arch_flags = [] resampler = get_option('resampler') fft = get_option('fft') ipp_path = get_option('ipp_path') +ipp_needed = false if fft == 'auto' if system == 'darwin' @@ -120,7 +128,10 @@ if resampler == 'auto' endif endif -ipp_needed = false +extra_include_args = [] +foreach d: get_option('extra_include_dirs') + extra_include_args += '-I' + d +endforeach if fft == 'kissfft' message('For FFT: using KissFFT') @@ -133,12 +144,16 @@ if fft == 'kissfft' elif fft == 'fftw' if fftw3_dep.found() message('For FFT: using FFTW') + pkgconfig_requirements += fftw3_dep else - error('For FFT: FFTW selected, but dependency not found') + fftw_dep = cpp.find_library('fftw3', + dirs: get_option('extra_lib_dirs'), + has_headers: ['fftw3.h'], + header_args: extra_include_args, + required: true) endif feature_dependencies += fftw3_dep feature_defines += ['-DHAVE_FFTW3', '-DFFTW_DOUBLE_ONLY'] - pkgconfig_requirements += fftw3_dep elif fft == 'vdsp' message('For FFT: using vDSP') @@ -162,12 +177,16 @@ endif # fft if resampler == 'libsamplerate' if samplerate_dep.found() message('For resampler: using libsamplerate') + pkgconfig_requirements += samplerate_dep else - error('For resampler: libsamplerate selected, but dependency not found') + samplerate_dep = cpp.find_library('samplerate', + dirs: get_option('extra_lib_dirs'), + has_headers: ['samplerate.h'], + header_args: extra_include_args, + required: true) endif feature_dependencies += samplerate_dep feature_defines += ['-DHAVE_LIBSAMPLERATE'] - pkgconfig_requirements += samplerate_dep elif resampler == 'speex' message('For resampler: using Speex') @@ -222,6 +241,31 @@ if ipp_needed endif endif # ipp_needed +if not vamp_dep.found() + vamp_dep = cpp.find_library('VampPluginSDK', + dirs: get_option('extra_lib_dirs'), + has_headers: ['vamp-sdk.h'], + header_args: extra_include_args, + required: false) + if not vamp_dep.found() + vamp_dep = cpp.find_library('vamp-sdk', + dirs: get_option('extra_lib_dirs'), + has_headers: ['vamp-sdk.h'], + header_args: extra_include_args, + required: false) + endif +endif +have_vamp = vamp_dep.found() + +if not sndfile_dep.found() + sndfile_dep = cpp.find_library('sndfile', + dirs: get_option('extra_lib_dirs'), + has_headers: ['sndfile.h'], + header_args: extra_include_args, + required: false) +endif +have_sndfile = sndfile_dep.found() + # General platform and compiler expectations @@ -257,13 +301,9 @@ if system == 'darwin' elif system == 'windows' if cpp.get_id() == 'msvc' - feature_defines += ['-DWIN32', '-D__MSVC__', '-DNOMINMAX', '-D_USE_MATH_DEFINES'] + feature_defines += ['-DWIN32', '-D__MSVC__', '-DNOMINMAX', '-D_USE_MATH_DEFINES', '-DGETOPT_API='] ladspa_symbol_args += ['-EXPORT:ladspa_descriptor'] vamp_symbol_args += ['-EXPORT:vampGetPluginDescriptor'] - # Meson likes libxxx.a even on Windows, and so might we for a - # new library, but not here - platform_static_name_prefix = '' - platform_static_name_suffix = 'lib' endif else # system not darwin or windows @@ -277,29 +317,41 @@ else # system not darwin or windows endif # system +general_include_dirs += get_option('extra_include_dirs') +general_compile_args = [ arch_flags, feature_defines ] +general_dependencies = [ feature_dependencies, thread_dep ] + +if system == 'windows' + if get_option('no_shared') + rubberband_static_name = 'rubberband' + else + rubberband_static_name = 'rubberband-static' + endif + rubberband_dynamic_name = 'rubberband' + rubberband_program_name = 'rubberband-program' + # Meson likes libxxx.a even on Windows, and so might we for a + # new library, but not here + platform_static_name_prefix = '' + platform_static_name_suffix = 'lib' +else + rubberband_static_name = 'rubberband' + rubberband_dynamic_name = 'rubberband' + rubberband_program_name = 'rubberband' +endif + + # And the build targets: Static and dynamic libraries, command-line # utility, LADSPA plugin, Vamp plugin message('Will build Rubber Band Library static library') rubberband_static = static_library( - 'rubberband', + rubberband_static_name, library_sources, feature_sources, - include_directories: [ - general_include_dirs, - ], - cpp_args: [ - arch_flags, - feature_defines, - ], - c_args: [ - arch_flags, - feature_defines, - ], - dependencies: [ - feature_dependencies, - thread_dep, - ], + include_directories: general_include_dirs, + cpp_args: general_compile_args, + c_args: general_compile_args, + dependencies: general_dependencies, name_prefix: platform_static_name_prefix, name_suffix: platform_static_name_suffix, pic: true, @@ -310,38 +362,31 @@ rubberband_static_dep = declare_dependency( link_with: rubberband_static, ) -message('Will build Rubber Band Library dynamic library') -rubberband_dynamic = shared_library( - 'rubberband', - objects: rubberband_static.extract_all_objects(), - link_args: [ - arch_flags, - feature_libraries, - ], - dependencies: [ - feature_dependencies, - thread_dep, - ], - version: rubberband_dynamic_library_version, - install: true, -) +if not get_option('no_shared') + message('Will build Rubber Band Library dynamic library') + rubberband_dynamic = shared_library( + rubberband_dynamic_name, + objects: rubberband_static.extract_all_objects(), + link_args: [ + arch_flags, + feature_libraries, + ], + dependencies: general_dependencies, + version: rubberband_dynamic_library_version, + install: true, + ) +else + message('Not building Rubber Band Library dynamic library: no_shared option set') +endif if have_ladspa message('Will build LADSPA plugin') rubberband_ladspa = shared_library( 'ladspa-rubberband', ladspa_sources, - include_directories: [ - general_include_dirs, - ], - cpp_args: [ - arch_flags, - feature_defines, - ], - c_args: [ - arch_flags, - feature_defines, - ], + include_directories: general_include_dirs, + cpp_args: general_compile_args, + c_args: general_compile_args, link_args: [ arch_flags, feature_libraries, @@ -349,8 +394,7 @@ if have_ladspa ], dependencies: [ rubberband_static_dep, - feature_dependencies, - thread_dep, + general_dependencies, ], name_prefix: '', install: true, @@ -368,22 +412,14 @@ else message('Not building LADSPA plugin: ladspa.h header not found') endif -if vamp_dep.found() +if have_vamp message('Will build Vamp plugin') rubberband_vamp = shared_library( 'vamp-rubberband', vamp_sources, - include_directories: [ - general_include_dirs, - ], - cpp_args: [ - arch_flags, - feature_defines, - ], - c_args: [ - arch_flags, - feature_defines, - ], + include_directories: general_include_dirs, + cpp_args: general_compile_args, + c_args: general_compile_args, link_args: [ arch_flags, feature_libraries, @@ -391,9 +427,8 @@ if vamp_dep.found() ], dependencies: [ rubberband_static_dep, - feature_dependencies, + general_dependencies, vamp_dep, - thread_dep, ], name_prefix: '', install: true, @@ -407,31 +442,22 @@ else message('Not building Vamp plugin: Vamp dependency not found') endif -if sndfile_dep.found() +if have_sndfile message('Will build command-line utility') rubberband_program = executable( - 'rubberband', + rubberband_program_name, program_sources, - include_directories: [ - general_include_dirs, - ], - cpp_args: [ - arch_flags, - feature_defines, - ], - c_args: [ - arch_flags, - feature_defines, - ], + include_directories: general_include_dirs, + cpp_args: general_compile_args, + c_args: general_compile_args, link_args: [ arch_flags, feature_libraries, ], dependencies: [ rubberband_static_dep, - feature_dependencies, + general_dependencies, sndfile_dep, - thread_dep, ], install: true, ) diff --git a/meson_options.txt b/meson_options.txt index c3e255f..1703806 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -16,3 +16,18 @@ option('ipp_path', value: '', description: 'Path to Intel IPP libraries, if selected for any of the other options.') +option('extra_include_dirs', + type: 'array', + value: [], + description: 'Additional local header directories to search for dependencies.') + +option('extra_lib_dirs', + type: 'array', + value: [], + description: 'Additional local library directories to search for dependencies.') + +option('no_shared', + type: 'boolean', + value: 'false', + description: 'Do not build shared libraries. On Windows this will also ensure that the static library is called simply rubberband.lib, not rubberband-static.lib as it is in the default build.') + From a90f72e6c501971e850c8a3f0cfc11f88996a53a Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 9 Feb 2021 12:06:07 +0000 Subject: [PATCH 30/93] CI update --- .build.yml | 8 +++++--- .travis.yml | 27 --------------------------- meson.build | 2 +- 3 files changed, 6 insertions(+), 31 deletions(-) delete mode 100644 .travis.yml diff --git a/.build.yml b/.build.yml index 5bd899e..b66fa42 100644 --- a/.build.yml +++ b/.build.yml @@ -1,4 +1,4 @@ -image: ubuntu/18.04 +image: ubuntu/20.04 packages: - pkg-config - libsamplerate0-dev @@ -6,15 +6,17 @@ packages: - libfftw3-dev - ladspa-sdk - vamp-plugin-sdk + - meson + - ninja-build sources: - hg+https://hg.sr.ht/~breakfastquay/rubberband tasks: - setup: | cd rubberband - ./configure + meson build - build: | cd rubberband - make + ninja -C build triggers: - action: email condition: always diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 11e4a96..0000000 --- a/.travis.yml +++ /dev/null @@ -1,27 +0,0 @@ -dist: - - trusty - -language: - - cpp - -sudo: - - false - -os: - - osx - -cache: - directories: - - $HOME/Library/Caches/Homebrew - - /usr/local/Homebrew - -before_cache: - - if [ "${TRAVIS_OS_NAME}" = "osx" ]; then brew cleanup; fi - - if [ "${TRAVIS_OS_NAME}" = "osx" ]; then find /usr/local/Homebrew \! -regex ".+\.git.+" -delete; fi - -before_install: - - if [[ "$TRAVIS_OS_NAME" = "osx" ]] ; then brew update ; brew install libsndfile ; fi - -script: - - if [[ "$TRAVIS_OS_NAME" = "osx" ]] ; then make -f Makefile.macos && make -f Makefile.ios clean && make -f Makefile.ios ; else ./configure && make ; fi - diff --git a/meson.build b/meson.build index 6a25029..5bd44ef 100644 --- a/meson.build +++ b/meson.build @@ -10,7 +10,7 @@ project( 'b_ndebug=if-release', 'b_lundef=true', ], - meson_version: '>= 0.54.0' + meson_version: '>= 0.53.0' ) rubberband_dynamic_library_version = '2.1.2' From ea04acbcacfdcfcd3d3519d2b56220969f982aea Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 9 Feb 2021 12:13:09 +0000 Subject: [PATCH 31/93] See if we can work around a curious error from Meson 0.53 --- meson.build | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index 5bd44ef..ee32c9b 100644 --- a/meson.build +++ b/meson.build @@ -130,7 +130,7 @@ endif extra_include_args = [] foreach d: get_option('extra_include_dirs') - extra_include_args += '-I' + d + extra_include_args += [ '-I' + d ] endforeach if fft == 'kissfft' @@ -272,9 +272,6 @@ have_sndfile = sndfile_dep.found() ladspa_symbol_args = [] vamp_symbol_args = [] -platform_static_name_prefix = [] -platform_static_name_suffix = [] - if get_option('buildtype').startswith('release') feature_defines += ['-DNO_THREAD_CHECKS', '-DNO_TIMING', '-DNDEBUG'] endif @@ -337,6 +334,8 @@ else rubberband_static_name = 'rubberband' rubberband_dynamic_name = 'rubberband' rubberband_program_name = 'rubberband' + platform_static_name_prefix = 'lib' + platform_static_name_suffix = 'a' endif From 63cd0182e449cb8e8a27b1e69f32d7c4e1279317 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 9 Feb 2021 13:21:17 +0000 Subject: [PATCH 32/93] Experimental CI update --- .appveyor.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index 36094aa..f2be469 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -8,11 +8,15 @@ platform: install: - cinst wget + - cinst meson - c:\ProgramData\chocolatey\bin\wget.exe http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28-w32-setup.exe - c:\ProgramData\chocolatey\bin\wget.exe http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28-w64-setup.exe - ps: .\libsndfile-1.0.28-w32-setup.exe /silent /sp- /norestart - ps: .\libsndfile-1.0.28-w64-setup.exe /silent /sp- /norestart build_script: - - msbuild rubberband.sln + - meson build + - ninja -C build + + From fd5357a3ad3da160cf79dbe0b9c278f4a3f0b2cf Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 9 Feb 2021 13:36:48 +0000 Subject: [PATCH 33/93] How very odd, it defaults to clang --- .appveyor.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index f2be469..d614012 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -3,20 +3,18 @@ configuration: - Release platform: - - x86 - x64 install: - cinst wget - cinst meson - - c:\ProgramData\chocolatey\bin\wget.exe http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28-w32-setup.exe - c:\ProgramData\chocolatey\bin\wget.exe http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28-w64-setup.exe - - ps: .\libsndfile-1.0.28-w32-setup.exe /silent /sp- /norestart - ps: .\libsndfile-1.0.28-w64-setup.exe /silent /sp- /norestart +environment: + CC: cl + CXX: cl + build_script: - meson build - ninja -C build - - - From c70aa501fb7538c2cc5327aa584bcec84d91d9bc Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 9 Feb 2021 14:01:40 +0000 Subject: [PATCH 34/93] Let's try this approach --- .appveyor.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index d614012..c3126d7 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -1,4 +1,7 @@ +image: + - Visual Studio 2019 + configuration: - Release @@ -11,10 +14,7 @@ install: - c:\ProgramData\chocolatey\bin\wget.exe http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28-w64-setup.exe - ps: .\libsndfile-1.0.28-w64-setup.exe /silent /sp- /norestart -environment: - CC: cl - CXX: cl - build_script: + - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" - meson build - ninja -C build From 26dfe35908ca8411ebc44fdb9f0231228ba17c5a Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Wed, 10 Feb 2021 11:07:21 +0000 Subject: [PATCH 35/93] Clarify v2-or-later (as is specified already in all the source headers) --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c6bcc6e..46e9002 100644 --- a/README.md +++ b/README.md @@ -24,8 +24,10 @@ CI builds: ## Licence -Rubber Band is distributed under the GNU General Public License. See -the file COPYING for more information. +Rubber Band Library is distributed under the GNU General Public +License (GPL). You can redistribute it and/or modify it under the +terms of the GPL; either version 2 of the License, or (at your option) +any later version. See the file COPYING for more information. If you wish to distribute code using the Rubber Band Library under terms other than those of the GNU General Public License, you must From 7c8fa72c60434675db270c7ae05fd7abf2346cbb Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Wed, 10 Feb 2021 11:07:33 +0000 Subject: [PATCH 36/93] Avoid reserved preprocessor symbols --- ladspa/RubberBandPitchShifter.h | 4 ++-- rubberband/RubberBandStretcher.h | 4 ++-- rubberband/rubberband-c.h | 4 ++-- src/StretchCalculator.h | 4 ++-- src/StretcherChannelData.h | 4 ++-- src/StretcherImpl.h | 4 ++-- src/audiocurves/CompoundAudioCurve.h | 4 ++-- src/audiocurves/ConstantAudioCurve.h | 4 ++-- src/audiocurves/HighFrequencyAudioCurve.h | 4 ++-- src/audiocurves/PercussiveAudioCurve.h | 4 ++-- src/audiocurves/SilentAudioCurve.h | 4 ++-- src/audiocurves/SpectralDifferenceAudioCurve.h | 4 ++-- src/base/Profiler.h | 4 ++-- src/base/RingBuffer.h | 6 +++--- src/base/Scavenger.h | 4 ++-- src/dsp/AudioCurveCalculator.h | 4 ++-- src/dsp/FFT.h | 4 ++-- src/dsp/MovingMedian.h | 4 ++-- src/dsp/SampleFilter.h | 4 ++-- src/dsp/SincWindow.h | 4 ++-- src/dsp/Window.h | 4 ++-- src/pommier/sse_mathfun.h | 4 ++-- src/system/Thread.h | 4 ++-- src/system/VectorOps.h | 4 ++-- src/system/VectorOpsComplex.h | 4 ++-- src/system/sysutils.h | 4 ++-- vamp/RubberBandVampPlugin.h | 4 ++-- 27 files changed, 55 insertions(+), 55 deletions(-) diff --git a/ladspa/RubberBandPitchShifter.h b/ladspa/RubberBandPitchShifter.h index 15a1cf4..7f56e11 100644 --- a/ladspa/RubberBandPitchShifter.h +++ b/ladspa/RubberBandPitchShifter.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _RUBBERBAND_PITCH_SHIFTER_H_ -#define _RUBBERBAND_PITCH_SHIFTER_H_ +#ifndef RUBBERBAND_PITCH_SHIFTER_H +#define RUBBERBAND_PITCH_SHIFTER_H #include diff --git a/rubberband/RubberBandStretcher.h b/rubberband/RubberBandStretcher.h index ad16ca3..ebcf1fa 100644 --- a/rubberband/RubberBandStretcher.h +++ b/rubberband/RubberBandStretcher.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _RUBBERBANDSTRETCHER_H_ -#define _RUBBERBANDSTRETCHER_H_ +#ifndef RUBBERBAND_STRETCHER_H +#define RUBBERBAND_STRETCHER_H #define RUBBERBAND_VERSION "1.9.0" #define RUBBERBAND_API_MAJOR_VERSION 2 diff --git a/rubberband/rubberband-c.h b/rubberband/rubberband-c.h index 41bcfac..5727aa1 100644 --- a/rubberband/rubberband-c.h +++ b/rubberband/rubberband-c.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _RUBBERBAND_C_API_H_ -#define _RUBBERBAND_C_API_H_ +#ifndef RUBBERBAND_C_API_H +#define RUBBERBAND_C_API_H #ifdef __cplusplus extern "C" { diff --git a/src/StretchCalculator.h b/src/StretchCalculator.h index 4f4b2c0..fc3822d 100644 --- a/src/StretchCalculator.h +++ b/src/StretchCalculator.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _RUBBERBAND_STRETCH_CALCULATOR_H_ -#define _RUBBERBAND_STRETCH_CALCULATOR_H_ +#ifndef RUBBERBAND_STRETCH_CALCULATOR_H +#define RUBBERBAND_STRETCH_CALCULATOR_H #include diff --git a/src/StretcherChannelData.h b/src/StretcherChannelData.h index 9b519eb..2147571 100644 --- a/src/StretcherChannelData.h +++ b/src/StretcherChannelData.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _RUBBERBAND_STRETCHERCHANNELDATA_H_ -#define _RUBBERBAND_STRETCHERCHANNELDATA_H_ +#ifndef RUBBERBAND_STRETCHERCHANNELDATA_H +#define RUBBERBAND_STRETCHERCHANNELDATA_H #include "StretcherImpl.h" diff --git a/src/StretcherImpl.h b/src/StretcherImpl.h index 213882f..1f15bd2 100644 --- a/src/StretcherImpl.h +++ b/src/StretcherImpl.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _RUBBERBAND_STRETCHERIMPL_H_ -#define _RUBBERBAND_STRETCHERIMPL_H_ +#ifndef RUBBERBAND_STRETCHERIMPL_H +#define RUBBERBAND_STRETCHERIMPL_H #include "rubberband/RubberBandStretcher.h" diff --git a/src/audiocurves/CompoundAudioCurve.h b/src/audiocurves/CompoundAudioCurve.h index 2cadc4d..123f8a6 100644 --- a/src/audiocurves/CompoundAudioCurve.h +++ b/src/audiocurves/CompoundAudioCurve.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _COMPOUND_AUDIO_CURVE_H_ -#define _COMPOUND_AUDIO_CURVE_H_ +#ifndef RUBBERBAND_COMPOUND_AUDIO_CURVE_H +#define RUBBERBAND_COMPOUND_AUDIO_CURVE_H #include "dsp/AudioCurveCalculator.h" #include "PercussiveAudioCurve.h" diff --git a/src/audiocurves/ConstantAudioCurve.h b/src/audiocurves/ConstantAudioCurve.h index acdc907..a97ac4e 100644 --- a/src/audiocurves/ConstantAudioCurve.h +++ b/src/audiocurves/ConstantAudioCurve.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _CONSTANT_AUDIO_CURVE_H_ -#define _CONSTANT_AUDIO_CURVE_H_ +#ifndef RUBBERBAND_CONSTANT_AUDIO_CURVE_H +#define RUBBERBAND_CONSTANT_AUDIO_CURVE_H #include "dsp/AudioCurveCalculator.h" diff --git a/src/audiocurves/HighFrequencyAudioCurve.h b/src/audiocurves/HighFrequencyAudioCurve.h index eec68f8..34db579 100644 --- a/src/audiocurves/HighFrequencyAudioCurve.h +++ b/src/audiocurves/HighFrequencyAudioCurve.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _HIGHFREQUENCY_AUDIO_CURVE_H_ -#define _HIGHFREQUENCY_AUDIO_CURVE_H_ +#ifndef RUBBERBAND_HIGHFREQUENCY_AUDIO_CURVE_H +#define RUBBERBAND_HIGHFREQUENCY_AUDIO_CURVE_H #include "dsp/AudioCurveCalculator.h" diff --git a/src/audiocurves/PercussiveAudioCurve.h b/src/audiocurves/PercussiveAudioCurve.h index 8c5dde4..645d1dd 100644 --- a/src/audiocurves/PercussiveAudioCurve.h +++ b/src/audiocurves/PercussiveAudioCurve.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _PERCUSSIVE_AUDIO_CURVE_H_ -#define _PERCUSSIVE_AUDIO_CURVE_H_ +#ifndef RUBBERBAND_PERCUSSIVE_AUDIO_CURVE_H +#define RUBBERBAND_PERCUSSIVE_AUDIO_CURVE_H #include "dsp/AudioCurveCalculator.h" diff --git a/src/audiocurves/SilentAudioCurve.h b/src/audiocurves/SilentAudioCurve.h index c6a9f1b..36b7984 100644 --- a/src/audiocurves/SilentAudioCurve.h +++ b/src/audiocurves/SilentAudioCurve.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _SILENT_AUDIO_CURVE_H_ -#define _SILENT_AUDIO_CURVE_H_ +#ifndef RUBBERBAND_SILENT_AUDIO_CURVE_H +#define RUBBERBAND_SILENT_AUDIO_CURVE_H #include "dsp/AudioCurveCalculator.h" diff --git a/src/audiocurves/SpectralDifferenceAudioCurve.h b/src/audiocurves/SpectralDifferenceAudioCurve.h index 9001a05..66b6133 100644 --- a/src/audiocurves/SpectralDifferenceAudioCurve.h +++ b/src/audiocurves/SpectralDifferenceAudioCurve.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _SPECTRALDIFFERENCE_AUDIO_CURVE_H_ -#define _SPECTRALDIFFERENCE_AUDIO_CURVE_H_ +#ifndef RUBBERBAND_SPECTRALDIFFERENCE_AUDIO_CURVE_H +#define RUBBERBAND_SPECTRALDIFFERENCE_AUDIO_CURVE_H #include "dsp/AudioCurveCalculator.h" #include "dsp/Window.h" diff --git a/src/base/Profiler.h b/src/base/Profiler.h index 3a01b0e..bc39107 100644 --- a/src/base/Profiler.h +++ b/src/base/Profiler.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _PROFILER_H_ -#define _PROFILER_H_ +#ifndef RUBBERBAND_PROFILER_H +#define RUBBERBAND_PROFILER_H //#define NO_TIMING 1 //#define WANT_TIMING 1 diff --git a/src/base/RingBuffer.h b/src/base/RingBuffer.h index 7ad0cdb..3586b91 100644 --- a/src/base/RingBuffer.h +++ b/src/base/RingBuffer.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _RUBBERBAND_RINGBUFFER_H_ -#define _RUBBERBAND_RINGBUFFER_H_ +#ifndef RUBBERBAND_RINGBUFFER_H +#define RUBBERBAND_RINGBUFFER_H #include @@ -524,4 +524,4 @@ RingBuffer::zero(int n) } -#endif // _RINGBUFFER_H_ +#endif // _RINGBUFFER_H diff --git a/src/base/Scavenger.h b/src/base/Scavenger.h index e93ee07..e5b9b24 100644 --- a/src/base/Scavenger.h +++ b/src/base/Scavenger.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _RUBBERBAND_SCAVENGER_H_ -#define _RUBBERBAND_SCAVENGER_H_ +#ifndef RUBBERBAND_SCAVENGER_H +#define RUBBERBAND_SCAVENGER_H #include #include diff --git a/src/dsp/AudioCurveCalculator.h b/src/dsp/AudioCurveCalculator.h index ad5abbd..0b47cd0 100644 --- a/src/dsp/AudioCurveCalculator.h +++ b/src/dsp/AudioCurveCalculator.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _AUDIO_CURVE_CALCULATOR_H_ -#define _AUDIO_CURVE_CALCULATOR_H_ +#ifndef RUBBERBAND_AUDIO_CURVE_CALCULATOR_H +#define RUBBERBAND_AUDIO_CURVE_CALCULATOR_H #include diff --git a/src/dsp/FFT.h b/src/dsp/FFT.h index b3328e0..55c763b 100644 --- a/src/dsp/FFT.h +++ b/src/dsp/FFT.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _RUBBERBAND_FFT_H_ -#define _RUBBERBAND_FFT_H_ +#ifndef RUBBERBAND_FFT_H +#define RUBBERBAND_FFT_H #include "system/sysutils.h" diff --git a/src/dsp/MovingMedian.h b/src/dsp/MovingMedian.h index 7eabef1..50b7eca 100644 --- a/src/dsp/MovingMedian.h +++ b/src/dsp/MovingMedian.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _MOVING_MEDIAN_H_ -#define _MOVING_MEDIAN_H_ +#ifndef RUBBERBAND_MOVING_MEDIAN_H +#define RUBBERBAND_MOVING_MEDIAN_H #include "SampleFilter.h" diff --git a/src/dsp/SampleFilter.h b/src/dsp/SampleFilter.h index 2ce5583..9616e20 100644 --- a/src/dsp/SampleFilter.h +++ b/src/dsp/SampleFilter.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _SAMPLE_FILTER_H_ -#define _SAMPLE_FILTER_H_ +#ifndef RUBBERBAND_SAMPLE_FILTER_H +#define RUBBERBAND_SAMPLE_FILTER_H #include diff --git a/src/dsp/SincWindow.h b/src/dsp/SincWindow.h index 8b5d248..43670ad 100644 --- a/src/dsp/SincWindow.h +++ b/src/dsp/SincWindow.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _RUBBERBAND_SINC_WINDOW_H_ -#define _RUBBERBAND_SINC_WINDOW_H_ +#ifndef RUBBERBAND_SINC_WINDOW_H +#define RUBBERBAND_SINC_WINDOW_H #include #include diff --git a/src/dsp/Window.h b/src/dsp/Window.h index 1175fbd..52893a9 100644 --- a/src/dsp/Window.h +++ b/src/dsp/Window.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _RUBBERBAND_WINDOW_H_ -#define _RUBBERBAND_WINDOW_H_ +#ifndef RUBBERBAND_WINDOW_H +#define RUBBERBAND_WINDOW_H #include #include diff --git a/src/pommier/sse_mathfun.h b/src/pommier/sse_mathfun.h index 6d3d5f3..d456ed6 100644 --- a/src/pommier/sse_mathfun.h +++ b/src/pommier/sse_mathfun.h @@ -1,6 +1,6 @@ -#ifndef _POMMIER_SSE_MATHFUN_H_ -#define _POMMIER_SSE_MATHFUN_H_ +#ifndef POMMIER_SSE_MATHFUN_H +#define POMMIER_SSE_MATHFUN_H /* SIMD (SSE1+MMX or SSE2) implementation of sin, cos, exp and log diff --git a/src/system/Thread.h b/src/system/Thread.h index 0e342f9..3a41980 100644 --- a/src/system/Thread.h +++ b/src/system/Thread.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _RUBBERBAND_THREAD_H_ -#define _RUBBERBAND_THREAD_H_ +#ifndef RUBBERBAND_THREAD_H +#define RUBBERBAND_THREAD_H #include diff --git a/src/system/VectorOps.h b/src/system/VectorOps.h index a293fac..cb58498 100644 --- a/src/system/VectorOps.h +++ b/src/system/VectorOps.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _RUBBERBAND_VECTOR_OPS_H_ -#define _RUBBERBAND_VECTOR_OPS_H_ +#ifndef RUBBERBAND_VECTOR_OPS_H +#define RUBBERBAND_VECTOR_OPS_H #ifdef HAVE_IPP #ifndef _MSC_VER diff --git a/src/system/VectorOpsComplex.h b/src/system/VectorOpsComplex.h index 0a78639..8d4161b 100644 --- a/src/system/VectorOpsComplex.h +++ b/src/system/VectorOpsComplex.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _RUBBERBAND_VECTOR_OPS_COMPLEX_H_ -#define _RUBBERBAND_VECTOR_OPS_COMPLEX_H_ +#ifndef RUBBERBAND_VECTOR_OPS_COMPLEX_H +#define RUBBERBAND_VECTOR_OPS_COMPLEX_H #include "VectorOps.h" diff --git a/src/system/sysutils.h b/src/system/sysutils.h index e05c3a5..9a0f53a 100644 --- a/src/system/sysutils.h +++ b/src/system/sysutils.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _RUBBERBAND_SYSUTILS_H_ -#define _RUBBERBAND_SYSUTILS_H_ +#ifndef RUBBERBAND_SYSUTILS_H +#define RUBBERBAND_SYSUTILS_H #ifdef _MSC_VER # if _MSC_VER < 1800 diff --git a/vamp/RubberBandVampPlugin.h b/vamp/RubberBandVampPlugin.h index 10b5b74..5469b5f 100644 --- a/vamp/RubberBandVampPlugin.h +++ b/vamp/RubberBandVampPlugin.h @@ -21,8 +21,8 @@ you must obtain a valid commercial licence before doing so. */ -#ifndef _RUBBERBAND_VAMP_PLUGIN_H_ -#define _RUBBERBAND_VAMP_PLUGIN_H_ +#ifndef RUBBERBAND_VAMP_PLUGIN_H +#define RUBBERBAND_VAMP_PLUGIN_H #include From eb5023e0cf1e69cf16d13b19455e5fc2c5bf4ed5 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Wed, 10 Feb 2021 11:09:50 +0000 Subject: [PATCH 37/93] Clarify v2 or later --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index ee32c9b..17c46d1 100644 --- a/meson.build +++ b/meson.build @@ -3,7 +3,7 @@ project( 'Rubber Band Library', 'c', 'cpp', version: '1.9.0', - license: 'GPL-2.0', + license: 'GPL-2.0-or-later', default_options: [ 'cpp_std=c++11', 'buildtype=release', From cfb4bd6b4f8daa9031f9808b0fdf11a91c982aa6 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Wed, 10 Feb 2021 11:28:05 +0000 Subject: [PATCH 38/93] Summary info --- meson.build | 45 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/meson.build b/meson.build index 17c46d1..c7fcaff 100644 --- a/meson.build +++ b/meson.build @@ -87,8 +87,6 @@ general_include_dirs = [ # Scan for any dependencies we may use later; all are optional -# We collect these first so our summary messages about selected build -# features all appear together at the end fftw3_dep = dependency('fftw3', version: '>= 3.0.0', required: false) samplerate_dep = dependency('samplerate', version: '>= 0.1.8', required: false) @@ -107,6 +105,9 @@ feature_sources = [] pkgconfig_requirements = [] arch_flags = [] +config_summary = {} +target_summary = {} + resampler = get_option('resampler') fft = get_option('fft') ipp_path = get_option('ipp_path') @@ -134,6 +135,7 @@ foreach d: get_option('extra_include_dirs') endforeach if fft == 'kissfft' + config_summary += { 'FFT': 'KissFFT' } message('For FFT: using KissFFT') if fftw3_dep.found() message('(to use FFTW instead, reconfigure with -Dfft=fftw)') @@ -143,6 +145,7 @@ if fft == 'kissfft' elif fft == 'fftw' if fftw3_dep.found() + config_summary += { 'FFT': 'FFTW' } message('For FFT: using FFTW') pkgconfig_requirements += fftw3_dep else @@ -156,12 +159,14 @@ elif fft == 'fftw' feature_defines += ['-DHAVE_FFTW3', '-DFFTW_DOUBLE_ONLY'] elif fft == 'vdsp' + config_summary += { 'FFT': 'vDSP' } message('For FFT: using vDSP') feature_defines += ['-DHAVE_VDSP'] feature_libraries += ['-framework', 'Accelerate'] elif fft == 'ipp' if ipp_path != '' + config_summary += { 'FFT': 'Intel IPP' } message('For FFT: using IPP') message('IPP path defined as ' + ipp_path) else @@ -176,6 +181,7 @@ endif # fft if resampler == 'libsamplerate' if samplerate_dep.found() + config_summary += { 'Resampler': 'libsamplerate' } message('For resampler: using libsamplerate') pkgconfig_requirements += samplerate_dep else @@ -189,6 +195,7 @@ if resampler == 'libsamplerate' feature_defines += ['-DHAVE_LIBSAMPLERATE'] elif resampler == 'speex' + config_summary += { 'Resampler': 'Speex' } message('For resampler: using Speex') message('(consider libsamplerate if time-varying pitch shift is required)') feature_sources += ['src/speex/resample.c'] @@ -196,6 +203,7 @@ elif resampler == 'speex' elif resampler == 'ipp' if ipp_path != '' + config_summary += { 'Resampler': 'Intel IPP' } message('For resampler: using IPP') message('(consider libsamplerate if time-varying pitch shift is required)') message('IPP path defined as ' + ipp_path) @@ -273,7 +281,10 @@ ladspa_symbol_args = [] vamp_symbol_args = [] if get_option('buildtype').startswith('release') + config_summary += { 'Build type': 'Release' } feature_defines += ['-DNO_THREAD_CHECKS', '-DNO_TIMING', '-DNDEBUG'] +else + config_summary += { 'Build type': 'Debug' } endif if system == 'darwin' @@ -285,11 +296,13 @@ if system == 'darwin' '-exported_symbols_list', meson.source_root() / 'vamp/vamp-plugin.list' ] if architecture == 'aarch64' + config_summary += { 'Architecture': 'ARM (macOS 11 or newer)' } arch_flags = [ '-mmacosx-version-min=11', '-arch', 'arm64' ] elif architecture == 'x86_64' + config_summary += { 'Architecture': 'Intel (macOS 10.11 or newer)' } arch_flags = [ '-mmacosx-version-min=10.11', '-arch', 'x86_64', @@ -326,6 +339,8 @@ if system == 'windows' endif rubberband_dynamic_name = 'rubberband' rubberband_program_name = 'rubberband-program' + rubberband_ladspa_name = 'ladspa-rubberband' + rubberband_vamp_name = 'vamp-rubberband' # Meson likes libxxx.a even on Windows, and so might we for a # new library, but not here platform_static_name_prefix = '' @@ -334,6 +349,8 @@ else rubberband_static_name = 'rubberband' rubberband_dynamic_name = 'rubberband' rubberband_program_name = 'rubberband' + rubberband_ladspa_name = 'ladspa-rubberband' + rubberband_vamp_name = 'vamp-rubberband' platform_static_name_prefix = 'lib' platform_static_name_suffix = 'a' endif @@ -343,6 +360,7 @@ endif # utility, LADSPA plugin, Vamp plugin message('Will build Rubber Band Library static library') +target_summary += { 'Static library': [ true, 'Name: ' + rubberband_static_name ] } rubberband_static = static_library( rubberband_static_name, library_sources, @@ -362,7 +380,8 @@ rubberband_static_dep = declare_dependency( ) if not get_option('no_shared') - message('Will build Rubber Band Library dynamic library') + target_summary += { 'Shared library': [ true, 'Name: ' + rubberband_dynamic_name ] } + message('Will build Rubber Band Library shared library') rubberband_dynamic = shared_library( rubberband_dynamic_name, objects: rubberband_static.extract_all_objects(), @@ -375,13 +394,15 @@ if not get_option('no_shared') install: true, ) else + target_summary += { 'Shared library': false } message('Not building Rubber Band Library dynamic library: no_shared option set') endif if have_ladspa + target_summary += { 'LADSPA plugin': [ true, 'Name: ' + rubberband_ladspa_name ] } message('Will build LADSPA plugin') rubberband_ladspa = shared_library( - 'ladspa-rubberband', + rubberband_ladspa_name, ladspa_sources, include_directories: general_include_dirs, cpp_args: general_compile_args, @@ -408,13 +429,15 @@ if have_ladspa install_dir: get_option('datadir') / 'ladspa/rdf', ) else + target_summary += { 'LADSPA plugin': false } message('Not building LADSPA plugin: ladspa.h header not found') endif if have_vamp + target_summary += { 'Vamp plugin': [ true, 'Name: ' + rubberband_vamp_name ] } message('Will build Vamp plugin') rubberband_vamp = shared_library( - 'vamp-rubberband', + rubberband_vamp_name, vamp_sources, include_directories: general_include_dirs, cpp_args: general_compile_args, @@ -438,10 +461,12 @@ if have_vamp install_dir: get_option('libdir') / 'vamp', ) else + target_summary += { 'Vamp plugin': false } message('Not building Vamp plugin: Vamp dependency not found') endif if have_sndfile + target_summary += { 'Command-line utility': [ true, 'Name: ' + rubberband_program_name ] } message('Will build command-line utility') rubberband_program = executable( rubberband_program_name, @@ -461,6 +486,7 @@ if have_sndfile install: true, ) else + target_summary += { 'Command-line utility': false } message('Not building command-line utility: libsndfile dependency not found') endif @@ -473,3 +499,12 @@ pkg.generate( libraries: '-L${libdir} -lrubberband', extra_cflags: '-I${includedir}', ) + +summary({'prefix': get_option('prefix'), + 'bindir': get_option('bindir'), + 'libdir': get_option('libdir'), + 'datadir': get_option('datadir'), + }, section: 'Directories') + +summary(config_summary, section: 'Configuration', bool_yn: true) +summary(target_summary, section: 'Build targets', bool_yn: true) From 2b06851c757ba6c87fab0605fd3ee27046d5f969 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Wed, 10 Feb 2021 13:47:14 +0000 Subject: [PATCH 39/93] Move .NET code into dotnet/ --- dotnet/README.md | 41 +++++++++++++++++++ .../rubberband-dll}/dllmain.cpp | 0 .../rubberband-dll}/rubberband-dll.cpp | 0 .../rubberband-dll}/stdafx.cpp | 0 .../rubberband-dll}/stdafx.h | 0 .../rubberband-dll}/targetver.h | 0 .../rubberband-sharp}/Install.ps1 | 0 .../RubberBandNativeMethods.cs | 0 .../RubberBandNativeMethodsWin32.cs | 0 .../RubberBandNativeMethodsx64.cs | 0 .../rubberband-sharp}/RubberBandStretcher.cs | 0 .../rubberband-sharp}/rubberband-sharp.csproj | 0 .../rubberband-sharp}/rubberband-sharp.nuspec | 0 .../rubberband-sharp.targets | 0 14 files changed, 41 insertions(+) create mode 100644 dotnet/README.md rename {rubberband-dll => dotnet/rubberband-dll}/dllmain.cpp (100%) rename {rubberband-dll => dotnet/rubberband-dll}/rubberband-dll.cpp (100%) rename {rubberband-dll => dotnet/rubberband-dll}/stdafx.cpp (100%) rename {rubberband-dll => dotnet/rubberband-dll}/stdafx.h (100%) rename {rubberband-dll => dotnet/rubberband-dll}/targetver.h (100%) rename {rubberband-sharp => dotnet/rubberband-sharp}/Install.ps1 (100%) rename {rubberband-sharp => dotnet/rubberband-sharp}/RubberBandNativeMethods.cs (100%) rename {rubberband-sharp => dotnet/rubberband-sharp}/RubberBandNativeMethodsWin32.cs (100%) rename {rubberband-sharp => dotnet/rubberband-sharp}/RubberBandNativeMethodsx64.cs (100%) rename {rubberband-sharp => dotnet/rubberband-sharp}/RubberBandStretcher.cs (100%) rename {rubberband-sharp => dotnet/rubberband-sharp}/rubberband-sharp.csproj (100%) rename {rubberband-sharp => dotnet/rubberband-sharp}/rubberband-sharp.nuspec (100%) rename {rubberband-sharp => dotnet/rubberband-sharp}/rubberband-sharp.targets (100%) diff --git a/dotnet/README.md b/dotnet/README.md new file mode 100644 index 0000000..084eccc --- /dev/null +++ b/dotnet/README.md @@ -0,0 +1,41 @@ + +This directory contains a .NET interface for Rubber Band Library, +generously contributed by Jonathan Gilbert under a BSD-like +licence. The directory `rubberband-sharp` contains a managed-code +interface to Rubber Band in C#. It loads and uses the DLL defined in +`rubberband-dll`, that wraps the Rubber Band Library with an API +understood by the `rubberband-sharp` code. + +If you make use of this interface, please ensure you comply with the +terms of its licence, in addition to the GPL licence accompanying +Rubber Band Library itself: + +``` +[files in rubberband-dll and rubberband-sharp] + +Copyright 2018-2019 Jonathan Gilbert + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Jonathan Gilbert +shall not be used in advertising or otherwise to promote the sale, +use or other dealings in this Software without prior written +authorization. +``` diff --git a/rubberband-dll/dllmain.cpp b/dotnet/rubberband-dll/dllmain.cpp similarity index 100% rename from rubberband-dll/dllmain.cpp rename to dotnet/rubberband-dll/dllmain.cpp diff --git a/rubberband-dll/rubberband-dll.cpp b/dotnet/rubberband-dll/rubberband-dll.cpp similarity index 100% rename from rubberband-dll/rubberband-dll.cpp rename to dotnet/rubberband-dll/rubberband-dll.cpp diff --git a/rubberband-dll/stdafx.cpp b/dotnet/rubberband-dll/stdafx.cpp similarity index 100% rename from rubberband-dll/stdafx.cpp rename to dotnet/rubberband-dll/stdafx.cpp diff --git a/rubberband-dll/stdafx.h b/dotnet/rubberband-dll/stdafx.h similarity index 100% rename from rubberband-dll/stdafx.h rename to dotnet/rubberband-dll/stdafx.h diff --git a/rubberband-dll/targetver.h b/dotnet/rubberband-dll/targetver.h similarity index 100% rename from rubberband-dll/targetver.h rename to dotnet/rubberband-dll/targetver.h diff --git a/rubberband-sharp/Install.ps1 b/dotnet/rubberband-sharp/Install.ps1 similarity index 100% rename from rubberband-sharp/Install.ps1 rename to dotnet/rubberband-sharp/Install.ps1 diff --git a/rubberband-sharp/RubberBandNativeMethods.cs b/dotnet/rubberband-sharp/RubberBandNativeMethods.cs similarity index 100% rename from rubberband-sharp/RubberBandNativeMethods.cs rename to dotnet/rubberband-sharp/RubberBandNativeMethods.cs diff --git a/rubberband-sharp/RubberBandNativeMethodsWin32.cs b/dotnet/rubberband-sharp/RubberBandNativeMethodsWin32.cs similarity index 100% rename from rubberband-sharp/RubberBandNativeMethodsWin32.cs rename to dotnet/rubberband-sharp/RubberBandNativeMethodsWin32.cs diff --git a/rubberband-sharp/RubberBandNativeMethodsx64.cs b/dotnet/rubberband-sharp/RubberBandNativeMethodsx64.cs similarity index 100% rename from rubberband-sharp/RubberBandNativeMethodsx64.cs rename to dotnet/rubberband-sharp/RubberBandNativeMethodsx64.cs diff --git a/rubberband-sharp/RubberBandStretcher.cs b/dotnet/rubberband-sharp/RubberBandStretcher.cs similarity index 100% rename from rubberband-sharp/RubberBandStretcher.cs rename to dotnet/rubberband-sharp/RubberBandStretcher.cs diff --git a/rubberband-sharp/rubberband-sharp.csproj b/dotnet/rubberband-sharp/rubberband-sharp.csproj similarity index 100% rename from rubberband-sharp/rubberband-sharp.csproj rename to dotnet/rubberband-sharp/rubberband-sharp.csproj diff --git a/rubberband-sharp/rubberband-sharp.nuspec b/dotnet/rubberband-sharp/rubberband-sharp.nuspec similarity index 100% rename from rubberband-sharp/rubberband-sharp.nuspec rename to dotnet/rubberband-sharp/rubberband-sharp.nuspec diff --git a/rubberband-sharp/rubberband-sharp.targets b/dotnet/rubberband-sharp/rubberband-sharp.targets similarity index 100% rename from rubberband-sharp/rubberband-sharp.targets rename to dotnet/rubberband-sharp/rubberband-sharp.targets From 0c38a07faf6ea88f6d83c2c5137a797639795097 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Wed, 10 Feb 2021 14:24:17 +0000 Subject: [PATCH 40/93] Cross files for macOS and iOS architectures --- cross/ios-simulator.txt | 19 +++++++++++++++++++ cross/ios.txt | 20 ++++++++++++++++++++ cross/macos-arm64.txt | 20 ++++++++++++++++++++ cross/macos-x86_64.txt | 19 +++++++++++++++++++ meson.build | 32 +++++++++++++++++++++++--------- 5 files changed, 101 insertions(+), 9 deletions(-) create mode 100644 cross/ios-simulator.txt create mode 100644 cross/ios.txt create mode 100644 cross/macos-arm64.txt create mode 100644 cross/macos-x86_64.txt diff --git a/cross/ios-simulator.txt b/cross/ios-simulator.txt new file mode 100644 index 0000000..b03149c --- /dev/null +++ b/cross/ios-simulator.txt @@ -0,0 +1,19 @@ +[constants] +sysroot = '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk' +common_args = [ '-isysroot', sysroot, '-arch', 'x86_64', '-mios-version-min=8' ] + +[host_machine] +cpu_family = 'x86_64' +cpu = 'x86_64' +system = 'darwin' +endian = 'little' + +[binaries] +c = 'cc' +cpp = 'c++' +strip = 'strip' + +[built-in options] +c_args = common_args +cpp_args = common_args + [ '-stdlib=libc++' ] +cpp_link_args = cpp_args diff --git a/cross/ios.txt b/cross/ios.txt new file mode 100644 index 0000000..c9a913a --- /dev/null +++ b/cross/ios.txt @@ -0,0 +1,20 @@ +[constants] +sysroot = '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk' +common_args = [ '-isysroot', sysroot, '-arch', 'arm64', '-arch', 'armv7', '-mios-version-min=8' ] + +[host_machine] +cpu_family = 'aarch64' +cpu = 'aarch64' +system = 'darwin' +endian = 'little' + +[binaries] +c = 'cc' +cpp = 'c++' +strip = 'strip' + +[built-in options] +b_bitcode = true +c_args = common_args +cpp_args = common_args + [ '-stdlib=libc++' ] +cpp_link_args = cpp_args diff --git a/cross/macos-arm64.txt b/cross/macos-arm64.txt new file mode 100644 index 0000000..1a7c322 --- /dev/null +++ b/cross/macos-arm64.txt @@ -0,0 +1,20 @@ +[host_machine] +cpu_family = 'aarch64' +cpu = 'aarch64' +system = 'darwin' +endian = 'little' + +[properties] +needs_exe_wrapper = false + +[binaries] +c = 'cc' +cpp = 'c++' +strip = 'strip' + +[built-in options] +c_args = ['-arch', 'arm64'] +cpp_args = ['-arch', 'arm64'] +cpp_link_args = ['-arch', 'arm64'] + + diff --git a/cross/macos-x86_64.txt b/cross/macos-x86_64.txt new file mode 100644 index 0000000..ad979a4 --- /dev/null +++ b/cross/macos-x86_64.txt @@ -0,0 +1,19 @@ +[host_machine] +cpu_family = 'x86_64' +cpu = 'x86_64' +system = 'darwin' +endian = 'little' + +[properties] +needs_exe_wrapper = false + +[binaries] +c = 'cc' +cpp = 'c++' +strip = 'strip' + +[built-in options] +c_args = ['-arch', 'x86_64'] +cpp_args = ['-arch', 'x86_64'] +cpp_link_args = ['-arch', 'x86_64'] + diff --git a/meson.build b/meson.build index c7fcaff..9f5f8b8 100644 --- a/meson.build +++ b/meson.build @@ -295,19 +295,32 @@ if system == 'darwin' vamp_symbol_args += [ '-exported_symbols_list', meson.source_root() / 'vamp/vamp-plugin.list' ] + + have_version_min = false + foreach arg: get_option('cpp_args') + message('arg is ' + arg) + if arg.contains('version-min') + have_version_min = true + endif + endforeach + if architecture == 'aarch64' - config_summary += { 'Architecture': 'ARM (macOS 11 or newer)' } - arch_flags = [ - '-mmacosx-version-min=11', - '-arch', 'arm64' + mac_platform_arguments = [ + '-arch', 'arm64', ] + if not have_version_min + mac_platform_arguments += [ '-mmacosx-version-min=11' ] + endif elif architecture == 'x86_64' - config_summary += { 'Architecture': 'Intel (macOS 10.11 or newer)' } - arch_flags = [ - '-mmacosx-version-min=10.11', + mac_platform_arguments = [ '-arch', 'x86_64', ] - endif # architecture + if not have_version_min + mac_platform_arguments += [ '-mmacosx-version-min=10.13' ] + endif + else # begin architecture != 'aarch64' or 'x86_64' + error('Build for architecture ' + architecture + ' is not supported on this platform') + endif # end architecture elif system == 'windows' if cpp.get_id() == 'msvc' @@ -506,5 +519,6 @@ summary({'prefix': get_option('prefix'), 'datadir': get_option('datadir'), }, section: 'Directories') -summary(config_summary, section: 'Configuration', bool_yn: true) +summary(config_summary + { 'Architecture': architecture }, + section: 'Configuration', bool_yn: true) summary(target_summary, section: 'Build targets', bool_yn: true) From 06767bf01d466d5867adc21b505d4f95a6ca97b2 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Wed, 10 Feb 2021 14:24:23 +0000 Subject: [PATCH 41/93] Move these to dotnet also --- rubberband-dll.vcxproj => dotnet/rubberband-dll.vcxproj | 0 .../rubberband-dll.vcxproj.filters | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename rubberband-dll.vcxproj => dotnet/rubberband-dll.vcxproj (100%) rename rubberband-dll.vcxproj.filters => dotnet/rubberband-dll.vcxproj.filters (100%) diff --git a/rubberband-dll.vcxproj b/dotnet/rubberband-dll.vcxproj similarity index 100% rename from rubberband-dll.vcxproj rename to dotnet/rubberband-dll.vcxproj diff --git a/rubberband-dll.vcxproj.filters b/dotnet/rubberband-dll.vcxproj.filters similarity index 100% rename from rubberband-dll.vcxproj.filters rename to dotnet/rubberband-dll.vcxproj.filters From 093e7cc5d871d1c119db1c7cacaf8b70f82e1ca5 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Wed, 10 Feb 2021 14:36:42 +0000 Subject: [PATCH 42/93] Push old build files (undifferentiated and so far un-updated and untested) into otherbuilds/ --- Makefile.in => otherbuilds/Makefile.in | 0 Makefile.ios => otherbuilds/Makefile.ios | 0 Makefile.macos => otherbuilds/Makefile.macos | 0 Makefile.macos-universal => otherbuilds/Makefile.macos-universal | 0 configure => otherbuilds/configure | 0 configure.ac => otherbuilds/configure.ac | 0 .../rubberband-library.vcxproj | 0 .../rubberband-program.vcxproj | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename Makefile.in => otherbuilds/Makefile.in (100%) rename Makefile.ios => otherbuilds/Makefile.ios (100%) rename Makefile.macos => otherbuilds/Makefile.macos (100%) rename Makefile.macos-universal => otherbuilds/Makefile.macos-universal (100%) rename configure => otherbuilds/configure (100%) rename configure.ac => otherbuilds/configure.ac (100%) rename rubberband-library.vcxproj => otherbuilds/rubberband-library.vcxproj (100%) rename rubberband-program.vcxproj => otherbuilds/rubberband-program.vcxproj (100%) diff --git a/Makefile.in b/otherbuilds/Makefile.in similarity index 100% rename from Makefile.in rename to otherbuilds/Makefile.in diff --git a/Makefile.ios b/otherbuilds/Makefile.ios similarity index 100% rename from Makefile.ios rename to otherbuilds/Makefile.ios diff --git a/Makefile.macos b/otherbuilds/Makefile.macos similarity index 100% rename from Makefile.macos rename to otherbuilds/Makefile.macos diff --git a/Makefile.macos-universal b/otherbuilds/Makefile.macos-universal similarity index 100% rename from Makefile.macos-universal rename to otherbuilds/Makefile.macos-universal diff --git a/configure b/otherbuilds/configure similarity index 100% rename from configure rename to otherbuilds/configure diff --git a/configure.ac b/otherbuilds/configure.ac similarity index 100% rename from configure.ac rename to otherbuilds/configure.ac diff --git a/rubberband-library.vcxproj b/otherbuilds/rubberband-library.vcxproj similarity index 100% rename from rubberband-library.vcxproj rename to otherbuilds/rubberband-library.vcxproj diff --git a/rubberband-program.vcxproj b/otherbuilds/rubberband-program.vcxproj similarity index 100% rename from rubberband-program.vcxproj rename to otherbuilds/rubberband-program.vcxproj From 08198694406bdae97a5e47ec2c1b5806c6559840 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Feb 2021 11:53:25 +0000 Subject: [PATCH 43/93] Update & retarget projects --- rubberband-dll.vcxproj | 9 +++++---- rubberband-library.vcxproj | 9 +++++---- rubberband-program.vcxproj | 9 +++++---- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/rubberband-dll.vcxproj b/rubberband-dll.vcxproj index c641bcf..423eb17 100644 --- a/rubberband-dll.vcxproj +++ b/rubberband-dll.vcxproj @@ -22,32 +22,33 @@ {32C11C5C-3D27-4E57-B72C-161A48AAA95E} rubberbanddll Win32Proj + 10.0 DynamicLibrary false - v140 + v142 true Unicode DynamicLibrary false - v140 + v142 true Unicode DynamicLibrary true - v140 + v142 Unicode DynamicLibrary true - v140 + v142 Unicode diff --git a/rubberband-library.vcxproj b/rubberband-library.vcxproj index 823f714..d13afd9 100644 --- a/rubberband-library.vcxproj +++ b/rubberband-library.vcxproj @@ -22,23 +22,24 @@ {020CEB11-EF4E-400E-971D-A35DB69D7CF9} rubberband-library Win32Proj + 10.0 StaticLibrary - v140 + v142 StaticLibrary - v140 + v142 StaticLibrary - v140 + v142 StaticLibrary - v140 + v142 diff --git a/rubberband-program.vcxproj b/rubberband-program.vcxproj index 00cd8e6..6eb9e6c 100644 --- a/rubberband-program.vcxproj +++ b/rubberband-program.vcxproj @@ -22,23 +22,24 @@ {06838307-FEAA-4DB0-8E08-AF19698E9C40} rubberband-program Win32Proj + 10.0 Application - v140 + v142 Application - v140 + v142 Application - v140 + v142 Application - v140 + v142 From 8bb3e18ffbb2e67cf14b0737019290b5d97d4cde Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Feb 2021 13:46:59 +0000 Subject: [PATCH 44/93] Update project so that it builds from the dotnet dir --- .hgignore | 8 +- dotnet/rubberband-dll.vcxproj | 11 +- .../rubberband-library.vcxproj | 116 +++++++++--------- rubberband.sln => dotnet/rubberband.sln | 30 ++--- 4 files changed, 80 insertions(+), 85 deletions(-) rename {otherbuilds => dotnet}/rubberband-library.vcxproj (66%) rename rubberband.sln => dotnet/rubberband.sln (75%) diff --git a/.hgignore b/.hgignore index 7c0b5fe..a10ed24 100644 --- a/.hgignore +++ b/.hgignore @@ -18,10 +18,10 @@ doc/html *.rej cov-int *~ -re:^x64/Debug/ -re:^x64/Release/ -re:^Release/ -re:^Debug/ +x64/Debug/ +x64/Release/ +Release/ +Debug/ build build_* UpgradeLog* diff --git a/dotnet/rubberband-dll.vcxproj b/dotnet/rubberband-dll.vcxproj index c641bcf..fbe8b31 100644 --- a/dotnet/rubberband-dll.vcxproj +++ b/dotnet/rubberband-dll.vcxproj @@ -22,32 +22,33 @@ {32C11C5C-3D27-4E57-B72C-161A48AAA95E} rubberbanddll Win32Proj + 10.0 DynamicLibrary false - v140 + v142 true Unicode DynamicLibrary false - v140 + v142 true Unicode DynamicLibrary true - v140 + v142 Unicode DynamicLibrary true - v140 + v142 Unicode @@ -151,7 +152,7 @@ true NDEBUG;RUBBERBANDDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true - $(SolutionDir)rubberband;%(AdditionalIncludeDirectories) + $(SolutionDir)\..\rubberband;%(AdditionalIncludeDirectories) Windows diff --git a/otherbuilds/rubberband-library.vcxproj b/dotnet/rubberband-library.vcxproj similarity index 66% rename from otherbuilds/rubberband-library.vcxproj rename to dotnet/rubberband-library.vcxproj index 823f714..4aa1ce8 100644 --- a/otherbuilds/rubberband-library.vcxproj +++ b/dotnet/rubberband-library.vcxproj @@ -22,23 +22,24 @@ {020CEB11-EF4E-400E-971D-A35DB69D7CF9} rubberband-library Win32Proj + 10.0 StaticLibrary - v140 + v142 StaticLibrary - v140 + v142 StaticLibrary - v140 + v142 StaticLibrary - v140 + v142 @@ -63,6 +64,7 @@ Debug\ Debug\ true + $(SourcePath) true @@ -74,7 +76,7 @@ Disabled - .;.\src;%(AdditionalIncludeDirectories) + .;..\src;%(AdditionalIncludeDirectories) __MSVC__;WIN32;_DEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;USE_SPEEX;%(PreprocessorDefinitions) true EnableFastChecks @@ -88,7 +90,7 @@ Disabled - .;.\src;%(AdditionalIncludeDirectories) + .;..\src;%(AdditionalIncludeDirectories) __MSVC__;WIN32;_DEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;USE_SPEEX;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL @@ -106,7 +108,7 @@ true Speed true - .;.\src;%(AdditionalIncludeDirectories) + .;..\src;%(AdditionalIncludeDirectories) __MSVC__;WIN32;NDEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;NO_TIMING;USE_SPEEX;NO_THREAD_CHECKS;%(PreprocessorDefinitions) MultiThreadedDLL false @@ -124,7 +126,7 @@ true Speed true - .;.\src;%(AdditionalIncludeDirectories) + ..;..\src;%(AdditionalIncludeDirectories) __MSVC__;WIN32;NDEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;NO_TIMING;USE_SPEEX;NO_THREAD_CHECKS;%(PreprocessorDefinitions) MultiThreadedDLL false @@ -137,57 +139,57 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/rubberband.sln b/dotnet/rubberband.sln similarity index 75% rename from rubberband.sln rename to dotnet/rubberband.sln index eeb002f..52d3187 100644 --- a/rubberband.sln +++ b/dotnet/rubberband.sln @@ -1,15 +1,10 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31005.135 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rubberband-library", "rubberband-library.vcxproj", "{020CEB11-EF4E-400E-971D-A35DB69D7CF9}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rubberband-program", "rubberband-program.vcxproj", "{06838307-FEAA-4DB0-8E08-AF19698E9C40}" - ProjectSection(ProjectDependencies) = postProject - {020CEB11-EF4E-400E-971D-A35DB69D7CF9} = {020CEB11-EF4E-400E-971D-A35DB69D7CF9} - EndProjectSection -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rubberband-dll", "rubberband-dll.vcxproj", "{32C11C5C-3D27-4E57-B72C-161A48AAA95E}" ProjectSection(ProjectDependencies) = postProject {020CEB11-EF4E-400E-971D-A35DB69D7CF9} = {020CEB11-EF4E-400E-971D-A35DB69D7CF9} @@ -30,32 +25,26 @@ Global Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Debug|Any CPU.ActiveCfg = Debug|x64 + {020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Debug|Any CPU.Build.0 = Debug|x64 {020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Debug|x64.ActiveCfg = Debug|x64 {020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Debug|x64.Build.0 = Debug|x64 {020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Debug|x86.ActiveCfg = Debug|Win32 {020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Debug|x86.Build.0 = Debug|Win32 {020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Release|Any CPU.ActiveCfg = Release|Win32 + {020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Release|Any CPU.Build.0 = Release|Win32 {020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Release|x64.ActiveCfg = Release|x64 {020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Release|x64.Build.0 = Release|x64 {020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Release|x86.ActiveCfg = Release|Win32 {020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Release|x86.Build.0 = Release|Win32 - {06838307-FEAA-4DB0-8E08-AF19698E9C40}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {06838307-FEAA-4DB0-8E08-AF19698E9C40}.Debug|x64.ActiveCfg = Debug|x64 - {06838307-FEAA-4DB0-8E08-AF19698E9C40}.Debug|x64.Build.0 = Debug|x64 - {06838307-FEAA-4DB0-8E08-AF19698E9C40}.Debug|x86.ActiveCfg = Debug|Win32 - {06838307-FEAA-4DB0-8E08-AF19698E9C40}.Debug|x86.Build.0 = Debug|Win32 - {06838307-FEAA-4DB0-8E08-AF19698E9C40}.Release|Any CPU.ActiveCfg = Release|Win32 - {06838307-FEAA-4DB0-8E08-AF19698E9C40}.Release|x64.ActiveCfg = Release|x64 - {06838307-FEAA-4DB0-8E08-AF19698E9C40}.Release|x64.Build.0 = Release|x64 - {06838307-FEAA-4DB0-8E08-AF19698E9C40}.Release|x86.ActiveCfg = Release|Win32 - {06838307-FEAA-4DB0-8E08-AF19698E9C40}.Release|x86.Build.0 = Release|Win32 - {32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|Any CPU.ActiveCfg = Debug|x64 + {32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|Any CPU.Build.0 = Debug|x64 {32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|x64.ActiveCfg = Debug|x64 {32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|x64.Build.0 = Debug|x64 {32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|x86.ActiveCfg = Debug|Win32 {32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|x86.Build.0 = Debug|Win32 {32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Release|Any CPU.ActiveCfg = Release|Win32 + {32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Release|Any CPU.Build.0 = Release|Win32 {32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Release|x64.ActiveCfg = Release|x64 {32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Release|x64.Build.0 = Release|x64 {32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Release|x86.ActiveCfg = Release|Win32 @@ -76,4 +65,7 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {3CFE825B-BD44-4909-B002-AFE8DA45D614} + EndGlobalSection EndGlobal From 8a40dd20459c28295d4ff27b772b0de9a0c6d002 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Feb 2021 14:03:16 +0000 Subject: [PATCH 45/93] Some build workflows --- .github/workflows/macos-ios.yml | 10 +++++++--- .github/workflows/windows-dotnet.yml | 20 +++++++++++++++++++ .github/workflows/windows.yml | 29 ++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/windows-dotnet.yml create mode 100644 .github/workflows/windows.yml diff --git a/.github/workflows/macos-ios.yml b/.github/workflows/macos-ios.yml index ff09c11..2cb296b 100644 --- a/.github/workflows/macos-ios.yml +++ b/.github/workflows/macos-ios.yml @@ -14,9 +14,13 @@ jobs: steps: - uses: actions/checkout@v2 - name: deps - run: brew install libsndfile vamp-plugin-sdk + run: brew install libsndfile libsamplerate vamp-plugin-sdk meson ninja + - name: configure macos + run: meson build_macos + - name: configure ios + run: meson build_ios --cross-file cross/ios.txt - name: make macos - run: make -f Makefile.macos clean library program vamp + run: ninja -C build_macos - name: make ios - run: make -f Makefile.ios clean all + run: ninja -C build_ios diff --git a/.github/workflows/windows-dotnet.yml b/.github/workflows/windows-dotnet.yml new file mode 100644 index 0000000..3f6f9c6 --- /dev/null +++ b/.github/workflows/windows-dotnet.yml @@ -0,0 +1,20 @@ +name: Windows CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: windows-2019 + + steps: + - uses: actions/checkout@v2 + - name: make + run: | + call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" + msbuild dotnet\rubberband.sln + diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 0000000..39d747a --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,29 @@ +name: Windows CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: windows-2019 + + steps: + - uses: actions/checkout@v2 + - name: deps + run: | + cinst wget + cinst meson + c:\ProgramData\chocolatey\bin\wget.exe http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28-w64-setup.exe + .\libsndfile-1.0.28-w64-setup.exe /silent /sp- /norestart + - name: configure + run: | + call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" + meson build + - name: make + run: | + ninja -C build + From 144320ac8a15f92474f22dac0314cfd8589020ad Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Feb 2021 14:04:35 +0000 Subject: [PATCH 46/93] Let's not pin these to a branch --- .github/workflows/macos-ios.yml | 2 -- .github/workflows/windows-dotnet.yml | 2 -- .github/workflows/windows.yml | 2 -- 3 files changed, 6 deletions(-) diff --git a/.github/workflows/macos-ios.yml b/.github/workflows/macos-ios.yml index 2cb296b..f17deb7 100644 --- a/.github/workflows/macos-ios.yml +++ b/.github/workflows/macos-ios.yml @@ -2,9 +2,7 @@ name: macOS and iOS CI on: push: - branches: [ master ] pull_request: - branches: [ master ] jobs: build: diff --git a/.github/workflows/windows-dotnet.yml b/.github/workflows/windows-dotnet.yml index 3f6f9c6..f757a23 100644 --- a/.github/workflows/windows-dotnet.yml +++ b/.github/workflows/windows-dotnet.yml @@ -2,9 +2,7 @@ name: Windows CI on: push: - branches: [ master ] pull_request: - branches: [ master ] jobs: build: diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 39d747a..1b6d197 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -2,9 +2,7 @@ name: Windows CI on: push: - branches: [ master ] pull_request: - branches: [ master ] jobs: build: From bf5c5dfc0a051f78905930073fea88e939362813 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Feb 2021 14:15:30 +0000 Subject: [PATCH 47/93] Untabify --- .github/workflows/windows-dotnet.yml | 2 +- .github/workflows/windows.yml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/windows-dotnet.yml b/.github/workflows/windows-dotnet.yml index f757a23..750b2a2 100644 --- a/.github/workflows/windows-dotnet.yml +++ b/.github/workflows/windows-dotnet.yml @@ -14,5 +14,5 @@ jobs: - name: make run: | call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" - msbuild dotnet\rubberband.sln + msbuild dotnet\rubberband.sln diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 1b6d197..5bcc282 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -14,13 +14,13 @@ jobs: - name: deps run: | cinst wget - cinst meson - c:\ProgramData\chocolatey\bin\wget.exe http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28-w64-setup.exe - .\libsndfile-1.0.28-w64-setup.exe /silent /sp- /norestart + cinst meson + c:\ProgramData\chocolatey\bin\wget.exe http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28-w64-setup.exe + .\libsndfile-1.0.28-w64-setup.exe /silent /sp- /norestart - name: configure run: | call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" - meson build + meson build - name: make run: | ninja -C build From 588a3fc50c211bc1af6f1063fc1e0a0b98b51883 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Feb 2021 14:15:38 +0000 Subject: [PATCH 48/93] Paths --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 46e9002..17e1fe5 100644 --- a/README.md +++ b/README.md @@ -43,9 +43,9 @@ that licence. Please refer to your licence agreement for more details. Rubber Band includes a .NET interface generously contributed by Jonathan Gilbert under a BSD-like licence. The files in the -rubberband-dll and rubberband-sharp directories fall under this -licence. If you make use of this interface, please ensure you comply -with the terms of its licence. +dotnet/rubberband-dll and dotnet/rubberband-sharp directories fall +under this licence. If you make use of this interface, please ensure +you comply with the terms of its licence. Rubber Band may link with other libraries or be compiled with other source code, depending on its build configuration. It is your From 7137ef98448b5d8f2fb39e637a9b2ce262c4ae72 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Feb 2021 14:20:22 +0000 Subject: [PATCH 49/93] Was that necessary, I wonder? --- .github/workflows/windows.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 5bcc282..34bb6da 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -19,7 +19,6 @@ jobs: .\libsndfile-1.0.28-w64-setup.exe /silent /sp- /norestart - name: configure run: | - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" meson build - name: make run: | From 7615221ab1815b9bb587da8fb0e4a173e781b67f Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Feb 2021 14:21:47 +0000 Subject: [PATCH 50/93] Let's see if this builds the program too --- .appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index c3126d7..2c1ca07 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -16,5 +16,5 @@ install: build_script: - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" - - meson build + - meson build -Dextra_include_dirs="C:\Program Files (x86)\Mega-Nerd\libsndfile\include" -Dextra_lib_dirs="C:\Program Files (x86)\Mega-Nerd\libsndfile\lib\" - ninja -C build From 05ebfcca60a8a79d39a94420c3c0f67c1f3d364e Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Feb 2021 14:34:05 +0000 Subject: [PATCH 51/93] CI tweaks --- .appveyor.yml | 2 +- .github/workflows/windows-dotnet.yml | 3 +-- .github/workflows/windows.yml | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 2c1ca07..61362b6 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -16,5 +16,5 @@ install: build_script: - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" - - meson build -Dextra_include_dirs="C:\Program Files (x86)\Mega-Nerd\libsndfile\include" -Dextra_lib_dirs="C:\Program Files (x86)\Mega-Nerd\libsndfile\lib\" + - meson build -Dextra_include_dirs="C:\Program Files\Mega-Nerd\libsndfile\include" -Dextra_lib_dirs="C:\Program Files\Mega-Nerd\libsndfile\lib\" - ninja -C build diff --git a/.github/workflows/windows-dotnet.yml b/.github/workflows/windows-dotnet.yml index 750b2a2..f52ea86 100644 --- a/.github/workflows/windows-dotnet.yml +++ b/.github/workflows/windows-dotnet.yml @@ -1,4 +1,4 @@ -name: Windows CI +name: Windows .NET CI on: push: @@ -13,6 +13,5 @@ jobs: - uses: actions/checkout@v2 - name: make run: | - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" msbuild dotnet\rubberband.sln diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 34bb6da..0f5caf5 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -19,8 +19,8 @@ jobs: .\libsndfile-1.0.28-w64-setup.exe /silent /sp- /norestart - name: configure run: | - meson build + c:\ProgramData\chocolatey\bin\meson build - name: make run: | - ninja -C build + c:\ProgramData\chocolatey\bin\ninja -C build From 0d13c8b0ce6d926ec9d226db522ba40eddf868e2 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Feb 2021 14:41:09 +0000 Subject: [PATCH 52/93] We seem to be getting double-quotes in the string --- .appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index 61362b6..7678a37 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -16,5 +16,5 @@ install: build_script: - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" - - meson build -Dextra_include_dirs="C:\Program Files\Mega-Nerd\libsndfile\include" -Dextra_lib_dirs="C:\Program Files\Mega-Nerd\libsndfile\lib\" + - meson build -Dextra_include_dirs='C:\Program Files\Mega-Nerd\libsndfile\include' -Dextra_lib_dirs='C:\Program Files\Mega-Nerd\libsndfile\lib' - ninja -C build From 6e40891fe507473bc40c8b902ffe049972f31992 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Feb 2021 14:50:17 +0000 Subject: [PATCH 53/93] Further CI tweaks --- .appveyor.yml | 8 +++++--- .github/workflows/windows-dotnet.yml | 17 ----------------- .github/workflows/windows.yml | 26 -------------------------- 3 files changed, 5 insertions(+), 46 deletions(-) delete mode 100644 .github/workflows/windows-dotnet.yml delete mode 100644 .github/workflows/windows.yml diff --git a/.appveyor.yml b/.appveyor.yml index 7678a37..0a12e7d 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -11,10 +11,12 @@ platform: install: - cinst wget - cinst meson - - c:\ProgramData\chocolatey\bin\wget.exe http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28-w64-setup.exe - - ps: .\libsndfile-1.0.28-w64-setup.exe /silent /sp- /norestart + - cinst libsndfile build_script: - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" - - meson build -Dextra_include_dirs='C:\Program Files\Mega-Nerd\libsndfile\include' -Dextra_lib_dirs='C:\Program Files\Mega-Nerd\libsndfile\lib' + - meson build "-Dextra_include_dirs=C:\Program Files\libsndfile\include" "-Dextra_lib_dirs=C:\Program Files\libsndfile\lib" - ninja -C build + # And test the .NET FFI interface build, which is completely separate + - msbuild dotnet\rubberband.sln + diff --git a/.github/workflows/windows-dotnet.yml b/.github/workflows/windows-dotnet.yml deleted file mode 100644 index f52ea86..0000000 --- a/.github/workflows/windows-dotnet.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: Windows .NET CI - -on: - push: - pull_request: - -jobs: - build: - - runs-on: windows-2019 - - steps: - - uses: actions/checkout@v2 - - name: make - run: | - msbuild dotnet\rubberband.sln - diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml deleted file mode 100644 index 0f5caf5..0000000 --- a/.github/workflows/windows.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Windows CI - -on: - push: - pull_request: - -jobs: - build: - - runs-on: windows-2019 - - steps: - - uses: actions/checkout@v2 - - name: deps - run: | - cinst wget - cinst meson - c:\ProgramData\chocolatey\bin\wget.exe http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28-w64-setup.exe - .\libsndfile-1.0.28-w64-setup.exe /silent /sp- /norestart - - name: configure - run: | - c:\ProgramData\chocolatey\bin\meson build - - name: make - run: | - c:\ProgramData\chocolatey\bin\ninja -C build - From 06a6114dfe14f6e8f7bab326c21a43cf68ba0ea4 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Feb 2021 14:56:45 +0000 Subject: [PATCH 54/93] Fixes to .NET builds --- dotnet/rubberband-dll.vcxproj | 8 ++++---- dotnet/rubberband-library.vcxproj | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dotnet/rubberband-dll.vcxproj b/dotnet/rubberband-dll.vcxproj index fbe8b31..6688409 100644 --- a/dotnet/rubberband-dll.vcxproj +++ b/dotnet/rubberband-dll.vcxproj @@ -92,7 +92,7 @@ true _DEBUG;RUBBERBANDDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true - $(SolutionDir)rubberband;%(AdditionalIncludeDirectories) + $(SolutionDir)\..\rubberband;%(AdditionalIncludeDirectories) Windows @@ -110,7 +110,7 @@ true WIN32;_DEBUG;RUBBERBANDDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true - $(SolutionDir)rubberband;%(AdditionalIncludeDirectories) + $(SolutionDir)\..\rubberband;%(AdditionalIncludeDirectories) Windows @@ -130,7 +130,7 @@ true WIN32;NDEBUG;RUBBERBANDDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) true - $(SolutionDir)rubberband;%(AdditionalIncludeDirectories) + $(SolutionDir)\..\rubberband;%(AdditionalIncludeDirectories) Windows @@ -181,4 +181,4 @@ - \ No newline at end of file + diff --git a/dotnet/rubberband-library.vcxproj b/dotnet/rubberband-library.vcxproj index 4aa1ce8..93125a2 100644 --- a/dotnet/rubberband-library.vcxproj +++ b/dotnet/rubberband-library.vcxproj @@ -76,7 +76,7 @@ Disabled - .;..\src;%(AdditionalIncludeDirectories) + ..;..\src;%(AdditionalIncludeDirectories) __MSVC__;WIN32;_DEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;USE_SPEEX;%(PreprocessorDefinitions) true EnableFastChecks @@ -90,7 +90,7 @@ Disabled - .;..\src;%(AdditionalIncludeDirectories) + ..;..\src;%(AdditionalIncludeDirectories) __MSVC__;WIN32;_DEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;USE_SPEEX;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL @@ -108,7 +108,7 @@ true Speed true - .;..\src;%(AdditionalIncludeDirectories) + ..;..\src;%(AdditionalIncludeDirectories) __MSVC__;WIN32;NDEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;NO_TIMING;USE_SPEEX;NO_THREAD_CHECKS;%(PreprocessorDefinitions) MultiThreadedDLL false @@ -194,4 +194,4 @@ - \ No newline at end of file + From 753a4f21bade3e898185a3008435af68afe95ecd Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Feb 2021 15:00:25 +0000 Subject: [PATCH 55/93] .NET somewhat mysterious --- .appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index 0a12e7d..fe8e8e5 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -18,5 +18,5 @@ build_script: - meson build "-Dextra_include_dirs=C:\Program Files\libsndfile\include" "-Dextra_lib_dirs=C:\Program Files\libsndfile\lib" - ninja -C build # And test the .NET FFI interface build, which is completely separate - - msbuild dotnet\rubberband.sln + - msbuild dotnet\rubberband.sln /t:Restore;Build From 9d0f905e42e652174c1bac010d5737f72a7ab463 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Feb 2021 17:38:59 +0000 Subject: [PATCH 56/93] CI build doesn't seem to like v142 --- rubberband-dll.vcxproj | 10 +++++----- rubberband-library.vcxproj | 10 +++++----- rubberband-program.vcxproj | 10 +++++----- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/rubberband-dll.vcxproj b/rubberband-dll.vcxproj index 423eb17..149b88f 100644 --- a/rubberband-dll.vcxproj +++ b/rubberband-dll.vcxproj @@ -28,27 +28,27 @@ DynamicLibrary false - v142 + v140 true Unicode DynamicLibrary false - v142 + v140 true Unicode DynamicLibrary true - v142 + v140 Unicode DynamicLibrary true - v142 + v140 Unicode @@ -181,4 +181,4 @@ - \ No newline at end of file + diff --git a/rubberband-library.vcxproj b/rubberband-library.vcxproj index d13afd9..89981da 100644 --- a/rubberband-library.vcxproj +++ b/rubberband-library.vcxproj @@ -27,19 +27,19 @@ StaticLibrary - v142 + v140 StaticLibrary - v142 + v140 StaticLibrary - v142 + v140 StaticLibrary - v142 + v140 @@ -193,4 +193,4 @@ - \ No newline at end of file + diff --git a/rubberband-program.vcxproj b/rubberband-program.vcxproj index 6eb9e6c..8b1e19d 100644 --- a/rubberband-program.vcxproj +++ b/rubberband-program.vcxproj @@ -27,19 +27,19 @@ Application - v142 + v140 Application - v142 + v140 Application - v142 + v140 Application - v142 + v140 @@ -193,4 +193,4 @@ - \ No newline at end of file + From a3c17ff9632f7ccfce7ced122ed156fd9cd8dc06 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Feb 2021 17:40:30 +0000 Subject: [PATCH 57/93] Move this to otherbuilds --- Android.mk => otherbuilds/Android.mk | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Android.mk => otherbuilds/Android.mk (100%) diff --git a/Android.mk b/otherbuilds/Android.mk similarity index 100% rename from Android.mk rename to otherbuilds/Android.mk From ae64f145ebd90afc9fae1bc5b70ac08cd6ca21b5 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Feb 2021 17:44:37 +0000 Subject: [PATCH 58/93] My mistake, I believe it's the target version --- rubberband-dll.vcxproj | 9 ++++----- rubberband-library.vcxproj | 9 ++++----- rubberband-program.vcxproj | 9 ++++----- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/rubberband-dll.vcxproj b/rubberband-dll.vcxproj index 149b88f..70ce9db 100644 --- a/rubberband-dll.vcxproj +++ b/rubberband-dll.vcxproj @@ -22,33 +22,32 @@ {32C11C5C-3D27-4E57-B72C-161A48AAA95E} rubberbanddll Win32Proj - 10.0 DynamicLibrary false - v140 + v142 true Unicode DynamicLibrary false - v140 + v142 true Unicode DynamicLibrary true - v140 + v142 Unicode DynamicLibrary true - v140 + v142 Unicode diff --git a/rubberband-library.vcxproj b/rubberband-library.vcxproj index 89981da..2b579c3 100644 --- a/rubberband-library.vcxproj +++ b/rubberband-library.vcxproj @@ -22,24 +22,23 @@ {020CEB11-EF4E-400E-971D-A35DB69D7CF9} rubberband-library Win32Proj - 10.0 StaticLibrary - v140 + v142 StaticLibrary - v140 + v142 StaticLibrary - v140 + v142 StaticLibrary - v140 + v142 diff --git a/rubberband-program.vcxproj b/rubberband-program.vcxproj index 8b1e19d..182ba2a 100644 --- a/rubberband-program.vcxproj +++ b/rubberband-program.vcxproj @@ -22,24 +22,23 @@ {06838307-FEAA-4DB0-8E08-AF19698E9C40} rubberband-program Win32Proj - 10.0 Application - v140 + v142 Application - v140 + v142 Application - v140 + v142 Application - v140 + v142 From 57d680a8e3a6523a4151315f99dfa7fa60260c7e Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 18 Feb 2021 10:48:32 +0000 Subject: [PATCH 59/93] Revert these back to prior platform versions --- rubberband-dll.vcxproj | 10 +++++----- rubberband-library.vcxproj | 10 +++++----- rubberband-program.vcxproj | 10 +++++----- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/rubberband-dll.vcxproj b/rubberband-dll.vcxproj index 70ce9db..c641bcf 100644 --- a/rubberband-dll.vcxproj +++ b/rubberband-dll.vcxproj @@ -27,27 +27,27 @@ DynamicLibrary false - v142 + v140 true Unicode DynamicLibrary false - v142 + v140 true Unicode DynamicLibrary true - v142 + v140 Unicode DynamicLibrary true - v142 + v140 Unicode @@ -180,4 +180,4 @@ - + \ No newline at end of file diff --git a/rubberband-library.vcxproj b/rubberband-library.vcxproj index 2b579c3..823f714 100644 --- a/rubberband-library.vcxproj +++ b/rubberband-library.vcxproj @@ -26,19 +26,19 @@ StaticLibrary - v142 + v140 StaticLibrary - v142 + v140 StaticLibrary - v142 + v140 StaticLibrary - v142 + v140 @@ -192,4 +192,4 @@ - + \ No newline at end of file diff --git a/rubberband-program.vcxproj b/rubberband-program.vcxproj index 182ba2a..00cd8e6 100644 --- a/rubberband-program.vcxproj +++ b/rubberband-program.vcxproj @@ -26,19 +26,19 @@ Application - v142 + v140 Application - v142 + v140 Application - v142 + v140 Application - v142 + v140 @@ -192,4 +192,4 @@ - + \ No newline at end of file From 6ae0bd26a5f8fa75deeedd2b4b4559de5a6e2b09 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Wed, 24 Feb 2021 09:29:07 +0000 Subject: [PATCH 60/93] Make otherbuilds files build only static libraries --- otherbuilds/Makefile.ios | 13 +- otherbuilds/{Makefile.in => Makefile.linux} | 164 +- otherbuilds/Makefile.macos | 105 +- otherbuilds/Makefile.macos-universal | 107 +- otherbuilds/configure | 5635 ------------------- otherbuilds/configure.ac | 80 - 6 files changed, 41 insertions(+), 6063 deletions(-) rename otherbuilds/{Makefile.in => Makefile.linux} (57%) delete mode 100755 otherbuilds/configure delete mode 100644 otherbuilds/configure.ac diff --git a/otherbuilds/Makefile.ios b/otherbuilds/Makefile.ios index b8ab5f7..7c12f82 100644 --- a/otherbuilds/Makefile.ios +++ b/otherbuilds/Makefile.ios @@ -1,7 +1,8 @@ CXX := clang++ CC := clang -OPTFLAGS := -ffast-math -freciprocal-math -O3 -ftree-vectorize + +OPTFLAGS := -DNDEBUG -ffast-math -freciprocal-math -O3 -ftree-vectorize # For the device ARCHFLAGS_DEV := -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -miphoneos-version-min=6 -stdlib=libc++ -arch armv7 -arch arm64 -fembed-bitcode @@ -137,9 +138,9 @@ distclean: clean rm -f $(STATIC_TARGET_DEV) $(STATIC_TARGET_SIM) depend: - touch Makefile.dev_depends Makefile.sim_depends - makedepend -f Makefile.dev_depends -o.dev.o -Y $(LIBRARY_SOURCES) - makedepend -f Makefile.sim_depends -o.sim.o -Y $(LIBRARY_SOURCES) + touch otherbuilds/Makefile.dev_depends otherbuilds/Makefile.sim_depends + makedepend -f otherbuilds/Makefile.dev_depends -o.dev.o -Y $(LIBRARY_SOURCES) + makedepend -f otherbuilds/Makefile.sim_depends -o.sim.o -Y $(LIBRARY_SOURCES) --include Makefile.dev_depends --include Makefile.sim_depends +-include otherbuilds/Makefile.dev_depends +-include otherbuilds/Makefile.sim_depends diff --git a/otherbuilds/Makefile.in b/otherbuilds/Makefile.linux similarity index 57% rename from otherbuilds/Makefile.in rename to otherbuilds/Makefile.linux index 78a7bae..f73b0f8 100644 --- a/otherbuilds/Makefile.in +++ b/otherbuilds/Makefile.linux @@ -1,75 +1,27 @@ -PREFIX := @prefix@ -CXX := @CXX@ -CC := @CC@ -CXXFLAGS := -DHAVE_LIBSAMPLERATE -DHAVE_FFTW3 -DFFTW_DOUBLE_ONLY -DNO_THREAD_CHECKS -DUSE_PTHREADS -DNO_TIMING -DNDEBUG -I. -Isrc -Irubberband @CXXFLAGS@ @SRC_CFLAGS@ @SNDFILE_CFLAGS@ @FFTW_CFLAGS@ @Vamp_CFLAGS@ $(OPTFLAGS) -CFLAGS := @CFLAGS@ $(OPTFLAGS) -LDFLAGS := @LDFLAGS@ -lpthread $(LDFLAGS) -WITH_PROGRAMS := @WITH_PROGRAMS@ -WITH_VAMP := @WITH_VAMP@ -WITH_LADSPA := @WITH_LADSPA@ +CXX := g++ +CC := gcc -JNI_CXXFLAGS := -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -JAVAC := $(JAVA_HOME)/bin/javac -JAR := $(JAVA_HOME)/bin/jar +OPTFLAGS := -DNDEBUG -ffast-math -O3 -ftree-vectorize -LIBRARY_LIBS := @SRC_LIBS@ @FFTW_LIBS@ -PROGRAM_LIBS := @SNDFILE_LIBS@ $(LIBRARY_LIBS) -VAMP_PLUGIN_LIBS := @Vamp_LIBS@ $(LIBRARY_LIBS) -LADSPA_PLUGIN_LIBS := $(LIBRARY_LIBS) +ARCHFLAGS := + +CXXFLAGS := $(ARCHFLAGS) $(OPTFLAGS) -I. -Isrc -Irubberband -DHAVE_LIBSAMPLERATE -DUSE_KISSFFT -DNO_THREAD_CHECKS -DUSE_PTHREADS -DNO_TIMING -DHAVE_POSIX_MEMALIGN -DNDEBUG + +CFLAGS := $(ARCHFLAGS) $(OPTFLAGS) -MKDIR := mkdir AR := ar - -INSTALL_BINDIR := $(PREFIX)/bin -INSTALL_INCDIR := $(PREFIX)/include/rubberband -INSTALL_LIBDIR := $(PREFIX)/lib -INSTALL_VAMPDIR := $(PREFIX)/lib/vamp -INSTALL_LADSPADIR := $(PREFIX)/lib/ladspa -INSTALL_LRDFDIR := $(PREFIX)/share/ladspa/rdf -INSTALL_PKGDIR := $(PREFIX)/lib/pkgconfig +MKDIR := mkdir LIBNAME := librubberband -JNINAME := librubberband-jni -JARNAME := rubberband.jar -DYNAMIC_EXTENSION := .so -DYNAMIC_FULL_VERSION := 2.1.2 -DYNAMIC_ABI_VERSION := 2 -DYNAMIC_LDFLAGS := -shared -Wl,-Bsymbolic -Wl,-soname=$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_ABI_VERSION) -VAMP_LDFLAGS := -shared -Wl,-Bsymbolic -Wl,--version-script=vamp/vamp-plugin.map -LADSPA_LDFLAGS := -shared -Wl,-Bsymbolic -Wl,--version-script=ladspa/ladspa-plugin.map - -PROGRAM_TARGET := bin/rubberband STATIC_TARGET := lib/$(LIBNAME).a -DYNAMIC_TARGET := lib/$(LIBNAME)$(DYNAMIC_EXTENSION) -JNI_TARGET := lib/$(JNINAME)$(DYNAMIC_EXTENSION) -JAR_TARGET := lib/$(JARNAME) -VAMP_TARGET := lib/vamp-rubberband$(DYNAMIC_EXTENSION) -LADSPA_TARGET := lib/ladspa-rubberband$(DYNAMIC_EXTENSION) -ALL_TARGETS := lib $(STATIC_TARGET) $(DYNAMIC_TARGET) +default: $(STATIC_TARGET) -ifeq ($(WITH_PROGRAMS), yes) - ALL_TARGETS += bin $(PROGRAM_TARGET) -endif +all: $(STATIC_TARGET) -ifeq ($(WITH_VAMP), yes) - ALL_TARGETS += $(VAMP_TARGET) -endif - -ifeq ($(WITH_LADSPA), yes) - ALL_TARGETS += $(LADSPA_TARGET) -endif - -all: $(ALL_TARGETS) static: $(STATIC_TARGET) -dynamic: $(DYNAMIC_TARGET) -library: $(STATIC_TARGET) $(DYNAMIC_TARGET) -jni: $(JNI_TARGET) $(JAR_TARGET) -program: $(PROGRAM_TARGET) -vamp: $(VAMP_TARGET) -ladspa: $(LADSPA_TARGET) PUBLIC_INCLUDES := \ rubberband/rubberband-c.h \ @@ -119,109 +71,27 @@ LIBRARY_SOURCES := \ src/system/sysutils.cpp \ src/system/Thread.cpp \ src/StretcherChannelData.cpp \ - src/StretcherImpl.cpp - -JNI_SOURCE := \ - src/jni/RubberBandStretcherJNI.cpp - -JAVA_SOURCE := \ - com/breakfastquay/rubberband/RubberBandStretcher.java - -PROGRAM_SOURCES := \ - main/main.cpp - -VAMP_HEADERS := \ - vamp/RubberBandVampPlugin.h - -VAMP_SOURCES := \ - vamp/RubberBandVampPlugin.cpp \ - vamp/libmain.cpp - -LADSPA_HEADERS := \ - ladspa/RubberBandPitchShifter.h - -LADSPA_SOURCES := \ - ladspa/RubberBandPitchShifter.cpp \ - ladspa/libmain.cpp + src/StretcherImpl.cpp \ + src/kissfft/kiss_fft.c \ + src/kissfft/kiss_fftr.c LIBRARY_OBJECTS := $(LIBRARY_SOURCES:.cpp=.o) LIBRARY_OBJECTS := $(LIBRARY_OBJECTS:.c=.o) -JNI_OBJECT := $(JNI_SOURCE:.cpp=.o) -JAVA_OBJECT := $(JAVA_SOURCE:.java=.class) -PROGRAM_OBJECTS := $(PROGRAM_SOURCES:.cpp=.o) -VAMP_OBJECTS := $(VAMP_SOURCES:.cpp=.o) -LADSPA_OBJECTS := $(LADSPA_SOURCES:.cpp=.o) - -$(PROGRAM_TARGET): $(LIBRARY_OBJECTS) $(PROGRAM_OBJECTS) - $(CXX) -o $@ $^ $(PROGRAM_LIBS) $(LDFLAGS) $(STATIC_TARGET): $(LIBRARY_OBJECTS) $(AR) rsc $@ $^ -$(DYNAMIC_TARGET): $(LIBRARY_OBJECTS) - $(CXX) $(DYNAMIC_LDFLAGS) $^ -o $@ $(LIBRARY_LIBS) $(LDFLAGS) - -$(JNI_OBJECT): $(JNI_SOURCE) - $(CXX) -c $(JNI_CXXFLAGS) $(CXXFLAGS) $^ -o $@ - -$(JNI_TARGET): $(LIBRARY_OBJECTS) $(JNI_OBJECT) - $(CXX) $(DYNAMIC_LDFLAGS) $^ -o $@ $(LIBRARY_LIBS) $(LDFLAGS) - -$(JAR_TARGET): $(JAVA_SOURCE) - $(JAVAC) $^ - $(JAR) cvf $@ $(JAVA_OBJECT) - -$(VAMP_TARGET): $(LIBRARY_OBJECTS) $(VAMP_OBJECTS) - $(CXX) $(VAMP_LDFLAGS) -o $@ $^ $(VAMP_PLUGIN_LIBS) $(LDFLAGS) - -$(LADSPA_TARGET): $(LIBRARY_OBJECTS) $(LADSPA_OBJECTS) - $(CXX) $(LADSPA_LDFLAGS) -o $@ $^ $(LADSPA_PLUGIN_LIBS) $(LDFLAGS) - -bin: - $(MKDIR) $@ lib: $(MKDIR) $@ -install: all - $(MKDIR) -p $(DESTDIR)$(INSTALL_INCDIR) - $(MKDIR) -p $(DESTDIR)$(INSTALL_LIBDIR) - $(MKDIR) -p $(DESTDIR)$(INSTALL_PKGDIR) - cp -p $(PUBLIC_INCLUDES) $(DESTDIR)$(INSTALL_INCDIR) - cp -p $(STATIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR) - rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_ABI_VERSION) - rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION) - rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(JNINAME)$(DYNAMIC_EXTENSION) - cp -p $(DYNAMIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION) - ln -s $(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_ABI_VERSION) - ln -s $(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION) - test -f $(JNI_TARGET) && cp -fp $(JNI_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(JNINAME)$(DYNAMIC_EXTENSION) || true - sed "s,%PREFIX%,$(PREFIX)," rubberband.pc.in \ - > $(DESTDIR)$(INSTALL_PKGDIR)/rubberband.pc -ifeq ($(WITH_PROGRAMS), yes) - $(MKDIR) -p $(DESTDIR)$(INSTALL_BINDIR) - cp -p $(PROGRAM_TARGET) $(DESTDIR)$(INSTALL_BINDIR) -endif -ifeq ($(WITH_VAMP), yes) - $(MKDIR) -p $(DESTDIR)$(INSTALL_VAMPDIR) - cp -p $(VAMP_TARGET) $(DESTDIR)$(INSTALL_VAMPDIR) - cp -p vamp/vamp-rubberband.cat $(DESTDIR)$(INSTALL_VAMPDIR) -endif -ifeq ($(WITH_LADSPA), yes) - $(MKDIR) -p $(DESTDIR)$(INSTALL_LADSPADIR) - $(MKDIR) -p $(DESTDIR)$(INSTALL_LRDFDIR) - cp -p $(LADSPA_TARGET) $(DESTDIR)$(INSTALL_LADSPADIR) - cp -p ladspa/ladspa-rubberband.cat $(DESTDIR)$(INSTALL_LADSPADIR) - cp -p ladspa/ladspa-rubberband.rdf $(DESTDIR)$(INSTALL_LRDFDIR) -endif - clean: - rm -f $(LIBRARY_OBJECTS) $(JNI_OBJECT) $(JAVA_OBJECT) $(PROGRAM_OBJECTS) $(LADSPA_OBJECTS) $(VAMP_OBJECTS) + rm -f $(LIBRARY_OBJECTS) distclean: clean - rm -f $(PROGRAM_TARGET) $(STATIC_TARGET) $(DYNAMIC_TARGET) $(JNI_TARGET) $(JAR_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET) + rm -f $(STATIC_TARGET) depend: - makedepend -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES) + makedepend -f otherbuilds/Makefile.linux -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES) # DO NOT DELETE diff --git a/otherbuilds/Makefile.macos b/otherbuilds/Makefile.macos index 0279574..96c612a 100644 --- a/otherbuilds/Makefile.macos +++ b/otherbuilds/Makefile.macos @@ -1,57 +1,27 @@ -PREFIX := /usr/local CXX := clang++ -stdlib=libc++ CC := clang -ARCHFLAGS := -mmacosx-version-min=10.7 OPTFLAGS := -DNDEBUG -ffast-math -O3 -ftree-vectorize +ARCHFLAGS := -mmacosx-version-min=10.7 + CXXFLAGS := $(ARCHFLAGS) $(OPTFLAGS) -I. -Isrc -Irubberband -I/usr/local/include -DUSE_PTHREADS -DMALLOC_IS_ALIGNED -DHAVE_VDSP -DUSE_SPEEX -DNO_THREAD_CHECKS -DNO_TIMING CFLAGS := $(ARCHFLAGS) $(OPTFLAGS) -LDFLAGS := $(ARCHFLAGS) -lpthread $(LDFLAGS) -LIBRARY_LIBS := -framework Accelerate -PROGRAM_LIBS := -L$(PREFIX)/lib -lsndfile $(LIBRARY_LIBS) -VAMP_PLUGIN_LIBS := -L$(PREFIX)/lib -lvamp-sdk $(LIBRARY_LIBS) -LADSPA_PLUGIN_LIBS := $(LIBRARY_LIBS) - -MKDIR := mkdir AR := ar - -INSTALL_BINDIR := $(PREFIX)/bin -INSTALL_INCDIR := $(PREFIX)/include/rubberband -INSTALL_LIBDIR := $(PREFIX)/lib -INSTALL_VAMPDIR := $(PREFIX)/lib/vamp -INSTALL_LADSPADIR := $(PREFIX)/lib/ladspa -INSTALL_LRDFDIR := $(PREFIX)/share/ladspa/rdf -INSTALL_PKGDIR := $(PREFIX)/lib/pkgconfig +MKDIR := mkdir LIBNAME := librubberband -DYNAMIC_EXTENSION := .dylib -DYNAMIC_FULL_VERSION := 2.1.2 -DYNAMIC_ABI_VERSION := 2 -DYNAMIC_LDFLAGS := -dynamiclib -install_name $(INSTALL_LIBDIR)/$(LIBNAME).$(DYNAMIC_ABI_VERSION)$(DYNAMIC_EXTENSION) -current_version $(DYNAMIC_FULL_VERSION) -compatibility_version $(DYNAMIC_ABI_VERSION) -VAMP_LDFLAGS := -dynamiclib -install_name vamp-rubberband.dylib -exported_symbols_list vamp/vamp-plugin.list -LADSPA_LDFLAGS := -dynamiclib -install_name ladspa-rubberband.dylib -exported_symbols_list ladspa/ladspa-plugin.list - -PROGRAM_TARGET := bin/rubberband STATIC_TARGET := lib/$(LIBNAME).a -DYNAMIC_TARGET := lib/$(LIBNAME)$(DYNAMIC_EXTENSION) -VAMP_TARGET := lib/vamp-rubberband$(DYNAMIC_EXTENSION) -LADSPA_TARGET := lib/ladspa-rubberband$(DYNAMIC_EXTENSION) -default: bin lib $(STATIC_TARGET) $(DYNAMIC_TARGET) $(PROGRAM_TARGET) +default: lib $(STATIC_TARGET) -all: bin lib $(STATIC_TARGET) $(DYNAMIC_TARGET) $(PROGRAM_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET) +all: lib $(STATIC_TARGET) static: lib $(STATIC_TARGET) -dynamic: lib $(DYNAMIC_TARGET) -library: static dynamic -program: bin $(PROGRAM_TARGET) -vamp: lib $(VAMP_TARGET) -ladspa: lib $(LADSPA_TARGET) PUBLIC_INCLUDES := \ rubberband/rubberband-c.h \ @@ -111,83 +81,24 @@ LIBRARY_INCLUDES := $(LIBRARY_INCLUDES) \ LIBRARY_SOURCES := $(LIBRARY_SOURCES) \ src/speex/resample.c -PROGRAM_SOURCES := \ - main/main.cpp - -VAMP_HEADERS := \ - vamp/RubberBandVampPlugin.h - -VAMP_SOURCES := \ - vamp/RubberBandVampPlugin.cpp \ - vamp/libmain.cpp - -LADSPA_HEADERS := \ - ladspa/RubberBandPitchShifter.h - -LADSPA_SOURCES := \ - ladspa/RubberBandPitchShifter.cpp \ - ladspa/libmain.cpp - LIBRARY_OBJECTS := $(LIBRARY_SOURCES:.cpp=.o) LIBRARY_OBJECTS := $(LIBRARY_OBJECTS:.c=.o) -PROGRAM_OBJECTS := $(PROGRAM_SOURCES:.cpp=.o) -VAMP_OBJECTS := $(VAMP_SOURCES:.cpp=.o) -LADSPA_OBJECTS := $(LADSPA_SOURCES:.cpp=.o) - -$(PROGRAM_TARGET): $(LIBRARY_OBJECTS) $(PROGRAM_OBJECTS) - $(CXX) -o $@ $^ $(PROGRAM_LIBS) $(LDFLAGS) - $(STATIC_TARGET): $(LIBRARY_OBJECTS) rm -f $@ $(AR) rsc $@ $^ -$(DYNAMIC_TARGET): $(LIBRARY_OBJECTS) - $(CXX) $(DYNAMIC_LDFLAGS) $^ -o $@ $(LIBRARY_LIBS) $(LDFLAGS) - -$(VAMP_TARGET): $(LIBRARY_OBJECTS) $(VAMP_OBJECTS) - $(CXX) $(VAMP_LDFLAGS) -o $@ $^ $(VAMP_PLUGIN_LIBS) $(LDFLAGS) - -$(LADSPA_TARGET): $(LIBRARY_OBJECTS) $(LADSPA_OBJECTS) - $(CXX) $(LADSPA_LDFLAGS) -o $@ $^ $(LADSPA_PLUGIN_LIBS) $(LDFLAGS) - -bin: - $(MKDIR) $@ lib: $(MKDIR) $@ -install: default - $(MKDIR) -p $(DESTDIR)$(INSTALL_BINDIR) - $(MKDIR) -p $(DESTDIR)$(INSTALL_INCDIR) - $(MKDIR) -p $(DESTDIR)$(INSTALL_LIBDIR) - $(MKDIR) -p $(DESTDIR)$(INSTALL_VAMPDIR) - $(MKDIR) -p $(DESTDIR)$(INSTALL_LADSPADIR) - $(MKDIR) -p $(DESTDIR)$(INSTALL_LRDFDIR) - $(MKDIR) -p $(DESTDIR)$(INSTALL_PKGDIR) - cp $(PROGRAM_TARGET) $(DESTDIR)$(INSTALL_BINDIR) - cp $(PUBLIC_INCLUDES) $(DESTDIR)$(INSTALL_INCDIR) - cp $(STATIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR) - rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME).$(DYNAMIC_ABI_VERSION)$(DYNAMIC_EXTENSION) - rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION) - cp $(DYNAMIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME).$(DYNAMIC_FULL_VERSION)$(DYNAMIC_EXTENSION) - ln -s $(LIBNAME).$(DYNAMIC_FULL_VERSION)$(DYNAMIC_EXTENSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME).$(DYNAMIC_ABI_VERSION)$(DYNAMIC_EXTENSION) - ln -s $(LIBNAME).$(DYNAMIC_FULL_VERSION)$(DYNAMIC_EXTENSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION) - cp $(VAMP_TARGET) $(DESTDIR)$(INSTALL_VAMPDIR) - cp vamp/vamp-rubberband.cat $(DESTDIR)$(INSTALL_VAMPDIR) - cp $(LADSPA_TARGET) $(DESTDIR)$(INSTALL_LADSPADIR) - cp ladspa/ladspa-rubberband.cat $(DESTDIR)$(INSTALL_LADSPADIR) - cp ladspa/ladspa-rubberband.rdf $(DESTDIR)$(INSTALL_LRDFDIR) - sed "s,%PREFIX%,$(PREFIX)," rubberband.pc.in \ - > $(DESTDIR)$(INSTALL_PKGDIR)/rubberband.pc - clean: - rm -f $(LIBRARY_OBJECTS) $(PROGRAM_OBJECTS) $(LADSPA_OBJECTS) $(VAMP_OBJECTS) + rm -f $(LIBRARY_OBJECTS) distclean: clean - rm -f $(PROGRAM_TARGET) $(STATIC_TARGET) $(DYNAMIC_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET) + rm -f $(STATIC_TARGET) depend: - makedepend -f Makefile.osx -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES) + makedepend -f otherbuilds/Makefile.macos -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES) # DO NOT DELETE diff --git a/otherbuilds/Makefile.macos-universal b/otherbuilds/Makefile.macos-universal index 719fc02..aa03954 100644 --- a/otherbuilds/Makefile.macos-universal +++ b/otherbuilds/Makefile.macos-universal @@ -1,57 +1,27 @@ -PREFIX := /usr/local CXX := clang++ -stdlib=libc++ CC := clang +OPTFLAGS := -DNDEBUG -ffast-math -O3 -ftree-vectorize + ARCHFLAGS := -arch arm64 -arch x86_64 -mmacosx-version-min=10.7 -OPTFLAGS := -DNDEBUG -ffast-math -O3 CXXFLAGS := $(ARCHFLAGS) $(OPTFLAGS) -I. -Isrc -Irubberband -I/usr/local/include -DUSE_PTHREADS -DMALLOC_IS_ALIGNED -DHAVE_VDSP -DUSE_SPEEX -DNO_THREAD_CHECKS -DNO_TIMING CFLAGS := $(ARCHFLAGS) $(OPTFLAGS) -LDFLAGS := $(ARCHFLAGS) -lpthread $(LDFLAGS) -LIBRARY_LIBS := -framework Accelerate -PROGRAM_LIBS := -L$(PREFIX)/lib -lsndfile $(LIBRARY_LIBS) -VAMP_PLUGIN_LIBS := -L$(PREFIX)/lib -lvamp-sdk $(LIBRARY_LIBS) -LADSPA_PLUGIN_LIBS := $(LIBRARY_LIBS) - -MKDIR := mkdir AR := ar - -INSTALL_BINDIR := $(PREFIX)/bin -INSTALL_INCDIR := $(PREFIX)/include/rubberband -INSTALL_LIBDIR := $(PREFIX)/lib -INSTALL_VAMPDIR := $(PREFIX)/lib/vamp -INSTALL_LADSPADIR := $(PREFIX)/lib/ladspa -INSTALL_LRDFDIR := $(PREFIX)/share/ladspa/rdf -INSTALL_PKGDIR := $(PREFIX)/lib/pkgconfig +MKDIR := mkdir LIBNAME := librubberband -DYNAMIC_EXTENSION := .dylib -DYNAMIC_FULL_VERSION := 2.1.2 -DYNAMIC_ABI_VERSION := 2 -DYNAMIC_LDFLAGS := -dynamiclib -install_name $(INSTALL_LIBDIR)/$(LIBNAME).$(DYNAMIC_ABI_VERSION)$(DYNAMIC_EXTENSION) -current_version $(DYNAMIC_FULL_VERSION) -compatibility_version $(DYNAMIC_ABI_VERSION) -VAMP_LDFLAGS := -dynamiclib -install_name vamp-rubberband.dylib -exported_symbols_list vamp/vamp-plugin.list -LADSPA_LDFLAGS := -dynamiclib -install_name ladspa-rubberband.dylib -exported_symbols_list ladspa/ladspa-plugin.list - -PROGRAM_TARGET := bin/rubberband STATIC_TARGET := lib/$(LIBNAME).a -DYNAMIC_TARGET := lib/$(LIBNAME)$(DYNAMIC_EXTENSION) -VAMP_TARGET := lib/vamp-rubberband$(DYNAMIC_EXTENSION) -LADSPA_TARGET := lib/ladspa-rubberband$(DYNAMIC_EXTENSION) -default: bin lib $(STATIC_TARGET) $(DYNAMIC_TARGET) $(PROGRAM_TARGET) +default: $(STATIC_TARGET) -all: bin lib $(STATIC_TARGET) $(DYNAMIC_TARGET) $(PROGRAM_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET) +all: $(STATIC_TARGET) -static: lib $(STATIC_TARGET) -dynamic: lib $(DYNAMIC_TARGET) -library: static dynamic -program: bin $(PROGRAM_TARGET) -vamp: lib $(VAMP_TARGET) -ladspa: lib $(LADSPA_TARGET) +static: $(STATIC_TARGET) PUBLIC_INCLUDES := \ rubberband/rubberband-c.h \ @@ -111,83 +81,24 @@ LIBRARY_INCLUDES := $(LIBRARY_INCLUDES) \ LIBRARY_SOURCES := $(LIBRARY_SOURCES) \ src/speex/resample.c -PROGRAM_SOURCES := \ - main/main.cpp - -VAMP_HEADERS := \ - vamp/RubberBandVampPlugin.h - -VAMP_SOURCES := \ - vamp/RubberBandVampPlugin.cpp \ - vamp/libmain.cpp - -LADSPA_HEADERS := \ - ladspa/RubberBandPitchShifter.h - -LADSPA_SOURCES := \ - ladspa/RubberBandPitchShifter.cpp \ - ladspa/libmain.cpp - LIBRARY_OBJECTS := $(LIBRARY_SOURCES:.cpp=.o) LIBRARY_OBJECTS := $(LIBRARY_OBJECTS:.c=.o) -PROGRAM_OBJECTS := $(PROGRAM_SOURCES:.cpp=.o) -VAMP_OBJECTS := $(VAMP_SOURCES:.cpp=.o) -LADSPA_OBJECTS := $(LADSPA_SOURCES:.cpp=.o) - -$(PROGRAM_TARGET): $(LIBRARY_OBJECTS) $(PROGRAM_OBJECTS) - $(CXX) -o $@ $^ $(PROGRAM_LIBS) $(LDFLAGS) - $(STATIC_TARGET): $(LIBRARY_OBJECTS) rm -f $@ $(AR) rsc $@ $^ -$(DYNAMIC_TARGET): $(LIBRARY_OBJECTS) - $(CXX) $(DYNAMIC_LDFLAGS) $^ -o $@ $(LIBRARY_LIBS) $(LDFLAGS) - -$(VAMP_TARGET): $(LIBRARY_OBJECTS) $(VAMP_OBJECTS) - $(CXX) $(VAMP_LDFLAGS) -o $@ $^ $(VAMP_PLUGIN_LIBS) $(LDFLAGS) - -$(LADSPA_TARGET): $(LIBRARY_OBJECTS) $(LADSPA_OBJECTS) - $(CXX) $(LADSPA_LDFLAGS) -o $@ $^ $(LADSPA_PLUGIN_LIBS) $(LDFLAGS) - -bin: - $(MKDIR) $@ lib: $(MKDIR) $@ -install: default - $(MKDIR) -p $(DESTDIR)$(INSTALL_BINDIR) - $(MKDIR) -p $(DESTDIR)$(INSTALL_INCDIR) - $(MKDIR) -p $(DESTDIR)$(INSTALL_LIBDIR) - $(MKDIR) -p $(DESTDIR)$(INSTALL_VAMPDIR) - $(MKDIR) -p $(DESTDIR)$(INSTALL_LADSPADIR) - $(MKDIR) -p $(DESTDIR)$(INSTALL_LRDFDIR) - $(MKDIR) -p $(DESTDIR)$(INSTALL_PKGDIR) - cp $(PROGRAM_TARGET) $(DESTDIR)$(INSTALL_BINDIR) - cp $(PUBLIC_INCLUDES) $(DESTDIR)$(INSTALL_INCDIR) - cp $(STATIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR) - rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME).$(DYNAMIC_ABI_VERSION)$(DYNAMIC_EXTENSION) - rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION) - cp $(DYNAMIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME).$(DYNAMIC_FULL_VERSION)$(DYNAMIC_EXTENSION) - ln -s $(LIBNAME).$(DYNAMIC_FULL_VERSION)$(DYNAMIC_EXTENSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME).$(DYNAMIC_ABI_VERSION)$(DYNAMIC_EXTENSION) - ln -s $(LIBNAME).$(DYNAMIC_FULL_VERSION)$(DYNAMIC_EXTENSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION) - cp $(VAMP_TARGET) $(DESTDIR)$(INSTALL_VAMPDIR) - cp vamp/vamp-rubberband.cat $(DESTDIR)$(INSTALL_VAMPDIR) - cp $(LADSPA_TARGET) $(DESTDIR)$(INSTALL_LADSPADIR) - cp ladspa/ladspa-rubberband.cat $(DESTDIR)$(INSTALL_LADSPADIR) - cp ladspa/ladspa-rubberband.rdf $(DESTDIR)$(INSTALL_LRDFDIR) - sed "s,%PREFIX%,$(PREFIX)," rubberband.pc.in \ - > $(DESTDIR)$(INSTALL_PKGDIR)/rubberband.pc - clean: - rm -f $(LIBRARY_OBJECTS) $(PROGRAM_OBJECTS) $(LADSPA_OBJECTS) $(VAMP_OBJECTS) + rm -f $(LIBRARY_OBJECTS) distclean: clean - rm -f $(PROGRAM_TARGET) $(STATIC_TARGET) $(DYNAMIC_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET) + rm -f $(STATIC_TARGET) depend: - makedepend -f Makefile.osx -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES) + makedepend -f otherbuilds/Makefile.macos-universal -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES) # DO NOT DELETE diff --git a/otherbuilds/configure b/otherbuilds/configure deleted file mode 100755 index 9af6123..0000000 --- a/otherbuilds/configure +++ /dev/null @@ -1,5635 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.70 for RubberBand 1.9.0. -# -# Report bugs to . -# -# -# Copyright (C) 1992-1996, 1998-2017, 2020 Free Software Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -as_nop=: -if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else $as_nop - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - - -# Reset variables that may have inherited troublesome values from -# the environment. - -# IFS needs to be set, to space, tab, and newline, in precisely that order. -# (If _AS_PATH_WALK were called with IFS unset, it would have the -# side effect of setting IFS to empty, thus disabling word splitting.) -# Quoting is to prevent editors from complaining about space-tab. -as_nl=' -' -export as_nl -IFS=" "" $as_nl" - -PS1='$ ' -PS2='> ' -PS4='+ ' - -# Ensure predictable behavior from utilities with locale-dependent output. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# We cannot yet rely on "unset" to work, but we need these variables -# to be unset--not just set to an empty or harmless value--now, to -# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct -# also avoids known problems related to "unset" and subshell syntax -# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). -for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH -do eval test \${$as_var+y} \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done - -# Ensure that fds 0, 1, and 2 are open. -if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi -if (exec 3>&2) ; then :; else exec 2>/dev/null; fi - -# The user is always right. -if ${PATH_SEPARATOR+false} :; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - test -r "$as_dir$0" && as_myself=$as_dir$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="as_nop=: -if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else \$as_nop - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ) -then : - -else \$as_nop - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -blah=\$(echo \$(echo blah)) -test x\"\$blah\" = xblah || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" - if (eval "$as_required") 2>/dev/null -then : - as_have_required=yes -else $as_nop - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null -then : - -else $as_nop - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null -then : - CONFIG_SHELL=$as_shell as_have_required=yes - if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null -then : - break 2 -fi -fi - done;; - esac - as_found=false -done -IFS=$as_save_IFS -if $as_found -then : - -else $as_nop - if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null -then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi -fi - - - if test "x$CONFIG_SHELL" != x -then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno -then : - printf "%s\n" "$0: This script requires a shell more modern than all" - printf "%s\n" "$0: the shells that I found on your system." - if test ${ZSH_VERSION+y} ; then - printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" - printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." - else - printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and -$0: chris.cannam@breakfastquay.com about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit -# as_fn_nop -# --------- -# Do nothing but, unlike ":", preserve the value of $?. -as_fn_nop () -{ - return $? -} -as_nop=as_fn_nop - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null -then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else $as_nop - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null -then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else $as_nop - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - -# as_fn_nop -# --------- -# Do nothing but, unlike ":", preserve the value of $?. -as_fn_nop () -{ - return $? -} -as_nop=as_fn_nop - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - printf "%s\n" "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -# Determine whether it's possible to make 'echo' print without a newline. -# These variables are no longer used directly by Autoconf, but are AC_SUBSTed -# for compatibility with existing Makefiles. -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -# For backward compatibility with old third-party macros, we provide -# the shell variables $as_echo and $as_echo_n. New code should use -# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. -as_echo='printf %s\n' -as_echo_n='printf %s' - - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='RubberBand' -PACKAGE_TARNAME='rubberband' -PACKAGE_VERSION='1.9.0' -PACKAGE_STRING='RubberBand 1.9.0' -PACKAGE_BUGREPORT='chris.cannam@breakfastquay.com' -PACKAGE_URL='' - -ac_unique_file="src/StretcherImpl.h" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_STDIO_H -# include -#endif -#ifdef HAVE_STDLIB_H -# include -#endif -#ifdef HAVE_STRING_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_header_c_list= -ac_subst_vars='LTLIBOBJS -LIBOBJS -Vamp_LIBS -Vamp_CFLAGS -FFTW_LIBS -FFTW_CFLAGS -SNDFILE_LIBS -SNDFILE_CFLAGS -SRC_LIBS -SRC_CFLAGS -PKG_CONFIG_LIBDIR -PKG_CONFIG_PATH -PKG_CONFIG -ac_ct_CC -CFLAGS -CC -OBJEXT -EXEEXT -ac_ct_CXX -CPPFLAGS -LDFLAGS -CXXFLAGS -CXX -WITH_LADSPA -WITH_VAMP -WITH_PROGRAMS -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -runstatedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_programs -enable_vamp -enable_ladspa -' - ac_precious_vars='build_alias -host_alias -target_alias -CXX -CXXFLAGS -LDFLAGS -LIBS -CPPFLAGS -CCC -CC -CFLAGS -PKG_CONFIG -PKG_CONFIG_PATH -PKG_CONFIG_LIBDIR -SRC_CFLAGS -SRC_LIBS -SNDFILE_CFLAGS -SNDFILE_LIBS -FFTW_CFLAGS -FFTW_LIBS -Vamp_CFLAGS -Vamp_LIBS' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: \`$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: \`$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: \`$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: \`$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures RubberBand 1.9.0 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/rubberband] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of RubberBand 1.9.0:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-programs disable compilation of programs - --disable-vamp disable compilation of Vamp plugin - --disable-ladspa disable compilation of LADSPA plugin - -Some influential environment variables: - CXX C++ compiler command - CXXFLAGS C++ compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CC C compiler command - CFLAGS C compiler flags - PKG_CONFIG path to pkg-config utility - PKG_CONFIG_PATH - directories to add to pkg-config's search path - PKG_CONFIG_LIBDIR - path overriding pkg-config's built-in search path - SRC_CFLAGS C compiler flags for SRC, overriding pkg-config - SRC_LIBS linker flags for SRC, overriding pkg-config - SNDFILE_CFLAGS - C compiler flags for SNDFILE, overriding pkg-config - SNDFILE_LIBS - linker flags for SNDFILE, overriding pkg-config - FFTW_CFLAGS C compiler flags for FFTW, overriding pkg-config - FFTW_LIBS linker flags for FFTW, overriding pkg-config - Vamp_CFLAGS C compiler flags for Vamp, overriding pkg-config - Vamp_LIBS linker flags for Vamp, overriding pkg-config - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to . -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for configure.gnu first; this name is used for a wrapper for - # Metaconfig's "Configure" on case-insensitive file systems. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -RubberBand configure 1.9.0 -generated by GNU Autoconf 2.70 - -Copyright (C) 2020 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_cxx_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext -then : - ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_compile - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext -then : - ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -printf %s "checking for $2... " >&6; } -if eval test \${$3+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$3=yes" -else $as_nop - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile -ac_configure_args_raw= -for ac_arg -do - case $ac_arg in - *\'*) - ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append ac_configure_args_raw " '$ac_arg'" -done - -case $ac_configure_args_raw in - *$as_nl*) - ac_safe_unquote= ;; - *) - ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. - ac_unsafe_a="$ac_unsafe_z#~" - ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" - ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; -esac - -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by RubberBand $as_me 1.9.0, which was -generated by GNU Autoconf 2.70. Invocation command line was - - $ $0$ac_configure_args_raw - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - printf "%s\n" "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Sanitize IFS. - IFS=" "" $as_nl" - # Save into config.log some information that might help in debugging. - { - echo - - printf "%s\n" "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - printf "%s\n" "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - printf "%s\n" "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - printf "%s\n" "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - printf "%s\n" "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - printf "%s\n" "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - printf "%s\n" "$as_me: caught signal $ac_signal" - printf "%s\n" "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -printf "%s\n" "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -if test -n "$CONFIG_SITE"; then - ac_site_files="$CONFIG_SITE" -elif test "x$prefix" != xNONE; then - ac_site_files="$prefix/share/config.site $prefix/etc/config.site" -else - ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" -fi - -for ac_site_file in $ac_site_files -do - case $ac_site_file in #( - */*) : - ;; #( - *) : - ac_site_file=./$ac_site_file ;; -esac - if test -f "$ac_site_file" && test -r "$ac_site_file"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -printf "%s\n" "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -printf "%s\n" "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Test code for whether the C++ compiler supports C++98 (global declarations) -ac_cxx_conftest_cxx98_globals=' -// Does the compiler advertise C++98 conformance? -#if !defined __cplusplus || __cplusplus < 199711L -# error "Compiler does not advertise C++98 conformance" -#endif - -// These inclusions are to reject old compilers that -// lack the unsuffixed header files. -#include -#include - -// and are *not* freestanding headers in C++98. -extern void assert (int); -namespace std { - extern int strcmp (const char *, const char *); -} - -// Namespaces, exceptions, and templates were all added after "C++ 2.0". -using std::exception; -using std::strcmp; - -namespace { - -void test_exception_syntax() -{ - try { - throw "test"; - } catch (const char *s) { - // Extra parentheses suppress a warning when building autoconf itself, - // due to lint rules shared with more typical C programs. - assert (!(strcmp) (s, "test")); - } -} - -template struct test_template -{ - T const val; - explicit test_template(T t) : val(t) {} - template T add(U u) { return static_cast(u) + val; } -}; - -} // anonymous namespace -' - -# Test code for whether the C++ compiler supports C++98 (body of main) -ac_cxx_conftest_cxx98_main=' - assert (argc); - assert (! argv[0]); -{ - test_exception_syntax (); - test_template tt (2.0); - assert (tt.add (4) == 6.0); - assert (true && !false); -} -' - -# Test code for whether the C++ compiler supports C++11 (global declarations) -ac_cxx_conftest_cxx11_globals=' -// Does the compiler advertise C++ 2011 conformance? -#if !defined __cplusplus || __cplusplus < 201103L -# error "Compiler does not advertise C++11 conformance" -#endif - -namespace cxx11test -{ - constexpr int get_val() { return 20; } - - struct testinit - { - int i; - double d; - }; - - class delegate - { - public: - delegate(int n) : n(n) {} - delegate(): delegate(2354) {} - - virtual int getval() { return this->n; }; - protected: - int n; - }; - - class overridden : public delegate - { - public: - overridden(int n): delegate(n) {} - virtual int getval() override final { return this->n * 2; } - }; - - class nocopy - { - public: - nocopy(int i): i(i) {} - nocopy() = default; - nocopy(const nocopy&) = delete; - nocopy & operator=(const nocopy&) = delete; - private: - int i; - }; - - // for testing lambda expressions - template Ret eval(Fn f, Ret v) - { - return f(v); - } - - // for testing variadic templates and trailing return types - template auto sum(V first) -> V - { - return first; - } - template auto sum(V first, Args... rest) -> V - { - return first + sum(rest...); - } -} -' - -# Test code for whether the C++ compiler supports C++11 (body of main) -ac_cxx_conftest_cxx11_main=' -{ - // Test auto and decltype - auto a1 = 6538; - auto a2 = 48573953.4; - auto a3 = "String literal"; - - int total = 0; - for (auto i = a3; *i; ++i) { total += *i; } - - decltype(a2) a4 = 34895.034; -} -{ - // Test constexpr - short sa[cxx11test::get_val()] = { 0 }; -} -{ - // Test initializer lists - cxx11test::testinit il = { 4323, 435234.23544 }; -} -{ - // Test range-based for - int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, - 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; - for (auto &x : array) { x += 23; } -} -{ - // Test lambda expressions - using cxx11test::eval; - assert (eval ([](int x) { return x*2; }, 21) == 42); - double d = 2.0; - assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); - assert (d == 5.0); - assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); - assert (d == 5.0); -} -{ - // Test use of variadic templates - using cxx11test::sum; - auto a = sum(1); - auto b = sum(1, 2); - auto c = sum(1.0, 2.0, 3.0); -} -{ - // Test constructor delegation - cxx11test::delegate d1; - cxx11test::delegate d2(); - cxx11test::delegate d3(45); -} -{ - // Test override and final - cxx11test::overridden o1(55464); -} -{ - // Test nullptr - char *c = nullptr; -} -{ - // Test template brackets - test_template<::test_template> v(test_template(12)); -} -{ - // Unicode literals - char const *utf8 = u8"UTF-8 string \u2500"; - char16_t const *utf16 = u"UTF-8 string \u2500"; - char32_t const *utf32 = U"UTF-32 string \u2500"; -} -' - -# Test code for whether the C compiler supports C++11 (complete). -ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} -${ac_cxx_conftest_cxx11_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_cxx_conftest_cxx98_main} - ${ac_cxx_conftest_cxx11_main} - return ok; -} -" - -# Test code for whether the C compiler supports C++98 (complete). -ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_cxx_conftest_cxx98_main} - return ok; -} -" - -# Test code for whether the C compiler supports C89 (global declarations) -ac_c_conftest_c89_globals=' -/* Does the compiler advertise C89 conformance? - Do not test the value of __STDC__, because some compilers set it to 0 - while being otherwise adequately conformant. */ -#if !defined __STDC__ -# error "Compiler does not advertise C89 conformance" -#endif - -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ -struct buf { int x; }; -struct buf * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not \xHH hex character constants. - These do not provoke an error unfortunately, instead are silently treated - as an "x". The following induces an error, until -std is added to get - proper ANSI mode. Curiously \x00 != x always comes out true, for an - array size at least. It is necessary to write \x00 == 0 to get something - that is true only with -std. */ -int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) '\''x'\'' -int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), - int, int);' - -# Test code for whether the C compiler supports C89 (body of main). -ac_c_conftest_c89_main=' -ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); -' - -# Test code for whether the C compiler supports C99 (global declarations) -ac_c_conftest_c99_globals=' -// Does the compiler advertise C99 conformance? -#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L -# error "Compiler does not advertise C99 conformance" -#endif - -#include -extern int puts (const char *); -extern int printf (const char *, ...); -extern int dprintf (int, const char *, ...); -extern void *malloc (size_t); - -// Check varargs macros. These examples are taken from C99 6.10.3.5. -// dprintf is used instead of fprintf to avoid needing to declare -// FILE and stderr. -#define debug(...) dprintf (2, __VA_ARGS__) -#define showlist(...) puts (#__VA_ARGS__) -#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) -static void -test_varargs_macros (void) -{ - int x = 1234; - int y = 5678; - debug ("Flag"); - debug ("X = %d\n", x); - showlist (The first, second, and third items.); - report (x>y, "x is %d but y is %d", x, y); -} - -// Check long long types. -#define BIG64 18446744073709551615ull -#define BIG32 4294967295ul -#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) -#if !BIG_OK - #error "your preprocessor is broken" -#endif -#if BIG_OK -#else - #error "your preprocessor is broken" -#endif -static long long int bignum = -9223372036854775807LL; -static unsigned long long int ubignum = BIG64; - -struct incomplete_array -{ - int datasize; - double data[]; -}; - -struct named_init { - int number; - const wchar_t *name; - double average; -}; - -typedef const char *ccp; - -static inline int -test_restrict (ccp restrict text) -{ - // See if C++-style comments work. - // Iterate through items via the restricted pointer. - // Also check for declarations in for loops. - for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) - continue; - return 0; -} - -// Check varargs and va_copy. -static bool -test_varargs (const char *format, ...) -{ - va_list args; - va_start (args, format); - va_list args_copy; - va_copy (args_copy, args); - - const char *str = ""; - int number = 0; - float fnumber = 0; - - while (*format) - { - switch (*format++) - { - case '\''s'\'': // string - str = va_arg (args_copy, const char *); - break; - case '\''d'\'': // int - number = va_arg (args_copy, int); - break; - case '\''f'\'': // float - fnumber = va_arg (args_copy, double); - break; - default: - break; - } - } - va_end (args_copy); - va_end (args); - - return *str && number && fnumber; -} -' - -# Test code for whether the C compiler supports C99 (body of main). -ac_c_conftest_c99_main=' - // Check bool. - _Bool success = false; - success |= (argc != 0); - - // Check restrict. - if (test_restrict ("String literal") == 0) - success = true; - char *restrict newvar = "Another string"; - - // Check varargs. - success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); - test_varargs_macros (); - - // Check flexible array members. - struct incomplete_array *ia = - malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); - ia->datasize = 10; - for (int i = 0; i < ia->datasize; ++i) - ia->data[i] = i * 1.234; - - // Check named initializers. - struct named_init ni = { - .number = 34, - .name = L"Test wide string", - .average = 543.34343, - }; - - ni.number = 58; - - int dynamic_array[ni.number]; - dynamic_array[0] = argv[0][0]; - dynamic_array[ni.number - 1] = 543; - - // work around unused variable warnings - ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' - || dynamic_array[ni.number - 1] != 543); -' - -# Test code for whether the C compiler supports C11 (global declarations) -ac_c_conftest_c11_globals=' -// Does the compiler advertise C11 conformance? -#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L -# error "Compiler does not advertise C11 conformance" -#endif - -// Check _Alignas. -char _Alignas (double) aligned_as_double; -char _Alignas (0) no_special_alignment; -extern char aligned_as_int; -char _Alignas (0) _Alignas (int) aligned_as_int; - -// Check _Alignof. -enum -{ - int_alignment = _Alignof (int), - int_array_alignment = _Alignof (int[100]), - char_alignment = _Alignof (char) -}; -_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); - -// Check _Noreturn. -int _Noreturn does_not_return (void) { for (;;) continue; } - -// Check _Static_assert. -struct test_static_assert -{ - int x; - _Static_assert (sizeof (int) <= sizeof (long int), - "_Static_assert does not work in struct"); - long int y; -}; - -// Check UTF-8 literals. -#define u8 syntax error! -char const utf8_literal[] = u8"happens to be ASCII" "another string"; - -// Check duplicate typedefs. -typedef long *long_ptr; -typedef long int *long_ptr; -typedef long_ptr long_ptr; - -// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. -struct anonymous -{ - union { - struct { int i; int j; }; - struct { int k; long int l; } w; - }; - int m; -} v1; -' - -# Test code for whether the C compiler supports C11 (body of main). -ac_c_conftest_c11_main=' - _Static_assert ((offsetof (struct anonymous, i) - == offsetof (struct anonymous, w.k)), - "Anonymous union alignment botch"); - v1.i = 2; - v1.w.k = 5; - ok |= v1.i != 5; -' - -# Test code for whether the C compiler supports C11 (complete). -ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} -${ac_c_conftest_c99_globals} -${ac_c_conftest_c11_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - ${ac_c_conftest_c99_main} - ${ac_c_conftest_c11_main} - return ok; -} -" - -# Test code for whether the C compiler supports C99 (complete). -ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} -${ac_c_conftest_c99_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - ${ac_c_conftest_c99_main} - return ok; -} -" - -# Test code for whether the C compiler supports C89 (complete). -ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - return ok; -} -" - -as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" -as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" -as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" -as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" -as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" -as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" -as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" -as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" -as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' - and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -# Check whether --enable-programs was given. -if test ${enable_programs+y} -then : - enableval=$enable_programs; case "${enableval}" in - yes | no ) WITH_PROGRAMS="${enableval}" ;; - *) as_fn_error $? "bad value ${enableval} for --disable-programs" "$LINENO" 5 ;; - esac -else $as_nop - WITH_PROGRAMS="yes" - -fi - - - -# Check whether --enable-vamp was given. -if test ${enable_vamp+y} -then : - enableval=$enable_vamp; case "${enableval}" in - yes | no ) WITH_VAMP="${enableval}" ;; - *) as_fn_error $? "bad value ${enableval} for --disable-vamp" "$LINENO" 5 ;; - esac -else $as_nop - WITH_VAMP="yes" - -fi - - - -# Check whether --enable-ladspa was given. -if test ${enable_ladspa+y} -then : - enableval=$enable_ladspa; case "${enableval}" in - yes | no ) WITH_LADSPA="${enableval}" ;; - *) as_fn_error $? "bad value ${enableval} for --disable-ladspa" "$LINENO" 5 ;; - esac -else $as_nop - WITH_LADSPA="yes" - -fi - - - - - - - - - - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CXX+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -printf "%s\n" "$CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CXX+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -printf "%s\n" "$ac_ct_CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 -printf %s "checking whether the C++ compiler works... " >&6; } -ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else $as_nop - ac_file='' -fi -if test -z "$ac_file" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C++ compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 -printf %s "checking for C++ compiler default output file name... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -printf "%s\n" "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -printf %s "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else $as_nop - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -printf "%s\n" "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -printf %s "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot run C++ compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -printf "%s\n" "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -printf %s "checking for suffix of object files... " >&6; } -if test ${ac_cv_objext+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -printf "%s\n" "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 -printf %s "checking whether the compiler supports GNU C++... " >&6; } -if test ${ac_cv_cxx_compiler_gnu+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - ac_compiler_gnu=yes -else $as_nop - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+y} -ac_save_CXXFLAGS=$CXXFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -printf %s "checking whether $CXX accepts -g... " >&6; } -if test ${ac_cv_prog_cxx_g+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_g=yes -else $as_nop - CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - -else $as_nop - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } -if test $ac_test_CXXFLAGS; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 -printf %s "checking for $CXX option to enable C++11 features... " >&6; } -if test ${ac_cv_prog_cxx_cxx11+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cxx_cxx11=no -ac_save_CXX=$CXX -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_cxx_conftest_cxx11_program -_ACEOF -for ac_arg in '' -std=gnu++11 -std=c++11 -std=gnu++0x -std=c++0x -qlanglvl=extended0x -AA -do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_cxx11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx11" != "xno" && break -done -rm -f conftest.$ac_ext -CXX=$ac_save_CXX - -fi -# AC_CACHE_VAL -ac_prog_cxx_stdcxx_options= -case "x$ac_cv_prog_cxx_cxx11" in #( - x) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } ;; #( - xno) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } ;; #( - *) : - ac_prog_cxx_stdcxx_options=" $ac_cv_prog_cxx_cxx11" - CXX=$CXX$ac_prog_cxx_stdcxx_options - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } ;; -esac -if test "x$ac_cv_prog_cxx_cxx11" != xno -then : - ac_prog_cxx_stdcxx=cxx11 - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 - ac_cv_prog_cxx_cxx98=$ac_cv_prog_cxx_cxx11 -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 -printf %s "checking for $CXX option to enable C++98 features... " >&6; } -if test ${ac_cv_prog_cxx_cxx98+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cxx_cxx98=no -ac_save_CXX=$CXX -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_cxx_conftest_cxx98_program -_ACEOF -for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA -do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_cxx98=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx98" != "xno" && break -done -rm -f conftest.$ac_ext -CXX=$ac_save_CXX - -fi -# AC_CACHE_VAL -ac_prog_cxx_stdcxx_options= -case "x$ac_cv_prog_cxx_cxx98" in #( - x) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } ;; #( - xno) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } ;; #( - *) : - ac_prog_cxx_stdcxx_options=" $ac_cv_prog_cxx_cxx98" - CXX=$CXX$ac_prog_cxx_stdcxx_options - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } ;; -esac -if test "x$ac_cv_prog_cxx_cxx98" != xno -then : - ac_prog_cxx_stdcxx=cxx98 - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 -else $as_nop - ac_prog_cxx_stdcxx=no - ac_cv_prog_cxx_stdcxx=no -fi - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. -set dummy ${ac_tool_prefix}clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}clang" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "clang", so it can be a program name with args. -set dummy clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="clang" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -fi - - -test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion -version; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 -printf %s "checking whether the compiler supports GNU C... " >&6; } -if test ${ac_cv_c_compiler_gnu+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_compiler_gnu=yes -else $as_nop - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+y} -ac_save_CFLAGS=$CFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -printf %s "checking whether $CC accepts -g... " >&6; } -if test ${ac_cv_prog_cc_g+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_g=yes -else $as_nop - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - -else $as_nop - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -printf "%s\n" "$ac_cv_prog_cc_g" >&6; } -if test $ac_test_CFLAGS; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 -printf %s "checking for $CC option to enable C11 features... " >&6; } -if test ${ac_cv_prog_cc_c11+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cc_c11=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c11_program -_ACEOF -for ac_arg in '' -std=gnu11 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c11" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -ac_prog_cc_stdc_options= -case "x$ac_cv_prog_cc_c11" in #( - x) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } ;; #( - xno) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } ;; #( - *) : - ac_prog_cc_stdc_options=" $ac_cv_prog_cc_c11" - CC="$CC$ac_prog_cc_stdc_options" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 -printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c11" != xno -then : - ac_prog_cc_stdc=c11 - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 -printf %s "checking for $CC option to enable C99 features... " >&6; } -if test ${ac_cv_prog_cc_c99+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c89_program -_ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc1x -qlanglvl=extc99 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c99=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c99" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -ac_prog_cc_stdc_options= -case "x$ac_cv_prog_cc_c99" in #( - x) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } ;; #( - xno) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } ;; #( - *) : - ac_prog_cc_stdc_options=" $ac_cv_prog_cc_c99" - CC="$CC$ac_prog_cc_stdc_options" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c99" != xno -then : - ac_prog_cc_stdc=c99 - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 -printf %s "checking for $CC option to enable C89 features... " >&6; } -if test ${ac_cv_prog_cc_c89+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c89_program -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -ac_prog_cc_stdc_options= -case "x$ac_cv_prog_cc_c89" in #( - x) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } ;; #( - xno) : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } ;; #( - *) : - ac_prog_cc_stdc_options=" $ac_cv_prog_cc_c89" - CC="$CC$ac_prog_cc_stdc_options" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno -then : - ac_prog_cc_stdc=c89 - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 -else $as_nop - ac_prog_cc_stdc=no - ac_cv_prog_cc_stdc=no -fi - -fi - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKG_CONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -printf "%s\n" "$PKG_CONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_pt_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=0.9.0 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - PKG_CONFIG="" - fi -fi - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SRC" >&5 -printf %s "checking for SRC... " >&6; } - -if test -n "$SRC_CFLAGS"; then - pkg_cv_SRC_CFLAGS="$SRC_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"samplerate\""; } >&5 - ($PKG_CONFIG --exists --print-errors "samplerate") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_SRC_CFLAGS=`$PKG_CONFIG --cflags "samplerate" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$SRC_LIBS"; then - pkg_cv_SRC_LIBS="$SRC_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"samplerate\""; } >&5 - ($PKG_CONFIG --exists --print-errors "samplerate") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_SRC_LIBS=`$PKG_CONFIG --libs "samplerate" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - SRC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "samplerate" 2>&1` - else - SRC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "samplerate" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$SRC_PKG_ERRORS" >&5 - - as_fn_error $? "Package requirements (samplerate) were not met: - -$SRC_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables SRC_CFLAGS -and SRC_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details." "$LINENO" 5 -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables SRC_CFLAGS -and SRC_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see . -See \`config.log' for more details" "$LINENO" 5; } -else - SRC_CFLAGS=$pkg_cv_SRC_CFLAGS - SRC_LIBS=$pkg_cv_SRC_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - - -if test "x$WITH_PROGRAMS" = "xyes"; then - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SNDFILE" >&5 -printf %s "checking for SNDFILE... " >&6; } - -if test -n "$SNDFILE_CFLAGS"; then - pkg_cv_SNDFILE_CFLAGS="$SNDFILE_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndfile\""; } >&5 - ($PKG_CONFIG --exists --print-errors "sndfile") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_SNDFILE_CFLAGS=`$PKG_CONFIG --cflags "sndfile" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$SNDFILE_LIBS"; then - pkg_cv_SNDFILE_LIBS="$SNDFILE_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndfile\""; } >&5 - ($PKG_CONFIG --exists --print-errors "sndfile") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_SNDFILE_LIBS=`$PKG_CONFIG --libs "sndfile" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - SNDFILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "sndfile" 2>&1` - else - SNDFILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "sndfile" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$SNDFILE_PKG_ERRORS" >&5 - - as_fn_error $? "Package requirements (sndfile) were not met: - -$SNDFILE_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables SNDFILE_CFLAGS -and SNDFILE_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details." "$LINENO" 5 -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables SNDFILE_CFLAGS -and SNDFILE_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see . -See \`config.log' for more details" "$LINENO" 5; } -else - SNDFILE_CFLAGS=$pkg_cv_SNDFILE_CFLAGS - SNDFILE_LIBS=$pkg_cv_SNDFILE_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi -fi - - - - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for FFTW" >&5 -printf %s "checking for FFTW... " >&6; } - -if test -n "$FFTW_CFLAGS"; then - pkg_cv_FFTW_CFLAGS="$FFTW_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fftw3\""; } >&5 - ($PKG_CONFIG --exists --print-errors "fftw3") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FFTW_CFLAGS=`$PKG_CONFIG --cflags "fftw3" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$FFTW_LIBS"; then - pkg_cv_FFTW_LIBS="$FFTW_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fftw3\""; } >&5 - ($PKG_CONFIG --exists --print-errors "fftw3") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FFTW_LIBS=`$PKG_CONFIG --libs "fftw3" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - FFTW_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "fftw3" 2>&1` - else - FFTW_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "fftw3" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$FFTW_PKG_ERRORS" >&5 - - as_fn_error $? "Package requirements (fftw3) were not met: - -$FFTW_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables FFTW_CFLAGS -and FFTW_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details." "$LINENO" 5 -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables FFTW_CFLAGS -and FFTW_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see . -See \`config.log' for more details" "$LINENO" 5; } -else - FFTW_CFLAGS=$pkg_cv_FFTW_CFLAGS - FFTW_LIBS=$pkg_cv_FFTW_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - - -if test "x$WITH_LADSPA" = "xyes"; then - -ac_header= ac_cache= -for ac_item in $ac_header_c_list -do - if test $ac_cache; then - ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" - if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then - printf "%s\n" "#define $ac_item 1" >> confdefs.h - fi - ac_header= ac_cache= - elif test $ac_header; then - ac_cache=$ac_item - else - ac_header=$ac_item - fi -done - - - - - - - - -if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes -then : - -printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h - -fi - for ac_header in ladspa.h -do : - ac_fn_c_check_header_compile "$LINENO" "ladspa.h" "ac_cv_header_ladspa_h" "$ac_includes_default" -if test "x$ac_cv_header_ladspa_h" = xyes -then : - printf "%s\n" "#define HAVE_LADSPA_H 1" >>confdefs.h - -else $as_nop - as_fn_error $? "LADSPA header not found - -Consider installing the LADSPA SDK or configure with --disable-ladspa" "$LINENO" 5 -fi - -done -fi -ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" -if test "x$ac_cv_header_pthread_h" = xyes -then : - printf "%s\n" "#define HAVE_PTHREAD_H 1" >>confdefs.h - -fi - - -if test "x$WITH_VAMP" = "xyes"; then - -pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Vamp" >&5 -printf %s "checking for Vamp... " >&6; } - -if test -n "$Vamp_CFLAGS"; then - pkg_cv_Vamp_CFLAGS="$Vamp_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vamp-sdk\""; } >&5 - ($PKG_CONFIG --exists --print-errors "vamp-sdk") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_Vamp_CFLAGS=`$PKG_CONFIG --cflags "vamp-sdk" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$Vamp_LIBS"; then - pkg_cv_Vamp_LIBS="$Vamp_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vamp-sdk\""; } >&5 - ($PKG_CONFIG --exists --print-errors "vamp-sdk") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_Vamp_LIBS=`$PKG_CONFIG --libs "vamp-sdk" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - Vamp_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "vamp-sdk" 2>&1` - else - Vamp_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "vamp-sdk" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$Vamp_PKG_ERRORS" >&5 - - as_fn_error $? "Package requirements (vamp-sdk) were not met: - -$Vamp_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables Vamp_CFLAGS -and Vamp_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details." "$LINENO" 5 -elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables Vamp_CFLAGS -and Vamp_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see . -See \`config.log' for more details" "$LINENO" 5; } -else - Vamp_CFLAGS=$pkg_cv_Vamp_CFLAGS - Vamp_LIBS=$pkg_cv_Vamp_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi -fi - - - -if test "x$GCC" = "xyes"; then - case " $CFLAGS " in - *[\ \ ]-fPIC\ -Wall[\ \ ]*) ;; - *) CFLAGS="$CFLAGS -fPIC -Wall" ;; - esac - case " $CXXFLAGS " in - *[\ \ ]-fPIC\ -Wall[\ \ ]*) ;; - *) CXXFLAGS="$CXXFLAGS -fPIC -Wall" ;; - esac -fi - -ac_config_files="$ac_config_files Makefile" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -printf "%s\n" "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -ac_script=' -:mline -/\\$/{ - N - s,\\\n,, - b mline -} -t clear -:clear -s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g -t quote -s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g -t quote -b any -:quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g -s/\$/$$/g -H -:any -${ - g - s/^\n// - s/\n/ /g - p -} -' -DEFS=`sed -n "$ac_script" confdefs.h` - - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -as_nop=: -if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else $as_nop - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - - -# Reset variables that may have inherited troublesome values from -# the environment. - -# IFS needs to be set, to space, tab, and newline, in precisely that order. -# (If _AS_PATH_WALK were called with IFS unset, it would have the -# side effect of setting IFS to empty, thus disabling word splitting.) -# Quoting is to prevent editors from complaining about space-tab. -as_nl=' -' -export as_nl -IFS=" "" $as_nl" - -PS1='$ ' -PS2='> ' -PS4='+ ' - -# Ensure predictable behavior from utilities with locale-dependent output. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# We cannot yet rely on "unset" to work, but we need these variables -# to be unset--not just set to an empty or harmless value--now, to -# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct -# also avoids known problems related to "unset" and subshell syntax -# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). -for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH -do eval test \${$as_var+y} \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done - -# Ensure that fds 0, 1, and 2 are open. -if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi -if (exec 3>&2) ; then :; else exec 2>/dev/null; fi - -# The user is always right. -if ${PATH_SEPARATOR+false} :; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - test -r "$as_dir$0" && as_myself=$as_dir$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - printf "%s\n" "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null -then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else $as_nop - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null -then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else $as_nop - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - -# Determine whether it's possible to make 'echo' print without a newline. -# These variables are no longer used directly by Autoconf, but are AC_SUBSTed -# for compatibility with existing Makefiles. -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -# For backward compatibility with old third-party macros, we provide -# the shell variables $as_echo and $as_echo_n. New code should use -# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. -as_echo='printf %s\n' -as_echo_n='printf %s' - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by RubberBand $as_me 1.9.0, which was -generated by GNU Autoconf 2.70. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - -Configuration files: -$config_files - -Report bugs to ." - -_ACEOF -ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` -ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config='$ac_cs_config_escaped' -ac_cs_version="\\ -RubberBand config.status 1.9.0 -configured by $0, generated by GNU Autoconf 2.70, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2020 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - printf "%s\n" "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - printf "%s\n" "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h | --help | --hel | -h ) - printf "%s\n" "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - printf "%s\n" "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - - -eval set X " :F $CONFIG_FILES " -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -printf "%s\n" "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`printf "%s\n" "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - - - - esac - -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - - diff --git a/otherbuilds/configure.ac b/otherbuilds/configure.ac deleted file mode 100644 index aca9b2e..0000000 --- a/otherbuilds/configure.ac +++ /dev/null @@ -1,80 +0,0 @@ - -AC_INIT([RubberBand],[1.9.0],[chris.cannam@breakfastquay.com]) - -AC_ARG_ENABLE(programs, - [ --disable-programs disable compilation of programs], - [case "${enableval}" in - yes | no ) WITH_PROGRAMS="${enableval}" ;; - *) AC_MSG_ERROR(bad value ${enableval} for --disable-programs) ;; - esac], - [WITH_PROGRAMS="yes"] -) -AC_SUBST(WITH_PROGRAMS) - -AC_ARG_ENABLE(vamp, - [ --disable-vamp disable compilation of Vamp plugin], - [case "${enableval}" in - yes | no ) WITH_VAMP="${enableval}" ;; - *) AC_MSG_ERROR(bad value ${enableval} for --disable-vamp) ;; - esac], - [WITH_VAMP="yes"] -) -AC_SUBST(WITH_VAMP) - -AC_ARG_ENABLE(ladspa, - [ --disable-ladspa disable compilation of LADSPA plugin], - [case "${enableval}" in - yes | no ) WITH_LADSPA="${enableval}" ;; - *) AC_MSG_ERROR(bad value ${enableval} for --disable-ladspa) ;; - esac], - [WITH_LADSPA="yes"] -) -AC_SUBST(WITH_LADSPA) - -AC_CONFIG_SRCDIR(src/StretcherImpl.h) -AC_PROG_CXX -AC_PROG_CC - -PKG_CHECK_MODULES([SRC],[samplerate]) -AC_SUBST(SRC_CFLAGS) -AC_SUBST(SRC_LIBS) - -if test "x$WITH_PROGRAMS" = "xyes"; then - PKG_CHECK_MODULES([SNDFILE],[sndfile]) -fi -AC_SUBST(SNDFILE_CFLAGS) -AC_SUBST(SNDFILE_LIBS) - -PKG_CHECK_MODULES([FFTW],[fftw3]) -AC_SUBST(FFTW_CFLAGS) -AC_SUBST(FFTW_LIBS) - -if test "x$WITH_LADSPA" = "xyes"; then - AC_CHECK_HEADERS(ladspa.h, [], [AC_MSG_ERROR([LADSPA header not found - -Consider installing the LADSPA SDK or configure with --disable-ladspa])]) -fi -AC_CHECK_HEADERS(pthread.h) - -if test "x$WITH_VAMP" = "xyes"; then - PKG_CHECK_MODULES([Vamp],[vamp-sdk]) -fi -AC_SUBST(Vamp_CFLAGS) -AC_SUBST(Vamp_LIBS) - -changequote(,)dnl -if test "x$GCC" = "xyes"; then - case " $CFLAGS " in - *[\ \ ]-fPIC\ -Wall[\ \ ]*) ;; - *) CFLAGS="$CFLAGS -fPIC -Wall" ;; - esac - case " $CXXFLAGS " in - *[\ \ ]-fPIC\ -Wall[\ \ ]*) ;; - *) CXXFLAGS="$CXXFLAGS -fPIC -Wall" ;; - esac -fi -changequote([,])dnl - -AC_CONFIG_FILES([Makefile]) -AC_OUTPUT - From 779ebb005dff854b0d7b0d03c50947e3f9797f1c Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 26 Feb 2021 11:03:09 +0000 Subject: [PATCH 61/93] Check the otherbuilds builds in the CI run --- .build.yml | 1 + .github/workflows/macos-ios.yml | 3 +++ otherbuilds/check.sh | 13 +++++++++++++ 3 files changed, 17 insertions(+) create mode 100755 otherbuilds/check.sh diff --git a/.build.yml b/.build.yml index b66fa42..903c7c3 100644 --- a/.build.yml +++ b/.build.yml @@ -17,6 +17,7 @@ tasks: - build: | cd rubberband ninja -C build + ./otherbuilds/check.sh triggers: - action: email condition: always diff --git a/.github/workflows/macos-ios.yml b/.github/workflows/macos-ios.yml index f17deb7..2c1e5f9 100644 --- a/.github/workflows/macos-ios.yml +++ b/.github/workflows/macos-ios.yml @@ -21,4 +21,7 @@ jobs: run: ninja -C build_macos - name: make ios run: ninja -C build_ios + - name: check otherbuilds + run: otherbuilds/check.sh + diff --git a/otherbuilds/check.sh b/otherbuilds/check.sh new file mode 100755 index 0000000..9d4d006 --- /dev/null +++ b/otherbuilds/check.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -eu +if [ ! -d /Applications ]; then + make -f otherbuilds/Makefile.linux + g++ main/main.cpp lib/librubberband.a -Isrc -o test -lsndfile -lsamplerate -lpthread + ./test -V +else + make -f otherbuilds/Makefile.macos + c++ main/main.cpp lib/librubberband.a -Isrc -o test -lsndfile -lsamplerate -framework Accelerate + ./test -V + make -f otherbuilds/Makefile.macos clean + make -f otherbuilds/Makefile.ios +fi From 2dffd9eb9005d0014131202a8cbaa3a6e334f58b Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 26 Feb 2021 11:09:47 +0000 Subject: [PATCH 62/93] Create target dir --- otherbuilds/Makefile.ios | 4 +--- otherbuilds/Makefile.linux | 16 +++++++--------- otherbuilds/Makefile.macos | 10 ++++------ 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/otherbuilds/Makefile.ios b/otherbuilds/Makefile.ios index 7c12f82..f6b8abe 100644 --- a/otherbuilds/Makefile.ios +++ b/otherbuilds/Makefile.ios @@ -20,7 +20,7 @@ CFLAGS_SIM := $(ARCHFLAGS_SIM) $(OPTFLAGS) AR := ar LIPO := lipo -MKDIR := mkdir +MKDIR := mkdir -p LIBNAME := librubberband @@ -29,9 +29,7 @@ STATIC_TARGET_DEV := lib/$(LIBNAME).dev.a STATIC_TARGET_SIM := lib/$(LIBNAME).sim.a default: lib $(STATIC_TARGET) - all: lib $(STATIC_TARGET) - static: lib $(STATIC_TARGET) PUBLIC_INCLUDES := \ diff --git a/otherbuilds/Makefile.linux b/otherbuilds/Makefile.linux index f73b0f8..a8e5443 100644 --- a/otherbuilds/Makefile.linux +++ b/otherbuilds/Makefile.linux @@ -10,18 +10,16 @@ CXXFLAGS := $(ARCHFLAGS) $(OPTFLAGS) -I. -Isrc -Irubberband -DHAVE_LIBSAMPLERATE CFLAGS := $(ARCHFLAGS) $(OPTFLAGS) -AR := ar -MKDIR := mkdir +AR := ar +MKDIR := mkdir -p -LIBNAME := librubberband +LIBNAME := librubberband -STATIC_TARGET := lib/$(LIBNAME).a +STATIC_TARGET := lib/$(LIBNAME).a -default: $(STATIC_TARGET) - -all: $(STATIC_TARGET) - -static: $(STATIC_TARGET) +default: lib $(STATIC_TARGET) +all: lib $(STATIC_TARGET) +static: lib $(STATIC_TARGET) PUBLIC_INCLUDES := \ rubberband/rubberband-c.h \ diff --git a/otherbuilds/Makefile.macos b/otherbuilds/Makefile.macos index 96c612a..eae185f 100644 --- a/otherbuilds/Makefile.macos +++ b/otherbuilds/Makefile.macos @@ -10,17 +10,15 @@ CXXFLAGS := $(ARCHFLAGS) $(OPTFLAGS) -I. -Isrc -Irubberband -I/usr/local/include CFLAGS := $(ARCHFLAGS) $(OPTFLAGS) -AR := ar -MKDIR := mkdir +AR := ar +MKDIR := mkdir -p -LIBNAME := librubberband +LIBNAME := librubberband -STATIC_TARGET := lib/$(LIBNAME).a +STATIC_TARGET := lib/$(LIBNAME).a default: lib $(STATIC_TARGET) - all: lib $(STATIC_TARGET) - static: lib $(STATIC_TARGET) PUBLIC_INCLUDES := \ From 8b86e0862cdec9b5099398267db71c3d0d4c8736 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 26 Feb 2021 11:43:21 +0000 Subject: [PATCH 63/93] Add include path --- otherbuilds/check.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/otherbuilds/check.sh b/otherbuilds/check.sh index 9d4d006..19aee02 100755 --- a/otherbuilds/check.sh +++ b/otherbuilds/check.sh @@ -2,11 +2,11 @@ set -eu if [ ! -d /Applications ]; then make -f otherbuilds/Makefile.linux - g++ main/main.cpp lib/librubberband.a -Isrc -o test -lsndfile -lsamplerate -lpthread + g++ main/main.cpp lib/librubberband.a -I. -Isrc -o test -lsndfile -lsamplerate -lpthread ./test -V else make -f otherbuilds/Makefile.macos - c++ main/main.cpp lib/librubberband.a -Isrc -o test -lsndfile -lsamplerate -framework Accelerate + c++ main/main.cpp lib/librubberband.a -I. -Isrc -o test -lsndfile -lsamplerate -framework Accelerate ./test -V make -f otherbuilds/Makefile.macos clean make -f otherbuilds/Makefile.ios From 120edca223bd831542d7f0d0511212db804c5805 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 5 Mar 2021 10:31:00 +0000 Subject: [PATCH 64/93] Build updates for Windows --- cross/windows-cl.txt | 9 + cross/windows-clang.txt | 9 + main/main.cpp | 1 + meson.build | 13 +- otherbuilds/Makefile.linux | 2 +- ...ram.vcxproj => rubberband-library.vcxproj} | 154 +++++++++--------- src/base/Scavenger.h | 2 +- src/system/sysutils.h | 16 +- 8 files changed, 119 insertions(+), 87 deletions(-) create mode 100644 cross/windows-cl.txt create mode 100644 cross/windows-clang.txt rename otherbuilds/{rubberband-program.vcxproj => rubberband-library.vcxproj} (52%) diff --git a/cross/windows-cl.txt b/cross/windows-cl.txt new file mode 100644 index 0000000..a690ccc --- /dev/null +++ b/cross/windows-cl.txt @@ -0,0 +1,9 @@ + +[properties] +needs_exe_wrapper = false + +[binaries] +c = 'cl' +cpp = 'cl' + + diff --git a/cross/windows-clang.txt b/cross/windows-clang.txt new file mode 100644 index 0000000..82a9d35 --- /dev/null +++ b/cross/windows-clang.txt @@ -0,0 +1,9 @@ + +[properties] +needs_exe_wrapper = false + +[binaries] +c = 'clang' +cpp = 'clang++' + + diff --git a/main/main.cpp b/main/main.cpp index 4231ffc..f22383e 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -54,6 +54,7 @@ using RubberBand::gettimeofday; #ifdef _MSC_VER using RubberBand::usleep; +#define strdup _strdup #endif double tempo_convert(const char *str) diff --git a/meson.build b/meson.build index 9f5f8b8..e9722b3 100644 --- a/meson.build +++ b/meson.build @@ -5,7 +5,9 @@ project( version: '1.9.0', license: 'GPL-2.0-or-later', default_options: [ - 'cpp_std=c++11', + # All Rubber Band code is actually C++98, but some compilers no + # longer support that + 'cpp_std=c++14', 'buildtype=release', 'b_ndebug=if-release', 'b_lundef=true', @@ -271,6 +273,13 @@ if not sndfile_dep.found() has_headers: ['sndfile.h'], header_args: extra_include_args, required: false) + if not sndfile_dep.found() + sndfile_dep = cpp.find_library('sndfile-1', + dirs: get_option('extra_lib_dirs'), + has_headers: ['sndfile.h'], + header_args: extra_include_args, + required: false) + endif endif have_sndfile = sndfile_dep.found() @@ -323,8 +332,8 @@ if system == 'darwin' endif # end architecture elif system == 'windows' + feature_defines += ['-D_WIN32', '-DNOMINMAX', '-D_USE_MATH_DEFINES', '-DGETOPT_API='] if cpp.get_id() == 'msvc' - feature_defines += ['-DWIN32', '-D__MSVC__', '-DNOMINMAX', '-D_USE_MATH_DEFINES', '-DGETOPT_API='] ladspa_symbol_args += ['-EXPORT:ladspa_descriptor'] vamp_symbol_args += ['-EXPORT:vampGetPluginDescriptor'] endif diff --git a/otherbuilds/Makefile.linux b/otherbuilds/Makefile.linux index a8e5443..324b038 100644 --- a/otherbuilds/Makefile.linux +++ b/otherbuilds/Makefile.linux @@ -6,7 +6,7 @@ OPTFLAGS := -DNDEBUG -ffast-math -O3 -ftree-vectorize ARCHFLAGS := -CXXFLAGS := $(ARCHFLAGS) $(OPTFLAGS) -I. -Isrc -Irubberband -DHAVE_LIBSAMPLERATE -DUSE_KISSFFT -DNO_THREAD_CHECKS -DUSE_PTHREADS -DNO_TIMING -DHAVE_POSIX_MEMALIGN -DNDEBUG +CXXFLAGS := -std=c++98 $(ARCHFLAGS) $(OPTFLAGS) -I. -Isrc -Irubberband -DHAVE_LIBSAMPLERATE -DUSE_KISSFFT -DNO_THREAD_CHECKS -DUSE_PTHREADS -DNO_TIMING -DHAVE_POSIX_MEMALIGN -DNDEBUG CFLAGS := $(ARCHFLAGS) $(OPTFLAGS) diff --git a/otherbuilds/rubberband-program.vcxproj b/otherbuilds/rubberband-library.vcxproj similarity index 52% rename from otherbuilds/rubberband-program.vcxproj rename to otherbuilds/rubberband-library.vcxproj index 00cd8e6..93125a2 100644 --- a/otherbuilds/rubberband-program.vcxproj +++ b/otherbuilds/rubberband-library.vcxproj @@ -19,26 +19,27 @@ - {06838307-FEAA-4DB0-8E08-AF19698E9C40} - rubberband-program + {020CEB11-EF4E-400E-971D-A35DB69D7CF9} + rubberband-library Win32Proj + 10.0 - Application - v140 + StaticLibrary + v142 - Application - v140 + StaticLibrary + v142 - Application - v140 + StaticLibrary + v142 - Application - v140 + StaticLibrary + v142 @@ -62,67 +63,43 @@ Debug\ Debug\ - true - MinimumRecommendedRules.ruleset - - + true + $(SourcePath) - true - MinimumRecommendedRules.ruleset - - + true Release\ Release\ - - MinimumRecommendedRules.ruleset - - - - - - MinimumRecommendedRules.ruleset - - Disabled - .;.\rubberband;.\src;C:\Program Files (x86)\Mega-Nerd\libsndfile\include;%(AdditionalIncludeDirectories) - __MSVC__;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ..;..\src;%(AdditionalIncludeDirectories) + __MSVC__;WIN32;_DEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;USE_SPEEX;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL - Level3 + Level2 EditAndContinue + false - - .\Debug\rubberband-library.lib;C:\Program Files (x86)\Mega-Nerd\libsndfile\lib\libsndfile-1.lib;%(AdditionalDependencies) - true - Console - MachineX86 - Disabled - .;.\rubberband;.\src;C:\Program Files\Mega-Nerd\libsndfile\include;%(AdditionalIncludeDirectories) - __MSVC__;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ..;..\src;%(AdditionalIncludeDirectories) + __MSVC__;WIN32;_DEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;USE_SPEEX;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL - Level3 + Level2 ProgramDatabase + false - - .\x64\Debug\rubberband-library.lib;C:\Program Files\Mega-Nerd\libsndfile\lib\libsndfile-1.lib;%(AdditionalDependencies) - true - Console - @@ -131,23 +108,16 @@ true Speed true - .;.\rubberband;.\src;C:\Program Files (x86)\Mega-Nerd\libsndfile\include;%(AdditionalIncludeDirectories) - __MSVC__;WIN32;NDEBUG;_CONSOLE;WANT_TIMING;%(PreprocessorDefinitions) + ..;..\src;%(AdditionalIncludeDirectories) + __MSVC__;WIN32;NDEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;NO_TIMING;USE_SPEEX;NO_THREAD_CHECKS;%(PreprocessorDefinitions) MultiThreadedDLL + false StreamingSIMDExtensions Fast Level2 ProgramDatabase - - .\Release\rubberband-library.lib;C:\Program Files (x86)\Mega-Nerd\libsndfile\lib\libsndfile-1.lib;%(AdditionalDependencies) - false - Console - true - true - MachineX86 - @@ -156,9 +126,10 @@ true Speed true - .;.\rubberband;.\src;C:\Program Files\Mega-Nerd\libsndfile\include;%(AdditionalIncludeDirectories) - __MSVC__;WIN32;NDEBUG;_CONSOLE;WANT_TIMING;%(PreprocessorDefinitions) + ..;..\src;%(AdditionalIncludeDirectories) + __MSVC__;WIN32;NDEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;NO_TIMING;USE_SPEEX;NO_THREAD_CHECKS;%(PreprocessorDefinitions) MultiThreadedDLL + false StreamingSIMDExtensions Fast @@ -166,30 +137,61 @@ Level2 ProgramDatabase - - .\x64\Release\rubberband-library.lib;C:\Program Files\Mega-Nerd\libsndfile\lib\libsndfile-1.lib;%(AdditionalDependencies) - false - Console - true - true - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file + diff --git a/src/base/Scavenger.h b/src/base/Scavenger.h index e5b9b24..e8b6b5b 100644 --- a/src/base/Scavenger.h +++ b/src/base/Scavenger.h @@ -29,7 +29,7 @@ #include #include -#ifndef WIN32 +#ifndef _MSC_VER #include #endif diff --git a/src/system/sysutils.h b/src/system/sysutils.h index 9a0f53a..86a2896 100644 --- a/src/system/sysutils.h +++ b/src/system/sysutils.h @@ -24,13 +24,6 @@ #ifndef RUBBERBAND_SYSUTILS_H #define RUBBERBAND_SYSUTILS_H -#ifdef _MSC_VER -# if _MSC_VER < 1800 -# include "float_cast/float_cast.h" -# endif -# define R__ __restrict -#endif - #ifdef __clang__ # define R__ __restrict__ #else @@ -39,6 +32,15 @@ # endif #endif +#ifdef _MSC_VER +# if _MSC_VER < 1800 +# include "float_cast/float_cast.h" +# endif +# ifndef R__ +# define R__ __restrict +# endif +#endif + #ifndef R__ # define R__ #endif From d68c4b7abb3a7c760510202e071e2e1381c48ed1 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 5 Mar 2021 10:33:27 +0000 Subject: [PATCH 65/93] Untabify --- meson.build | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/meson.build b/meson.build index e9722b3..2b933bf 100644 --- a/meson.build +++ b/meson.build @@ -152,10 +152,10 @@ elif fft == 'fftw' pkgconfig_requirements += fftw3_dep else fftw_dep = cpp.find_library('fftw3', - dirs: get_option('extra_lib_dirs'), - has_headers: ['fftw3.h'], - header_args: extra_include_args, - required: true) + dirs: get_option('extra_lib_dirs'), + has_headers: ['fftw3.h'], + header_args: extra_include_args, + required: true) endif feature_dependencies += fftw3_dep feature_defines += ['-DHAVE_FFTW3', '-DFFTW_DOUBLE_ONLY'] @@ -188,10 +188,10 @@ if resampler == 'libsamplerate' pkgconfig_requirements += samplerate_dep else samplerate_dep = cpp.find_library('samplerate', - dirs: get_option('extra_lib_dirs'), - has_headers: ['samplerate.h'], - header_args: extra_include_args, - required: true) + dirs: get_option('extra_lib_dirs'), + has_headers: ['samplerate.h'], + header_args: extra_include_args, + required: true) endif feature_dependencies += samplerate_dep feature_defines += ['-DHAVE_LIBSAMPLERATE'] @@ -253,32 +253,32 @@ endif # ipp_needed if not vamp_dep.found() vamp_dep = cpp.find_library('VampPluginSDK', - dirs: get_option('extra_lib_dirs'), - has_headers: ['vamp-sdk.h'], - header_args: extra_include_args, - required: false) + dirs: get_option('extra_lib_dirs'), + has_headers: ['vamp-sdk.h'], + header_args: extra_include_args, + required: false) if not vamp_dep.found() vamp_dep = cpp.find_library('vamp-sdk', - dirs: get_option('extra_lib_dirs'), - has_headers: ['vamp-sdk.h'], - header_args: extra_include_args, - required: false) + dirs: get_option('extra_lib_dirs'), + has_headers: ['vamp-sdk.h'], + header_args: extra_include_args, + required: false) endif endif have_vamp = vamp_dep.found() if not sndfile_dep.found() sndfile_dep = cpp.find_library('sndfile', - dirs: get_option('extra_lib_dirs'), - has_headers: ['sndfile.h'], - header_args: extra_include_args, - required: false) + dirs: get_option('extra_lib_dirs'), + has_headers: ['sndfile.h'], + header_args: extra_include_args, + required: false) if not sndfile_dep.found() sndfile_dep = cpp.find_library('sndfile-1', - dirs: get_option('extra_lib_dirs'), - has_headers: ['sndfile.h'], - header_args: extra_include_args, - required: false) + dirs: get_option('extra_lib_dirs'), + has_headers: ['sndfile.h'], + header_args: extra_include_args, + required: false) endif endif have_sndfile = sndfile_dep.found() @@ -529,5 +529,5 @@ summary({'prefix': get_option('prefix'), }, section: 'Directories') summary(config_summary + { 'Architecture': architecture }, - section: 'Configuration', bool_yn: true) + section: 'Configuration', bool_yn: true) summary(target_summary, section: 'Build targets', bool_yn: true) From 0a53a21100638c82d99bf1732f918ef241fd774a Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 5 Mar 2021 11:17:53 +0000 Subject: [PATCH 66/93] Add iOS licensing note --- meson.build | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 2b933bf..4f2172c 100644 --- a/meson.build +++ b/meson.build @@ -307,7 +307,6 @@ if system == 'darwin' have_version_min = false foreach arg: get_option('cpp_args') - message('arg is ' + arg) if arg.contains('version-min') have_version_min = true endif @@ -531,3 +530,12 @@ summary({'prefix': get_option('prefix'), summary(config_summary + { 'Architecture': architecture }, section: 'Configuration', bool_yn: true) summary(target_summary, section: 'Build targets', bool_yn: true) + +if system == 'darwin' + foreach arg: get_option('cpp_args') + if arg.contains('iPhone') + summary({'Please note': 'You cannot legally distribute the Rubber Band Library\n in an iOS app on the App Store, unless you have first obtained a\n commercial licence.'}, section: '***') + break + endif + endforeach +endif From 14c852b60a103faab0d57f49d3cb5b52618382b2 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 5 Mar 2021 11:31:11 +0000 Subject: [PATCH 67/93] Correct file path --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 17e1fe5..a84d579 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,7 @@ documented separately from the C++ header. You should include only one of the two headers, not both. A .NET interface is also included, contributed by Jonathan Gilbert; -see the files in the `rubberband-sharp/` directory for details. +see the files in the `dotnet` directory for details. The source code for the command-line utility (`main/main.cpp`) provides a good example of how to use Rubber Band in offline mode; the From 00990b59c13fa58c1e93c73959b7c11e3d0473b6 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Mon, 8 Mar 2021 10:09:52 +0000 Subject: [PATCH 68/93] Add macOS universal cross file --- cross/macos-universal.txt | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 cross/macos-universal.txt diff --git a/cross/macos-universal.txt b/cross/macos-universal.txt new file mode 100644 index 0000000..eb7970e --- /dev/null +++ b/cross/macos-universal.txt @@ -0,0 +1,20 @@ +[host_machine] +cpu_family = 'aarch64' +cpu = 'aarch64' +system = 'darwin' +endian = 'little' + +[properties] +needs_exe_wrapper = false + +[binaries] +c = 'cc' +cpp = 'c++' +strip = 'strip' + +[built-in options] +c_args = ['-arch', 'arm64', '-arch', 'x86_64'] +cpp_args = ['-arch', 'arm64', '-arch', 'x86_64'] +cpp_link_args = ['-arch', 'arm64', '-arch', 'x86_64'] + + From ac81e685b87202c196296729003053345b380f07 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Mon, 8 Mar 2021 10:10:05 +0000 Subject: [PATCH 69/93] Update build instructions --- README.md | 368 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 202 insertions(+), 166 deletions(-) diff --git a/README.md b/README.md index a84d579..a4c4050 100644 --- a/README.md +++ b/README.md @@ -70,13 +70,13 @@ our knowledge. See also the end of this README for detailed terms. 2. Using the Rubber Band command-line tool 3. Using the Rubber Band Library 4. Compiling Rubber Band - a. FFT and resampler selection - b. Other supported #defines - c. Building on Linux - d. Building on macOS - e. Building for iOS - f. Building on Windows with Visual C++ - g. Building for Android and Java integration + a. Building on Linux + b. Building on macOS + c. Building for iOS + d. Building on Windows + e. Building for Android and Java integration + f. FFT and resampler selection + g. Other supported #defines 5. Copyright notes for bundled libraries @@ -156,19 +156,183 @@ acquired a commercial licence from the author. ## 4. Compiling the Rubber Band Library -### 4a. FFT and resampler selection +The primary supported build system for the Rubber Band Library on all +platforms is Meson (https://mesonbuild.com). To build, ensure Meson +and Ninja are installed and run: + +``` +$ meson build && ninja -C build +``` + +This checks for necessary dependencies, reports what it finds, and if +all is well, builds the code into a subdirectory called `build`. It +will build everything it can find the requisite dependencies for: +static and dynamic libraries, LADSPA and Vamp plugins, and +command-line utility. + +Some configuration options are provided, described in the +`meson_options.txt` file. To set one of these, add a `-D` option to +Meson: + +``` +$ meson build -Dipp_path=/opt/intel/ipp +``` + +The options are documented in the library- and platform-specific +sections below. + +For those who don't wish to use Meson, some alternative build files +(Makefiles and Visual C++ projects) are included in the `otherbuilds` +directory. These build only the static library. + +If you are building this software using one of the bundled library +options (Speex or KissFFT), please be sure to review the terms for +those libraries in `src/speex/COPYING` and `src/kissfft/COPYING` as +applicable. + + +### 4a. Building on Linux + +For best results, and to make sure the command-line tool and plugins +are built, first ensure libsamplerate, libsndfile, and the LADSPA and +Vamp plugin headers are installed and can be found using +`pkg-config`. Then + +``` +$ meson build && ninja -C build +``` + +If you only need the static library and prefer a Makefile, try + +``` +$ make -f otherbuilds/Makefile.linux +``` + + +### 4b. Building on macOS + +Ensure the Xcode command-line tools are installed, and ideally also +install libsamplerate and libsndfile. + +To build for the native architecture of the build machine: + +``` +$ meson build && ninja -C build +``` + +To build for Intel (x86_64) regardless of the native architecture: + +``` +$ meson build --cross-file cross/macos-x86_64.txt && ninja -C build +``` + +To build for Apple Silicon (arm64) regardless of the native +architecture: + +``` +$ meson build --cross-file cross/macos-arm64.txt && ninja -C build +``` + +You can build a universal binary library for both architectures like +this: + +``` +$ meson build --cross-file cross/macos-universal.txt && ninja -C build +``` + +However, the resulting binary will be marked as loadable on macOS 11+ +only, even for Intel, which is probably not what you want (ideally the +Intel slice would support older versions of the OS). A Makefile that +handles this explicitly is also provided: + +``` +$ make -f otherbuilds/Makefile.macos-universal +``` + +This produces only a static library, but as a universal binary that is +compatible with macOS 10.7 onwards on Intel. + +Note that you cannot legally distribute applications using Rubber Band +in the Mac App Store, unless you have first obtained a commercial +licence for the Rubber Band Library. GPL code is not permitted in the +app store. See https://breakfastquay.com/technology/license.html for +commercial terms. + + +### 4c. Building for iOS + +Ensure the Xcode command-line tools are installed, and + +``` +$ meson build_ios --cross-file cross/ios.txt && ninja -C build +``` + +The resulting outputs will be found in `build_ios/` + +To build for the simulator, + +``` +$ meson build_sim --cross-file cross/ios-simulator.txt && ninja -C build +``` + +The resulting outputs will be found in `build_sim/`. + +Note that you cannot legally distribute applications using Rubber Band +in the iOS App Store, unless you have a first obtained a commercial +licence for the Rubber Band Library. GPL code is not permitted in the +app store. See https://breakfastquay.com/technology/license.html for +commercial terms. + + +### 4d. Building on Windows + +A Visual Studio solution, targeted to VC 2015, with two projects is +supplied. The `rubberband-library` project builds the Rubber Band +static libraries only. The `rubberband-program` project builds the +Rubber Band command-line tool (which requires the Rubber Band Library +and libsndfile). + +You will need to adjust the project settings so as to set the compile +flags according to your preference for FFT and resampler +implementation, and set the include path and library path +appropriately. The default is to use the bundled KissFFT and the +Speex resampler. + +If you prefer to add the Rubber Band Library files to an existing +build project instead of using the supplied one, the files in `src/` +(except for `RubberBandStretcherJNI.cpp`) and the API headers in +`rubberband/` should be all you need. + + +### 4e. Building for Android and Java integration + +Currently only a very old Android NDK build file is provided, as +`otherbuilds/Android.mk`. This includes compile definitions for a +shared library built for ARM architectures which can be loaded from a +Java application using the Java native interface (i.e. the Android +NDK). + +The Java side of the interface can be found in +`com/breakfastquay/rubberband/RubberBandStretcher.java`. + +See +https://hg.sr.ht/~breakfastquay/rubberband-android-simple-sample +for a very trivial example of integration with Android Java code. + +The supplied `.mk` file uses KissFFT and the Speex resampler. + + +### 4f. FFT and resampler selection Rubber Band requires additional library code for FFT calculation and resampling. Several libraries are supported. The selection is -controlled using preprocessor flags at compile time, as detailed in -the tables below. +controlled (in Meson) using `-D` options and (in the code itself) +using preprocessor flags set by the build system. These options and +flags are detailed in the tables below. -Flags that declare that you want to use an external library begin with -`HAVE_`; flags that select from the bundled options begin with `USE_`. - -You must enable one resampler implementation and one FFT -implementation. Do not enable more than one of either unless you know -what you're doing. +At least one resampler implementation and one FFT implementation must +be enabled. It is technically possible to enable more than one, but +it's confusing and not often useful. If you are building this software using one of the bundled library options (Speex or KissFFT), please be sure to review the terms for @@ -178,44 +342,42 @@ applicable. #### FFT libraries supported ``` -Name Flags required Notes ----- -------------- ----- +Library Build option CPP define Notes +---- ------------ ---------- ----- -FFTW3 -DHAVE_FFTW3 GPL. +KissFFT -Dfft=kissfft -DUSE_KISSFFT Default except on macOS/iOS. + Bundled, can be distributed with + either the Rubber Band GPL or + commercial licence. -Accelerate -DHAVE_VDSP Platform library on macOS and iOS. +Accelerate -Dfft=vdsp -DHAVE_VDSP Default on macOS/iOS. + Best option on these platforms. -Intel IPP -DHAVE_IPP Proprietary library, can only be used with - Rubber Band commercial licence. Define - USE_IPP_STATIC as well to build with static - IPP libraries. +FFTW3 -Dfft=fftw -DHAVE_FFTW3 GPL. -KissFFT -DUSE_KISSFFT Bundled, can be distributed with either the - Rubber Band GPL or commercial licence. - Single-precision. Slower than the above - options. +Intel IPP -Dfft=ipp -DHAVE_IPP Proprietary, can only be used with + Rubber Band commercial licence. ``` #### Resampler libraries supported ``` -Name Flags required Notes ----- -------------- ----- +Library Build option CPP define Notes +---- ------------ ---------- ----- -libsamplerate -DHAVE_LIBSAMPLERATE GPL until v0.1.8, BSD for v0.1.9 and later. - This is the preferred choice in almost - all cases. +libsamplerate -DHAVE_LIBSAMPLERATE + -Dresampler=libsamplerate Best choice in most cases. -libresample -DHAVE_LIBRESAMPLE LGPL. - -Speex -DUSE_SPEEX Bundled, can be distributed with either the - Rubber Band GPL or commercial licence. +Speex -DUSE_SPEEX + -Dresampler=speex Bundled, can be distributed with + either the Rubber Band GPL or + commercial licence. ``` -### 4b. Other supported #defines +### 4g. Other supported #defines -Other symbols you may define at compile time are as follows. (Usually -the supplied build files will handle these for you.) +Other known preprocessor symbols are as follows. (Usually the supplied +build files will handle these for you.) -DLACK_BAD_ALLOC Define on systems lacking std::bad_alloc in the C++ library. @@ -250,132 +412,6 @@ the supplied build files will handle these for you.) for mobile architectures. -### 4c. Building on Linux - -A GNU-style configure script is included for use on Linux and similar -systems. - -Run `./configure`, then adjust the generated Makefile according to -your preference for FFT and resampler implementations. The default is -to use FFTW3 and libsamplerate. - -The following Makefile targets are available: - - static -- build static libraries only - dynamic -- build dynamic libraries only - library -- build static and dynamic libraries only - program -- build the command-line tool - vamp -- build Vamp plugin - ladspa -- build LADSPA plugin - all -- build everything. - -The default target is "all". - - -### 4d. Building on macOS - -Two Makefiles for macOS are provided, as `Makefile.macos` and -`Makefile.macos-universal`. `Makefile.macos` will build for your -native machine architecture; `Makefile.macos-universal` will build a -universal binary with both x86_64 and arm64 slices. The latter -requires macOS 11+, although the resulting binaries should work with -macOS 10.7 or newer if all the dependent libraries are also built -appropriately. You will also need the Xcode command-line tools -installed. - -Adjust your selected Makefile according to your preference for -compiler and platform SDK, FFT and resampler implementations. The -default is to use the Accelerate framework and the Speex resampler. -Then run e.g. `make -f Makefile.macos library` in a terminal window to -build. - -(You probably don't want to use the configure script on macOS -- just -use your preferred Makefile directly.) - -The following Makefile targets are available: - - static -- build static libraries only - dynamic -- build dynamic libraries only - library -- build static and dynamic libraries only - program -- build the command-line tool - vamp -- build Vamp plugin - ladspa -- build LADSPA plugin - all -- build everything. - -The default target is to build the static and dynamic libraries and -the command line tool. The sndfile library is required for the -command line tool. - -If you prefer to add the Rubber Band Library files to an existing -build project instead of using the Makefile, the files in `src/` -(except for `RubberBandStretcherJNI.cpp`) and the API headers in -`rubberband/` should be all you need. - -Note that you cannot legally distribute applications using Rubber Band -in the Mac App Store, unless you have first obtained a commercial -licence for the Rubber Band Library. GPL code is not permitted in the -app store. See https://breakfastquay.com/technology/license.html for -commercial terms. - - -### 4e. Building for iOS - -A Makefile for iOS (compiling on macOS) is provided as `Makefile.ios`. -It produces a single static library containing both simulator and -device binaries, in both 32- and 64-bit architectures. - -Run e.g. `make -f Makefile.ios` in a terminal window to build. You -will need the Xcode command-line tools installed. - -If you prefer to add the Rubber Band Library files to an existing -build project instead of using the Makefile, the files in `src/` -(except for `RubberBandStretcherJNI.cpp`) and the API headers in -`rubberband/` should be all you need. - -Note that you cannot legally distribute applications using Rubber Band -in the iOS App Store, unless you have a first obtained a commercial -licence for the Rubber Band Library. GPL code is not permitted in the -app store. See https://breakfastquay.com/technology/license.html for -commercial terms. - - -### 4f. Building on Windows with Visual C++ - -A Visual Studio solution, targeted to VC 2015, with two projects is -supplied. The `rubberband-library` project builds the Rubber Band -static libraries only. The `rubberband-program` project builds the -Rubber Band command-line tool (which requires the Rubber Band Library -and libsndfile). - -You will need to adjust the project settings so as to set the compile -flags according to your preference for FFT and resampler -implementation, and set the include path and library path -appropriately. The default is to use the bundled KissFFT and the -Speex resampler. - -If you prefer to add the Rubber Band Library files to an existing -build project instead of using the supplied one, the files in `src/` -(except for `RubberBandStretcherJNI.cpp`) and the API headers in -`rubberband/` should be all you need. - - -### 4g. Building for Android and Java integration - -An Android NDK build file is provided as `Android.mk`. This includes -compile definitions for a shared library built for ARM architectures -which can be loaded from a Java application using the Java native -interface (i.e. the Android NDK). - -The Java side of the interface can be found in -`com/breakfastquay/rubberband/RubberBandStretcher.java`. - -See -https://hg.sr.ht/~breakfastquay/rubberband-android-simple-sample -for a very trivial example of integration with Android Java code. - -The supplied `.mk` file uses KissFFT and the Speex resampler. - - ## 5. Copyright notes for bundled libraries ### 5a. Speex From 1f3a8d6964a9dc9f5443366dc6cc596ad7b3d674 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Mon, 8 Mar 2021 10:14:05 +0000 Subject: [PATCH 70/93] Wording --- README.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index a4c4050..d8eb84f 100644 --- a/README.md +++ b/README.md @@ -109,11 +109,15 @@ Rubber Band consists of: The Rubber Band command-line tool builds as bin/rubberband. The basic incantation is +``` $ rubberband -t -p +``` For example, +``` $ rubberband -t 1.5 -p 2.0 test.wav output.wav +``` stretches the file test.wav to 50% longer than its original duration, shifts it up in pitch by one octave, and writes the output to output.wav. @@ -193,16 +197,16 @@ applicable. ### 4a. Building on Linux -For best results, and to make sure the command-line tool and plugins -are built, first ensure libsamplerate, libsndfile, and the LADSPA and -Vamp plugin headers are installed and can be found using -`pkg-config`. Then +For best results, and to ensure the command-line tool and plugins are +built, first install libsamplerate, libsndfile, and the LADSPA and +Vamp plugin headers so they can be found using `pkg-config`. Then ``` $ meson build && ninja -C build ``` -If you only need the static library and prefer a Makefile, try +Alternatively, if you only need the static library and prefer a +Makefile, try ``` $ make -f otherbuilds/Makefile.linux @@ -249,8 +253,8 @@ handles this explicitly is also provided: $ make -f otherbuilds/Makefile.macos-universal ``` -This produces only a static library, but as a universal binary that is -compatible with macOS 10.7 onwards on Intel. +This produces only a static library, but it's a universal binary that +is compatible with macOS 10.7 onwards on the Intel side. Note that you cannot legally distribute applications using Rubber Band in the Mac App Store, unless you have first obtained a commercial From 8090559b1be2534fb48c094e82953605eca2edfc Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Mon, 8 Mar 2021 10:41:49 +0000 Subject: [PATCH 71/93] Update build docs for Windows --- README.md | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index d8eb84f..9afd028 100644 --- a/README.md +++ b/README.md @@ -205,6 +205,8 @@ Vamp plugin headers so they can be found using `pkg-config`. Then $ meson build && ninja -C build ``` +See "FFT and resampler selection" below for further build options. + Alternatively, if you only need the static library and prefer a Makefile, try @@ -256,6 +258,8 @@ $ make -f otherbuilds/Makefile.macos-universal This produces only a static library, but it's a universal binary that is compatible with macOS 10.7 onwards on the Intel side. +See "FFT and resampler selection" below for further build options. + Note that you cannot legally distribute applications using Rubber Band in the Mac App Store, unless you have first obtained a commercial licence for the Rubber Band Library. GPL code is not permitted in the @@ -271,7 +275,7 @@ Ensure the Xcode command-line tools are installed, and $ meson build_ios --cross-file cross/ios.txt && ninja -C build ``` -The resulting outputs will be found in `build_ios/` +The output files will be found in the `build_ios` directory. To build for the simulator, @@ -279,7 +283,9 @@ To build for the simulator, $ meson build_sim --cross-file cross/ios-simulator.txt && ninja -C build ``` -The resulting outputs will be found in `build_sim/`. +The output files will be found in the `build_sim` directory. + +See "FFT and resampler selection" below for further build options. Note that you cannot legally distribute applications using Rubber Band in the iOS App Store, unless you have a first obtained a commercial @@ -290,22 +296,27 @@ commercial terms. ### 4d. Building on Windows -A Visual Studio solution, targeted to VC 2015, with two projects is -supplied. The `rubberband-library` project builds the Rubber Band -static libraries only. The `rubberband-program` project builds the -Rubber Band command-line tool (which requires the Rubber Band Library -and libsndfile). +The default build on Windows also uses Meson, so ensure Meson and +Ninja are installed and available. Then, in a terminal window with the +compiler tools available in the path (e.g. a Visual Studio +command-line prompt for the relevant build architecture) run -You will need to adjust the project settings so as to set the compile -flags according to your preference for FFT and resampler -implementation, and set the include path and library path -appropriately. The default is to use the bundled KissFFT and the -Speex resampler. +``` +> meson build +> ninja -C build +``` -If you prefer to add the Rubber Band Library files to an existing -build project instead of using the supplied one, the files in `src/` -(except for `RubberBandStretcherJNI.cpp`) and the API headers in -`rubberband/` should be all you need. +The output files will be found in the `build` directory. + +The Rubber Band code is compatible with both the traditional Visual +C++ compiler (`cl`) and the Clang front-end (`clang`), and the build +system will use whichever appears (first) in your path. + +See "FFT and resampler selection" below for further build options. + +Alternatively, if you only need the static library and prefer a Visual +Studio project file, there is one targeted for VC 2015 in +`otherbuilds\rubberband-library.vcxproj`. ### 4e. Building for Android and Java integration From 9fcd9da253b7605ef0572ce15f5c8d357e3b63ad Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Mon, 8 Mar 2021 10:45:10 +0000 Subject: [PATCH 72/93] Note on C++ standard --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 9afd028..14b6fca 100644 --- a/README.md +++ b/README.md @@ -189,6 +189,11 @@ For those who don't wish to use Meson, some alternative build files (Makefiles and Visual C++ projects) are included in the `otherbuilds` directory. These build only the static library. +The Rubber Band Library is written entirely in C++ to the C++98 +standard. It is unlikely to make any difference (performance or +otherwise) which C++ standard your compiler uses - as long as it's no +older than C++98! + If you are building this software using one of the bundled library options (Speex or KissFFT), please be sure to review the terms for those libraries in `src/speex/COPYING` and `src/kissfft/COPYING` as From 3b505b2ee4c1ded67fee19dfefe28faf659e9808 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Mon, 8 Mar 2021 13:51:10 +0000 Subject: [PATCH 73/93] Update version and add notes for v1.9.1 --- CHANGELOG | 20 ++++++++++++++++++++ meson.build | 4 ++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 2cf4d9c..601f945 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,24 @@ +Changes in Rubber Band v1.9.1 + + * Switch build system from Makefiles and Visual Studio project to + Meson/Ninja for all platforms. There are still Makefiles and VS + projects included in otherbuilds/ for those who wish to use them to + build the static library directly + * Make various fixes to improve sound quality when pitch-shifting + dynamically in real-time (requires libsamplerate) + * Fix floating-point exception when a very very long stretch factor + is presented + * Move the two directories that together provide the .NET interface + (rubberband-sharp and rubberband-dll) into their own subdir (dotnet) + * Ensure the library builds and runs correctly on ARM Mac (Apple + Silicon, M1), and also on Windows using the Visual C++ Clang + front-end + +The API is unchanged and the library is binary compatible with +version 1.7. + + Changes in Rubber Band v1.9 * Fix incorrect numbering of pitch speed/quality flags in the diff --git a/meson.build b/meson.build index 4f2172c..0d81506 100644 --- a/meson.build +++ b/meson.build @@ -2,7 +2,7 @@ project( 'Rubber Band Library', 'c', 'cpp', - version: '1.9.0', + version: '1.9.1', license: 'GPL-2.0-or-later', default_options: [ # All Rubber Band code is actually C++98, but some compilers no @@ -15,7 +15,7 @@ project( meson_version: '>= 0.53.0' ) -rubberband_dynamic_library_version = '2.1.2' +rubberband_dynamic_library_version = '2.1.3' system = build_machine.system() architecture = host_machine.cpu_family() From f393627944eb36be8b64f5545f6bb64906d26dec Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Mon, 8 Mar 2021 17:17:56 +0000 Subject: [PATCH 74/93] Further version updates --- Doxyfile | 2 +- rubberband/RubberBandStretcher.h | 2 +- rubberband/rubberband-c.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Doxyfile b/Doxyfile index 2510ab2..9bd8e0f 100644 --- a/Doxyfile +++ b/Doxyfile @@ -31,7 +31,7 @@ PROJECT_NAME = "Rubber Band Library" # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 1.9.0 +PROJECT_NUMBER = 1.9.1 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff --git a/rubberband/RubberBandStretcher.h b/rubberband/RubberBandStretcher.h index ff79e84..bdf3bed 100644 --- a/rubberband/RubberBandStretcher.h +++ b/rubberband/RubberBandStretcher.h @@ -24,7 +24,7 @@ #ifndef RUBBERBAND_STRETCHER_H #define RUBBERBAND_STRETCHER_H -#define RUBBERBAND_VERSION "1.9.0" +#define RUBBERBAND_VERSION "1.9.1" #define RUBBERBAND_API_MAJOR_VERSION 2 #define RUBBERBAND_API_MINOR_VERSION 6 diff --git a/rubberband/rubberband-c.h b/rubberband/rubberband-c.h index f1d2931..c77d59f 100644 --- a/rubberband/rubberband-c.h +++ b/rubberband/rubberband-c.h @@ -28,7 +28,7 @@ extern "C" { #endif -#define RUBBERBAND_VERSION "1.9.0" +#define RUBBERBAND_VERSION "1.9.1" #define RUBBERBAND_API_MAJOR_VERSION 2 #define RUBBERBAND_API_MINOR_VERSION 6 From b81d62bb98c920b33e55b8a7a449cdb1bfd002e3 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 9 Mar 2021 12:29:40 +0000 Subject: [PATCH 75/93] Update KissFFT code --- src/kissfft/COPYING | 14 ++-- src/kissfft/_kiss_fft_guts.h | 100 ++++++++++++++++------------- src/kissfft/kiss_fft.c | 121 ++++++++++++++++++++--------------- src/kissfft/kiss_fft.h | 67 +++++++++++++++---- src/kissfft/kiss_fftr.c | 60 ++++++++--------- src/kissfft/kiss_fftr.h | 16 +++-- 6 files changed, 227 insertions(+), 151 deletions(-) diff --git a/src/kissfft/COPYING b/src/kissfft/COPYING index b22325a..6b4b622 100644 --- a/src/kissfft/COPYING +++ b/src/kissfft/COPYING @@ -1,11 +1,11 @@ -Copyright (c) 2003-2004 Mark Borgerding +Copyright (c) 2003-2010 Mark Borgerding . All rights reserved. -All rights reserved. +KISS FFT is provided under: -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + SPDX-License-Identifier: BSD-3-Clause - * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. +Being under the terms of the BSD 3-clause "New" or "Revised" License, +according with: + + LICENSES/BSD-3-Clause -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/kissfft/_kiss_fft_guts.h b/src/kissfft/_kiss_fft_guts.h index ce04663..4bd8d1c 100644 --- a/src/kissfft/_kiss_fft_guts.h +++ b/src/kissfft/_kiss_fft_guts.h @@ -1,29 +1,25 @@ /* -Copyright (c) 2003-2004, Mark Borgerding - -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef KISS_FFT_GUTS_H -#define KISS_FFT_GUTS_H + * Copyright (c) 2003-2010, Mark Borgerding. All rights reserved. + * This file is part of KISS FFT - https://github.com/mborgerding/kissfft + * + * SPDX-License-Identifier: BSD-3-Clause + * See COPYING file for more information. + */ /* kiss_fft.h defines kiss_fft_scalar as either short or a float type and defines typedef struct { kiss_fft_scalar r; kiss_fft_scalar i; }kiss_fft_cpx; */ + +#ifndef _kiss_fft_guts_h +#define _kiss_fft_guts_h + #include "kiss_fft.h" +#include "kiss_fft_log.h" #include #define MAXFACTORS 32 -/* e.g. an fft of length 128 has 4 factors +/* e.g. an fft of length 128 has 4 factors as far as kissfft is concerned 4*4*4*2 */ @@ -45,22 +41,23 @@ struct kiss_fft_state{ C_ADDTO( res , a) : res += a * */ #ifdef FIXED_POINT +#include #if (FIXED_POINT==32) # define FRACBITS 31 # define SAMPPROD int64_t -#define SAMP_MAX 2147483647 +#define SAMP_MAX INT32_MAX +#define SAMP_MIN INT32_MIN #else # define FRACBITS 15 -# define SAMPPROD int32_t -#define SAMP_MAX 32767 +# define SAMPPROD int32_t +#define SAMP_MAX INT16_MAX +#define SAMP_MIN INT16_MIN #endif -#define SAMP_MIN -SAMP_MAX - #if defined(CHECK_OVERFLOW) # define CHECK_OVERFLOW_OP(a,op,b) \ - if ( (SAMPPROD)(a) op (SAMPPROD)(b) > SAMP_MAX || (SAMPPROD)(a) op (SAMPPROD)(b) < SAMP_MIN ) { \ - fprintf(stderr,"WARNING:overflow @ " __FILE__ "(%d): (%d " #op" %d) = %ld\n",__LINE__,(a),(b),(SAMPPROD)(a) op (SAMPPROD)(b) ); } + if ( (SAMPPROD)(a) op (SAMPPROD)(b) > SAMP_MAX || (SAMPPROD)(a) op (SAMPPROD)(b) < SAMP_MIN ) { \ + KISS_FFT_WARNING("overflow (%d " #op" %d) = %ld", (a),(b),(SAMPPROD)(a) op (SAMPPROD)(b)); } #endif @@ -74,11 +71,11 @@ struct kiss_fft_state{ (m).i = sround( smul((a).r,(b).i) + smul((a).i,(b).r) ); }while(0) # define DIVSCALAR(x,k) \ - (x) = sround( smul( x, SAMP_MAX/k ) ) + (x) = sround( smul( x, SAMP_MAX/k ) ) # define C_FIXDIV(c,div) \ - do { DIVSCALAR( (c).r , div); \ - DIVSCALAR( (c).i , div); }while (0) + do { DIVSCALAR( (c).r , div); \ + DIVSCALAR( (c).i , div); }while (0) # define C_MULBYSCALAR( c, s ) \ do{ (c).r = sround( smul( (c).r , s ) ) ;\ @@ -102,28 +99,28 @@ struct kiss_fft_state{ #define C_ADD( res, a,b)\ do { \ - CHECK_OVERFLOW_OP((a).r,+,(b).r)\ - CHECK_OVERFLOW_OP((a).i,+,(b).i)\ - (res).r=(a).r+(b).r; (res).i=(a).i+(b).i; \ + CHECK_OVERFLOW_OP((a).r,+,(b).r)\ + CHECK_OVERFLOW_OP((a).i,+,(b).i)\ + (res).r=(a).r+(b).r; (res).i=(a).i+(b).i; \ }while(0) #define C_SUB( res, a,b)\ do { \ - CHECK_OVERFLOW_OP((a).r,-,(b).r)\ - CHECK_OVERFLOW_OP((a).i,-,(b).i)\ - (res).r=(a).r-(b).r; (res).i=(a).i-(b).i; \ + CHECK_OVERFLOW_OP((a).r,-,(b).r)\ + CHECK_OVERFLOW_OP((a).i,-,(b).i)\ + (res).r=(a).r-(b).r; (res).i=(a).i-(b).i; \ }while(0) #define C_ADDTO( res , a)\ do { \ - CHECK_OVERFLOW_OP((res).r,+,(a).r)\ - CHECK_OVERFLOW_OP((res).i,+,(a).i)\ - (res).r += (a).r; (res).i += (a).i;\ + CHECK_OVERFLOW_OP((res).r,+,(a).r)\ + CHECK_OVERFLOW_OP((res).i,+,(a).i)\ + (res).r += (a).r; (res).i += (a).i;\ }while(0) #define C_SUBFROM( res , a)\ do {\ - CHECK_OVERFLOW_OP((res).r,-,(a).r)\ - CHECK_OVERFLOW_OP((res).i,-,(a).i)\ - (res).r -= (a).r; (res).i -= (a).i; \ + CHECK_OVERFLOW_OP((res).r,-,(a).r)\ + CHECK_OVERFLOW_OP((res).i,-,(a).i)\ + (res).r -= (a).r; (res).i -= (a).i; \ }while(0) @@ -138,18 +135,33 @@ struct kiss_fft_state{ #else # define KISS_FFT_COS(phase) (kiss_fft_scalar) cos(phase) # define KISS_FFT_SIN(phase) (kiss_fft_scalar) sin(phase) -# define HALF_OF(x) ((x)*.5) +# define HALF_OF(x) ((x)*((kiss_fft_scalar).5)) #endif #define kf_cexp(x,phase) \ - do{ \ - (x)->r = KISS_FFT_COS(phase);\ - (x)->i = KISS_FFT_SIN(phase);\ - }while(0) + do{ \ + (x)->r = KISS_FFT_COS(phase);\ + (x)->i = KISS_FFT_SIN(phase);\ + }while(0) /* a debugging function */ #define pcpx(c)\ - fprintf(stderr,"%g + %gi\n",(double)((c)->r),(double)((c)->i) ) + KISS_FFT_DEBUG("%g + %gi\n",(double)((c)->r),(double)((c)->i)) + +#ifdef KISS_FFT_USE_ALLOCA +// define this to allow use of alloca instead of malloc for temporary buffers +// Temporary buffers are used in two case: +// 1. FFT sizes that have "bad" factors. i.e. not 2,3 and 5 +// 2. "in-place" FFTs. Notice the quotes, since kissfft does not really do an in-place transform. +#include +#define KISS_FFT_TMP_ALLOC(nbytes) alloca(nbytes) +#define KISS_FFT_TMP_FREE(ptr) +#else +#define KISS_FFT_TMP_ALLOC(nbytes) KISS_FFT_MALLOC(nbytes) +#define KISS_FFT_TMP_FREE(ptr) KISS_FFT_FREE(ptr) #endif + +#endif /* _kiss_fft_guts_h */ + diff --git a/src/kissfft/kiss_fft.c b/src/kissfft/kiss_fft.c index 79c9392..58c24a0 100644 --- a/src/kissfft/kiss_fft.c +++ b/src/kissfft/kiss_fft.c @@ -1,16 +1,10 @@ /* -Copyright (c) 2003-2004, Mark Borgerding - -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ + * Copyright (c) 2003-2010, Mark Borgerding. All rights reserved. + * This file is part of KISS FFT - https://github.com/mborgerding/kissfft + * + * SPDX-License-Identifier: BSD-3-Clause + * See COPYING file for more information. + */ #include "_kiss_fft_guts.h" @@ -18,21 +12,6 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND fixed or floating point complex numbers. It also delares the kf_ internal functions. */ -static kiss_fft_cpx *scratchbuf=NULL; -static size_t nscratchbuf=0; -static kiss_fft_cpx *tmpbuf=NULL; -static size_t ntmpbuf=0; - -#define CHECKBUF(buf,nbuf,n) \ - do { \ - if ( nbuf < (size_t)(n) ) {\ - free(buf); \ - buf = (kiss_fft_cpx*)KISS_FFT_MALLOC(sizeof(kiss_fft_cpx)*(n)); \ - nbuf = (size_t)(n); \ - } \ - }while(0) - - static void kf_bfly2( kiss_fft_cpx * Fout, const size_t fstride, @@ -69,6 +48,7 @@ static void kf_bfly4( const size_t m2=2*m; const size_t m3=3*m; + tw3 = tw2 = tw1 = st->twiddles; do { @@ -222,29 +202,34 @@ static void kf_bfly_generic( kiss_fft_cpx t; int Norig = st->nfft; - CHECKBUF(scratchbuf,nscratchbuf,p); + kiss_fft_cpx * scratch = (kiss_fft_cpx*)KISS_FFT_TMP_ALLOC(sizeof(kiss_fft_cpx)*p); + if (scratch == NULL){ + KISS_FFT_ERROR("Memory allocation failed."); + return; + } for ( u=0; u=Norig) twidx-=Norig; - C_MUL(t,scratchbuf[q] , twiddles[twidx] ); + C_MUL(t,scratch[q] , twiddles[twidx] ); C_ADDTO( Fout[ k ] ,t); } k += m; } } + KISS_FFT_TMP_FREE(scratch); } static @@ -262,6 +247,30 @@ void kf_work( const int m=*factors++; /* stage's fft length/p */ const kiss_fft_cpx * Fout_end = Fout + p*m; +#ifdef _OPENMP + // use openmp extensions at the + // top-level (not recursive) + if (fstride==1 && p<=5 && m!=1) + { + int k; + + // execute the p different work units in different threads +# pragma omp parallel for + for (k=0;knfft); + //NOTE: this is not really an in-place FFT algorithm. + //It just performs an out-of-place FFT into a temp buffer + if (fout == NULL){ + KISS_FFT_ERROR("fout buffer NULL."); + return; + } + + kiss_fft_cpx * tmpbuf = (kiss_fft_cpx*)KISS_FFT_TMP_ALLOC( sizeof(kiss_fft_cpx)*st->nfft); + if (tmpbuf == NULL){ + KISS_FFT_ERROR("Memory allocation error."); + return; + } + + + kf_work(tmpbuf,fin,1,in_stride, st->factors,st); memcpy(fout,tmpbuf,sizeof(kiss_fft_cpx)*st->nfft); + KISS_FFT_TMP_FREE(tmpbuf); }else{ kf_work( fout, fin, 1,in_stride, st->factors,st ); } @@ -371,17 +400,9 @@ void kiss_fft(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout) } -/* not really necessary to call, but if someone is doing in-place ffts, they may want to free the - buffers from CHECKBUF - */ void kiss_fft_cleanup(void) { - free(scratchbuf); - scratchbuf = NULL; - nscratchbuf=0; - free(tmpbuf); - tmpbuf=NULL; - ntmpbuf=0; + // nothing needed any more } int kiss_fft_next_fast_size(int n) diff --git a/src/kissfft/kiss_fft.h b/src/kissfft/kiss_fft.h index f8e523e..dce1034 100644 --- a/src/kissfft/kiss_fft.h +++ b/src/kissfft/kiss_fft.h @@ -1,12 +1,32 @@ +/* + * Copyright (c) 2003-2010, Mark Borgerding. All rights reserved. + * This file is part of KISS FFT - https://github.com/mborgerding/kissfft + * + * SPDX-License-Identifier: BSD-3-Clause + * See COPYING file for more information. + */ + #ifndef KISS_FFT_H #define KISS_FFT_H #include #include #include -#include -#ifndef __APPLE__ -#include +#include + +// Define KISS_FFT_SHARED macro to properly export symbols +#ifdef KISS_FFT_SHARED +# ifdef _WIN32 +# ifdef KISS_FFT_BUILD +# define KISS_FFT_API __declspec(dllexport) +# else +# define KISS_FFT_API __declspec(dllimport) +# endif +# else +# define KISS_FFT_API __attribute__ ((visibility ("default"))) +# endif +#else +# define KISS_FFT_API #endif #ifdef __cplusplus @@ -26,17 +46,32 @@ extern "C" { in the tools/ directory. */ +/* User may override KISS_FFT_MALLOC and/or KISS_FFT_FREE. */ #ifdef USE_SIMD # include # define kiss_fft_scalar __m128 -#define KISS_FFT_MALLOC(nbytes) memalign(16,nbytes) -#else -#define KISS_FFT_MALLOC malloc -#endif +# ifndef KISS_FFT_MALLOC +# define KISS_FFT_MALLOC(nbytes) _mm_malloc(nbytes,16) +# define KISS_FFT_ALIGN_CHECK(ptr) +# define KISS_FFT_ALIGN_SIZE_UP(size) ((size + 15UL) & ~0xFUL) +# endif +# ifndef KISS_FFT_FREE +# define KISS_FFT_FREE _mm_free +# endif +#else +# define KISS_FFT_ALIGN_CHECK(ptr) +# define KISS_FFT_ALIGN_SIZE_UP(size) (size) +# ifndef KISS_FFT_MALLOC +# define KISS_FFT_MALLOC malloc +# endif +# ifndef KISS_FFT_FREE +# define KISS_FFT_FREE free +# endif +#endif #ifdef FIXED_POINT -#include +#include # if (FIXED_POINT == 32) # define kiss_fft_scalar int32_t # else @@ -79,7 +114,7 @@ typedef struct kiss_fft_state* kiss_fft_cfg; * buffer size in *lenmem. * */ -kiss_fft_cfg kiss_fft_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem); +kiss_fft_cfg KISS_FFT_API kiss_fft_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem); /* * kiss_fft(cfg,in_out_buf) @@ -91,28 +126,32 @@ kiss_fft_cfg kiss_fft_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem) * Note that each element is complex and can be accessed like f[k].r and f[k].i * */ -void kiss_fft(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout); +void KISS_FFT_API kiss_fft(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout); /* A more generic version of the above function. It reads its input from every Nth sample. * */ -void kiss_fft_stride(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout,int fin_stride); +void KISS_FFT_API kiss_fft_stride(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout,int fin_stride); /* If kiss_fft_alloc allocated a buffer, it is one contiguous buffer and can be simply free()d when no longer needed*/ -#define kiss_fft_free free +#define kiss_fft_free KISS_FFT_FREE /* Cleans up some memory that gets managed internally. Not necessary to call, but it might clean up your compiler output to call this before you exit. */ -void kiss_fft_cleanup(void); +void KISS_FFT_API kiss_fft_cleanup(void); /* * Returns the smallest integer k, such that k>=n and k has only "fast" factors (2,3,5) */ -int kiss_fft_next_fast_size(int n); +int KISS_FFT_API kiss_fft_next_fast_size(int n); + +/* for real ffts, we need an even size */ +#define kiss_fftr_next_fast_size_real(n) \ + (kiss_fft_next_fast_size( ((n)+1)>>1)<<1) #ifdef __cplusplus } diff --git a/src/kissfft/kiss_fftr.c b/src/kissfft/kiss_fftr.c index 5bc669d..778a9a6 100644 --- a/src/kissfft/kiss_fftr.c +++ b/src/kissfft/kiss_fftr.c @@ -1,16 +1,10 @@ /* -Copyright (c) 2003-2004, Mark Borgerding - -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ + * Copyright (c) 2003-2004, Mark Borgerding. All rights reserved. + * This file is part of KISS FFT - https://github.com/mborgerding/kissfft + * + * SPDX-License-Identifier: BSD-3-Clause + * See COPYING file for more information. + */ #include "kiss_fftr.h" #include "_kiss_fft_guts.h" @@ -19,25 +13,27 @@ struct kiss_fftr_state{ kiss_fft_cfg substate; kiss_fft_cpx * tmpbuf; kiss_fft_cpx * super_twiddles; -#ifdef USE_SIMD - long pad; -#endif +#ifdef USE_SIMD + void * pad; +#endif }; kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem) { + KISS_FFT_ALIGN_CHECK(mem) + int i; kiss_fftr_cfg st = NULL; - size_t subsize, memneeded; + size_t subsize = 0, memneeded; if (nfft & 1) { - fprintf(stderr,"Real FFT optimization must be even.\n"); + KISS_FFT_ERROR("Real FFT optimization must be even."); return NULL; } nfft >>= 1; kiss_fft_alloc (nfft, inverse_fft, NULL, &subsize); - memneeded = sizeof(struct kiss_fftr_state) + subsize + sizeof(kiss_fft_cpx) * ( nfft * 2); + memneeded = sizeof(struct kiss_fftr_state) + subsize + sizeof(kiss_fft_cpx) * ( nfft * 3 / 2); if (lenmem == NULL) { st = (kiss_fftr_cfg) KISS_FFT_MALLOC (memneeded); @@ -54,9 +50,9 @@ kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem,size_t * lenme st->super_twiddles = st->tmpbuf + nfft; kiss_fft_alloc(nfft, inverse_fft, st->substate, &subsize); - for (i = 0; i < nfft; ++i) { + for (i = 0; i < nfft/2; ++i) { double phase = - -3.14159265358979323846264338327 * ((double) i / nfft + .5); + -3.14159265358979323846264338327 * ((double) (i+1) / nfft + .5); if (inverse_fft) phase *= -1; kf_cexp (st->super_twiddles+i,phase); @@ -71,8 +67,8 @@ void kiss_fftr(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_cpx *fr kiss_fft_cpx fpnk,fpk,f1k,f2k,tw,tdc; if ( st->substate->inverse) { - fprintf(stderr,"kiss fft usage error: improper alloc\n"); - exit(1); + KISS_FFT_ERROR("kiss fft usage error: improper alloc"); + return;/* The caller did not call the correct function */ } ncfft = st->substate->nfft; @@ -83,12 +79,12 @@ void kiss_fftr(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_cpx *fr * contains the sum of the even-numbered elements of the input time sequence * The imag part is the sum of the odd-numbered elements * - * The sum of tdc.r and tdc.i is the sum of the input time sequence. + * The sum of tdc.r and tdc.i is the sum of the input time sequence. * yielding DC of input time sequence - * The difference of tdc.r - tdc.i is the sum of the input (dot product) [1,-1,1,-1... + * The difference of tdc.r - tdc.i is the sum of the input (dot product) [1,-1,1,-1... * yielding Nyquist bin of input time sequence */ - + tdc.r = st->tmpbuf[0].r; tdc.i = st->tmpbuf[0].i; C_FIXDIV(tdc,2); @@ -96,14 +92,14 @@ void kiss_fftr(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_cpx *fr CHECK_OVERFLOW_OP(tdc.r ,-, tdc.i); freqdata[0].r = tdc.r + tdc.i; freqdata[ncfft].r = tdc.r - tdc.i; -#ifdef USE_SIMD +#ifdef USE_SIMD freqdata[ncfft].i = freqdata[0].i = _mm_set1_ps(0); #else freqdata[ncfft].i = freqdata[0].i = 0; #endif for ( k=1;k <= ncfft/2 ; ++k ) { - fpk = st->tmpbuf[k]; + fpk = st->tmpbuf[k]; fpnk.r = st->tmpbuf[ncfft-k].r; fpnk.i = - st->tmpbuf[ncfft-k].i; C_FIXDIV(fpk,2); @@ -111,7 +107,7 @@ void kiss_fftr(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_cpx *fr C_ADD( f1k, fpk , fpnk ); C_SUB( f2k, fpk , fpnk ); - C_MUL( tw , f2k , st->super_twiddles[k]); + C_MUL( tw , f2k , st->super_twiddles[k-1]); freqdata[k].r = HALF_OF(f1k.r + tw.r); freqdata[k].i = HALF_OF(f1k.i + tw.i); @@ -126,8 +122,8 @@ void kiss_fftri(kiss_fftr_cfg st,const kiss_fft_cpx *freqdata,kiss_fft_scalar *t int k, ncfft; if (st->substate->inverse == 0) { - fprintf (stderr, "kiss fft usage error: improper alloc\n"); - exit (1); + KISS_FFT_ERROR("kiss fft usage error: improper alloc"); + return;/* The caller did not call the correct function */ } ncfft = st->substate->nfft; @@ -146,10 +142,10 @@ void kiss_fftri(kiss_fftr_cfg st,const kiss_fft_cpx *freqdata,kiss_fft_scalar *t C_ADD (fek, fk, fnkc); C_SUB (tmp, fk, fnkc); - C_MUL (fok, tmp, st->super_twiddles[k]); + C_MUL (fok, tmp, st->super_twiddles[k-1]); C_ADD (st->tmpbuf[k], fek, fok); C_SUB (st->tmpbuf[ncfft - k], fek, fok); -#ifdef USE_SIMD +#ifdef USE_SIMD st->tmpbuf[ncfft - k].i *= _mm_set1_ps(-1.0); #else st->tmpbuf[ncfft - k].i *= -1; diff --git a/src/kissfft/kiss_fftr.h b/src/kissfft/kiss_fftr.h index 72e5a57..7fd73d2 100644 --- a/src/kissfft/kiss_fftr.h +++ b/src/kissfft/kiss_fftr.h @@ -1,3 +1,11 @@ +/* + * Copyright (c) 2003-2004, Mark Borgerding. All rights reserved. + * This file is part of KISS FFT - https://github.com/mborgerding/kissfft + * + * SPDX-License-Identifier: BSD-3-Clause + * See COPYING file for more information. + */ + #ifndef KISS_FTR_H #define KISS_FTR_H @@ -18,7 +26,7 @@ extern "C" { typedef struct kiss_fftr_state *kiss_fftr_cfg; -kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem, size_t * lenmem); +kiss_fftr_cfg KISS_FFT_API kiss_fftr_alloc(int nfft,int inverse_fft,void * mem, size_t * lenmem); /* nfft must be even @@ -26,19 +34,19 @@ kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem, size_t * lenm */ -void kiss_fftr(kiss_fftr_cfg cfg,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata); +void KISS_FFT_API kiss_fftr(kiss_fftr_cfg cfg,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata); /* input timedata has nfft scalar points output freqdata has nfft/2+1 complex points */ -void kiss_fftri(kiss_fftr_cfg cfg,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata); +void KISS_FFT_API kiss_fftri(kiss_fftr_cfg cfg,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata); /* input freqdata has nfft/2+1 complex points output timedata has nfft scalar points */ -#define kiss_fftr_free free +#define kiss_fftr_free KISS_FFT_FREE #ifdef __cplusplus } From ee9128020dccdf64dae5853e4bd98d84a61d57fe Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 9 Mar 2021 13:05:24 +0000 Subject: [PATCH 76/93] Additional kissfft source file --- src/kissfft/kiss_fft_log.h | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/kissfft/kiss_fft_log.h diff --git a/src/kissfft/kiss_fft_log.h b/src/kissfft/kiss_fft_log.h new file mode 100644 index 0000000..b5b631a --- /dev/null +++ b/src/kissfft/kiss_fft_log.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2003-2010, Mark Borgerding. All rights reserved. + * This file is part of KISS FFT - https://github.com/mborgerding/kissfft + * + * SPDX-License-Identifier: BSD-3-Clause + * See COPYING file for more information. + */ + +#ifndef kiss_fft_log_h +#define kiss_fft_log_h + +#define ERROR 1 +#define WARNING 2 +#define INFO 3 +#define DEBUG 4 + +#define STRINGIFY(x) #x +#define TOSTRING(x) STRINGIFY(x) + +#if defined(NDEBUG) +# define KISS_FFT_LOG_MSG(severity, ...) ((void)0) +#else +# define KISS_FFT_LOG_MSG(severity, ...) \ + fprintf(stderr, "[" #severity "] " __FILE__ ":" TOSTRING(__LINE__) " "); \ + fprintf(stderr, __VA_ARGS__); \ + fprintf(stderr, "\n") +#endif + +#define KISS_FFT_ERROR(...) KISS_FFT_LOG_MSG(ERROR, __VA_ARGS__) +#define KISS_FFT_WARNING(...) KISS_FFT_LOG_MSG(WARNING, __VA_ARGS__) +#define KISS_FFT_INFO(...) KISS_FFT_LOG_MSG(INFO, __VA_ARGS__) +#define KISS_FFT_DEBUG(...) KISS_FFT_LOG_MSG(DEBUG, __VA_ARGS__) + + + +#endif /* kiss_fft_log_h */ \ No newline at end of file From e79658b04f2084acbed3db7e86b6723e1b4b8c0d Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 9 Mar 2021 17:21:08 +0000 Subject: [PATCH 77/93] Fix incorrect cases in double-only/float-only cases --- src/dsp/FFT.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/dsp/FFT.cpp b/src/dsp/FFT.cpp index ba9d8fd..f6f0d97 100644 --- a/src/dsp/FFT.cpp +++ b/src/dsp/FFT.cpp @@ -1865,8 +1865,8 @@ public: dbuf[i] = realIn[i]; } fftw_execute(m_dplanf); - v_cartesian_interleaved_to_polar(magOut, phaseOut, - (double *)m_dpacked, m_size/2+1); + v_cartesian_interleaved_to_polar + (magOut, phaseOut, (fft_double_type *)m_dpacked, m_size/2+1); } void forwardMagnitude(const double *R__ realIn, double *R__ magOut) { @@ -1926,8 +1926,8 @@ public: fbuf[i] = realIn[i]; } fftwf_execute(m_fplanf); - v_cartesian_interleaved_to_polar(magOut, phaseOut, - (float *)m_fpacked, m_size/2+1); + v_cartesian_interleaved_to_polar + (magOut, phaseOut, (fft_float_type *)m_fpacked, m_size/2+1); } void forwardMagnitude(const float *R__ realIn, float *R__ magOut) { @@ -1964,7 +1964,7 @@ public: void inverseInterleaved(const double *R__ complexIn, double *R__ realOut) { if (!m_dplanf) initDouble(); - v_convert((double *)m_dpacked, complexIn, m_size + 2); + v_convert((fft_double_type *)m_dpacked, complexIn, m_size + 2); fftw_execute(m_dplani); const int sz = m_size; fft_double_type *const R__ dbuf = m_dbuf; @@ -2034,7 +2034,7 @@ public: void inverseInterleaved(const float *R__ complexIn, float *R__ realOut) { if (!m_fplanf) initFloat(); - v_copy((float *)m_fpacked, complexIn, m_size + 2); + v_convert((fft_float_type *)m_fpacked, complexIn, m_size + 2); fftwf_execute(m_fplani); const int sz = m_size; fft_float_type *const R__ fbuf = m_fbuf; From b463cf5565ed3655c7904bc6da4d72f074f02705 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 9 Mar 2021 17:22:41 +0000 Subject: [PATCH 78/93] Fix wrong accumulator type - this fix makes the detector a little more sensitive, which is not necessarily good, but the previous accidental behaviour exaggerated the difference in results between float and double precision ffts --- src/audiocurves/HighFrequencyAudioCurve.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/audiocurves/HighFrequencyAudioCurve.cpp b/src/audiocurves/HighFrequencyAudioCurve.cpp index 52b4d2b..a948ba1 100644 --- a/src/audiocurves/HighFrequencyAudioCurve.cpp +++ b/src/audiocurves/HighFrequencyAudioCurve.cpp @@ -58,14 +58,14 @@ HighFrequencyAudioCurve::processFloat(const float *R__ mag, int) double HighFrequencyAudioCurve::processDouble(const double *R__ mag, int) { - float result = 0.0; + double result = 0.0; const int sz = m_lastPerceivedBin; for (int n = 0; n <= sz; ++n) { result = result + mag[n] * n; } - + return result; } From fcc952e81a7b607c5e949f0d74498fc11a6f8a9a Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 9 Mar 2021 17:29:21 +0000 Subject: [PATCH 79/93] A few helper functions --- src/dsp/FFT.cpp | 40 +++++++----------------- src/system/VectorOpsComplex.h | 57 +++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 29 deletions(-) diff --git a/src/dsp/FFT.cpp b/src/dsp/FFT.cpp index f6f0d97..eb5c8f6 100644 --- a/src/dsp/FFT.cpp +++ b/src/dsp/FFT.cpp @@ -1851,7 +1851,7 @@ public: dbuf[i] = realIn[i]; } fftw_execute(m_dplanf); - v_convert(complexOut, (fft_double_type *)m_dpacked, sz + 2); + v_convert(complexOut, (const fft_double_type *)m_dpacked, sz + 2); } void forwardPolar(const double *R__ realIn, double *R__ magOut, double *R__ phaseOut) { @@ -1866,7 +1866,7 @@ public: } fftw_execute(m_dplanf); v_cartesian_interleaved_to_polar - (magOut, phaseOut, (fft_double_type *)m_dpacked, m_size/2+1); + (magOut, phaseOut, (const fft_double_type *)m_dpacked, m_size/2+1); } void forwardMagnitude(const double *R__ realIn, double *R__ magOut) { @@ -1880,11 +1880,8 @@ public: dbuf[i] = realIn[i]; } fftw_execute(m_dplanf); - const int hs = m_size/2; - for (int i = 0; i <= hs; ++i) { - magOut[i] = sqrt(m_dpacked[i][0] * m_dpacked[i][0] + - m_dpacked[i][1] * m_dpacked[i][1]); - } + v_cartesian_interleaved_to_magnitudes + (magOut, (const fft_double_type *)m_dpacked, m_size/2+1); } void forward(const float *R__ realIn, float *R__ realOut, float *R__ imagOut) { @@ -1912,7 +1909,7 @@ public: fbuf[i] = realIn[i]; } fftwf_execute(m_fplanf); - v_convert(complexOut, (fft_float_type *)m_fpacked, sz + 2); + v_convert(complexOut, (const fft_float_type *)m_fpacked, sz + 2); } void forwardPolar(const float *R__ realIn, float *R__ magOut, float *R__ phaseOut) { @@ -1941,11 +1938,8 @@ public: fbuf[i] = realIn[i]; } fftwf_execute(m_fplanf); - const int hs = m_size/2; - for (int i = 0; i <= hs; ++i) { - magOut[i] = sqrtf(m_fpacked[i][0] * m_fpacked[i][0] + - m_fpacked[i][1] * m_fpacked[i][1]); - } + v_cartesian_interleaved_to_magnitudes + (magOut, (const fft_float_type *)m_fpacked, m_size/2+1); } void inverse(const double *R__ realIn, const double *R__ imagIn, double *R__ realOut) { @@ -1978,14 +1972,8 @@ public: void inversePolar(const double *R__ magIn, const double *R__ phaseIn, double *R__ realOut) { if (!m_dplanf) initDouble(); - const int hs = m_size/2; - fftw_complex *const R__ dpacked = m_dpacked; - for (int i = 0; i <= hs; ++i) { - dpacked[i][0] = magIn[i] * cos(phaseIn[i]); - } - for (int i = 0; i <= hs; ++i) { - dpacked[i][1] = magIn[i] * sin(phaseIn[i]); - } + v_polar_to_cartesian_interleaved + ((fft_double_type *)m_dpacked, magIn, phaseIn, m_size/2+1); fftw_execute(m_dplani); const int sz = m_size; fft_double_type *const R__ dbuf = m_dbuf; @@ -2048,14 +2036,8 @@ public: void inversePolar(const float *R__ magIn, const float *R__ phaseIn, float *R__ realOut) { if (!m_fplanf) initFloat(); - const int hs = m_size/2; - fftwf_complex *const R__ fpacked = m_fpacked; - for (int i = 0; i <= hs; ++i) { - fpacked[i][0] = magIn[i] * cosf(phaseIn[i]); - } - for (int i = 0; i <= hs; ++i) { - fpacked[i][1] = magIn[i] * sinf(phaseIn[i]); - } + v_polar_to_cartesian_interleaved + ((fft_float_type *)m_fpacked, magIn, phaseIn, m_size/2+1); fftwf_execute(m_fplani); const int sz = m_size; fft_float_type *const R__ fbuf = m_fbuf; diff --git a/src/system/VectorOpsComplex.h b/src/system/VectorOpsComplex.h index 8d4161b..aca2a37 100644 --- a/src/system/VectorOpsComplex.h +++ b/src/system/VectorOpsComplex.h @@ -246,6 +246,63 @@ void v_cartesian_to_polar_interleaved_inplace(T *const R__ srcdst, } } +template // S source, T target +void v_cartesian_to_magnitudes(T *const R__ mag, + const S *const R__ real, + const S *const R__ imag, + const int count) +{ + for (int i = 0; i < count; ++i) { + mag[i] = T(sqrt(real[i] * real[i] + imag[i] * imag[i])); + } +} + +template // S source, T target +void v_cartesian_interleaved_to_magnitudes(T *const R__ mag, + const S *const R__ src, + const int count) +{ + for (int i = 0; i < count; ++i) { + mag[i] = T(sqrt(src[i*2] * src[i*2] + src[i*2+1] * src[i*2+1])); + } +} + +#ifdef HAVE_IPP +template<> +inline void v_cartesian_to_magnitudes(float *const R__ mag, + const float *const R__ real, + const float *const R__ imag, + const int count) +{ + ippsMagnitude_32f(real, imag, mag, count); +} + +template<> +inline void v_cartesian_to_magnitudes(double *const R__ mag, + const double *const R__ real, + const double *const R__ imag, + const int count) +{ + ippsMagnitude_64f(real, imag, mag, count); +} + +template<> +inline void v_cartesian_interleaved_to_magnitudes(float *const R__ mag, + const float *const R__ src, + const int count) +{ + ippsMagnitude_32fc((const Ipp32fc *)src, mag, count); +} + +template<> +inline void v_cartesian_interleaved_to_magnitudes(double *const R__ mag, + const double *const R__ src, + const int count) +{ + ippsMagnitude_64fc((const Ipp64fc *)src, mag, count); +} +#endif + } #endif From 8b2a4d6aa1ead0c4a11decbad5d82e7dc6ce43db Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 9 Mar 2021 18:41:46 +0000 Subject: [PATCH 80/93] Clarify architecture notes --- README.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 14b6fca..cb085ef 100644 --- a/README.md +++ b/README.md @@ -225,25 +225,28 @@ $ make -f otherbuilds/Makefile.linux Ensure the Xcode command-line tools are installed, and ideally also install libsamplerate and libsndfile. -To build for the native architecture of the build machine: +To build for the default architecture: ``` $ meson build && ninja -C build ``` -To build for Intel (x86_64) regardless of the native architecture: +Which architecture is the default may depend on the version of Meson +and/or the current shell. To force a particular architecture you can +use a Meson cross-file, as follows. -``` -$ meson build --cross-file cross/macos-x86_64.txt && ninja -C build -``` - -To build for Apple Silicon (arm64) regardless of the native -architecture: +To build for Apple Silicon (arm64): ``` $ meson build --cross-file cross/macos-arm64.txt && ninja -C build ``` +To build for Intel (x86_64): + +``` +$ meson build --cross-file cross/macos-x86_64.txt && ninja -C build +``` + You can build a universal binary library for both architectures like this: From 5897dfbc5bfc7c1b249f658cc54241c78e9850ac Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Wed, 10 Mar 2021 08:06:45 +0000 Subject: [PATCH 81/93] Install headers! --- meson.build | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/meson.build b/meson.build index 0d81506..3238f2e 100644 --- a/meson.build +++ b/meson.build @@ -419,6 +419,13 @@ else message('Not building Rubber Band Library dynamic library: no_shared option set') endif +install_headers( + [ 'rubberband/RubberBandStretcher.h', + 'rubberband/rubberband-c.h' + ], + subdir: 'rubberband' +) + if have_ladspa target_summary += { 'LADSPA plugin': [ true, 'Name: ' + rubberband_ladspa_name ] } message('Will build LADSPA plugin') From 7705c6409e5514c939afb992763a44e90354797e Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Wed, 10 Mar 2021 18:10:10 +0000 Subject: [PATCH 82/93] Fix some nominal memory leaks --- main/main.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/main/main.cpp b/main/main.cpp index f22383e..4209970 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -628,9 +628,17 @@ int main(int argc, char **argv) } } + delete[] fbuf; + + for (size_t i = 0; i < channels; ++i) delete[] ibuf[i]; + delete[] ibuf; + sf_close(sndfile); sf_close(sndfileOut); + free(fileName); + free(fileNameOut); + if (!quiet) { cerr << "in: " << countIn << ", out: " << countOut << ", ratio: " << float(countOut)/float(countIn) << ", ideal output: " << lrint(countIn * ratio) << ", error: " << abs(lrint(countIn * ratio) - int(countOut)) << endl; @@ -656,7 +664,7 @@ int main(int argc, char **argv) } RubberBand::Profiler::dump(); - + return 0; } From 09e5bd29bf6eb33c4d975f0339c419e207843b31 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Mar 2021 16:14:40 +0000 Subject: [PATCH 83/93] Protect profiler map with a mutex --- src/base/Profiler.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/base/Profiler.cpp b/src/base/Profiler.cpp index b1305b3..d96b571 100644 --- a/src/base/Profiler.cpp +++ b/src/base/Profiler.cpp @@ -23,6 +23,8 @@ #include "Profiler.h" +#include "system/Thread.h" + #include #include #include @@ -45,9 +47,13 @@ Profiler::m_profiles; Profiler::WorstCallMap Profiler::m_worstCalls; +static Mutex profileMutex; + void Profiler::add(const char *id, float ms) { + profileMutex.lock(); + ProfileMap::iterator pmi = m_profiles.find(id); if (pmi != m_profiles.end()) { ++pmi->second.first; @@ -62,6 +68,8 @@ Profiler::add(const char *id, float ms) } else { m_worstCalls[id] = ms; } + + profileMutex.unlock(); } void @@ -74,6 +82,8 @@ Profiler::dump() std::string Profiler::getReport() { + profileMutex.lock(); + static const int buflen = 256; char buffer[buflen]; std::string report; @@ -167,6 +177,8 @@ Profiler::getReport() report += buffer; } + profileMutex.unlock(); + return report; } From 59f57e73462b34e15496ff9718eb8649721c2335 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Mar 2021 16:15:01 +0000 Subject: [PATCH 84/93] Typo fixes --- rubberband/RubberBandStretcher.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rubberband/RubberBandStretcher.h b/rubberband/RubberBandStretcher.h index bdf3bed..0d88583 100644 --- a/rubberband/RubberBandStretcher.h +++ b/rubberband/RubberBandStretcher.h @@ -186,7 +186,7 @@ public: * one processing thread per audio channel in offline mode if * the stretcher is able to determine that more than one CPU is * available, and one thread only in realtime mode. This is the - * defafult. + * default. * * \li \c OptionThreadingNever - Never use more than one thread. * @@ -464,7 +464,7 @@ public: /** * Change an OptionPitch configuration setting. This may be * called at any time in RealTime mode. It may not be called in - * Offline mode (for which the transients option is fixed on + * Offline mode (for which the pitch option is fixed on * construction). */ void setPitchOption(Options options); From a5cb3a6b4ad5b9916e7e37bc4487abb385ac8788 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Thu, 11 Mar 2021 16:15:10 +0000 Subject: [PATCH 85/93] Add some profiler entries --- src/dsp/FFT.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/dsp/FFT.cpp b/src/dsp/FFT.cpp index eb5c8f6..41c80db 100644 --- a/src/dsp/FFT.cpp +++ b/src/dsp/FFT.cpp @@ -3240,6 +3240,7 @@ FFT::~FFT() void FFT::forward(const double *R__ realIn, double *R__ realOut, double *R__ imagOut) { + Profiler profiler("FFT::forward"); CHECK_NOT_NULL(realIn); CHECK_NOT_NULL(realOut); CHECK_NOT_NULL(imagOut); @@ -3249,6 +3250,7 @@ FFT::forward(const double *R__ realIn, double *R__ realOut, double *R__ imagOut) void FFT::forwardInterleaved(const double *R__ realIn, double *R__ complexOut) { + Profiler profiler("FFT::forwardInterleaved"); CHECK_NOT_NULL(realIn); CHECK_NOT_NULL(complexOut); d->forwardInterleaved(realIn, complexOut); @@ -3257,6 +3259,7 @@ FFT::forwardInterleaved(const double *R__ realIn, double *R__ complexOut) void FFT::forwardPolar(const double *R__ realIn, double *R__ magOut, double *R__ phaseOut) { + Profiler profiler("FFT::forwardPolar"); CHECK_NOT_NULL(realIn); CHECK_NOT_NULL(magOut); CHECK_NOT_NULL(phaseOut); @@ -3266,6 +3269,7 @@ FFT::forwardPolar(const double *R__ realIn, double *R__ magOut, double *R__ phas void FFT::forwardMagnitude(const double *R__ realIn, double *R__ magOut) { + Profiler profiler("FFT::forwardMagnitude"); CHECK_NOT_NULL(realIn); CHECK_NOT_NULL(magOut); d->forwardMagnitude(realIn, magOut); @@ -3274,6 +3278,7 @@ FFT::forwardMagnitude(const double *R__ realIn, double *R__ magOut) void FFT::forward(const float *R__ realIn, float *R__ realOut, float *R__ imagOut) { + Profiler profiler("FFT::forward[float]"); CHECK_NOT_NULL(realIn); CHECK_NOT_NULL(realOut); CHECK_NOT_NULL(imagOut); @@ -3283,6 +3288,7 @@ FFT::forward(const float *R__ realIn, float *R__ realOut, float *R__ imagOut) void FFT::forwardInterleaved(const float *R__ realIn, float *R__ complexOut) { + Profiler profiler("FFT::forwardInterleaved[float]"); CHECK_NOT_NULL(realIn); CHECK_NOT_NULL(complexOut); d->forwardInterleaved(realIn, complexOut); @@ -3291,6 +3297,7 @@ FFT::forwardInterleaved(const float *R__ realIn, float *R__ complexOut) void FFT::forwardPolar(const float *R__ realIn, float *R__ magOut, float *R__ phaseOut) { + Profiler profiler("FFT::forwardPolar[float]"); CHECK_NOT_NULL(realIn); CHECK_NOT_NULL(magOut); CHECK_NOT_NULL(phaseOut); @@ -3300,6 +3307,7 @@ FFT::forwardPolar(const float *R__ realIn, float *R__ magOut, float *R__ phaseOu void FFT::forwardMagnitude(const float *R__ realIn, float *R__ magOut) { + Profiler profiler("FFT::forwardMagnitude[float]"); CHECK_NOT_NULL(realIn); CHECK_NOT_NULL(magOut); d->forwardMagnitude(realIn, magOut); @@ -3308,6 +3316,7 @@ FFT::forwardMagnitude(const float *R__ realIn, float *R__ magOut) void FFT::inverse(const double *R__ realIn, const double *R__ imagIn, double *R__ realOut) { + Profiler profiler("FFT::inverse"); CHECK_NOT_NULL(realIn); CHECK_NOT_NULL(imagIn); CHECK_NOT_NULL(realOut); @@ -3317,6 +3326,7 @@ FFT::inverse(const double *R__ realIn, const double *R__ imagIn, double *R__ rea void FFT::inverseInterleaved(const double *R__ complexIn, double *R__ realOut) { + Profiler profiler("FFT::inverseInterleaved"); CHECK_NOT_NULL(complexIn); CHECK_NOT_NULL(realOut); d->inverseInterleaved(complexIn, realOut); @@ -3325,6 +3335,7 @@ FFT::inverseInterleaved(const double *R__ complexIn, double *R__ realOut) void FFT::inversePolar(const double *R__ magIn, const double *R__ phaseIn, double *R__ realOut) { + Profiler profiler("FFT::inversePolar"); CHECK_NOT_NULL(magIn); CHECK_NOT_NULL(phaseIn); CHECK_NOT_NULL(realOut); @@ -3334,6 +3345,7 @@ FFT::inversePolar(const double *R__ magIn, const double *R__ phaseIn, double *R_ void FFT::inverseCepstral(const double *R__ magIn, double *R__ cepOut) { + Profiler profiler("FFT::inverseCepstral"); CHECK_NOT_NULL(magIn); CHECK_NOT_NULL(cepOut); d->inverseCepstral(magIn, cepOut); @@ -3342,6 +3354,7 @@ FFT::inverseCepstral(const double *R__ magIn, double *R__ cepOut) void FFT::inverse(const float *R__ realIn, const float *R__ imagIn, float *R__ realOut) { + Profiler profiler("FFT::inverse[float]"); CHECK_NOT_NULL(realIn); CHECK_NOT_NULL(imagIn); CHECK_NOT_NULL(realOut); @@ -3351,6 +3364,7 @@ FFT::inverse(const float *R__ realIn, const float *R__ imagIn, float *R__ realOu void FFT::inverseInterleaved(const float *R__ complexIn, float *R__ realOut) { + Profiler profiler("FFT::inverseInterleaved[float]"); CHECK_NOT_NULL(complexIn); CHECK_NOT_NULL(realOut); d->inverseInterleaved(complexIn, realOut); @@ -3359,6 +3373,7 @@ FFT::inverseInterleaved(const float *R__ complexIn, float *R__ realOut) void FFT::inversePolar(const float *R__ magIn, const float *R__ phaseIn, float *R__ realOut) { + Profiler profiler("FFT::inversePolar[float]"); CHECK_NOT_NULL(magIn); CHECK_NOT_NULL(phaseIn); CHECK_NOT_NULL(realOut); @@ -3368,6 +3383,7 @@ FFT::inversePolar(const float *R__ magIn, const float *R__ phaseIn, float *R__ r void FFT::inverseCepstral(const float *R__ magIn, float *R__ cepOut) { + Profiler profiler("FFT::inverseCepstral[float]"); CHECK_NOT_NULL(magIn); CHECK_NOT_NULL(cepOut); d->inverseCepstral(magIn, cepOut); From 91274b3fd56c8f28bbb71d27805527c4306c47a5 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 12 Mar 2021 09:52:54 +0000 Subject: [PATCH 86/93] Build and install JNI if header and Java compiler are found --- meson.build | 62 ++++++++++++++++++++++++++---- src/jni/RubberBandStretcherJNI.cpp | 4 +- 2 files changed, 56 insertions(+), 10 deletions(-) diff --git a/meson.build b/meson.build index 3238f2e..c76fec4 100644 --- a/meson.build +++ b/meson.build @@ -90,12 +90,21 @@ general_include_dirs = [ # Scan for any dependencies we may use later; all are optional +extra_include_args = [] +foreach d: get_option('extra_include_dirs') + extra_include_args += [ '-I' + d ] +endforeach + fftw3_dep = dependency('fftw3', version: '>= 3.0.0', required: false) samplerate_dep = dependency('samplerate', version: '>= 0.1.8', required: false) sndfile_dep = dependency('sndfile', version: '>= 1.0.16', required: false) vamp_dep = dependency('vamp-sdk', version: '>= 2.9', required: false) thread_dep = dependency('threads') -have_ladspa = cpp.has_header('ladspa.h') +have_ladspa = cpp.has_header('ladspa.h', args: extra_include_args) +have_jni = cpp.has_header('jni.h', args: extra_include_args) + +javac = find_program('javac') +jar = find_program('jar') # Check FFT and resampler options and set up dependencies and paths @@ -131,11 +140,6 @@ if resampler == 'auto' endif endif -extra_include_args = [] -foreach d: get_option('extra_include_dirs') - extra_include_args += [ '-I' + d ] -endforeach - if fft == 'kissfft' config_summary += { 'FFT': 'KissFFT' } message('For FFT: using KissFFT') @@ -362,6 +366,7 @@ if system == 'windows' rubberband_program_name = 'rubberband-program' rubberband_ladspa_name = 'ladspa-rubberband' rubberband_vamp_name = 'vamp-rubberband' + rubberband_jni_name = 'rubberband-jni' # Meson likes libxxx.a even on Windows, and so might we for a # new library, but not here platform_static_name_prefix = '' @@ -372,13 +377,14 @@ else rubberband_program_name = 'rubberband' rubberband_ladspa_name = 'ladspa-rubberband' rubberband_vamp_name = 'vamp-rubberband' + rubberband_jni_name = 'rubberband-jni' platform_static_name_prefix = 'lib' platform_static_name_suffix = 'a' endif # And the build targets: Static and dynamic libraries, command-line -# utility, LADSPA plugin, Vamp plugin +# utility, LADSPA plugin, Vamp plugin, JNI library message('Will build Rubber Band Library static library') target_summary += { 'Static library': [ true, 'Name: ' + rubberband_static_name ] } @@ -419,6 +425,48 @@ else message('Not building Rubber Band Library dynamic library: no_shared option set') endif +if have_jni and javac.found() and jar.found() + target_summary += { 'JNI library': [ true, 'Name: ' + rubberband_jni_name ] } + message('Will build Java Native Interface') + rubberband_jni = shared_library( + rubberband_jni_name, + jni_sources, + include_directories: general_include_dirs, + cpp_args: general_compile_args, + c_args: general_compile_args, + link_args: [ + arch_flags, + feature_libraries, + ], + dependencies: [ + rubberband_static_dep, + general_dependencies, + ], + # NB the JNI library is not versioned + install: true, + ) + rubberband_class = custom_target( + 'rubberband_class', + input: 'com/breakfastquay/rubberband/RubberBandStretcher.java', + output: 'RubberBandStretcher.class', + command: [ javac, '@INPUT@', '-d', '@OUTDIR@' ], + ) + rubberband_jar = custom_target( + 'rubberband_jar', + input: rubberband_class, + output: 'rubberband.jar', + command: [ jar, 'cvf', '@OUTPUT@', 'com/breakfastquay/rubberband/@INPUT@' ], + build_by_default: true, + ) +else + target_summary += { 'JNI library': false } + if not have_jni + message('Not building Java Native Interface: jni.h header not found') + else + message('Not building Java Native Interface: Java compiler not found') + endif +endif + install_headers( [ 'rubberband/RubberBandStretcher.h', 'rubberband/rubberband-c.h' diff --git a/src/jni/RubberBandStretcherJNI.cpp b/src/jni/RubberBandStretcherJNI.cpp index 79baecb..1d50979 100644 --- a/src/jni/RubberBandStretcherJNI.cpp +++ b/src/jni/RubberBandStretcherJNI.cpp @@ -329,7 +329,6 @@ Java_com_breakfastquay_rubberband_RubberBandStretcher_study(JNIEnv *env, jobject int channels = env->GetArrayLength(data); float **arr = allocate(channels); float **input = allocate(channels); - int samples = 0; for (int c = 0; c < channels; ++c) { jfloatArray cdata = (jfloatArray)env->GetObjectArrayElement(data, c); arr[c] = env->GetFloatArrayElements(cdata, 0); @@ -350,7 +349,6 @@ Java_com_breakfastquay_rubberband_RubberBandStretcher_process(JNIEnv *env, jobje int channels = env->GetArrayLength(data); float **arr = allocate(channels); float **input = allocate(channels); - int samples = 0; for (int c = 0; c < channels; ++c) { jfloatArray cdata = (jfloatArray)env->GetObjectArrayElement(data, c); arr[c] = env->GetFloatArrayElements(cdata, 0); @@ -383,7 +381,7 @@ Java_com_breakfastquay_rubberband_RubberBandStretcher_retrieve(JNIEnv *env, jobj float **outbuf = allocate_channels(channels, n); size_t retrieved = stretcher->retrieve(outbuf, n); - for (int c = 0; c < channels; ++c) { + for (size_t c = 0; c < channels; ++c) { jfloatArray cdata = (jfloatArray)env->GetObjectArrayElement(output, c); env->SetFloatArrayRegion(cdata, offset, retrieved, outbuf[c]); } From 7d2160cefae92d0f5f10fa4097aa29aaa6f2654e Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 12 Mar 2021 09:54:56 +0000 Subject: [PATCH 87/93] Oops, these are not required. Thank you, CI --- meson.build | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/meson.build b/meson.build index c76fec4..65ee113 100644 --- a/meson.build +++ b/meson.build @@ -103,8 +103,8 @@ thread_dep = dependency('threads') have_ladspa = cpp.has_header('ladspa.h', args: extra_include_args) have_jni = cpp.has_header('jni.h', args: extra_include_args) -javac = find_program('javac') -jar = find_program('jar') +javac = find_program('javac', required: false) +jar = find_program('jar', required: false) # Check FFT and resampler options and set up dependencies and paths From ead8998668cf5c8465a0229deda1bff4bbe4a3db Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 12 Mar 2021 10:37:42 +0000 Subject: [PATCH 88/93] Source package build script --- otherbuilds/deploy/source.sh | 59 ++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100755 otherbuilds/deploy/source.sh diff --git a/otherbuilds/deploy/source.sh b/otherbuilds/deploy/source.sh new file mode 100755 index 0000000..c2ccf48 --- /dev/null +++ b/otherbuilds/deploy/source.sh @@ -0,0 +1,59 @@ +#!/bin/bash +set -eu +version=$(grep '^ *version:' meson.build | head -1 | sed "s/^.*'\([0-9][0-9.]*\)'.*$/\1/") +check() { + text="$1" + echo -n "$text [yN] " + read yn + case "$yn" in [Yy]) ;; *) echo "Exiting"; exit 3 ;; esac +} +echo +echo "Preparing to make source package for Rubber Band v$version..." +echo +grep '^ *version:' meson.build | head -1 +check "Is the above version number (in meson.build) correct?" +echo +echo "The dynamic library version should have a point increment for each" +echo "release, a minor increment for backward-compatible ABI changes, and" +echo "a major increment for incompatible ABI changes." +echo +grep 'rubberband_dynamic_library_version' meson.build | head -1 +check "Is the above library version (from meson.build) correct?" +echo +echo "The API major version should increment for incompatible API changes," +echo "and the minor version should increment for backward-compatible API" +echo "changes." +echo +grep 'RUBBERBAND.*VERSION' rubberband/RubberBandStretcher.h +check "Are the above version and API versions (from the C++ header) correct?" +echo +echo "The C header should contain the same versions as the C++ header." +echo +grep 'RUBBERBAND.*VERSION' rubberband/rubberband-c.h +check "Are the above version and API versions (from the C header) correct?" +echo +grep '^PROJECT_NUMBER' Doxyfile +check "Is the above version (from Doxyfile) correct?" + +echo +echo "Going ahead..." +mkdir -p packages +output="packages/rubberband-$version.tar.bz2" +hg archive "$output" + +echo "Checking that the package compiles..." +tmpdir=$(mktemp -d) +cleanup() { + rm -rf "$tmpdir" +} +trap cleanup 0 +prevdir=$(pwd) +( cd "$tmpdir" + tar xvf "$prevdir/$output" + cd "rubberband-$version" + meson build + ninja -C build +) + +echo +echo "Checked, package is in $output" From 11caa57cd39e6dd6e6df322e249b865ed0a62623 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 12 Mar 2021 11:20:47 +0000 Subject: [PATCH 89/93] Mac packaging script --- cross/macos-arm64.txt | 1 + cross/macos-universal.txt | 1 + cross/macos-x86_64.txt | 1 + otherbuilds/deploy/macos.sh | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 36 insertions(+) create mode 100755 otherbuilds/deploy/macos.sh diff --git a/cross/macos-arm64.txt b/cross/macos-arm64.txt index 1a7c322..a03cf36 100644 --- a/cross/macos-arm64.txt +++ b/cross/macos-arm64.txt @@ -11,6 +11,7 @@ needs_exe_wrapper = false c = 'cc' cpp = 'c++' strip = 'strip' +pkgconfig = 'pkg-config' [built-in options] c_args = ['-arch', 'arm64'] diff --git a/cross/macos-universal.txt b/cross/macos-universal.txt index eb7970e..728980f 100644 --- a/cross/macos-universal.txt +++ b/cross/macos-universal.txt @@ -11,6 +11,7 @@ needs_exe_wrapper = false c = 'cc' cpp = 'c++' strip = 'strip' +pkgconfig = 'pkg-config' [built-in options] c_args = ['-arch', 'arm64', '-arch', 'x86_64'] diff --git a/cross/macos-x86_64.txt b/cross/macos-x86_64.txt index ad979a4..fb1a10d 100644 --- a/cross/macos-x86_64.txt +++ b/cross/macos-x86_64.txt @@ -11,6 +11,7 @@ needs_exe_wrapper = false c = 'cc' cpp = 'c++' strip = 'strip' +pkgconfig = 'pkg-config' [built-in options] c_args = ['-arch', 'x86_64'] diff --git a/otherbuilds/deploy/macos.sh b/otherbuilds/deploy/macos.sh new file mode 100755 index 0000000..425b5eb --- /dev/null +++ b/otherbuilds/deploy/macos.sh @@ -0,0 +1,33 @@ +#!/bin/bash +set -eu +if [ ! -f ../rba/deploy/macos/notarize.sh ]; then + echo "need notarize script in ../rba/deploy/macos" +fi +version=$(grep '^ *version:' meson.build | head -1 | sed "s/^.*'\([0-9][0-9.]*\)'.*$/\1/") +echo +echo "Packaging command-line utility for Mac for Rubber Band v$version..." +echo +rm -rf build +PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ meson build --cross-file ./cross/macos-universal.txt +ninja -C build +./build/rubberband -V +key="Developer ID Application: Particular Programs Ltd (73F996B92S)" +mkdir -p packages +( cd build + codesign -s "$key" -fv --options runtime rubberband + zipfile="rubberband-$version-gpl-executable-macos.zip" + rm -f "$zipfile" + ditto -c -k rubberband "$zipfile" + ../../rba/deploy/macos/notarize.sh "$zipfile" com.breakfastquay.rubberband +) +package_dir="rubberband-$version-gpl-executable-macos" +rm -rf "$package_dir" +mkdir "$package_dir" +cp build/rubberband "$package_dir" +cp CHANGELOG README.md COPYING "$package_dir" +tar cvjf "$package_dir.tar.bz2" "$package_dir" +mv "$package_dir.tar.bz2" packages/ +rm -rf "$package_dir" +echo +echo "Done, package is in packages/$package_dir.tar.bz2" + From afbb105f4ada241ae9f7777c19db683ffb15f4aa Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 12 Mar 2021 11:35:08 +0000 Subject: [PATCH 90/93] Omit deploy dir from package --- otherbuilds/deploy/source.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/otherbuilds/deploy/source.sh b/otherbuilds/deploy/source.sh index c2ccf48..0278fed 100755 --- a/otherbuilds/deploy/source.sh +++ b/otherbuilds/deploy/source.sh @@ -39,7 +39,7 @@ echo echo "Going ahead..." mkdir -p packages output="packages/rubberband-$version.tar.bz2" -hg archive "$output" +hg archive --exclude otherbuilds/deploy "$output" echo "Checking that the package compiles..." tmpdir=$(mktemp -d) From b2b95759543f410567127c77350dc5d0b1abd232 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 12 Mar 2021 12:03:24 +0000 Subject: [PATCH 91/93] Windows deployment bits --- README.md | 7 +++++ otherbuilds/deploy/win.bat | 54 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 otherbuilds/deploy/win.bat diff --git a/README.md b/README.md index cb085ef..d18a9d4 100644 --- a/README.md +++ b/README.md @@ -320,6 +320,13 @@ The Rubber Band code is compatible with both the traditional Visual C++ compiler (`cl`) and the Clang front-end (`clang`), and the build system will use whichever appears (first) in your path. +To build against a specific Visual C++ runtime, use the built-in Meson +option `b_vscrt`: + +``` +> meson build -Db_vscrt=mt +``` + See "FFT and resampler selection" below for further build options. Alternatively, if you only need the static library and prefer a Visual diff --git a/otherbuilds/deploy/win.bat b/otherbuilds/deploy/win.bat new file mode 100644 index 0000000..84e9f2e --- /dev/null +++ b/otherbuilds/deploy/win.bat @@ -0,0 +1,54 @@ + +echo on + +set STARTPWD=%CD% +set ORIGINALPATH=%PATH% +set PATH=C:\Program Files (x86)\Windows Kits\10\bin\x64;%PATH% + +set vcvarsall="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" + +if not exist %vcvarsall% ( +@ echo "Could not find MSVC vars batch file" +@ exit /b 2 +) + +set VERSION=%1 +shift +if "%VERSION%" == "" ( +@echo "Usage: win.bat " +exit /b 1 +) + +@echo Building version %VERSION% + +call %vcvarsall% amd64 +if errorlevel 1 exit /b %errorlevel% + +del /q /s build + +meson build --buildtype release "-Dextra_include_dirs=C:\Program Files\libsndfile\include" "-Dextra_lib_dirs=C:\Program Files\libsndfile\lib" "-Db_vscrt=mt" +if errorlevel 1 exit /b %errorlevel% + +ninja -C build +if errorlevel 1 exit /b %errorlevel% + +cd build +ren rubberband-program.exe rubberband.exe +set NAME=Christopher Cannam +signtool sign /v /n "%NAME%" /t http://time.certum.pl /fd sha1 /a rubberband.exe +if errorlevel 1 exit /b %errorlevel% + +cd .. +set DIR=rubberband-%VERSION%-gpl-executable-windows +del /q /s %DIR% +mkdir %DIR% +copy build\rubberband.exe %DIR% +copy "c:\Program Files\libsndfile\bin\sndfile.dll" %DIR% +copy COPYING %DIR% +copy README.md %DIR% +copy CHANGELOG %DIR% + +set PATH=%ORIGINALPATH% +cd %STARTPWD% +@echo Done, now test and zip the directory %DIR% + From 59c34f9b3663ce35fd1a32bcc08f37b942b969d6 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Fri, 12 Mar 2021 13:48:32 +0000 Subject: [PATCH 92/93] Added tag v1.9.1 for changeset 7af7a76bbb1d --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 70cb1f3..9259db4 100644 --- a/.hgtags +++ b/.hgtags @@ -11,3 +11,4 @@ efbc861f9b9460068c48a250232d343ffa7d5726 v1.7 d4911a276d96f6232a68c6b8448056d3946043b9 v1.8.1 fa6a54be7e6bf0c5adffd19ccec622481a8140a5 v1.8.2 37b18c17c042eafc39483ffb58837de844ba3289 v1.9 +7af7a76bbb1dc75f630555e22ca8f6ae9da79529 v1.9.1 From 109c321370e092a5659d03ee2d9f30669f794f2b Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Wed, 7 Apr 2021 11:03:33 +0100 Subject: [PATCH 93/93] Draw system from host rather than build machine (fixing cross-compilation failures, I am told) --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 65ee113..d32902c 100644 --- a/meson.build +++ b/meson.build @@ -17,7 +17,7 @@ project( rubberband_dynamic_library_version = '2.1.3' -system = build_machine.system() +system = host_machine.system() architecture = host_machine.cpu_family() cpp = meson.get_compiler('cpp')