Fix Python header check failure due to invalid cached state
[debian/gnuradio] / configure.ac
1 dnl Copyright 2001,2002,2003,2004,2005,2006,2007,2008,2009 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
30 VERSION=3.3svn
31 AC_SUBST(VERSION)
32 AM_INIT_AUTOMAKE(gnuradio,$VERSION)
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 GR_FORTRAN
128 AC_PROG_CC              dnl ensure $ac_ext set correctly after Fortran test
129
130 GR_NO_UNDEFINED         dnl do we need the -no-undefined linker flag
131 GR_SCRIPTING
132
133 # Allow user to choose whether to generate SWIG/Python 
134 # Default is enabled
135 AC_ARG_ENABLE([python],
136   [AS_HELP_STRING([--enable-python],
137     [generate SWIG/Python components (default is yes)])],
138   [case "${enableval}" in
139      yes) enable_python=yes ;;
140      no) enable_python=no ;;
141      *) AC_MSG_ERROR([bad value ${enableval} for --enable-python]) ;;
142    esac],
143   [enable_python=yes]
144 )
145 AM_CONDITIONAL([PYTHON], [test x$enable_python = xyes])
146
147 AC_CHECK_PROG([XMLTO],[xmlto],[yes],[])
148 AM_CONDITIONAL([HAS_XMLTO], [test x$XMLTO = xyes])
149
150 dnl Checks for libraries.
151 AC_CHECK_LIB(socket,socket)
152
153 dnl check for omnithreads (will soon be removed)
154 GR_OMNITHREAD
155
156 dnl Set the c++ compiler that we use for the build system when cross compiling
157 if test x$CXX_FOR_BUILD = x
158 then
159   if test x$cross_compiling = xno; then
160     CXX_FOR_BUILD=${CXX}
161   else
162     CXX_FOR_BUILD=g++
163   fi
164 fi
165 AC_SUBST(CXX_FOR_BUILD)
166
167 dnl Check for SysV shm (mandatory)
168 dnl FIXME this is no longer mandatory.  Check the macro.
169 GR_SYSV_SHM
170
171 dnl Checks for header files.
172 AC_HEADER_STDC
173 AC_HEADER_SYS_WAIT
174 AC_CHECK_HEADERS(fcntl.h limits.h strings.h time.h sys/ioctl.h sys/time.h unistd.h)
175 AC_CHECK_HEADERS(linux/ppdev.h dev/ppbus/ppi.h sys/mman.h sys/select.h sys/types.h)
176 AC_CHECK_HEADERS(sys/resource.h stdint.h sched.h signal.h sys/syscall.h malloc.h)
177 AC_CHECK_HEADERS(netinet/in.h)
178 AC_CHECK_HEADERS(windows.h)
179 AC_CHECK_HEADERS(vec_types.h)
180
181 dnl Checks for typedefs, structures, and compiler characteristics.
182 AC_C_CONST
183 AC_C_INLINE
184 AC_TYPE_SIZE_T
185 AC_HEADER_TIME
186 AC_C_BIGENDIAN([GR_ARCH_BIGENDIAN=1],[GR_ARCH_BIGENDIAN=0])
187 AC_SUBST(GR_ARCH_BIGENDIAN)
188 AC_STRUCT_TM
189
190 dnl Checks for library functions.
191 AC_FUNC_ALLOCA
192 GR_CHECK_MEMALIGN
193 AC_FUNC_SETVBUF_REVERSED
194 AC_FUNC_VPRINTF
195 AC_CHECK_FUNCS([mmap select socket strcspn strerror strspn getpagesize sysconf])
196 AC_CHECK_FUNCS([snprintf gettimeofday nanosleep sched_setscheduler])
197 AC_CHECK_FUNCS([modf sqrt sigaction sigprocmask pthread_sigmask])
198 AC_CHECK_FUNCS([sched_setaffinity])
199
200 AC_CHECK_LIB(m, sincos, [AC_DEFINE([HAVE_SINCOS],[1],[Define to 1 if your system has `sincos'.])])
201 AC_CHECK_LIB(m, sincosf,[AC_DEFINE([HAVE_SINCOSF],[1],[Define to 1 if your system has `sincosf'.])])
202 AC_CHECK_LIB(m, sinf, [AC_DEFINE([HAVE_SINF],[1],[Define to 1 if your system has `sinf'.])])
203 AC_CHECK_LIB(m, cosf, [AC_DEFINE([HAVE_COSF],[1],[Define to 1 if your system has `cosf'.])])
204 AC_CHECK_LIB(m, trunc, [AC_DEFINE([HAVE_TRUNC],[1],[Define to 1 if your system has `trunc'.])])
205 AC_CHECK_LIB(m, exp10, [AC_DEFINE([HAVE_EXP10],[1],[Define to 1 if your system has 'exp10'.])])
206 AC_CHECK_LIB(m, log2, [AC_DEFINE([HAVE_LOG2],[1],[Define to 1 if your system has 'log2'.])])
207 #AC_FUNC_MKTIME
208
209 AH_BOTTOM([
210 #ifndef HAVE_TRUNC
211 #include <math.h>
212 inline static double trunc(double x)
213 {
214   return x >= 0 ? floor(x) : ceil(x);
215 }
216 #endif
217
218 #ifndef HAVE_EXP10
219 #include <math.h>
220 inline static double exp10(double x)
221 {
222   return pow(10.0, x);
223 }
224 #endif
225
226 #ifdef HAVE_WINDOWS_H
227 #define NOMINMAX
228 #endif
229 ])
230
231 GR_CHECK_SHM_OPEN
232 GR_LIBGNURADIO_CORE_EXTRA_LDFLAGS
233 GR_CHECK_CREATEFILEMAPPING
234
235 dnl Check for Mingw support
236 GR_PWIN32
237
238 dnl Do we have "dot", part of the graphviz package from AT&T?
239 dnl Doxgen will use it to draw pretty diagrams ;-)
240 AC_CHECK_PROG(HAVE_DOT, [dot],[YES],[NO])
241
242 PKG_CHECK_MODULES(FFTW3F, fftw3f >= 3.0)
243 AC_SUBST(FFTW3F_LIBS)
244
245 dnl conditional build stuff
246 GR_CHECK_DOXYGEN
247 GR_SET_MD_CPU
248
249 dnl Define where to look for cppunit includes and libs
250 dnl sets CPPUNIT_CFLAGS and CPPUNIT_LIBS
251 dnl Try using pkg-config first, then fall back to cppunit-config.
252 PKG_CHECK_EXISTS(cppunit,
253   [PKG_CHECK_MODULES(CPPUNIT, cppunit >= 1.9.14)],
254   [AM_PATH_CPPUNIT([1.9.14],[],
255                 [AC_MSG_ERROR([GNU Radio requires cppunit.  Stop])])])
256
257 CPPUNIT_INCLUDES=$CPPUNIT_CFLAGS
258 AC_SUBST(CPPUNIT_INCLUDES)
259
260 dnl see if GUILE is installed
261 AC_PATH_PROG(GUILE,guile)
262
263 dnl
264 dnl We require the boost headers, thread lib and date_time lib.
265 dnl AX_BOOST_BASE finds the headers and the lib dir (-L<foo>)
266 dnl
267 dnl calls AC_SUBST(BOOST_CPPFLAGS), AC_SUBST(BOOST_LDFLAGS) and defines HAVE_BOOST
268 AX_BOOST_BASE([1.35])
269
270 dnl calls AC_SUBST(BOOST_THREAD_LIB), AC_SUBST(BOOST_CXXFLAGS) and defines HAVE_BOOST_THREAD
271 AX_BOOST_THREAD
272 CXXFLAGS="$CXXFLAGS $BOOST_CXXFLAGS"       dnl often picks up a -pthread or something similar
273 CFLAGS="$CFLAGS $BOOST_CXXFLAGS"           dnl often picks up a -pthread or something similar
274
275 dnl
276 dnl all the rest of these call AC_SUBST(BOOST_<foo>_LIB) and define HAVE_BOOST_<foo>
277 dnl
278 AX_BOOST_DATE_TIME
279 dnl AX_BOOST_FILESYSTEM
280 dnl AX_BOOST_IOSTREAMS
281 AX_BOOST_PROGRAM_OPTIONS
282 dnl AX_BOOST_REGEX
283 dnl AX_BOOST_SERIALIZATION
284 dnl AX_BOOST_SIGNALS
285 dnl AX_BOOST_SYSTEM
286 dnl AX_BOOST_TEST_EXEC_MONITOR
287 dnl AX_BOOST_UNIT_TEST_FRAMEWORK
288 dnl AX_BOOST_WSERIALIZATION
289
290 BUILD_DATE=`date -R -u`
291 AC_SUBST(BUILD_DATE)
292
293 dnl SYSCONFDIR substitution
294 if test "${sysconfdir}" == "\${prefix}/etc" ; then
295    if test "${prefix}" == "NONE" ; then
296       SYSCONFDIR=["$ac_default_prefix/etc"]
297    else
298       SYSCONFDIR=["${prefix}/etc"]
299    fi
300 else
301    SYSCONFDIR=[${sysconfdir}]
302 fi
303 AC_SUBST(SYSCONFDIR)
304
305 dnl System configuration files
306 GR_PREFSDIR=[$SYSCONFDIR/${PACKAGE}/conf.d]
307 AC_SUBST(GR_PREFSDIR)
308
309 dnl Component specific configuration
310 dnl The order of the GR_ macros determines the order of compilation
311 dnl For -any- checks on $enable_all_components
312 dnl use the following guidelines:
313 dnl   yes : --enable-all-components was specified, so error out if any
314 dnl         components do not pass configuration checks.
315 dnl   no  : --disable-all-components was specified, so try to build the
316 dnl         --enable'd components, and error out if any do not pass
317 dnl         configuration checks.
318 dnl   ""  : this option was not specified on the command line; try to
319 dnl         build all components that are not --with'd, but don't
320 dnl         error out if any component does not pass configuration checks.
321 dnl
322 dnl For each --enable-foo component, if that flag is not specified on
323 dnl the command line, the related variable $enable_foo will be set to
324 dnl $enable_all_components .
325
326 AC_ARG_ENABLE(
327     [all-components],
328     [  --enable-all-components Build all configurable components (default), or stop on failed dependencies]
329 )
330
331 build_dirs="config"
332 GRC_GRUEL                       dnl must come first
333 GRC_OMNITHREAD                  dnl must come before gnuradio-core and mblock
334 GRC_GCELL
335 GRC_GNURADIO_CORE
336 GRC_MBLOCK                      dnl this must come after GRC_GRUEL
337 GRC_USRP
338 GRC_USRP2
339 GRC_VRT
340 GRC_GR_USRP                     dnl this must come after GRC_USRP
341 GRC_GR_USRP2
342 GRC_GR_VRT
343 GRC_GR_GCELL                    dnl this must come after GRC_GCELL and GRC_GNURADIO_CORE
344 GRC_GR_MSDD6000 
345 GRC_GR_AUDIO_ALSA
346 GRC_GR_AUDIO_JACK
347 GRC_GR_AUDIO_OSS
348 GRC_GR_AUDIO_OSX
349 GRC_GR_AUDIO_PORTAUDIO
350 GRC_GR_AUDIO_WINDOWS
351 GRC_GR_ATSC
352 GRC_GR_COMEDI
353 GRC_GR_CVSD_VOCODER
354 GRC_GR_GPIO
355 GRC_GR_GSM_FR_VOCODER
356 GRC_GR_PAGER
357 GRC_GR_RADAR_MONO
358 GRC_GR_RADIO_ASTRONOMY
359 GRC_GR_TRELLIS
360 GRC_GR_VIDEO_SDL
361 GRC_GR_WXGUI
362 GRC_GR_QTGUI
363 GRC_GR_SOUNDER                  dnl this must come after GRC_USRP
364 GRC_GR_UTILS                   dnl this must come after GRC_GR_WXGUI
365 GRC_GNURADIO_EXAMPLES           dnl must come after all GRC_GR_*
366 GRC_GRC
367 GRC_DOCS                        dnl must be last
368
369 # Each component is now either to be built, was skipped, will be
370 # included from pre-installed libraries and includes, or failed
371 # dependencies.
372 AC_SUBST([build_dirs], [$build_dirs])
373 AC_SUBST([skipped_dirs], [$skipped_dirs])
374 AC_SUBST([with_dirs], [$with_dirs])
375
376 # fix for older autotools that don't define these by default
377 AC_SUBST(abs_top_srcdir)
378 AC_SUBST(abs_top_builddir)
379 AC_SUBST(MKDIR_P)
380
381 # 'with' variables - the pre-installed libraries, includes, and paths
382 # - must always come last in the lists, so they require special
383 # treatment.
384 AC_SUBST(with_INCLUDES)
385 AC_SUBST(with_SWIG_INCLUDES)
386 AC_SUBST(with_PYDIRPATH)
387 AC_SUBST(with_SWIGDIRPATH)
388 AC_SUBST(with_LIBDIRPATH)
389
390 # Local files tweaked by AC
391 AC_CONFIG_FILES([\
392     Makefile \
393     run_tests.sh \
394     config/Makefile \
395     debian/changelog \
396 ])
397
398 dnl run_tests.sh is created from run_tests.sh.in .  Make it executable.
399 AC_CONFIG_COMMANDS([run_tests_build], [chmod +x run_tests.sh])
400
401 AC_OUTPUT
402
403 echo
404 echo "*********************************************************************"
405 echo The following GNU Radio components have been successfully configured:
406 echo 
407 for dir in $build_dirs
408 do
409     echo $dir
410 done
411 echo
412 echo You my now run the 'make' command to build these components.
413 echo
414 if test "$skipped_dirs" != ""; then
415     echo "*********************************************************************"
416     echo The following components were skipped either because you asked not
417     echo to build them or they didn\'t pass configuration checks:
418     echo
419     for dir in $skipped_dirs
420     do
421         echo $dir
422     done
423     echo
424     echo These components will not be built.
425     echo
426 fi
427 if test "$with_dirs" != ""; then
428     echo "*********************************************************************"
429     echo The following components will be included from pre-installed
430     echo libraries and includes:
431     echo
432     for dir in $with_dirs
433     do
434         echo $dir
435     done
436     echo
437     echo These components will not be built.
438     echo
439 fi
440