Merged r6271:6278 from jcorgan/t182 into trunk. Implements ticket:182.
[debian/gnuradio] / configure.ac
index 410567fc2a1f5a1774cf5a535fd586277ec32898..e8a4efe2f7941aec448ce938fb1eb78ae93be63f 100644 (file)
@@ -1,10 +1,10 @@
-dnl Copyright 2001,2002,2003,2004,2005,2006 Free Software Foundation, Inc.
+dnl Copyright 2001,2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
 dnl 
 dnl This file is part of GNU Radio
 dnl 
 dnl GNU Radio is free software; you can redistribute it and/or modify
 dnl it under the terms of the GNU General Public License as published by
-dnl the Free Software Foundation; either version 2, or (at your option)
+dnl the Free Software Foundation; either version 3, or (at your option)
 dnl any later version.
 dnl 
 dnl GNU Radio is distributed in the hope that it will be useful,
@@ -14,26 +14,65 @@ dnl GNU General Public License for more details.
 dnl 
 dnl You should have received a copy of the GNU General Public License
 dnl along with GNU Radio; see the file COPYING.  If not, write to
-dnl the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-dnl Boston, MA 02111-1307, USA.
+dnl the Free Software Foundation, Inc., 51 Franklin Street,
+dnl Boston, MA 02110-1301, USA.
 
 AC_INIT
 AC_PREREQ(2.57)
 AM_CONFIG_HEADER(config.h)
 AC_CANONICAL_HOST
 AC_CANONICAL_TARGET([])
-AM_INIT_AUTOMAKE(gnuradio,2.8svn)
+AM_INIT_AUTOMAKE(gnuradio,3.0svn)
+AC_CONFIG_SRCDIR([gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc])
+
+DEFINES=""
+AC_SUBST(DEFINES)
+
+dnl Remember if the user explicity set CXXFLAGS
+if test -n "${CXXFLAGS}"; then
+  user_set_cxxflags=yes
+fi
 
 GR_X86_64              dnl check for lib64 suffix
 LF_CONFIGURE_CC
 LF_CONFIGURE_CXX
+
+dnl The three macros above are known to override CXXFLAGS if the user
+dnl didn't specify them.  Though I'm sure somebody thought this was
+dnl a good idea, it makes it hard to use other than -g -O2 when compiling
+dnl selected files.  Thus we "undo" the damage here...
+dnl 
+dnl If the user specified CXXFLAGS, we use them.  Otherwise when compiling
+dnl the output of swig use use -O1 if we're using g++.
+dnl See Makefile.common for the rest of the magic.
+if test "$user_set_cxxflags" != yes; then
+  autoconf_default_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS=""
+  if test "$GXX" = yes; then
+    case "$host_cpu" in
+       powerpc*)
+          # "-O1" is broken on the PPC for some reason
+          # (at least as of g++ 4.1.1)
+          swig_CXXFLAGS="-g1 -O2"
+       ;;
+       *) 
+       swig_CXXFLAGS="-g1 -O1"
+       ;;
+    esac
+  fi
+fi
+AC_SUBST(autoconf_default_CXXFLAGS)
+AC_SUBST(swig_CXXFLAGS)
+
+
 LF_SET_WARNINGS
 GR_SET_GPROF
 GR_SET_PROF
-GR_PROG_AS
+AM_PROG_AS
 AC_PROG_LN_S
 AC_PROG_MAKE_SET
 AC_PROG_INSTALL
+AC_PATH_PROG([RM_PROG], [rm])
 
 AC_LIBTOOL_WIN32_DLL
 dnl AC_DISABLE_SHARED  dnl don't build shared libraries
@@ -45,12 +84,15 @@ GR_FORTRAN
 GR_NO_UNDEFINED                dnl do we need the -no-undefined linker flag
 GR_SCRIPTING
 
+AC_CHECK_PROG([XMLTO],[xmlto],[yes],[])
+AM_CONDITIONAL([HAS_XMLTO], [test x$XMLTO = xyes])
+
 dnl Checks for libraries.
 AC_CHECK_LIB(socket,socket)
 
 dnl check for threads (mandatory)
 GR_OMNITHREAD
-
+#AC_SUBST(PTHREAD_CFLAGS)
 CFLAGS="${CFLAGS} $PTHREAD_CFLAGS"
 CXXFLAGS="${CXXFLAGS} $PTHREAD_CFLAGS"
 
@@ -69,7 +111,7 @@ AC_HEADER_STDC
 AC_HEADER_SYS_WAIT
 AC_CHECK_HEADERS(fcntl.h limits.h strings.h time.h sys/ioctl.h sys/time.h unistd.h)
 AC_CHECK_HEADERS(linux/ppdev.h sys/mman.h sys/select.h sys/types.h)
-AC_CHECK_HEADERS(sys/resource.h stdint.h sched.h)
+AC_CHECK_HEADERS(sys/resource.h stdint.h sched.h signal.h sys/syscall.h)
 
 dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
@@ -77,6 +119,7 @@ AC_C_INLINE
 AC_TYPE_SIZE_T
 AC_HEADER_TIME
 AC_C_BIGENDIAN
+AC_STRUCT_TM
 
 dnl Checks for library functions.
 AC_FUNC_ALLOCA
@@ -84,12 +127,17 @@ AC_FUNC_SETVBUF_REVERSED
 AC_FUNC_VPRINTF
 AC_CHECK_FUNCS([mmap select socket strcspn strerror strspn getpagesize sysconf])
 AC_CHECK_FUNCS([snprintf gettimeofday nanosleep sched_setscheduler])
+AC_CHECK_FUNCS([modf sqrt sigaction sigprocmask pthread_sigmask])
+AC_CHECK_FUNCS([sched_setaffinity])
 
 AC_CHECK_LIB(m, sincos, [AC_DEFINE([HAVE_SINCOS],[1],[Define to 1 if your system has `sincos'.])])
 AC_CHECK_LIB(m, sincosf,[AC_DEFINE([HAVE_SINCOSF],[1],[Define to 1 if your system has `sincosf'.])])
 AC_CHECK_LIB(m, sinf, [AC_DEFINE([HAVE_SINF],[1],[Define to 1 if your system has `sinf'.])])
 AC_CHECK_LIB(m, cosf, [AC_DEFINE([HAVE_COSF],[1],[Define to 1 if your system has `cosf'.])])
 AC_CHECK_LIB(m, trunc, [AC_DEFINE([HAVE_TRUNC],[1],[Define to 1 if your system has `trunc'.])])
+AC_CHECK_LIB(m, exp10, [AC_DEFINE([HAVE_EXP10],[1],[Define to 1 if your system has 'exp10'.])])
+#AC_FUNC_MKTIME
+
 AH_BOTTOM([
 #ifndef HAVE_TRUNC
 #include <math.h>
@@ -98,6 +146,14 @@ inline static double trunc(double x)
   return x >= 0 ? floor(x) : ceil(x);
 }
 #endif
+
+#ifndef HAVE_EXP10
+#include <math.h>
+inline static double exp10(double x)
+{
+  return pow(10.0, x);
+}
+#endif
 ])
 
 GR_CHECK_SHM_OPEN
@@ -118,10 +174,6 @@ dnl conditional build stuff
 GR_CHECK_DOXYGEN
 GR_SET_MD_CPU
 
-dnl Define where to look for GNURADIO includes
-GNURADIO_INCLUDES='-I$(top_srcdir)/gnuradio-core/src/lib/runtime -I$(top_srcdir)/gnuradio-core/src/lib/general -I$(top_srcdir)/gnuradio-core/src/lib/filter -I$(top_srcdir)/gnuradio-core/src/lib/io -I$(top_srcdir)/gnuradio-core/src/lib/g72x -I$(top_srcdir)/gnuradio-core/src/lib/atsc -I$(top_srcdir)/gnuradio-core/src/lib/omnithread -I$(top_builddir)/gnuradio-core/src/lib/general -I$(top_builddir)/gnuradio-core/src/lib/filter -I$(top_builddir)/gnuradio-core/src/lib/reed-solomon -I$(top_builddir)/gnuradio-core/src/lib/swig $(FFTW3F_CFLAGS)'
-AC_SUBST(GNURADIO_INCLUDES)
-
 dnl Define where to look for cppunit includes and libs
 dnl sets CPPUNIT_CFLAGS and CPPUNIT_LIBS
 AM_PATH_CPPUNIT([1.9.14],[],
@@ -134,67 +186,77 @@ dnl Define where to find boost includes
 dnl defines BOOST_CFLAGS
 GR_REQUIRE_BOOST_INCLUDES
 
-DEFINES=""
-AC_SUBST(DEFINES)
-
-STD_DEFINES_AND_INCLUDES="$DEFINES $GNURADIO_INCLUDES $BOOST_CFLAGS"
-AC_SUBST(STD_DEFINES_AND_INCLUDES)
-
 dnl Component specific configuration
 dnl The order of the GR_ macros determines the order of compilation
-subdirs="config"
-GR_GNURADIO_CORE
-GR_GNURADIO_EXAMPLES
-GR_USRP_HW
-GR_USRP                                dnl this must come after GR_USRP_HW
-GR_AUDIO_ALSA
-GR_AUDIO_JACK
-GR_AUDIO_OSS
-#GR_AUDIO_PORTAUDIO            dnl Disabled until portaudio patch figured out
-GR_AUDIO_OSX                   dnl ***NOT TESTED***
-GR_AUDIO_WINDOWS               dnl ***NOT TESTED***
-GR_ATSC
-GR_COMEDI
-#GR_ERROR_CORRECTING_CODES     dnl Disabled until compile error fixed from CVS
-GR_GSM_FR_VOCODER
-GR_RADAR
-GR_RADIO_ASTRONOMY
-GR_PMT
-GR_VIDEO_SDL
-GR_WXGUI
-
-dnl Has list of successfully configured components
-AC_SUBST([subdirs],$subdirs)
+AC_ARG_ENABLE(
+    [all-components],
+    [  --enable-all-components Build all components or stop on failed dependencies]
+)
+
+build_dirs="config"
+GRC_OMNITHREAD                 dnl must come before gnuradio-core and mblock
+GRC_GNURADIO_CORE
+GRC_PMT
+GRC_MBLOCK                     dnl this must come after GRC_PMT
+GRC_USRP
+GRC_GR_USRP                    dnl this must come after GRC_USRP
+GRC_GR_AUDIO_ALSA
+GRC_GR_AUDIO_JACK
+GRC_GR_AUDIO_OSS
+GRC_GR_AUDIO_OSX
+GRC_GR_AUDIO_PORTAUDIO
+GRC_GR_AUDIO_WINDOWS
+GRC_GR_ATSC
+GRC_GR_COMEDI
+GRC_GR_CVSD_VOCODER
+GRC_GR_GSM_FR_VOCODER
+GRC_GR_PAGER
+GRC_GR_RADAR_MONO
+GRC_GR_RADIO_ASTRONOMY
+GRC_GR_TRELLIS
+GRC_GR_VIDEO_SDL
+GRC_GR_QTGUI
+GRC_GR_WXGUI
+GRC_GR_SOUNDER                 dnl this must come after GRC_USRP
+GRC_GR_UTILS
+GRC_GNURADIO_EXAMPLES          dnl must come last
+
+# Each component is now either to be built, was skipped, or failed dependencies
+AC_SUBST([build_dirs], [$build_dirs])
+AC_SUBST([skipped_dirs], [$skipped_dirs])
  
 AC_CONFIG_FILES([\
-         Makefile \
-         config/Makefile
+    Makefile \
+    run_tests.sh
+    config/Makefile
 ])
 
+dnl run_tests.sh is created from run_tests.in.sh.  Make it executable.
+AC_CONFIG_COMMANDS([run_tests_build], [chmod +x run_tests.sh])
+
 AC_OUTPUT
 
 echo
-echo "*******************************************************************"
+echo "*********************************************************************"
 echo The following GNU Radio components have been successfully configured:
 echo 
-for dir in $subdirs
+for dir in $build_dirs
 do
     echo $dir
 done
 echo
-if test "$failed" != ""; then
-    echo However, the following components did not configure successfully due to 
-    echo missing dependencies:
+echo You my now run the 'make' command to build these components.
+echo
+if test "$skipped_dirs" != ""; then
+    echo "*********************************************************************"
+    echo The following components were skipped either because you asked not
+    echo to build them or they didn\'t pass configuration checks:
     echo
-    for dir in $failed
+    for dir in $skipped_dirs
     do
         echo $dir
     done
     echo
-    echo You may still run the 'make' command to build the successfully configured
-    echo components.
+    echo These components will not be built.
     echo
-    exit 1
 fi
-echo You my now run the 'make' command to build these packages.
-echo