Implements ticket:28. See BuildConfiguration for documentation.
[debian/gnuradio] / configure.ac
1 dnl Copyright 2001,2002,2003,2004,2005,2006 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 2, 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., 59 Temple Place - Suite 330,
18 dnl Boston, MA 02111-1307, USA.
19
20 AC_INIT
21 AC_PREREQ(2.57)
22 AM_CONFIG_HEADER(config.h)
23 AC_CANONICAL_HOST
24 AC_CANONICAL_TARGET([])
25 AM_INIT_AUTOMAKE(gnuradio,2.8svn)
26 AC_CONFIG_SRCDIR([gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc])
27
28 GR_X86_64               dnl check for lib64 suffix
29 LF_CONFIGURE_CC
30 LF_CONFIGURE_CXX
31 LF_SET_WARNINGS
32 GR_SET_GPROF
33 GR_SET_PROF
34 GR_PROG_AS
35 AC_PROG_LN_S
36 AC_PROG_MAKE_SET
37 AC_PROG_INSTALL
38 AC_PATH_PROG([RM_PROG], [rm])
39
40 AC_LIBTOOL_WIN32_DLL
41 dnl AC_DISABLE_SHARED   dnl don't build shared libraries
42 AC_ENABLE_SHARED        dnl do build shared libraries
43 AC_DISABLE_STATIC       dnl don't build static libraries
44 AC_PROG_LIBTOOL
45 GR_FORTRAN
46
47 GR_NO_UNDEFINED         dnl do we need the -no-undefined linker flag
48 GR_SCRIPTING
49
50 dnl Checks for libraries.
51 AC_CHECK_LIB(socket,socket)
52
53 dnl check for threads (mandatory)
54 GR_OMNITHREAD
55 #AC_SUBST(PTHREAD_CFLAGS)
56 CFLAGS="${CFLAGS} $PTHREAD_CFLAGS"
57 CXXFLAGS="${CXXFLAGS} $PTHREAD_CFLAGS"
58
59 if test "x$CXX_FOR_BUILD" = x
60 then
61   CXX_FOR_BUILD=${CXX}
62 fi
63 AC_SUBST(CXX_FOR_BUILD)
64
65 dnl Check for SysV shm (mandatory)
66 dnl FIXME this is no longer mandatory.  Check the macro.
67 GR_SYSV_SHM
68
69 dnl Checks for header files.
70 AC_HEADER_STDC
71 AC_HEADER_SYS_WAIT
72 AC_CHECK_HEADERS(fcntl.h limits.h strings.h time.h sys/ioctl.h sys/time.h unistd.h)
73 AC_CHECK_HEADERS(linux/ppdev.h sys/mman.h sys/select.h sys/types.h)
74 AC_CHECK_HEADERS(sys/resource.h stdint.h sched.h)
75
76 dnl Checks for typedefs, structures, and compiler characteristics.
77 AC_C_CONST
78 AC_C_INLINE
79 AC_TYPE_SIZE_T
80 AC_HEADER_TIME
81 AC_C_BIGENDIAN
82 AC_STRUCT_TM
83
84 dnl Checks for library functions.
85 AC_FUNC_ALLOCA
86 AC_FUNC_SETVBUF_REVERSED
87 AC_FUNC_VPRINTF
88 AC_CHECK_FUNCS([mmap select socket strcspn strerror strspn getpagesize sysconf])
89 AC_CHECK_FUNCS([snprintf gettimeofday nanosleep sched_setscheduler])
90 AC_CHECK_FUNCS([modf sqrt])
91
92 AC_CHECK_LIB(m, sincos, [AC_DEFINE([HAVE_SINCOS],[1],[Define to 1 if your system has `sincos'.])])
93 AC_CHECK_LIB(m, sincosf,[AC_DEFINE([HAVE_SINCOSF],[1],[Define to 1 if your system has `sincosf'.])])
94 AC_CHECK_LIB(m, sinf, [AC_DEFINE([HAVE_SINF],[1],[Define to 1 if your system has `sinf'.])])
95 AC_CHECK_LIB(m, cosf, [AC_DEFINE([HAVE_COSF],[1],[Define to 1 if your system has `cosf'.])])
96 AC_CHECK_LIB(m, trunc, [AC_DEFINE([HAVE_TRUNC],[1],[Define to 1 if your system has `trunc'.])])
97 AC_CHECK_LIB(m, exp10, [AC_DEFINE([HAVE_EXP10],[1],[Define to 1 if your system has 'exp10'.])])
98 #AC_FUNC_MKTIME
99
100 AH_BOTTOM([
101 #ifndef HAVE_TRUNC
102 #include <math.h>
103 inline static double trunc(double x)
104 {
105   return x >= 0 ? floor(x) : ceil(x);
106 }
107 #endif
108
109 #ifndef HAVE_EXP10
110 #include <math.h>
111 inline static double exp10(double x)
112 {
113   return pow(10.0, x);
114 }
115 #endif
116 ])
117
118 GR_CHECK_SHM_OPEN
119 GR_LIBGNURADIO_CORE_EXTRA_LDFLAGS
120 GR_CHECK_CREATEFILEMAPPING
121
122 dnl Check for Mingw support
123 GR_PWIN32
124
125 dnl Do we have "dot", part of the graphviz package from AT&T?
126 dnl Doxgen will use it to draw pretty diagrams ;-)
127 AC_CHECK_PROG(HAVE_DOT, [dot],[YES],[NO])
128
129 PKG_CHECK_MODULES(FFTW3F, fftw3f >= 3.0)
130 AC_SUBST(FFTW3F_LIBS)
131
132 dnl conditional build stuff
133 GR_CHECK_DOXYGEN
134 GR_SET_MD_CPU
135
136 dnl Define where to look for cppunit includes and libs
137 dnl sets CPPUNIT_CFLAGS and CPPUNIT_LIBS
138 AM_PATH_CPPUNIT([1.9.14],[],
139                 [AC_MSG_ERROR([GNU Radio requires cppunit.  Stop])])
140
141 CPPUNIT_INCLUDES=$CPPUNIT_CFLAGS
142 AC_SUBST(CPPUNIT_INCLUDES)
143
144 dnl Define where to find boost includes
145 dnl defines BOOST_CFLAGS
146 GR_REQUIRE_BOOST_INCLUDES
147
148 DEFINES=""
149 AC_SUBST(DEFINES)
150
151 dnl Component specific configuration
152 dnl The order of the GR_ macros determines the order of compilation
153 AC_ARG_ENABLE(
154     [all-components],
155     [  --enable-all-components Build all components or stop on failed dependencies]
156 )
157
158 build_dirs="config"
159 GRC_GNURADIO_CORE
160 GRC_GNURADIO_EXAMPLES
161 GRC_USRP
162 GRC_GR_USRP                     dnl this must come after GRC_USRP
163 GRC_GR_AUDIO_ALSA
164 GRC_GR_AUDIO_JACK
165 GRC_GR_AUDIO_OSS
166 GRC_GR_AUDIO_OSX
167 GRC_GR_AUDIO_PORTAUDIO
168 GRC_GR_AUDIO_WINDOWS
169 GRC_GR_ATSC
170 GRC_GR_COMEDI
171 GRC_GR_ERROR_CORRECTING_CODES
172 GRC_GR_GSM_FR_VOCODER
173 GRC_GR_RADAR
174 GRC_GR_RADIO_ASTRONOMY
175 GRC_GR_TRELLIS
176 GRC_GR_VIDEO_SDL
177 GRC_GR_WXGUI
178 GRC_PMT
179 GRC_MBLOCK                      dnl this must come after GRC_PMT
180 GRC_EZDOP               
181 GRC_GR_EZDOP                    dnl this must come after GRC_EZDOP
182
183 # Each component is now either to be built, was skipped, or failed dependencies
184 AC_SUBST([build_dirs], [$build_dirs])
185 AC_SUBST([skipped_dirs], [$skipped_dirs])
186  
187 AC_CONFIG_FILES([\
188     Makefile \
189     config/Makefile
190 ])
191
192 AC_OUTPUT
193
194 echo
195 echo "*********************************************************************"
196 echo The following GNU Radio components have been successfully configured:
197 echo 
198 for dir in $build_dirs
199 do
200     echo $dir
201 done
202 echo
203 echo You my now run the 'make' command to build these components.
204 echo
205 if test "$skipped_dirs" != ""; then
206     echo "*********************************************************************"
207     echo The following components were skipped either because you asked not
208     echo to build them or they didn\'t pass configuration checks:
209     echo
210     for dir in $skipped_dirs
211     do
212         echo $dir
213     done
214     echo
215     echo These components will not be built.
216     echo
217 fi