1 dnl Copyright 2001,2002,2003,2004,2005,2006,2007,2008,2009 Free Software Foundation, Inc.
3 dnl This file is part of GNU Radio
5 dnl GNU Radio is free software; you can redistribute it and/or modify
6 dnl it under the terms of the GNU General Public License as published by
7 dnl the Free Software Foundation; either version 3, or (at your option)
10 dnl GNU Radio is distributed in the hope that it will be useful,
11 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
12 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 dnl GNU General Public License for more details.
15 dnl You should have received a copy of the GNU General Public License
16 dnl along with GNU Radio; see the file COPYING. If not, write to
17 dnl the Free Software Foundation, Inc., 51 Franklin Street,
18 dnl Boston, MA 02110-1301, USA.
22 AM_CONFIG_HEADER(config.h)
23 AC_CONFIG_SRCDIR([gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc])
32 AM_INIT_AUTOMAKE(gnuradio,$VERSION)
37 dnl Remember if the user explicity set CFLAGS
38 if test -n "${CFLAGS}"; then
41 dnl Remember if the user explicity set CXXFLAGS
42 if test -n "${CXXFLAGS}"; then
49 GR_LIB64 dnl check for lib64 suffix after choosing compilers
52 dnl The three macros above are known to override CFLAGS if the user
53 dnl didn't specify them. Though I'm sure somebody thought this was
54 dnl a good idea, it makes it hard to use other than -g -O2 when compiling
55 dnl selected files. Thus we "undo" the damage here...
57 dnl If the user specified CFLAGS, we use them.
58 dnl See Makefile.common for the rest of the magic.
59 if test "$user_set_cflags" != yes; then
60 autoconf_default_CFLAGS="$CFLAGS"
63 AC_SUBST(autoconf_default_CFLAGS)
66 dnl The three macros above are known to override CXXFLAGS if the user
67 dnl didn't specify them. Though I'm sure somebody thought this was
68 dnl a good idea, it makes it hard to use other than -g -O2 when compiling
69 dnl selected files. Thus we "undo" the damage here...
71 dnl If the user specified CXXFLAGS, we use them. Otherwise when compiling
72 dnl the output of swig use use -O1 if we're using g++.
73 dnl See Makefile.common for the rest of the magic.
74 if test "$user_set_cxxflags" != yes; then
75 autoconf_default_CXXFLAGS="$CXXFLAGS"
77 if test "$GXX" = yes; then
80 dnl "-O1" is broken on the PPC for some reason
81 dnl (at least as of g++ 4.1.1)
82 swig_CXXFLAGS="-g1 -O2 -Wno-strict-aliasing -Wno-parentheses"
85 swig_CXXFLAGS="-g -O1 -Wno-strict-aliasing -Wno-parentheses"
90 AC_SUBST(autoconf_default_CXXFLAGS)
91 AC_SUBST(swig_CXXFLAGS)
93 dnl add ${prefix}/lib${gr_libdir_suffix}/pkgconfig to the head of the PKG_CONFIG_PATH
94 if test x${PKG_CONFIG_PATH} = x; then
95 PKG_CONFIG_PATH=${prefix}/lib${gr_libdir_suffix}/pkgconfig
97 PKG_CONFIG_PATH=${prefix}/lib${gr_libdir_suffix}/pkgconfig:${PKG_CONFIG_PATH}
99 export PKG_CONFIG_PATH
110 # is a backport of autoconf-2.60's AC_PROG_MKDIR_P.
111 # Remove this macro when we can assume autoconf >= 2.60.
112 m4_ifdef([AC_PROG_MKDIR_P], [], [
113 AC_DEFUN([AC_PROG_MKDIR_P],
114 [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
116 AC_SUBST([MKDIR_P])])
120 AC_PATH_PROG([RM_PROG], [rm])
123 dnl AC_DISABLE_SHARED dnl don't build shared libraries
124 AC_ENABLE_SHARED dnl do build shared libraries
125 AC_DISABLE_STATIC dnl don't build static libraries
126 m4_ifdef([LT_INIT],[LT_INIT],[AC_PROG_LIBTOOL])
129 GR_NO_UNDEFINED dnl do we need the -no-undefined linker flag
132 # Allow user to choose whether to generate SWIG/Python
134 AC_ARG_ENABLE([python],
135 [AS_HELP_STRING([--enable-python],
136 [generate SWIG/Python components (default is yes)])],
137 [case "${enableval}" in
138 yes) enable_python=yes ;;
139 no) enable_python=no ;;
140 *) AC_MSG_ERROR([bad value ${enableval} for --enable-python]) ;;
144 AM_CONDITIONAL([PYTHON], [test x$enable_python = xyes])
146 AC_CHECK_PROG([XMLTO],[xmlto],[yes],[])
147 AM_CONDITIONAL([HAS_XMLTO], [test x$XMLTO = xyes])
149 dnl Checks for libraries.
150 AC_CHECK_LIB(socket,socket)
152 dnl check for omnithreads (will soon be removed)
155 dnl Set the c++ compiler that we use for the build system when cross compiling
156 if test x$CXX_FOR_BUILD = x
158 if test x$cross_compiling = xno; then
164 AC_SUBST(CXX_FOR_BUILD)
166 dnl Check for SysV shm (mandatory)
167 dnl FIXME this is no longer mandatory. Check the macro.
170 dnl Checks for header files.
173 AC_CHECK_HEADERS(fcntl.h limits.h strings.h time.h sys/ioctl.h sys/time.h unistd.h)
174 AC_CHECK_HEADERS(linux/ppdev.h dev/ppbus/ppi.h sys/mman.h sys/select.h sys/types.h)
175 AC_CHECK_HEADERS(sys/resource.h stdint.h sched.h signal.h sys/syscall.h malloc.h)
176 AC_CHECK_HEADERS(netinet/in.h)
177 AC_CHECK_HEADERS(windows.h)
178 AC_CHECK_HEADERS(vec_types.h)
180 dnl Checks for typedefs, structures, and compiler characteristics.
185 AC_C_BIGENDIAN([GR_ARCH_BIGENDIAN=1],[GR_ARCH_BIGENDIAN=0])
186 AC_SUBST(GR_ARCH_BIGENDIAN)
189 dnl Checks for library functions.
192 AC_FUNC_SETVBUF_REVERSED
194 AC_CHECK_FUNCS([mmap select socket strcspn strerror strspn getpagesize sysconf])
195 AC_CHECK_FUNCS([snprintf gettimeofday nanosleep sched_setscheduler])
196 AC_CHECK_FUNCS([modf sqrt sigaction sigprocmask pthread_sigmask])
197 AC_CHECK_FUNCS([sched_setaffinity])
199 AC_CHECK_LIB(m, sincos, [AC_DEFINE([HAVE_SINCOS],[1],[Define to 1 if your system has `sincos'.])])
200 AC_CHECK_LIB(m, sincosf,[AC_DEFINE([HAVE_SINCOSF],[1],[Define to 1 if your system has `sincosf'.])])
201 AC_CHECK_LIB(m, sinf, [AC_DEFINE([HAVE_SINF],[1],[Define to 1 if your system has `sinf'.])])
202 AC_CHECK_LIB(m, cosf, [AC_DEFINE([HAVE_COSF],[1],[Define to 1 if your system has `cosf'.])])
203 AC_CHECK_LIB(m, trunc, [AC_DEFINE([HAVE_TRUNC],[1],[Define to 1 if your system has `trunc'.])])
204 AC_CHECK_LIB(m, exp10, [AC_DEFINE([HAVE_EXP10],[1],[Define to 1 if your system has 'exp10'.])])
205 AC_CHECK_LIB(m, log2, [AC_DEFINE([HAVE_LOG2],[1],[Define to 1 if your system has 'log2'.])])
211 inline static double trunc(double x)
213 return x >= 0 ? floor(x) : ceil(x);
219 inline static double exp10(double x)
225 #ifdef HAVE_WINDOWS_H
231 GR_LIBGNURADIO_CORE_EXTRA_LDFLAGS
232 GR_CHECK_CREATEFILEMAPPING
234 dnl Check for Mingw support
237 dnl Do we have "dot", part of the graphviz package from AT&T?
238 dnl Doxgen will use it to draw pretty diagrams ;-)
239 AC_CHECK_PROG(HAVE_DOT, [dot],[YES],[NO])
241 PKG_CHECK_MODULES(FFTW3F, fftw3f >= 3.0)
242 AC_SUBST(FFTW3F_LIBS)
244 dnl conditional build stuff
248 dnl Define where to look for cppunit includes and libs
249 dnl sets CPPUNIT_CFLAGS and CPPUNIT_LIBS
250 dnl Try using pkg-config first, then fall back to cppunit-config.
251 PKG_CHECK_EXISTS(cppunit,
252 [PKG_CHECK_MODULES(CPPUNIT, cppunit >= 1.9.14)],
253 [AM_PATH_CPPUNIT([1.9.14],[],
254 [AC_MSG_ERROR([GNU Radio requires cppunit. Stop])])])
256 CPPUNIT_INCLUDES=$CPPUNIT_CFLAGS
257 AC_SUBST(CPPUNIT_INCLUDES)
259 dnl see if GUILE is installed
260 AC_PATH_PROG(GUILE,guile)
263 dnl We require the boost headers, thread lib and date_time lib.
264 dnl AX_BOOST_BASE finds the headers and the lib dir (-L<foo>)
266 dnl calls AC_SUBST(BOOST_CPPFLAGS), AC_SUBST(BOOST_LDFLAGS) and defines HAVE_BOOST
267 AX_BOOST_BASE([1.35])
269 dnl calls AC_SUBST(BOOST_THREAD_LIB), AC_SUBST(BOOST_CXXFLAGS) and defines HAVE_BOOST_THREAD
271 CXXFLAGS="$CXXFLAGS $BOOST_CXXFLAGS" dnl often picks up a -pthread or something similar
272 CFLAGS="$CFLAGS $BOOST_CXXFLAGS" dnl often picks up a -pthread or something similar
275 dnl all the rest of these call AC_SUBST(BOOST_<foo>_LIB) and define HAVE_BOOST_<foo>
278 dnl AX_BOOST_FILESYSTEM
279 dnl AX_BOOST_IOSTREAMS
280 AX_BOOST_PROGRAM_OPTIONS
282 dnl AX_BOOST_SERIALIZATION
285 dnl AX_BOOST_TEST_EXEC_MONITOR
286 dnl AX_BOOST_UNIT_TEST_FRAMEWORK
287 dnl AX_BOOST_WSERIALIZATION
289 BUILD_DATE=`date -R -u`
292 dnl SYSCONFDIR substitution
293 if test "${sysconfdir}" == "\${prefix}/etc" ; then
294 if test "${prefix}" == "NONE" ; then
295 SYSCONFDIR=["$ac_default_prefix/etc"]
297 SYSCONFDIR=["${prefix}/etc"]
300 SYSCONFDIR=[${sysconfdir}]
304 dnl System configuration files
305 GR_PREFSDIR=[$SYSCONFDIR/${PACKAGE}/conf.d]
306 AC_SUBST(GR_PREFSDIR)
308 dnl Component specific configuration
309 dnl The order of the GR_ macros determines the order of compilation
310 dnl For -any- checks on $enable_all_components
311 dnl use the following guidelines:
312 dnl yes : --enable-all-components was specified, so error out if any
313 dnl components do not pass configuration checks.
314 dnl no : --disable-all-components was specified, so try to build the
315 dnl --enable'd components, and error out if any do not pass
316 dnl configuration checks.
317 dnl "" : this option was not specified on the command line; try to
318 dnl build all components that are not --with'd, but don't
319 dnl error out if any component does not pass configuration checks.
321 dnl For each --enable-foo component, if that flag is not specified on
322 dnl the command line, the related variable $enable_foo will be set to
323 dnl $enable_all_components .
327 [ --enable-all-components Build all configurable components (default), or stop on failed dependencies]
331 GRC_GRUEL dnl must come first
332 GRC_OMNITHREAD dnl must come before gnuradio-core and mblock
335 GRC_MBLOCK dnl this must come after GRC_GRUEL
339 GRC_GR_USRP dnl this must come after GRC_USRP
342 GRC_GR_GCELL dnl this must come after GRC_GCELL and GRC_GNURADIO_CORE
348 GRC_GR_AUDIO_PORTAUDIO
354 GRC_GR_GSM_FR_VOCODER
357 GRC_GR_RADIO_ASTRONOMY
362 GRC_GR_SOUNDER dnl this must come after GRC_USRP
363 GRC_GR_UTILS dnl this must come after GRC_GR_WXGUI
364 GRC_GNURADIO_EXAMPLES dnl must come after all GRC_GR_*
366 GRC_DOCS dnl must be last
368 # Each component is now either to be built, was skipped, will be
369 # included from pre-installed libraries and includes, or failed
371 AC_SUBST([build_dirs], [$build_dirs])
372 AC_SUBST([skipped_dirs], [$skipped_dirs])
373 AC_SUBST([with_dirs], [$with_dirs])
375 # fix for older autotools that don't define these by default
376 AC_SUBST(abs_top_srcdir)
377 AC_SUBST(abs_top_builddir)
380 # 'with' variables - the pre-installed libraries, includes, and paths
381 # - must always come last in the lists, so they require special
383 AC_SUBST(with_INCLUDES)
384 AC_SUBST(with_SWIG_INCLUDES)
385 AC_SUBST(with_PYDIRPATH)
386 AC_SUBST(with_SWIGDIRPATH)
387 AC_SUBST(with_LIBDIRPATH)
389 # Local files tweaked by AC
397 dnl run_tests.sh is created from run_tests.sh.in . Make it executable.
398 AC_CONFIG_COMMANDS([run_tests_build], [chmod +x run_tests.sh])
403 echo "*********************************************************************"
404 echo The following GNU Radio components have been successfully configured:
406 for dir in $build_dirs
411 echo You my now run the 'make' command to build these components.
413 if test "$skipped_dirs" != ""; then
414 echo "*********************************************************************"
415 echo The following components were skipped either because you asked not
416 echo to build them or they didn\'t pass configuration checks:
418 for dir in $skipped_dirs
423 echo These components will not be built.
426 if test "$with_dirs" != ""; then
427 echo "*********************************************************************"
428 echo The following components will be included from pre-installed
429 echo libraries and includes:
431 for dir in $with_dirs
436 echo These components will not be built.