1 dnl Copyright 2001,2002,2003,2004,2005,2006,2007,2008,2009,2010 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])
30 dnl ustar required to have pathnames > 99 chars
31 _AM_SET_OPTION([tar-ustar])
32 AM_INIT_AUTOMAKE(gnuradio,$RELEASE)
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 Set the c++ compiler that we use for the build system when cross compiling
153 if test x$CXX_FOR_BUILD = x
155 if test x$cross_compiling = xno; then
161 AC_SUBST(CXX_FOR_BUILD)
163 dnl Check for SysV shm (mandatory)
164 dnl FIXME this is no longer mandatory. Check the macro.
167 dnl Checks for header files.
170 AC_CHECK_HEADERS(fcntl.h limits.h strings.h time.h sys/ioctl.h sys/time.h unistd.h)
171 AC_CHECK_HEADERS(linux/ppdev.h dev/ppbus/ppi.h sys/mman.h sys/select.h sys/types.h)
172 AC_CHECK_HEADERS(sys/resource.h stdint.h sched.h signal.h sys/syscall.h malloc.h)
173 AC_CHECK_HEADERS(windows.h)
174 AC_CHECK_HEADERS(vec_types.h)
175 AC_CHECK_HEADERS(netdb.h netinet/in.h arpa/inet.h sys/types.h sys/socket.h)
177 dnl Checks for typedefs, structures, and compiler characteristics.
182 AC_C_BIGENDIAN([GR_ARCH_BIGENDIAN=1],[GR_ARCH_BIGENDIAN=0])
183 AC_SUBST(GR_ARCH_BIGENDIAN)
186 dnl Checks for library functions.
189 AC_FUNC_SETVBUF_REVERSED
191 AC_CHECK_FUNCS([mmap select socket strcspn strerror strspn getpagesize sysconf])
192 AC_CHECK_FUNCS([snprintf gettimeofday nanosleep sched_setscheduler])
193 AC_CHECK_FUNCS([modf sqrt sigaction sigprocmask pthread_sigmask])
194 AC_CHECK_FUNCS([sched_setaffinity])
196 AC_CHECK_LIB(m, sincos, [AC_DEFINE([HAVE_SINCOS],[1],[Define to 1 if your system has `sincos'.])])
197 AC_CHECK_LIB(m, sincosf,[AC_DEFINE([HAVE_SINCOSF],[1],[Define to 1 if your system has `sincosf'.])])
198 AC_CHECK_LIB(m, sinf, [AC_DEFINE([HAVE_SINF],[1],[Define to 1 if your system has `sinf'.])])
199 AC_CHECK_LIB(m, cosf, [AC_DEFINE([HAVE_COSF],[1],[Define to 1 if your system has `cosf'.])])
200 AC_CHECK_LIB(m, trunc, [AC_DEFINE([HAVE_TRUNC],[1],[Define to 1 if your system has `trunc'.])])
201 AC_CHECK_LIB(m, exp10, [AC_DEFINE([HAVE_EXP10],[1],[Define to 1 if your system has 'exp10'.])])
202 AC_CHECK_LIB(m, log2, [AC_DEFINE([HAVE_LOG2],[1],[Define to 1 if your system has 'log2'.])])
208 inline static double trunc(double x)
210 return x >= 0 ? floor(x) : ceil(x);
216 inline static double exp10(double x)
222 #ifdef HAVE_WINDOWS_H
228 GR_LIBGNURADIO_CORE_EXTRA_LDFLAGS
229 GR_CHECK_CREATEFILEMAPPING
231 dnl Check for Mingw support
234 dnl Do we have "dot", part of the graphviz package from AT&T?
235 dnl Doxgen will use it to draw pretty diagrams ;-)
236 AC_CHECK_PROG(HAVE_DOT, [dot],[YES],[NO])
238 PKG_CHECK_MODULES(FFTW3F, fftw3f >= 3.0)
239 AC_SUBST(FFTW3F_LIBS)
241 dnl conditional build stuff
245 dnl Define where to look for cppunit includes and libs
246 dnl sets CPPUNIT_CFLAGS and CPPUNIT_LIBS
247 dnl Try using pkg-config first, then fall back to cppunit-config.
248 PKG_CHECK_EXISTS(cppunit,
249 [PKG_CHECK_MODULES(CPPUNIT, cppunit >= 1.9.14)],
250 [AM_PATH_CPPUNIT([1.9.14],[],
251 [AC_MSG_ERROR([GNU Radio requires cppunit. Stop])])])
253 CPPUNIT_INCLUDES=$CPPUNIT_CFLAGS
254 AC_SUBST(CPPUNIT_INCLUDES)
256 dnl see if GUILE is installed
257 AC_PATH_PROG(GUILE,guile)
260 dnl We require the boost headers, thread lib and date_time lib.
261 dnl AX_BOOST_BASE finds the headers and the lib dir (-L<foo>)
263 dnl calls AC_SUBST(BOOST_CPPFLAGS), AC_SUBST(BOOST_LDFLAGS) and defines HAVE_BOOST
265 dnl Current Boost version requirement is >=1.35 for all platforms except Darwin,
266 dnl which requires >=1.37 for code in usrp host library.
269 AX_BOOST_BASE([1.37])
272 AX_BOOST_BASE([1.35])
276 dnl calls AC_SUBST(BOOST_THREAD_LIB), AC_SUBST(BOOST_CXXFLAGS) and defines HAVE_BOOST_THREAD
278 CXXFLAGS="$CXXFLAGS $BOOST_CXXFLAGS" dnl often picks up a -pthread or something similar
279 CFLAGS="$CFLAGS $BOOST_CXXFLAGS" dnl often picks up a -pthread or something similar
282 dnl all the rest of these call AC_SUBST(BOOST_<foo>_LIB) and define HAVE_BOOST_<foo>
285 dnl AX_BOOST_FILESYSTEM
286 dnl AX_BOOST_IOSTREAMS
287 AX_BOOST_PROGRAM_OPTIONS
289 dnl AX_BOOST_SERIALIZATION
292 dnl AX_BOOST_TEST_EXEC_MONITOR
293 dnl AX_BOOST_UNIT_TEST_FRAMEWORK
294 dnl AX_BOOST_WSERIALIZATION
296 BUILD_DATE=`date -R -u`
299 dnl SYSCONFDIR substitution
300 if test "${sysconfdir}" == "\${prefix}/etc" ; then
301 if test "${prefix}" == "NONE" ; then
302 SYSCONFDIR=["$ac_default_prefix/etc"]
304 SYSCONFDIR=["${prefix}/etc"]
307 SYSCONFDIR=[${sysconfdir}]
311 dnl System configuration files
312 GR_PREFSDIR=[$SYSCONFDIR/${PACKAGE}/conf.d]
313 AC_SUBST(GR_PREFSDIR)
315 dnl Component specific configuration
316 dnl The order of the GR_ macros determines the order of compilation
317 dnl For -any- checks on $enable_all_components
318 dnl use the following guidelines:
319 dnl yes : --enable-all-components was specified, so error out if any
320 dnl components do not pass configuration checks.
321 dnl no : --disable-all-components was specified, so try to build the
322 dnl --enable'd components, and error out if any do not pass
323 dnl configuration checks.
324 dnl "" : this option was not specified on the command line; try to
325 dnl build all components that are not --with'd, but don't
326 dnl error out if any component does not pass configuration checks.
328 dnl For each --enable-foo component, if that flag is not specified on
329 dnl the command line, the related variable $enable_foo will be set to
330 dnl $enable_all_components .
334 [ --enable-all-components Build all configurable components (default), or stop on failed dependencies]
338 GRC_GRUEL dnl must come first
343 GRC_GR_USRP dnl this must come after GRC_USRP
345 GRC_GR_GCELL dnl this must come after GRC_GCELL and GRC_GNURADIO_CORE
351 GRC_GR_AUDIO_PORTAUDIO
357 GRC_GR_GSM_FR_VOCODER
361 GRC_GR_RADIO_ASTRONOMY
366 GRC_GR_SOUNDER dnl this must come after GRC_USRP
367 GRC_GR_UTILS dnl this must come after GRC_GR_WXGUI
368 GRC_GNURADIO_EXAMPLES dnl must come after all GRC_GR_*
370 GRC_DOCS dnl must be last
372 # Each component is now either to be built, was skipped, will be
373 # included from pre-installed libraries and includes, or failed
375 AC_SUBST([build_dirs], [$build_dirs])
376 AC_SUBST([skipped_dirs], [$skipped_dirs])
377 AC_SUBST([with_dirs], [$with_dirs])
379 # fix for older autotools that don't define these by default
380 AC_SUBST(abs_top_srcdir)
381 AC_SUBST(abs_top_builddir)
384 # 'with' variables - the pre-installed libraries, includes, and paths
385 # - must always come last in the lists, so they require special
387 AC_SUBST(with_INCLUDES)
388 AC_SUBST(with_SWIG_INCLUDES)
389 AC_SUBST(with_PYDIRPATH)
390 AC_SUBST(with_SWIGDIRPATH)
391 AC_SUBST(with_LIBDIRPATH)
393 # Local files tweaked by AC
400 dnl run_tests.sh is created from run_tests.sh.in . Make it executable.
401 AC_CONFIG_COMMANDS([run_tests_build], [chmod +x run_tests.sh])
406 echo "*********************************************************************"
407 echo The following GNU Radio components have been successfully configured:
409 for dir in $build_dirs
414 echo You my now run the 'make' command to build these components.
416 if test "$skipped_dirs" != ""; then
417 echo "*********************************************************************"
418 echo The following components were skipped either because you asked not
419 echo to build them or they didn\'t pass configuration checks:
421 for dir in $skipped_dirs
426 echo These components will not be built.
429 if test "$with_dirs" != ""; then
430 echo "*********************************************************************"
431 echo The following components will be included from pre-installed
432 echo libraries and includes:
434 for dir in $with_dirs
439 echo These components will not be built.
443 echo Configured GNU Radio release $RELEASE for build.