* sdcc/sim/ucsim/s51.src/glob.cc: Minor fix.
[fw/sdcc] / sim / ucsim / configure.in
1 #!/bin/sh
2
3 AC_INIT(.version)
4 AC_CONFIG_HEADER(ddconfig.h:ddconfig_in.h)
5
6 AC_PROG_AWK
7
8 AC_MSG_CHECKING(version of the package)
9 if test -f .version; then
10   VERSION=`cat .version`
11   AC_MSG_RESULT($VERSION)
12 else
13   VERSION="0.0.0"
14   AC_MSG_RESULT(unknown using 0.0.0)
15 fi
16 VERSIONHI=`echo $VERSION|$AWK 'BEGIN {FS="."} {print $1}'`
17 VERSIONLO=`echo $VERSION|$AWK 'BEGIN {FS="."} {print $2}'`
18 VERSIONP=`echo $VERSION|$AWK 'BEGIN {FS="."} {print $3}'`
19 AC_SUBST(VERSION)
20 AC_SUBST(VERSIONHI)
21 AC_SUBST(VERSIONLO)
22 AC_SUBST(VERSIONP)
23 AC_DEFINE_UNQUOTED(VERSIONSTR, "${VERSION}")
24 AC_DEFINE_UNQUOTED(VERSIONHI, $VERSIONHI)
25 AC_DEFINE_UNQUOTED(VERSIONLO, $VERSIONLO)
26 AC_DEFINE_UNQUOTED(VERSIONP, $VERSIONP)
27
28
29 # Required programs
30 #-------------------
31 AC_PROG_CXX
32 AC_PROG_CXXCPP
33 AC_PROG_INSTALL
34 AC_PROG_RANLIB
35 AC_LANG_CPLUSPLUS
36
37 AC_CHECK_PROG(STRIP, strip, strip, :)
38
39 # Checking for header files.
40 # ===========================================================================
41
42 if test -d /stuff/include; then
43   CPPFLAGS="$CPPFLAGS -I/stuff/include"
44 fi
45
46 AC_HEADER_STDC
47 AC_CHECK_HEADERS(getopt.h)
48 AC_CHECK_HEADERS(unistd.h)
49 AC_CHECK_HEADER(sys/socket.h,
50     AC_DEFINE(SOCKET_AVAIL)
51     AC_DEFINE(HAVE_SYS_SOCKET_H)
52     AC_EGREP_HEADER(socklen_t,
53                     sys/socket.h,
54                     AC_DEFINE_UNQUOTED(SOCKLEN_T, socklen_t),
55                     AC_DEFINE_UNQUOTED(SOCKLEN_T, uint))
56 )
57 AC_CHECK_HEADER(dlfcn.h)
58 AC_HEADER_DIRENT
59
60 # This must be after CXXCPP
61
62 AC_CACHE_CHECK(which header file defines FD_ macros, ucsim_cv_fd,
63 [ucsim_cv_fd="unknown"
64 AC_EGREP_CPP(yes, [
65 #include <sys/time.h>
66 #ifdef FD_ZERO
67 yes
68 #endif], ucsim_cv_fd="<sys/time.h>")
69 AC_EGREP_CPP(yes, [
70 #include <sys/types.h>
71 #ifdef FD_ZERO
72 yes
73 #endif], ucsim_cv_fd="<sys/types.h>")
74 AC_EGREP_CPP(yes, [
75 #include <sys/select.h>
76 #ifdef FD_ZERO
77 yes
78 #endif], ucsim_cv_fd="<sys/types.h>")])
79
80 AC_DEFINE(FD_HEADER_OK, 0)
81 if echo $ucsim_cv_fd|grep time >/dev/null 2>&1; then
82 AC_DEFINE(FD_NEED_TIME_H, 1)
83 AC_DEFINE(FD_HEADER_OK, 1)
84 else
85 AC_DEFINE(FD_NEED_TIME_H, 0)
86 fi
87 if echo $ucsim_cv_fd|grep types >/dev/null 2>&1; then
88 AC_DEFINE(FD_NEED_TYPES_H, 1)
89 AC_DEFINE(FD_HEADER_OK, 1)
90 else
91 AC_DEFINE(FD_NEED_TYPES_H, 0)
92 fi
93 if echo $ucsim_cv_fd|grep select >/dev/null 2>&1; then
94 AC_DEFINE(FD_NEED_SELECT_H, 1)
95 AC_DEFINE(FD_HEADER_OK, 1)
96 else
97 AC_DEFINE(FD_NEED_SELECT_H, 0)
98 fi
99
100 AC_DEFINE_UNQUOTED(HEADER_FD, ${ucsim_cv_fd})
101
102
103 # Checking for functions/libs
104 # ===========================================================================
105 AC_CHECK_LIB(socket,socket)
106 AC_CHECK_LIB(nsl,xdr_short)
107 AC_CHECK_LIB(dl,dlopen,
108 dl_ok="yes"
109 DL="-ldl",
110 dl_ok="no"
111 DL="")
112 AC_SUBST(dl_ok)
113 AC_SUBST(DL)
114 AC_CHECK_LIB(panel,panel_above,
115 panel_ok="yes"
116 curses_ok="yes"
117 CURSES_LIBS="-lpanel -lcurses"
118 ,
119 panel_ok="no"
120 AC_CHECK_LIB(curses,nl,
121 curses_ok="yes"
122 CURSES_LIBS="-lcurses"
123 ,
124 ncurses_ok="no")
125 ,
126 -lcurses)
127 AC_SUBST(panel_ok)
128 AC_SUBST(curses_ok)
129 AC_SUBST(CURSES_LIBS)
130
131 AC_FUNC_VPRINTF
132 AC_CHECK_FUNCS(vsnprintf vasprintf)
133 AC_CHECK_FUNCS(strlen strcpy strcat strstr strcmp strerror strtok strdup)
134 AC_CHECK_FUNCS(strchr memcpy)
135 dnl AC_CHECK_FUNCS(getline)
136 dnl AC_CHECK_FUNCS(getdelim)
137 AC_CHECK_FUNCS(fgets)
138 AC_CHECK_FUNCS(yylex)
139
140 AC_CACHE_CHECK(whether scanf knows %a, ucsim_cv_scanf_a,
141 [echo "a b" >conftest.data
142 AC_TRY_RUN([
143 #include <stdio.h>
144 void main(void)
145 {
146   FILE *f;
147   char *a;
148   int  i;
149   if ((f= fopen("conftest.data", "r")) == NULL)
150     exit(1);
151   i= fscanf(f, " %a[a-z] ", &a);
152   fclose(f);
153   if (i == 0)
154     exit(2);
155   if (i == 1)
156     exit(0);
157   exit(3);
158 }],
159 ucsim_cv_scanf_a="yes",
160 ucsim_cv_scanf_a="no",
161 ucsim_cv_scanf_a="unknown")
162 ])
163 if test "$ucsim_cv_scanf_a" = "yes"; then
164   AC_DEFINE(SCANF_A)
165 fi
166
167 AC_CACHE_CHECK(whether getcwd is GNUish, ucsim_cv_getcwd,
168 [AC_TRY_RUN([
169 #include <unistd.h>
170 void main(void)
171 {
172   if ((getcwd(NULL, 0)) == NULL)
173     exit(1);
174   exit(0);
175 }],
176 ucsim_cv_getcwd="yes",
177 ucsim_cv_getcwd="no",
178 ucsim_cv_getcwd="unknown")
179 ])
180 if test "$ucsim_cv_getcwd" = "yes"; then
181   AC_DEFINE(GNU_GETCWD)
182 fi
183
184 AC_DEFUN(ucsim_ACCEPT_LENGTH_T,
185  [AC_CACHE_CHECK([for type of length pointer parameter of accept],
186    ucsim_cv_accept_length_type,
187    [ac_save_CPPFLAGS="$CPPFLAGS"
188     ucsim_cv_accept_length_type=no
189     for ac_val in int size_t socklen_t; do
190       CPPFLAGS="$ac_save_CPPFLAGS -DACCEPT_SOCKLEN_T=$ac_val"
191       AC_TRY_COMPILE([#include <sys/types.h>
192 #include <sys/socket.h>],
193         [struct sockaddr a; $ac_val len; accept (0, &a, &len);],
194         [ucsim_cv_accept_length_type=$ac_val; break])
195     done
196     CPPFLAGS="$ac_save_CPPFLAGS"])
197
198   if test $ucsim_cv_accept_length_type != no; then
199     AC_DEFINE_UNQUOTED(ACCEPT_SOCKLEN_T, $ucsim_cv_accept_length_type,
200       [Define to be the type of length parameter of accept (without the \*').])
201   fi
202  ]
203 )
204 #'
205
206 ucsim_ACCEPT_LENGTH_T
207
208 # Macro definitions
209 ###################
210
211 # DD_COPT macro checks if the compiler specified as the 1st parameter
212 # supports option specified as the 2nd parameter
213 # For example: DD_COPT(CXX, fPIC)
214
215 AC_DEFUN(DD_COPT, [
216 AC_CACHE_CHECK(whether $$1 accepts -$2,ucsim_cv_$1$2,
217 cat >_test_.c <<EOF
218 #include <stdio.h>
219 void main(void) {}
220 EOF
221 $$1 -v -$2 -c _test_.c 1>&5 2>&5
222 if test "$?" = "0"; then
223   ucsim_cv_$1$2="yes"
224 else
225   ucsim_cv_$1$2="no"
226 fi
227 rm -f _test_.* a.out)
228 ])
229
230
231 # Checking characteristics of compilers and other programs
232 # --------------------------------------------------------
233
234 # Cross compiling overrides
235 if test "$CC" = "i586-mingw32msvc-gcc"; then
236   ac_cv_c_bigendian=no
237   ac_cv_sizeof_char=1
238   ac_cv_sizeof_short=2
239   ac_cv_sizeof_int=4 
240   ac_cv_sizeof_long=4
241   ac_cv_sizeof_long_long=4
242 fi
243
244 AC_C_BIGENDIAN
245 AC_CACHE_CHECK(whether preprocessor accepts -MM or -M,ucsim_cv_MM,
246 echo "#include <stdio.h>" >_test_.c
247 echo "" >>_test_.c
248 $CXXCPP -v -MM _test_.c 1>&5 2>&5
249 if test "$?" = "0"; then
250   ucsim_cv_MM="-MM"
251 else
252   ucsim_cv_MM="-M"
253 fi
254 rm -f _test_.*)
255 M_OR_MM=$ucsim_cv_MM
256 AC_SUBST(M_OR_MM)
257
258 # This is the first time when CFLAGS are set/modified!!
259
260 DD_COPT(CXX, ggdb)
261 if test "$ucsim_cv_CXXggdb" = "yes"; then
262     if test "$CXXFLAGS"x = x ;then
263         CXXFLAGS="-ggdb -O"
264     else
265         CXXFLAGS="$CXXFLAGS -ggdb"
266     fi
267 fi
268
269 DD_COPT(CXX, pipe)
270 if test "$ucsim_cv_CXXpipe" = "yes"; then
271   CXXFLAGS="$CXXFLAGS -pipe"
272 fi
273
274 PICOPT=""
275 SHAREDLIB="no"
276 DD_COPT(CXX, fPIC)
277 if test "$ucsim_cv_CXXfPIC" = "yes"; then
278     PICOPT="-fPIC"
279 else
280     DD_COPT(CXX, fpic)
281     if test "$ucsim_cv_CXXfpic" = "yes"; then
282         PICOPT="-fpic"
283     fi
284 fi
285 if test "$PICOPT"x != "x"; then
286     SHAREDLIB="yes"
287 fi
288 # If this is Cygwin neither use Position Independant Code
289 # nor build .so
290 # Quick + dirty by Bernhard
291 if $CXX -v 2>&1 | grep -i cygwin 1>&5 2>&5; then
292     PICOPT=""
293     SHAREDLIB="no"
294 fi
295 AC_SUBST(SHAREDLIB)
296 AC_SUBST(PICOPT)
297
298
299 # Checks for typedefs, structures, and compiler characteristics.
300 # ===========================================================================
301
302
303 AC_TYPE_SIGNAL
304 AC_CHECK_SIZEOF(char)
305 AC_CHECK_SIZEOF(short)
306 AC_CHECK_SIZEOF(int)
307 AC_CHECK_SIZEOF(long)
308 AC_CHECK_SIZEOF(long long)
309
310 type_name()
311 {
312     if expr "$ac_cv_sizeof_char" '>=' "$1" >/dev/null; then
313         echo "char"
314         exit
315     fi
316     if expr "$ac_cv_sizeof_short" '>=' "$1" >/dev/null; then
317         echo "short"
318         exit
319     fi
320     if expr "$ac_cv_sizeof_int" '>=' "$1" >/dev/null; then
321         echo "int"
322         exit
323     fi
324     if expr "$ac_cv_sizeof_long" '>=' "$1" >/dev/null; then
325         echo "long"
326         exit
327     fi
328     if expr "$ac_cv_sizeof_long_long" '>=' "$1" >/dev/null; then
329         echo "long long"
330         exit
331     fi
332     echo "long long"
333 }
334
335 AC_MSG_CHECKING(type name for byte)
336 TYPE_BYTE=`type_name 1`
337 AC_MSG_RESULT($TYPE_BYTE)
338 AC_MSG_CHECKING(type name for word)
339 TYPE_WORD=`type_name 2`
340 AC_MSG_RESULT($TYPE_WORD)
341 AC_MSG_CHECKING(type name for dword)
342 TYPE_DWORD=`type_name 4`
343 AC_MSG_RESULT($TYPE_DWORD)
344 AC_DEFINE_UNQUOTED(TYPE_BYTE, $TYPE_BYTE)
345 AC_DEFINE_UNQUOTED(TYPE_WORD, $TYPE_WORD)
346 AC_DEFINE_UNQUOTED(TYPE_DWORD, $TYPE_DWORD)
347
348 # Generating output files
349 # ===========================================================================
350
351 AC_OUTPUT(main.mk:main_in.mk
352 sim.src/Makefile
353 cmd.src/Makefile
354 s51.src/Makefile
355 avr.src/Makefile
356 z80.src/Makefile
357 gui.src/Makefile
358 gui.src/serio.src/Makefile
359 doc/Makefile
360 )
361
362 #gui.src/portmon.src/Makefile
363
364
365 # End of configure/configure.in