libvrt: remove from 3.3 API.
[debian/gnuradio] / configure.ac
1 dnl Copyright 2001,2002,2003,2004,2005,2006,2007,2008,2009,2010 Free Software Foundation, Inc.
2 dnl 
3 dnl This file is part of GNU Radio
4 dnl 
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)
8 dnl any later version.
9 dnl 
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.
14 dnl 
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.
19
20 AC_INIT
21 AC_PREREQ(2.57)
22 AM_CONFIG_HEADER(config.h)
23 AC_CONFIG_SRCDIR([gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc])
24
25 AC_CANONICAL_BUILD
26 AC_CANONICAL_HOST
27 AC_CANONICAL_TARGET
28
29 GR_VERSION
30 dnl ustar required to have pathnames > 99 chars
31 _AM_SET_OPTION([tar-ustar])
32 AM_INIT_AUTOMAKE(gnuradio,$RELEASE)
33
34 DEFINES=""
35 AC_SUBST(DEFINES)
36
37 dnl Remember if the user explicity set CFLAGS
38 if test -n "${CFLAGS}"; then
39   user_set_cflags=yes
40 fi
41 dnl Remember if the user explicity set CXXFLAGS
42 if test -n "${CXXFLAGS}"; then
43   user_set_cxxflags=yes
44 fi
45
46
47 LF_CONFIGURE_CC
48 LF_CONFIGURE_CXX
49 GR_LIB64                dnl check for lib64 suffix after choosing compilers
50
51
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...
56 dnl 
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"
61   CFLAGS=""
62 fi
63 AC_SUBST(autoconf_default_CFLAGS)
64
65
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...
70 dnl 
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"
76   CXXFLAGS=""
77   if test "$GXX" = yes; then
78     case "$host_cpu" in
79         powerpc*)
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"
83         ;;
84         *) 
85         swig_CXXFLAGS="-g -O1 -Wno-strict-aliasing -Wno-parentheses"
86         ;;
87     esac
88   fi
89 fi
90 AC_SUBST(autoconf_default_CXXFLAGS)
91 AC_SUBST(swig_CXXFLAGS)
92
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
96 else
97     PKG_CONFIG_PATH=${prefix}/lib${gr_libdir_suffix}/pkgconfig:${PKG_CONFIG_PATH}
98 fi
99 export PKG_CONFIG_PATH
100
101 LF_SET_WARNINGS
102 GR_SET_GPROF
103 GR_SET_PROF
104 AM_PROG_AS
105 AC_PROG_LN_S
106 AC_PROG_MAKE_SET
107 AC_PROG_INSTALL
108
109 # AC_PROG_MKDIR_P
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
115      MKDIR_P='$(mkdir_p)'
116      AC_SUBST([MKDIR_P])])
117 ])
118 AC_PROG_MKDIR_P
119
120 AC_PATH_PROG([RM_PROG], [rm])
121
122 AC_LIBTOOL_WIN32_DLL
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])
127 dnl GR_FORTRAN
128
129 GR_NO_UNDEFINED         dnl do we need the -no-undefined linker flag
130 GR_SCRIPTING
131
132 # Allow user to choose whether to generate SWIG/Python 
133 # Default is enabled
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]) ;;
141    esac],
142   [enable_python=yes]
143 )
144 AM_CONDITIONAL([PYTHON], [test x$enable_python = xyes])
145
146 AC_CHECK_PROG([XMLTO],[xmlto],[yes],[])
147 AM_CONDITIONAL([HAS_XMLTO], [test x$XMLTO = xyes])
148
149 dnl Checks for libraries.
150 AC_CHECK_LIB(socket,socket)
151
152 dnl Set the c++ compiler that we use for the build system when cross compiling
153 if test x$CXX_FOR_BUILD = x
154 then
155   if test x$cross_compiling = xno; then
156     CXX_FOR_BUILD=${CXX}
157   else
158     CXX_FOR_BUILD=g++
159   fi
160 fi
161 AC_SUBST(CXX_FOR_BUILD)
162
163 dnl Check for SysV shm (mandatory)
164 dnl FIXME this is no longer mandatory.  Check the macro.
165 GR_SYSV_SHM
166
167 dnl Checks for header files.
168 AC_HEADER_STDC
169 AC_HEADER_SYS_WAIT
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(netinet/in.h)
174 AC_CHECK_HEADERS(windows.h)
175 AC_CHECK_HEADERS(vec_types.h)
176
177 dnl Checks for typedefs, structures, and compiler characteristics.
178 AC_C_CONST
179 AC_C_INLINE
180 AC_TYPE_SIZE_T
181 AC_HEADER_TIME
182 AC_C_BIGENDIAN([GR_ARCH_BIGENDIAN=1],[GR_ARCH_BIGENDIAN=0])
183 AC_SUBST(GR_ARCH_BIGENDIAN)
184 AC_STRUCT_TM
185
186 dnl Checks for library functions.
187 AC_FUNC_ALLOCA
188 GR_CHECK_MEMALIGN
189 AC_FUNC_SETVBUF_REVERSED
190 AC_FUNC_VPRINTF
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])
195
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'.])])
203 #AC_FUNC_MKTIME
204
205 AH_BOTTOM([
206 #ifndef HAVE_TRUNC
207 #include <math.h>
208 inline static double trunc(double x)
209 {
210   return x >= 0 ? floor(x) : ceil(x);
211 }
212 #endif
213
214 #ifndef HAVE_EXP10
215 #include <math.h>
216 inline static double exp10(double x)
217 {
218   return pow(10.0, x);
219 }
220 #endif
221
222 #ifdef HAVE_WINDOWS_H
223 #define NOMINMAX
224 #endif
225 ])
226
227 GR_CHECK_SHM_OPEN
228 GR_LIBGNURADIO_CORE_EXTRA_LDFLAGS
229 GR_CHECK_CREATEFILEMAPPING
230
231 dnl Check for Mingw support
232 GR_PWIN32
233
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])
237
238 PKG_CHECK_MODULES(FFTW3F, fftw3f >= 3.0)
239 AC_SUBST(FFTW3F_LIBS)
240
241 dnl conditional build stuff
242 GR_CHECK_DOXYGEN
243 GR_SET_MD_CPU
244
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])])])
252
253 CPPUNIT_INCLUDES=$CPPUNIT_CFLAGS
254 AC_SUBST(CPPUNIT_INCLUDES)
255
256 dnl see if GUILE is installed
257 AC_PATH_PROG(GUILE,guile)
258
259 dnl
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>)
262 dnl
263 dnl calls AC_SUBST(BOOST_CPPFLAGS), AC_SUBST(BOOST_LDFLAGS) and defines HAVE_BOOST
264 dnl
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.
267 case "$host_os" in
268      darwin*)
269         AX_BOOST_BASE([1.37])
270         ;;
271       *)
272         AX_BOOST_BASE([1.35])
273         ;;
274 esac
275
276 dnl calls AC_SUBST(BOOST_THREAD_LIB), AC_SUBST(BOOST_CXXFLAGS) and defines HAVE_BOOST_THREAD
277 AX_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
280
281 dnl
282 dnl all the rest of these call AC_SUBST(BOOST_<foo>_LIB) and define HAVE_BOOST_<foo>
283 dnl
284 AX_BOOST_DATE_TIME
285 dnl AX_BOOST_FILESYSTEM
286 dnl AX_BOOST_IOSTREAMS
287 AX_BOOST_PROGRAM_OPTIONS
288 dnl AX_BOOST_REGEX
289 dnl AX_BOOST_SERIALIZATION
290 dnl AX_BOOST_SIGNALS
291 dnl AX_BOOST_SYSTEM
292 dnl AX_BOOST_TEST_EXEC_MONITOR
293 dnl AX_BOOST_UNIT_TEST_FRAMEWORK
294 dnl AX_BOOST_WSERIALIZATION
295
296 BUILD_DATE=`date -R -u`
297 AC_SUBST(BUILD_DATE)
298
299 dnl SYSCONFDIR substitution
300 if test "${sysconfdir}" == "\${prefix}/etc" ; then
301    if test "${prefix}" == "NONE" ; then
302       SYSCONFDIR=["$ac_default_prefix/etc"]
303    else
304       SYSCONFDIR=["${prefix}/etc"]
305    fi
306 else
307    SYSCONFDIR=[${sysconfdir}]
308 fi
309 AC_SUBST(SYSCONFDIR)
310
311 dnl System configuration files
312 GR_PREFSDIR=[$SYSCONFDIR/${PACKAGE}/conf.d]
313 AC_SUBST(GR_PREFSDIR)
314
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.
327 dnl
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 .
331
332 AC_ARG_ENABLE(
333     [all-components],
334     [  --enable-all-components Build all configurable components (default), or stop on failed dependencies]
335 )
336
337 build_dirs="config"
338 GRC_GRUEL                       dnl must come first
339 GRC_GCELL
340 GRC_GNURADIO_CORE
341 GRC_USRP
342 GRC_USRP2
343 GRC_GR_USRP                     dnl this must come after GRC_USRP
344 GRC_GR_USRP2
345 GRC_GR_GCELL                    dnl this must come after GRC_GCELL and GRC_GNURADIO_CORE
346 GRC_GR_MSDD6000 
347 GRC_GR_AUDIO_ALSA
348 GRC_GR_AUDIO_JACK
349 GRC_GR_AUDIO_OSS
350 GRC_GR_AUDIO_OSX
351 GRC_GR_AUDIO_PORTAUDIO
352 GRC_GR_AUDIO_WINDOWS
353 GRC_GR_ATSC
354 GRC_GR_COMEDI
355 GRC_GR_CVSD_VOCODER
356 GRC_GR_GPIO
357 GRC_GR_GSM_FR_VOCODER
358 GRC_GR_NOAA
359 GRC_GR_PAGER
360 GRC_GR_RADAR_MONO
361 GRC_GR_RADIO_ASTRONOMY
362 GRC_GR_TRELLIS
363 GRC_GR_VIDEO_SDL
364 GRC_GR_WXGUI
365 GRC_GR_QTGUI
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_*
369 GRC_GRC
370 GRC_DOCS                        dnl must be last
371
372 # Each component is now either to be built, was skipped, will be
373 # included from pre-installed libraries and includes, or failed
374 # dependencies.
375 AC_SUBST([build_dirs], [$build_dirs])
376 AC_SUBST([skipped_dirs], [$skipped_dirs])
377 AC_SUBST([with_dirs], [$with_dirs])
378
379 # fix for older autotools that don't define these by default
380 AC_SUBST(abs_top_srcdir)
381 AC_SUBST(abs_top_builddir)
382 AC_SUBST(MKDIR_P)
383
384 # 'with' variables - the pre-installed libraries, includes, and paths
385 # - must always come last in the lists, so they require special
386 # treatment.
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)
392
393 # Local files tweaked by AC
394 AC_CONFIG_FILES([\
395     Makefile \
396     run_tests.sh \
397     config/Makefile \
398 ])
399
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])
402
403 AC_OUTPUT
404
405 echo
406 echo "*********************************************************************"
407 echo The following GNU Radio components have been successfully configured:
408 echo 
409 for dir in $build_dirs
410 do
411     echo $dir
412 done
413 echo
414 echo You my now run the 'make' command to build these components.
415 echo
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:
420     echo
421     for dir in $skipped_dirs
422     do
423         echo $dir
424     done
425     echo
426     echo These components will not be built.
427     echo
428 fi
429 if test "$with_dirs" != ""; then
430     echo "*********************************************************************"
431     echo The following components will be included from pre-installed
432     echo libraries and includes:
433     echo
434     for dir in $with_dirs
435     do
436         echo $dir
437     done
438     echo
439     echo These components will not be built.
440     echo
441 fi
442
443 echo Configured GNU Radio release $RELEASE for build.