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