1
2dnl Process this file with autoconf to produce a configure script
3
4AC_INIT(src/unit.cc)
5AM_INIT_AUTOMAKE(epos, 2.5.37)
6AC_PREFIX_DEFAULT(/usr/local)
7
8CCC="g++ c++ cc++ gcc cc"
9AC_PROG_CC
10AC_PROG_CXX
11if test $GXX = yes; then
12	if $CXX -v 2>&1 | grep -q egcs
13		then AM_CXXFLAGS="-Wall -Wunused -pipe -gstabs+ -fdefer-pop -O"
14		else AM_CXXFLAGS="-Wall -Wunused -gstabs+ -O"
15	fi
16	else AM_CXXFLAGS=-O
17fi
18
19AC_SUBST(LIBTOOL_DEPS)
20AC_SUBST(CONFIGURED_CXXFLAGS)
21AC_SUBST(AM_CXXFLAGS)
22AC_PROG_MAKE_SET
23AC_PROG_LIBTOOL
24
25AC_ARG_WITH(dmalloc, AC_HELP_STRING([--with-dmalloc], [dmalloc debugging library (developers only)]),
26	if test $withval = yes; then
27		AM_CXXFLAGS="${AM_CXXFLAGS} -DWANT_DMALLOC"
28		LIBS="$LIBS -ldmalloc -L/usr/local/lib"
29	fi
30)
31dnl AC_ARG_WITH(regex, --with-regex       regular expression substitution, , )
32AC_ARG_ENABLE(charsets, AC_HELP_STRING([--enable-charsets], [allow automatic conversions between character sets]),
33	if test x$enableval = xno; then
34		AM_CXXFLAGS="${AM_CXXFLAGS} -DFORGET_CHARSETS"
35	fi,
36)
37AC_ARG_ENABLE(portaudio, AC_HELP_STRING([--enable-portaudio], [alternative sound output method]),
38	[case "x$enableval" in
39		xno)
40			EXTRA_PORTAUDIO_DEFS="-DFORGET_PORTAUDIO"
41			EXTRA_PORTAUDIO_LIBS=""
42			;;
43		xyes)
44			EXTRA_PORTAUDIO_DEFS=""
45			EXTRA_PORTAUDIO_LIBS="-lportaudio -lpablio -L../libs/portaudio/lib -lpthread"
46			;;
47		*)	AC_MSG_ERROR(bad value $enableval for --enable-portaudio) ;;
48	esac],
49	[EXTRA_PORTAUDIO_LIBS=""
50	 EXTRA_PORTAUDIO_DEFS="-DFORGET_PORTAUDIO"]
51)
52AM_CONDITIONAL(PORTAUDIO, test "${EXTRA_PORTAUDIO_DEFS}" = "")
53
54AC_LANG_CPLUSPLUS
55
56AC_CHECK_PROGS(LNK, ld wlink, linker)
57AC_CHECK_LIB(stdc++, main)
58AC_SEARCH_LIBS(regcomp, c rx regex System, EXTRA_REGEX_OBJ="", EXTRA_REGEX_OBJ="../libs/regex/rx.$(OBJEXT)")
59AC_SUBST([EXTRA_REGEX_OBJ])
60AC_SUBST([EXTRA_PORTAUDIO_LIBS])
61AC_SUBST([EXTRA_PORTAUDIO_DEFS])
62AC_CHECK_LIB(socket, main)
63AC_CHECK_LIB(lnsl, main)
64AC_LANG_CPLUSPLUS
65AC_PROG_INSTALL
66AC_PROG_YACC
67AM_PROG_LEX
68AC_STDC_HEADERS
69AC_HAVE_HEADERS(strings.h)
70AC_HAVE_HEADERS(string.h)
71AC_HAVE_HEADERS(stdint.h)
72AC_HAVE_HEADERS(io.h)
73AC_HAVE_HEADERS(process.h)
74AC_HAVE_HEADERS(rx.h)
75AC_HAVE_HEADERS(regex.h)
76AC_HAVE_HEADERS(errno.h)
77AC_HAVE_HEADERS(wait.h)
78AC_HAVE_HEADERS(unistd.h)
79AC_HAVE_HEADERS(unix.h)
80AC_HAVE_HEADERS(signal.h)
81AC_HAVE_HEADERS(syslog.h)
82AC_HAVE_HEADERS(time.h)
83AC_HAVE_HEADERS(sys/soundcard.h)
84AC_HAVE_HEADERS(sys/audio.h)
85AC_HAVE_HEADERS(sys/stat.h)
86AC_HAVE_HEADERS(sys/ioctl.h)
87AC_HAVE_HEADERS(sys/socket.h)
88AC_HAVE_HEADERS(sys/select.h)
89AC_HAVE_HEADERS(sys/time.h)
90AC_HAVE_HEADERS(sys/types.h)
91AC_HAVE_HEADERS(sys/termios.h)
92AC_HAVE_HEADERS(netdb.h)
93AC_HAVE_HEADERS(netinet/in.h)
94AC_HAVE_HEADERS(linux/kd.h)
95AC_HAVE_HEADERS(sys/kernel.h)
96AC_HAVE_HEADERS(sys/name.h)
97AC_HAVE_HEADERS(fcntl.h)
98AC_HAVE_HEADERS(direct.h)
99AC_HAVE_FUNCS(strerror vsnprintf strdup fork getegid strcasecmp stricmp getcwd gethostname gettimeofday qnx_name_attach abort kill pipe _pipe)
100
101AC_CACHE_CHECK([for glibc regex error codes],
102   epos_cv_symb_regeend,
103   AC_TRY_COMPILE(
104	#include <sys/types.h>
105	#ifdef HAVE_RX_H
106	#include <rx.h>
107	#else
108	#ifdef HAVE_REGEX_H
109	#include <regex.h>
110	#else
111	#include "rx.h"
112	#endif
113	#endif
114	,
115	int result = REG_EEND;
116	int result2 = REG_ESIZE;
117	return 0;,
118	epos_cv_symb_regeend=yes,
119	epos_cv_symb_regeend=no)
120)
121if test "$epos_cv_symb_regeend" = yes; then
122   AC_DEFINE([HAVE_REG_EEND], [], [ Define if your regex library defines the REG_EEND and REG_ESIZE error codes ])
123fi
124
125AC_CACHE_CHECK([for regmatch_t.rm_so],
126   epos_cv_struct_rm_so,
127   AC_TRY_COMPILE(
128	#include <sys/types.h>
129	#ifdef HAVE_RX_H
130	#include <rx.h>
131	#else
132	#ifdef HAVE_REGEX_H
133	#include <regex.h>
134	#else
135	#include "rx.h"
136	#endif
137	#endif
138	,
139	regmatch_t rt;
140	rt.rm_so;
141	return 0;,
142	epos_cv_struct_rm_so=yes,
143	epos_cv_struct_rm_so=no)
144)
145if test "$epos_cv_struct_rm_so" = yes; then
146   AC_DEFINE([HAVE_RM_SO], [], [ Define if your regex library defines the REG_EEND and REG_ESIZE error codes ])
147fi
148
149
150AC_CACHE_CHECK([for terminate],
151   epos_cv_fn_terminate,
152   AC_TRY_COMPILE(
153	[ #include <stdlib.h> ],
154	[ throw new int; exit(1); terminate() ] ,
155	[ epos_cv_fn_terminate=yes ],
156	[ epos_cv_fn_terminate=no ],
157	[ epos_cv_fn_terminate=yes ])
158)
159if test "$epos_cv_fn_terminate" = yes; then
160   AC_DEFINE([HAVE_TERMINATE], [], [ Define if you have the built-in terminate function. ])
161fi
162
163AC_CACHE_CHECK([for explicit template instatiations],
164   epos_cv_c_templ_inst,
165   AC_TRY_COMPILE(
166	[ template <class any_type> class some_type{}; template class some_type<int>; ]	,
167	[],
168	[ epos_cv_c_templ_inst=yes ],
169	[ epos_cv_c_templ_inst=no ])
170)
171if test "$epos_cv_c_templ_inst" = yes; then
172   AC_DEFINE([HAVE_TEMPL_INST], [], [ Define if your compiler understands explicit class template instantiations
173   as in template class templ_type<param_type>; ]
174)
175fi
176
177AC_CACHE_CHECK([for socklen_t],
178   epos_cv_type_socklen,
179   AC_TRY_COMPILE(
180	#ifdef HAVE_SYS_SOCKET_H
181	#include <sys/socket.h>
182	#endif
183	#include <sys/types.h>
184	socklen_t x;,
185	,
186	epos_cv_type_socklen=yes,
187	epos_cv_type_socklen=no)
188)
189if test "$epos_cv_type_socklen" = yes; then
190   AC_DEFINE([HAVE_SOCKLEN_T], [], [ Define if you have socklen_t in sys/socket.h or sys/types.h. ])
191fi
192
193broken_enum_bitfields_test='\
194	#include <stdlib.h>	\
195	enum t { a, b, c };	\
196	struct s		\
197	{			\
198		t m : 2;	\
199		t n : 2;	\
200		t o : 2;	\
201	};			\
202	s arr[[2]] = {{a, b, c},{c, c, c}};\
203	int main()		\
204	{			\
205		exit (arr[[1]].n != 2);	\
206		return 0;       \
207	}\
208	'
209
210AC_CACHE_CHECK([for broken enum bitfields],
211   epos_cv_c_broken_enum_bitfields,
212   AC_TRY_RUN(
213	$broken_enum_bitfields_test,
214	epos_cv_c_broken_enum_bitfields=no,
215	epos_cv_c_broken_enum_bitfields=yes,
216	epos_cv_c_broken_enum_bitfields=yes)
217)
218if test "$epos_cv_c_broken_enum_bitfields" = yes; then
219   AC_DEFINE([BROKEN_ENUM_BITFIELDS], [], [ Define if your compiler incorrectly treats enum bit fields as signed ])
220fi
221
222EPOS_CXX_OPTION(mafwks,
223	[mac audio frameworks],
224	["-framework CoreAudio -framework AudioToolbox"])
225CONFIGURED_CXXFLAGS="$CONFIGURED_CXXFLAGS $mafwks"
226
227
228AM_CONFIG_HEADER(config.h)
229#AC_CONFIG_SUBDIRS(libs/portaudio)
230AC_OUTPUT(Makefile src/Makefile src/nnet/Makefile src/tests/Makefile \
231	libs/Makefile libs/regex/Makefile libs/portaudio/Makefile \
232	cfg/Makefile arch/Makefile doc/Makefile)
233
234