dnl SoundTouch configure.ac, by David W. Durham dnl dnl $Id$ dnl dnl This file is part of SoundTouch, an audio processing library for pitch/time adjustments dnl dnl SoundTouch is free software; you can redistribute it and/or modify it under the dnl terms of the GNU General Public License as published by the Free Software dnl Foundation; either version 2 of the License, or (at your option) any later dnl version. dnl dnl SoundTouch is distributed in the hope that it will be useful, but WITHOUT ANY dnl WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS dnl FOR A PARTICULAR PURPOSE. See the GNU General Public License for more dnl details. dnl dnl You should have received a copy of the GNU General Public License along with dnl this program; if not, write to the Free Software Foundation, Inc., 59 Temple dnl Place - Suite 330, Boston, MA 02111-1307, USA # Process this file with autoconf to produce a configure script. AC_INIT(SoundTouch, 1.9.0, [http://www.surina.net/soundtouch]) AC_CONFIG_AUX_DIR(config) AC_CONFIG_MACRO_DIR([config/m4]) AM_CONFIG_HEADER([config.h include/soundtouch_config.h]) AM_INIT_AUTOMAKE AM_SILENT_RULES([yes]) #AC_DISABLE_SHARED dnl This makes libtool only build static libs AC_DISABLE_STATIC dnl This makes libtool only build shared libs #AC_GNU_SOURCE dnl enable posix extensions in glibc AC_LANG(C++) dnl ############################################################################ dnl # Checks for programs # dnl ############################################################################ AC_PROG_CXX #AC_PROG_AWK AC_PROG_CC AC_PROG_CPP AC_PROG_CXXCPP AC_PROG_INSTALL #AC_PROG_LN_S AC_PROG_MAKE_SET AM_PROG_LIBTOOL dnl turn on using libtool dnl ############################################################################ dnl # Checks for header files # dnl ############################################################################ AC_HEADER_STDC #AC_HEADER_SYS_WAIT # add any others you want to check for here AC_CHECK_HEADERS([cpuid.h]) if test "x$ac_cv_header_cpuid_h" = "xno"; then AC_MSG_WARN([The cpuid.h file was not found therefore the x86 optimizations will be disabled.]) AC_MSG_WARN([If using a x86 architecture and optimizations are desired then please install gcc (>= 4.3).]) AC_MSG_WARN([If using a non-x86 architecture then this is expected and can be ignored.]) fi dnl ############################################################################ dnl # Checks for typedefs, structures, and compiler characteristics $ dnl ############################################################################ AC_C_CONST AC_C_INLINE #AC_TYPE_OFF_T #AC_TYPE_SIZE_T AC_ARG_ENABLE(integer-samples, [AC_HELP_STRING([--enable-integer-samples], [use integer samples instead of floats [default=no]])],, [enable_integer_samples=no]) AC_ARG_ENABLE(openmp, [AC_HELP_STRING([--enable-openmp], [use parallel multicore calculation through OpenMP [default=no]])],, [enable_openmp=no]) # Let the user enable/disable the x86 optimizations. # Useful when compiling on non-x86 architectures. AC_ARG_ENABLE([x86-optimizations], [AS_HELP_STRING([--enable-x86-optimizations], [use MMX or SSE optimization [default=yes]])],[enable_x86_optimizations="${enableval}"], [enable_x86_optimizations=yes]) # Tell the Makefile.am if the user wants to disable optimizations. # Makefile.am will enable them by default if support is available. # Note: We check if optimizations are supported a few lines down. AM_CONDITIONAL([X86_OPTIMIZATIONS], [test "x$enable_x86_optimizations" = "xyes"]) if test "x$enable_integer_samples" = "xyes"; then echo "****** Integer sample type enabled ******" AC_DEFINE(SOUNDTOUCH_INTEGER_SAMPLES,1,[Use Integer as Sample type]) else echo "****** Float sample type enabled ******" AC_DEFINE(SOUNDTOUCH_FLOAT_SAMPLES,1,[Use Float as Sample type]) fi if test "x$enable_openmp" = "xyes"; then echo "****** openmp optimizations enabled ******" AM_CXXFLAGS="-fopenmp $AM_CXXFLAGS" else echo "****** openmp optimizations disabled ******" fi # Check if optimizations are supported in the system at build time. if test "x$enable_x86_optimizations" = "xyes" -a "x$ac_cv_header_cpuid_h" = "xyes"; then echo "****** x86 optimizations enabled ******" original_saved_CXXFLAGS=$CXXFLAGS have_mmx_intrinsics=no CXXFLAGS="-mmmx -Winline $CXXFLAGS" # Check if the user can compile MMX code using intrinsics. # GCC supports MMX intrinsics since version 3.3 # A more recent GCC (>= 4.3) is recommended. AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ #if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 3)) #error "Need GCC >= 3.3 for MMX intrinsics" #endif #include int main () { __m64 loop = _mm_cvtsi32_si64 (1); return _mm_cvtsi64_si32 (loop); }]])],[have_mmx_intrinsics=yes]) CXXFLAGS=$original_saved_CXXFLAGS # Inform the user if we did or did not find MMX support. # # If we enable optimization and integer samples we only require MMX. # Disable optimizations in the SSTypes.h file if this is not the case. if test "x$have_mmx_intrinsics" = "xyes" ; then echo "****** MMX support found ******" else echo "****** No MMX support found ******" if test "x$enable_integer_samples" = "xyes"; then echo "****** Disabling optimizations. Using integer samples with no MMX support ******" AC_DEFINE([SOUNDTOUCH_DISABLE_X86_OPTIMIZATIONS],[1],[Do not use x86 optimizations]) fi fi # SSE support original_saved_CXXFLAGS=$CXXFLAGS have_sse_intrinsics=no CXXFLAGS="-msse -Winline $CXXFLAGS" # Check if the user can compile SSE code using intrinsics. # GCC supports SSE intrinsics since version 3.3 # A more recent GCC (>= 4.3) is recommended. AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ #if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 3)) #error "Need GCC >= 3.3 for SSE intrinsics" #endif #include int main () { _mm_setzero_ps(); return 0; }]])],[have_sse_intrinsics=yes]) CXXFLAGS=$original_saved_CXXFLAGS # Inform the user if we did or did not find SSE support. # # If we enable optimization and float samples we only require SSE. # Disable optimizations in the SSTypes.h file if this is not the case. if test "x$have_sse_intrinsics" = "xyes" ; then echo "****** SSE support found ******" else echo "****** No SSE support found ******" if test "x$enable_integer_samples" != "xyes"; then echo "****** Disabling optimizations. Using float samples with no SSE support ******" AC_DEFINE([SOUNDTOUCH_DISABLE_X86_OPTIMIZATIONS],[1],[Do not use x86 optimizations]) fi fi else # Disable optimizations in SSTypes.h since the user requested it. echo "****** x86 optimizations disabled ******" AC_DEFINE([SOUNDTOUCH_DISABLE_X86_OPTIMIZATIONS],[1],[Do not use x86 optimizations]) fi # Set AM_CXXFLAGS AC_SUBST([AM_CXXFLAGS], [$AM_CXXFLAGS]) # Empty default CXXFLAGS so user can set them if desirable AC_SUBST([CXXFLAGS], [ ]) # SSTypes.h by default enables optimizations. Those already got disabled if # the user requested for it or if the system does not support them. # # Now tell the Makefile.am the optimizations that are supported. # Note: # Makefile.am already knows if the user asked for optimizations. We apply # optimizations by default (if support is available) and then disable all of # them if the user requested it. AM_CONDITIONAL([HAVE_MMX], [test "x$have_mmx_intrinsics" = "xyes"]) AM_CONDITIONAL([HAVE_SSE], [test "x$have_sse_intrinsics" = "xyes"]) dnl ############################################################################ dnl # Checks for library functions/classes # dnl ############################################################################ AC_FUNC_MALLOC AC_TYPE_SIGNAL dnl make -lm get added to the LIBS AC_CHECK_LIB(m, sqrt,,AC_MSG_ERROR([compatible libc math library not found])) dnl add whatever functions you might want to check for here #AC_CHECK_FUNCS([floor ftruncate memmove memset mkdir modf pow realpath sqrt strchr strdup strerror strrchr strstr strtol]) dnl ############################################################################ dnl # Internationaliation and Localiation # dnl ############################################################################ #AM_GNU_GETTEXT_VERSION([0.11.5]) #AM_GNU_GETTEXT([external]) dnl ############################################################################ dnl # Final # dnl ############################################################################ AC_CONFIG_FILES([ Makefile source/Makefile source/SoundTouch/Makefile source/SoundStretch/Makefile include/Makefile ]) AC_OUTPUT( soundtouch.pc ) dnl use 'echo' to put stuff here if you want a message to the builder