ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/SheepShaver/src/Unix/configure.ac
Revision: 1.47
Committed: 2006-01-24T23:47:09Z (18 years, 5 months ago) by gbeauche
Branch: MAIN
Changes since 1.46: +24 -0 lines
Log Message:
Use FIONBIO only on pretty ancient systems.

File Contents

# User Rev Content
1 gbeauche 1.1 dnl Process this file with autoconf to produce a configure script.
2     dnl Written in 2002 by Christian Bauer
3    
4 gbeauche 1.40 AC_INIT([SheepShaver], 2.3, [Christian.Bauer@uni-mainz.de], SheepShaver)
5 gbeauche 1.1 AC_CONFIG_SRCDIR(main_unix.cpp)
6     AC_PREREQ(2.52)
7     AC_CONFIG_HEADER(config.h)
8    
9     dnl Canonical system information.
10     AC_CANONICAL_HOST
11     AC_CANONICAL_TARGET
12    
13 gbeauche 1.2 dnl Some systems do not put corefiles in the currect directory, avoid saving
14     dnl cores for the configure tests since some are intended to dump core.
15     ulimit -c 0
16    
17 gbeauche 1.33 dnl Invite Cygwin users to build within the Windows/ directory
18     case $target_os in
19     *cygwin* | *mingw32*)
20     AC_MSG_ERROR([You can only build the Windows version from its directory, Cygwin/X11 is not supported.])
21     ;;
22     esac
23    
24 gbeauche 1.1 dnl Options.
25     AC_ARG_ENABLE(jit, [ --enable-jit enable JIT compiler [default=yes]], [WANT_JIT=$enableval], [WANT_JIT=yes])
26     AC_ARG_ENABLE(ppc-emulator, [ --enable-ppc-emulator use the selected PowerPC emulator [default=auto]], [WANT_EMULATED_PPC=$enableval], [WANT_EMULATED_PPC=auto])
27 gbeauche 1.21 AC_ARG_ENABLE(fbdev-dga, [ --enable-fbdev-dga use direct frame buffer access via /dev/fb0 [default=yes]], [WANT_FBDEV_DGA=$enableval], [WANT_FBDEV_DGA=yes])
28 gbeauche 1.1 AC_ARG_ENABLE(xf86-dga, [ --enable-xf86-dga use the XFree86 DGA extension [default=yes]], [WANT_XF86_DGA=$enableval], [WANT_XF86_DGA=yes])
29 gbeauche 1.22 AC_ARG_ENABLE(xf86-vidmode, [ --enable-xf86-vidmode use the XFree86 VidMode extension [default=yes]], [WANT_XF86_VIDMODE=$enableval], [WANT_XF86_VIDMODE=yes])
30 gbeauche 1.1 AC_ARG_ENABLE(vosf, [ --enable-vosf enable video on SEGV signals [default=yes]], [WANT_VOSF=$enableval], [WANT_VOSF=yes])
31     AC_ARG_WITH(esd, [ --with-esd support ESD for sound under Linux/FreeBSD [default=yes]], [WANT_ESD=$withval], [WANT_ESD=yes])
32 gbeauche 1.20 AC_ARG_WITH(gtk, [ --with-gtk use GTK user interface [default=yes]],
33     [case "$withval" in
34     gtk1) WANT_GTK="gtk";;
35     gtk|gtk2) WANT_GTK="$withval";;
36     yes) WANT_GTK="gtk2 gtk";;
37     *) WANT_GTK="no";;
38     esac],
39     [WANT_GTK="gtk2 gtk"])
40 gbeauche 1.1 AC_ARG_WITH(mon, [ --with-mon use mon as debugger [default=yes]], [WANT_MON=$withval], [WANT_MON=yes])
41     AC_ARG_WITH(dgcc, [ --with-dgcc=COMPILER use C++ COMPILER to compile synthetic opcodes], [DYNGEN_CC=$withval])
42    
43 gbeauche 1.8 dnl Addressing mode
44     AC_ARG_ENABLE(addressing,
45     [ --enable-addressing=AM set the addressing mode to use [default=real]],
46     [case "$enableval" in
47     real) WANT_ADDRESSING_MODE="real";;
48     direct) WANT_ADDRESSING_MODE="direct";;
49 gbeauche 1.13 direct,0x*) WANT_ADDRESSING_MODE="direct"; NATMEM_OFFSET=`echo "$enableval" | sed -n '/direct,\(0[[xX]][[0-9A-Fa-f]]*\([[UuLl]]\{1,2\}\)\?\)$/s//\1/p'`;;
50 gbeauche 1.8 esac],
51     [WANT_ADDRESSING_MODE="real"]
52     )
53    
54 gbeauche 1.1 dnl SDL options.
55     AC_ARG_ENABLE(sdl-static, [ --enable-sdl-static use SDL static libraries for linking [default=no]], [WANT_SDL_STATIC=$enableval], [WANT_SDL_STATIC=no])
56     AC_ARG_ENABLE(sdl-video, [ --enable-sdl-video use SDL for video graphics [default=no]], [WANT_SDL_VIDEO=$enableval], [WANT_SDL_VIDEO=no])
57 gbeauche 1.7 AC_ARG_ENABLE(sdl-audio, [ --enable-sdl-audio use SDL for audio [default=no]], [WANT_SDL_AUDIO=$enableval], [WANT_SDL_AUDIO=no])
58 gbeauche 1.1
59     dnl Checks for programs.
60     AC_PROG_CC
61     AC_PROG_CPP
62     AC_PROG_CXX
63     AC_PROG_MAKE_SET
64     AC_PROG_INSTALL
65 gbeauche 1.3 AC_PROG_EGREP
66 gbeauche 1.16 AC_PATH_PROGS(FILE, [file false])
67     AC_PATH_PROG(PERL, [perl])
68 gbeauche 1.1
69     dnl Check for PowerPC target CPU.
70     HAVE_PPC=no
71     AC_MSG_CHECKING(for PowerPC target CPU)
72     AC_EGREP_CPP(yes,
73     [
74     #ifdef __powerpc__
75     yes
76     #endif
77     #ifdef __ppc__
78     yes
79     #endif
80     ], [AC_MSG_RESULT(yes); HAVE_PPC=yes], AC_MSG_RESULT(no))
81    
82     dnl We use native CPU if possible.
83     EMULATED_PPC=yes
84     case $WANT_EMULATED_PPC in
85     auto) [[ "x$HAVE_PPC" = "xyes" ]] && EMULATED_PPC=no;;
86     no) EMULATED_PPC=no;;
87     esac
88     if [[ "x$EMULATED_PPC" = "xyes" ]]; then
89     AC_DEFINE(EMULATED_PPC, 1, [Define if using a PowerPC CPU emulator.])
90     fi
91    
92     dnl We use mon if possible.
93     MONSRCS=
94     case "x$WANT_MON" in
95     x/* | x.*)
96     mon_srcdir=$WANT_MON
97     WANT_MON=yes
98     ;;
99     xyes)
100     mon_srcdir=../../../mon/src
101     ;;
102     esac
103     if [[ "x$WANT_MON" = "xyes" ]]; then
104     AC_MSG_CHECKING(for mon)
105     if grep mon_init $mon_srcdir/mon.h >/dev/null 2>/dev/null; then
106     AC_MSG_RESULT(yes)
107     AC_DEFINE(ENABLE_MON, 1, [Define if using "mon".])
108     MONSRCS="$mon_srcdir/mon.cpp $mon_srcdir/mon_6502.cpp $mon_srcdir/mon_z80.cpp $mon_srcdir/mon_cmd.cpp $mon_srcdir/mon_lowmem.cpp $mon_srcdir/mon_disass.cpp $mon_srcdir/mon_ppc.cpp $mon_srcdir/disass/floatformat.c $mon_srcdir/disass/i386-dis.c $mon_srcdir/disass/m68k-dis.c $mon_srcdir/disass/m68k-opc.c"
109     CXXFLAGS="$CXXFLAGS -I$mon_srcdir -I$mon_srcdir/disass"
110     AC_CHECK_LIB(ncurses, tgetent, ,
111     AC_CHECK_LIB(termcap, tgetent, ,
112     AC_CHECK_LIB(termlib, tgetent, ,
113     AC_CHECK_LIB(terminfo, tgetent, ,
114     AC_CHECK_LIB(Hcurses, tgetent, ,
115     AC_CHECK_LIB(curses, tgetent))))))
116     AC_CHECK_LIB(readline, readline)
117     AC_CHECK_HEADERS(readline.h history.h readline/readline.h readline/history.h)
118     else
119     AC_MSG_RESULT(no)
120     AC_MSG_WARN([Could not find mon, ignoring --with-mon.])
121     WANT_MON=no
122     fi
123     fi
124 gbeauche 1.11 AC_SUBST(MONSRCS)
125 gbeauche 1.1
126     dnl Checks for libraries.
127     AC_CHECK_LIB(posix4, sem_init)
128 gbeauche 1.42 AC_CHECK_LIB(m, cos)
129 gbeauche 1.1
130     dnl Do we need SDL?
131     WANT_SDL=no
132     if [[ "x$WANT_SDL_VIDEO" = "xyes" ]]; then
133     WANT_SDL=yes
134     WANT_XF86_DGA=no
135     WANT_XF86_VIDMODE=no
136     WANT_FBDEV_DGA=no
137 gbeauche 1.7 SDL_SUPPORT="$SDL_SUPPORT video"
138     fi
139     if [[ "x$WANT_SDL_AUDIO" = "xyes" ]]; then
140     WANT_SDL=yes
141     SDL_SUPPORT="$SDL_SUPPORT audio"
142 gbeauche 1.1 fi
143     if [[ "x$WANT_SDL" = "xyes" ]]; then
144     AC_PATH_PROG(sdl_config, "sdl-config")
145     if [[ -n "$sdl_config" ]]; then
146 gbeauche 1.33 sdl_cflags=`$sdl_config --cflags`
147     if [[ "x$WANT_SDL_STATIC" = "xyes" ]]; then
148     sdl_libs=`$sdl_config --static-libs`
149     else
150     sdl_libs=`$sdl_config --libs`
151     fi
152 gbeauche 1.1 CFLAGS="$CFLAGS $sdl_cflags"
153     CXXFLAGS="$CXXFLAGS $sdl_cflags"
154     LIBS="$LIBS $sdl_libs"
155     else
156     WANT_SDL=no
157 gbeauche 1.15 WANT_SDL_VIDEO=no
158     WANT_SDL_AUDIO=no
159 gbeauche 1.1 fi
160 gbeauche 1.7 SDL_SUPPORT=`echo "$SDL_SUPPORT" | sed -e "s/^ //"`
161     else
162     SDL_SUPPORT="none"
163 gbeauche 1.1 fi
164    
165     dnl We need X11, if not using SDL.
166 gbeauche 1.15 if [[ "x$WANT_SDL_VIDEO" != "xyes" ]]; then
167 gbeauche 1.1 AC_PATH_XTRA
168     if [[ "x$no_x" = "xyes" ]]; then
169     AC_MSG_ERROR([You need X11 to run SheepShaver.])
170     fi
171     CFLAGS="$CFLAGS $X_CFLAGS"
172     CXXFLAGS="$CXXFLAGS $X_CFLAGS"
173     LIBS="$LIBS $X_PRE_LIBS $X_LIBS -lX11 -lXext $X_EXTRA_LIBS"
174     fi
175    
176     dnl We need pthreads on non-PowerPC systems. Try libpthread first, then libc_r (FreeBSD), then PTL.
177     HAVE_PTHREADS=yes
178     case $EMULATED_PPC:$target_os in
179 gbeauche 1.17 no:linux*|no:netbsd*)
180 gbeauche 1.1 dnl We do have our own pthread_cancel() implementation
181     AC_DEFINE(HAVE_PTHREAD_CANCEL, 1, [Define if you have the pthread_cancel function.])
182     ;;
183     *:*)
184     AC_CHECK_LIB(pthread, pthread_create, , [
185     AC_CHECK_LIB(c_r, pthread_create, , [
186     AC_CHECK_LIB(PTL, pthread_create, , [
187 gbeauche 1.29 dnl XXX remove when no pthreads case is merged
188     AC_MSG_ERROR([You need pthreads to run SheepShaver.])
189     HAVE_PTHREADS=no
190 gbeauche 1.1 ])
191     ])
192     ])
193     AC_CHECK_FUNCS(pthread_cancel)
194 gbeauche 1.34 AC_CHECK_FUNCS(pthread_cond_init pthread_testcancel)
195 gbeauche 1.1 AC_CHECK_FUNCS(pthread_mutexattr_setprotocol)
196     AC_CHECK_FUNCS(pthread_mutexattr_settype)
197     AC_CHECK_FUNCS(pthread_mutexattr_setpshared)
198     dnl If POSIX.4 semaphores are not available, we emulate them with pthread mutexes.
199     SEMSRC=
200     AC_CHECK_FUNCS(sem_init, , [
201     if test "x$HAVE_PTHREADS" = "xyes"; then
202     SEMSRC=posix_sem.cpp
203     fi
204     ])
205     ;;
206     esac
207 gbeauche 1.29 if [[ "x$HAVE_PTHREADS" = "xyes" ]]; then
208     AC_DEFINE(HAVE_PTHREADS, 1, [Define if pthreads are available.])
209     fi
210 gbeauche 1.1
211 gbeauche 1.21 dnl We use FBDev DGA if possible.
212     if [[ "x$WANT_FBDEV_DGA" = "xyes" ]]; then
213     AC_CHECK_HEADER(linux/fb.h, [
214     AC_DEFINE(ENABLE_FBDEV_DGA, 1, [Define if using Linux fbdev extension.])
215     ], [
216     AC_MSG_WARN([Could not find Linux FBDev extension, ignoring --enable-fbdev-dga.])
217     WANT_FBDEV_DGA=no
218     ])
219     fi
220    
221 gbeauche 1.1 dnl We use XFree86 DGA if possible.
222     if [[ "x$WANT_XF86_DGA" = "xyes" ]]; then
223     AC_CHECK_LIB(Xxf86dga, XF86DGAQueryExtension, [
224     AC_DEFINE(ENABLE_XF86_DGA, 1, [Define if using XFree86 DGA extension.])
225     LIBS="$LIBS -lXxf86dga"
226     ], [
227     AC_MSG_WARN([Could not find XFree86 DGA extension, ignoring --enable-xf86-dga.])
228     WANT_XF86_DGA=no
229     ])
230     fi
231    
232     dnl We use XFree86 VidMode if possible.
233     if [[ "x$WANT_XF86_VIDMODE" = "xyes" ]]; then
234     AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension, [
235     AC_DEFINE(ENABLE_XF86_VIDMODE, 1, [Define if using XFree86 DGA extension.])
236     LIBS="$LIBS -lXxf86vm"
237     ], [
238     AC_MSG_WARN([Could not find XFree86 VidMode extension, ignoring --enable-xf86-vidmode.])
239     WANT_XF86_VIDMODE=no
240     ])
241     fi
242    
243     dnl We use GTK+ if possible.
244     UISRCS=../dummy/prefs_editor_dummy.cpp
245 gbeauche 1.20 case "x$WANT_GTK" in
246     xgtk2*)
247     AM_PATH_GTK_2_0(1.3.15, [
248     AC_DEFINE(ENABLE_GTK, 1, [Define if using GTK.])
249     CFLAGS="$CFLAGS $GTK_CFLAGS"
250     CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
251     LIBS="$LIBS $GTK_LIBS"
252     UISRCS=prefs_editor_gtk.cpp
253     WANT_GTK=gtk2
254     ], [
255     case "x${WANT_GTK}x" in
256     *gtkx)
257     AC_MSG_WARN([Could not find GTK+ 2.0, trying with GTK+ 1.2.])
258     WANT_GTK=gtk
259     ;;
260     *)
261     AC_MSG_WARN([Could not find GTK+, disabling user interface.])
262     WANT_GTK=no
263     ;;
264     esac
265     ])
266     ;;
267     esac
268     if [[ "x$WANT_GTK" = "xgtk" ]]; then
269 gbeauche 1.1 AM_PATH_GTK(1.2.0, [
270     AC_DEFINE(ENABLE_GTK, 1, [Define if using GTK.])
271     CFLAGS="$CFLAGS $GTK_CFLAGS"
272     CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
273     LIBS="$LIBS $GTK_LIBS"
274     UISRCS=prefs_editor_gtk.cpp
275     ], [
276     AC_MSG_WARN([Could not find GTK+, disabling user interface.])
277     WANT_GTK=no
278     ])
279     fi
280    
281     dnl We use ESD if possible.
282     if [[ "x$WANT_ESD" = "xyes" ]]; then
283     AM_PATH_ESD(0.2.8, [
284     AC_DEFINE(ENABLE_ESD, 1, [Define is using ESD.])
285     CFLAGS="$CFLAGS $ESD_CFLAGS"
286     CXXFLAGS="$CXXFLAGS $ESD_CFLAGS"
287     LIBS="$LIBS $ESD_LIBS"
288     ], [
289     AC_MSG_WARN([Could not find ESD, disabling ESD support.])
290     WANT_ESD=no
291     ])
292     fi
293    
294 gbeauche 1.2 dnl We use 64-bit file size support if possible.
295     AC_SYS_LARGEFILE
296    
297 gbeauche 1.1 dnl Checks for header files.
298     AC_HEADER_STDC
299     AC_HEADER_SYS_WAIT
300 gbeauche 1.31 AC_CHECK_HEADERS(malloc.h stdint.h)
301 gbeauche 1.1 AC_CHECK_HEADERS(mach/vm_map.h mach/mach_init.h sys/mman.h)
302 gbeauche 1.4 AC_CHECK_HEADERS(unistd.h fcntl.h byteswap.h dirent.h)
303 gbeauche 1.32 AC_CHECK_HEADERS(sys/socket.h sys/ioctl.h sys/filio.h sys/bitypes.h sys/wait.h)
304     AC_CHECK_HEADERS(sys/time.h sys/poll.h sys/select.h arpa/inet.h)
305     AC_CHECK_HEADERS(linux/if.h linux/if_tun.h net/if.h net/if_tun.h, [], [], [
306     #ifdef HAVE_SYS_TYPES_H
307     #include <sys/types.h>
308     #endif
309     #ifdef HAVE_SYS_SOCKET_H
310     #include <sys/socket.h>
311 gbeauche 1.1 #endif
312     ])
313 gbeauche 1.32 AC_CHECK_HEADERS(AvailabilityMacros.h)
314     AC_CHECK_HEADERS(IOKit/storage/IOBlockStorageDevice.h)
315 gbeauche 1.10 AC_CHECK_HEADERS(fenv.h)
316 gbeauche 1.1
317     dnl Checks for typedefs, structures, and compiler characteristics.
318     AC_C_BIGENDIAN
319     AC_C_CONST
320     AC_C_INLINE
321     AC_CHECK_SIZEOF(short, 2)
322     AC_CHECK_SIZEOF(int, 4)
323     AC_CHECK_SIZEOF(long, 4)
324     AC_CHECK_SIZEOF(long long, 8)
325     AC_CHECK_SIZEOF(float, 4)
326     AC_CHECK_SIZEOF(double, 8)
327     AC_CHECK_SIZEOF(void *, 4)
328     AC_TYPE_OFF_T
329     AC_CHECK_TYPE(loff_t, off_t)
330     AC_TYPE_SIZE_T
331     AC_TYPE_SIGNAL
332     AC_HEADER_TIME
333     AC_STRUCT_TM
334    
335 gbeauche 1.34 dnl Check whether sys/socket.h defines type socklen_t.
336     dnl (extracted from ac-archive/Miscellaneous)
337     AC_CACHE_CHECK([for socklen_t],
338     ac_cv_type_socklen_t, [
339     AC_TRY_COMPILE([
340     #include <sys/types.h>
341     #include <sys/socket.h>
342     ], [socklen_t len = 42; return 0;],
343     ac_cv_type_socklen_t=yes, ac_cv_type_socklen_t=no,
344     dnl When cross-compiling, do not assume anything.
345     ac_cv_type_socklen_t="guessing no"
346     )
347     ])
348     if [[ "x$ac_cv_type_socklen_t" != "xyes" ]]; then
349     AC_DEFINE(socklen_t, int, [Define to 'int' if <sys/types.h> doesn't define.])
350     fi
351    
352 gbeauche 1.1 dnl Check whether struct sigaction has sa_restorer member.
353     AC_CACHE_CHECK([whether struct sigaction has sa_restorer],
354     ac_cv_signal_sa_restorer, [
355     AC_TRY_COMPILE([
356     #include <signal.h>
357     ], [struct sigaction sa; sa.sa_restorer = 0;],
358     ac_cv_signal_sa_restorer=yes, ac_cv_signal_sa_restorer=no,
359     dnl When cross-compiling, do not assume anything.
360     ac_cv_signal_sa_restorer=no
361     )
362     ])
363     if [[ "x$ac_cv_signal_sa_restorer" = "xyes" ]]; then
364     AC_DEFINE(HAVE_SIGNAL_SA_RESTORER, 1, [Define if sa_restorer is available in struct sigaction.])
365     fi
366    
367     dnl Checks for library functions.
368 gbeauche 1.32 AC_CHECK_FUNCS(strdup strerror strlcpy cfmakeraw)
369 gbeauche 1.1 AC_CHECK_FUNCS(nanosleep)
370     AC_CHECK_FUNCS(sigaction signal)
371     AC_CHECK_FUNCS(mmap mprotect munmap)
372     AC_CHECK_FUNCS(vm_allocate vm_deallocate vm_protect)
373 gbeauche 1.26 AC_CHECK_FUNCS(exp2f log2f exp2 log2)
374     AC_CHECK_FUNCS(floorf roundf ceilf truncf floor round ceil trunc)
375 gbeauche 1.32 AC_CHECK_FUNCS(poll inet_aton)
376 gbeauche 1.1
377     dnl Darwin seems to define mach_task_self() instead of task_self().
378     AC_CHECK_FUNCS(mach_task_self task_self)
379    
380     dnl We need clock_gettime() for better performance but it may drag
381     dnl libpthread in, which we don't want for native ppc mode
382     case $EMULATED_PPC:$target_os in
383     no:linux*)
384     ;;
385     *:*)
386     AC_SEARCH_LIBS(clock_gettime, [rt posix4])
387 gbeauche 1.18 AC_CHECK_FUNCS(clock_gettime clock_nanosleep)
388 gbeauche 1.1 ;;
389     esac
390    
391 gbeauche 1.9 dnl Check for headers and functions related to pty support (sshpty.c)
392     dnl From openssh-3.2.2p1 configure.ac
393     AC_CHECK_HEADERS(strings.h login.h sys/bsdtty.h sys/stat.h util.h pty.h)
394     AC_CHECK_FUNCS(_getpty vhangup strlcpy)
395    
396     case "$host" in
397     *-*-hpux10.26)
398     disable_ptmx_check=yes
399     ;;
400     *-*-linux*)
401     no_dev_ptmx=1
402     ;;
403     mips-sony-bsd|mips-sony-newsos4)
404     AC_DEFINE(HAVE_NEWS4, 1, [Define if you are on NEWS-OS (additions from openssh-3.2.2p1, for sshpty.c).])
405     ;;
406     *-*-sco3.2v4*)
407     no_dev_ptmx=1
408     ;;
409     *-*-sco3.2v5*)
410     no_dev_ptmx=1
411     ;;
412     *-*-cygwin*)
413     no_dev_ptmx=1
414     ;;
415     esac
416    
417     if test -z "$no_dev_ptmx" ; then
418     if test "x$disable_ptmx_check" != "xyes" ; then
419     AC_CHECK_FILE([/dev/ptmx],
420     [
421     AC_DEFINE_UNQUOTED(HAVE_DEV_PTMX, 1, [Define if you have /dev/ptmx.])
422     have_dev_ptmx=1
423     ]
424     )
425     fi
426     fi
427     AC_CHECK_FILE([/dev/ptc],
428     [
429     AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC, 1, [Define if you have /dev/ptc.])
430     have_dev_ptc=1
431     ]
432     )
433     dnl (end of code from openssh-3.2.2p1 configure.ac)
434    
435 gbeauche 1.47 dnl Check for systems where POSIX-style non-blocking I/O (O_NONBLOCK)
436     dnl doesn't work or is unimplemented. On these systems (mostly older
437     dnl ones), use the old BSD-style FIONBIO approach instead. [tcl.m4]
438     AC_CACHE_CHECK([FIONBIO vs. O_NONBLOCK for non-blocking I/O],
439     ac_cv_nonblocking_io, [
440     case "$host" in
441     *-*-osf*)
442     ac_cv_nonblocking_io=FIONBIO
443     ;;
444     *-*-sunos4*)
445     ac_cv_nonblocking_io=FIONBIO
446     ;;
447     *-*-ultrix*)
448     ac_cv_nonblocking_io=FIONBIO
449     ;;
450     *)
451     ac_cv_nonblocking_io=O_NONBLOCK
452     ;;
453     esac
454     ])
455     if [[ "$ac_cv_nonblocking_io" = "FIONBIO" ]]; then
456     AC_DEFINE(USE_FIONBIO, 1, [Define if BSD-style non-blocking I/O is to be used])
457     fi
458    
459 gbeauche 1.1 dnl AC_CHECK_FRAMEWORK($1=NAME, $2=INCLUDES)
460     AC_DEFUN(AC_CHECK_FRAMEWORK, [
461     AS_VAR_PUSHDEF([ac_Framework], [ac_cv_framework_$1])dnl
462     AC_CACHE_CHECK([whether compiler supports framework $1],
463     ac_Framework, [
464     saved_LIBS="$LIBS"
465     LIBS="$LIBS -framework $1"
466     AC_TRY_LINK(
467 gbeauche 1.45 [$2], [],
468 gbeauche 1.1 [AS_VAR_SET(ac_Framework, yes)], [AS_VAR_SET(ac_Framework, no); LIBS="$saved_LIBS"]
469     )
470     ])
471     AS_IF([test AS_VAR_GET(ac_Framework) = yes],
472     [AC_DEFINE(AS_TR_CPP(HAVE_FRAMEWORK_$1), 1, [Define if framework $1 is available.])]
473     )
474     AS_VAR_POPDEF([ac_Framework])dnl
475     ])
476    
477     dnl Check for some MacOS X frameworks
478     AC_CHECK_FRAMEWORK(Carbon, [#include <Carbon/Carbon.h>])
479     AC_CHECK_FRAMEWORK(IOKit, [#include <IOKit/IOKitLib.h>])
480 gbeauche 1.37 AC_CHECK_FRAMEWORK(CoreFoundation, [#include <CoreFoundation/CoreFoundation.h>])
481 gbeauche 1.1
482     dnl Select system-dependant sources.
483     SERIALSRC=serial_unix.cpp
484     ETHERSRC=../dummy/ether_dummy.cpp
485     SCSISRC=../dummy/scsi_dummy.cpp
486     AUDIOSRC=../dummy/audio_dummy.cpp
487 gbeauche 1.6 EXTFSSRC=extfs_unix.cpp
488 gbeauche 1.1 EXTRASYSSRCS=
489     case "$target_os" in
490     linux*)
491 gbeauche 1.32 ETHERSRC=ether_unix.cpp
492 gbeauche 1.1 AUDIOSRC=audio_oss_esd.cpp
493     SCSISRC=Linux/scsi_linux.cpp
494     if [[ "x$EMULATED_PPC" = "xno" ]]; then
495 gbeauche 1.35 EXTRASYSSRCS="paranoia.cpp Linux/sheepthreads.c ppc_asm.S"
496 gbeauche 1.17 fi
497     ;;
498 gbeauche 1.32 freebsd*)
499     ETHERSRC=ether_unix.cpp
500     ;;
501 gbeauche 1.17 netbsd*)
502 gbeauche 1.32 ETHERSRC=ether_unix.cpp
503 gbeauche 1.17 if [[ "x$EMULATED_PPC" = "xno" ]]; then
504 gbeauche 1.35 EXTRASYSSRCS="paranoia.cpp NetBSD/sheepthreads.c ppc_asm.S"
505 gbeauche 1.1 fi
506     ;;
507     darwin*)
508 gbeauche 1.32 ETHERSRC=ether_unix.cpp
509 gbeauche 1.1 if [[ "x$EMULATED_PPC" = "xno" ]]; then
510 gbeauche 1.35 EXTRASYSSRCS="paranoia.cpp ppc_asm.S"
511 gbeauche 1.1 fi
512 gbeauche 1.37 if [[ "x$ac_cv_framework_IOKit" = "xyes" -a "x$ac_cv_framework_CoreFoundation" = "xyes" ]]; then
513 gbeauche 1.1 EXTRASYSSRCS="$EXTRASYSSRCS ../MacOSX/sys_darwin.cpp"
514     fi
515 gbeauche 1.6 if [[ "x$ac_cv_framework_Carbon" = "xyes" ]]; then
516     EXTFSSRC=../MacOSX/extfs_macosx.mm
517     fi
518 gbeauche 1.1 ;;
519 gbeauche 1.42 irix*)
520     ETHERSRC=ether_unix.cpp
521     AUDIOSRC=Irix/audio_irix.cpp
522     LIBS="$LIBS -laudio"
523     WANT_ESD=no
524 gbeauche 1.43
525     dnl Check if our compiler supports -IPA (MIPSPro)
526     HAVE_IPA=no
527     ocflags="$CFLAGS"
528     CFLAGS=`echo " $CFLAGS -IPA" | sed -e "s/ -g //g"`
529     AC_MSG_CHECKING(if "-IPA" works)
530     dnl Do a test compile of an empty function
531     AC_TRY_COMPILE([#if defined __GNUC__
532     # error GCC does not support IPA yet
533     #endif],, [AC_MSG_RESULT(yes); HAVE_IPA=yes], AC_MSG_RESULT(no))
534     CFLAGS="$ocflags"
535 gbeauche 1.42 ;;
536 gbeauche 1.1 esac
537    
538 gbeauche 1.32 dnl Is the slirp library supported?
539     if [[ "x$ETHERSRC" = "xether_unix.cpp" ]]; then
540     AC_DEFINE(HAVE_SLIRP, 1, [Define if slirp library is supported])
541     SLIRP_SRCS="\
542     ../slirp/bootp.c ../slirp/ip_output.c ../slirp/tcp_input.c \
543     ../slirp/cksum.c ../slirp/mbuf.c ../slirp/tcp_output.c \
544     ../slirp/debug.c ../slirp/misc.c ../slirp/tcp_subr.c \
545     ../slirp/if.c ../slirp/sbuf.c ../slirp/tcp_timer.c \
546     ../slirp/ip_icmp.c ../slirp/slirp.c ../slirp/tftp.c \
547     ../slirp/ip_input.c ../slirp/socket.c ../slirp/udp.c"
548     fi
549     AC_SUBST(SLIRP_SRCS)
550    
551 gbeauche 1.1 dnl SDL overrides
552     if [[ "x$WANT_SDL" = "xyes" ]]; then
553     AC_DEFINE(USE_SDL, 1, [Define to enble SDL support.])
554     fi
555     if [[ "x$WANT_SDL_VIDEO" = "xyes" ]]; then
556 gbeauche 1.7 AC_DEFINE(USE_SDL_VIDEO, 1, [Define to enable SDL video graphics support.])
557 gbeauche 1.1 VIDEOSRCS="../SDL/video_sdl.cpp"
558     KEYCODES="../SDL/keycodes"
559     if [[ "x$ac_cv_framework_Carbon" = "xyes" ]]; then
560     EXTRASYSSRCS="$EXTRASYSSRCS ../MacOSX/clip_macosx.cpp"
561     else
562 gbeauche 1.33 EXTRASYSSRCS="$EXTRASYSSRCS ../dummy/clip_dummy.cpp"
563 gbeauche 1.1 fi
564     else
565     VIDEOSRCS="video_x.cpp"
566     KEYCODES="keycodes"
567     EXTRASYSSRCS="$EXTRASYSSRCS clip_unix.cpp"
568     fi
569 gbeauche 1.7 if [[ "x$WANT_SDL_AUDIO" = "xyes" ]]; then
570     AC_DEFINE(USE_SDL_AUDIO, 1, [Define to enable SDL audio support])
571     AUDIOSRC="../SDL/audio_sdl.cpp"
572     fi
573 gbeauche 1.1
574 gbeauche 1.11 SYSSRCS="$VIDEOSRCS $EXTFSSRC $SERIALSRC $ETHERSRC $SCSISRC $AUDIOSRC $SEMSRC $UISRCS $EXTRASYSSRCS"
575 gbeauche 1.1
576     dnl Define a macro that translates a yesno-variable into a C macro definition
577     dnl to be put into the config.h file
578     dnl $1 -- the macro to define
579     dnl $2 -- the value to translate
580     dnl $3 -- template name
581     AC_DEFUN(AC_TRANSLATE_DEFINE, [
582     if [[ "x$2" = "xyes" -o "x$2" = "xguessing yes" ]]; then
583     AC_DEFINE($1, 1, $3)
584     fi
585     ])
586    
587     dnl Check that the host supports TUN/TAP devices
588     AC_CACHE_CHECK([whether TUN/TAP is supported],
589     ac_cv_tun_tap_support, [
590     AC_TRY_COMPILE([
591     #if defined(HAVE_LINUX_IF_H) && defined(HAVE_LINUX_IF_TUN_H)
592     #include <linux/if.h>
593     #include <linux/if_tun.h>
594     #endif
595     #if defined(HAVE_NET_IF_H) && defined(HAVE_NET_IF_TUN_H)
596     #include <net/if.h>
597     #include <net/if_tun.h>
598     #endif
599     ], [
600     struct ifreq ifr;
601     memset(&ifr, 0, sizeof(ifr));
602     ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
603     ],
604     ac_cv_tun_tap_support=yes, ac_cv_tun_tap_support=no
605     )
606     ])
607     AC_TRANSLATE_DEFINE(ENABLE_TUNTAP, "$ac_cv_tun_tap_support",
608     [Define if your system supports TUN/TAP devices.])
609    
610     dnl Various checks if the system supports vm_allocate() and the like functions.
611     have_mach_vm=no
612     if [[ "x$ac_cv_func_vm_allocate" = "xyes" -a "x$ac_cv_func_vm_deallocate" = "xyes" -a \
613     "x$ac_cv_func_vm_protect" = "xyes" ]]; then
614     have_mach_vm=yes
615     fi
616     AC_TRANSLATE_DEFINE(HAVE_MACH_VM, "$have_mach_vm",
617     [Define if your system has a working vm_allocate()-based memory allocator.])
618    
619     dnl Check that vm_allocate(), vm_protect() work
620     if [[ "x$have_mach_vm" = "xyes" ]]; then
621    
622     AC_CACHE_CHECK([whether vm_protect works],
623     ac_cv_vm_protect_works, [
624     AC_LANG_SAVE
625     AC_LANG_CPLUSPLUS
626     ac_cv_vm_protect_works=yes
627     dnl First the tests that should segfault
628     for test_def in NONE_READ NONE_WRITE READ_WRITE; do
629     AC_TRY_RUN([
630     #define CONFIGURE_TEST_VM_MAP
631     #define TEST_VM_PROT_$test_def
632     #include "vm_alloc.cpp"
633     ], ac_cv_vm_protect_works=no, rm -f core,
634     dnl When cross-compiling, do not assume anything
635     ac_cv_vm_protect_works="guessing no"
636     )
637     done
638     AC_TRY_RUN([
639     #define CONFIGURE_TEST_VM_MAP
640     #define TEST_VM_PROT_RDWR_WRITE
641     #include "vm_alloc.cpp"
642     ], , ac_cv_vm_protect_works=no,
643     dnl When cross-compiling, do not assume anything
644     ac_cv_vm_protect_works="guessing no"
645     )
646     AC_LANG_RESTORE
647     ]
648     )
649    
650     dnl Remove support for vm_allocate() if vm_protect() does not work
651     if [[ "x$have_mach_vm" = "xyes" ]]; then
652     case $ac_cv_vm_protect_works in
653     *yes) have_mach_vm=yes;;
654     *no) have_mach_vm=no;;
655     esac
656     fi
657     AC_TRANSLATE_DEFINE(HAVE_MACH_VM, "$have_mach_vm",
658     [Define if your system has a working vm_allocate()-based memory allocator.])
659    
660     fi dnl HAVE_MACH_VM
661    
662     dnl Various checks if the system supports mmap() and the like functions.
663     dnl ... and Mach memory allocators are not supported
664     have_mmap_vm=no
665     if [[ "x$ac_cv_func_mmap" = "xyes" -a "x$ac_cv_func_munmap" = "xyes" -a \
666     "x$ac_cv_func_mprotect" = "xyes" ]]; then
667     if [[ "x$have_mach_vm" = "xno" ]]; then
668     have_mmap_vm=yes
669     fi
670     fi
671     AC_TRANSLATE_DEFINE(HAVE_MMAP_VM, "$have_mmap_vm",
672     [Define if your system has a working mmap()-based memory allocator.])
673    
674     dnl Check that mmap() and associated functions work.
675     if [[ "x$have_mmap_vm" = "xyes" ]]; then
676    
677     dnl Check if we have a working anonymous mmap()
678     AC_CACHE_CHECK([whether mmap supports MAP_ANON],
679     ac_cv_mmap_anon, [
680     AC_LANG_SAVE
681     AC_LANG_CPLUSPLUS
682     AC_TRY_RUN([
683     #define HAVE_MMAP_ANON
684     #define CONFIGURE_TEST_VM_MAP
685     #define TEST_VM_MMAP_ANON
686     #include "vm_alloc.cpp"
687     ], ac_cv_mmap_anon=yes, ac_cv_mmap_anon=no,
688     dnl When cross-compiling, do not assume anything.
689     ac_cv_mmap_anon="guessing no"
690     )
691     AC_LANG_RESTORE
692     ]
693     )
694     AC_TRANSLATE_DEFINE(HAVE_MMAP_ANON, "$ac_cv_mmap_anon",
695     [Define if <sys/mman.h> defines MAP_ANON and mmap()'ing with MAP_ANON works.])
696    
697     AC_CACHE_CHECK([whether mmap supports MAP_ANONYMOUS],
698     ac_cv_mmap_anonymous, [
699     AC_LANG_SAVE
700     AC_LANG_CPLUSPLUS
701     AC_TRY_RUN([
702     #define HAVE_MMAP_ANONYMOUS
703     #define CONFIGURE_TEST_VM_MAP
704     #define TEST_VM_MMAP_ANON
705     #include "vm_alloc.cpp"
706     ], ac_cv_mmap_anonymous=yes, ac_cv_mmap_anonymous=no,
707     dnl When cross-compiling, do not assume anything.
708     ac_cv_mmap_anonymous="guessing no"
709     )
710     AC_LANG_RESTORE
711     ]
712     )
713     AC_TRANSLATE_DEFINE(HAVE_MMAP_ANONYMOUS, "$ac_cv_mmap_anonymous",
714     [Define if <sys/mman.h> defines MAP_ANONYMOUS and mmap()'ing with MAP_ANONYMOUS works.])
715    
716     AC_CACHE_CHECK([whether mprotect works],
717     ac_cv_mprotect_works, [
718     AC_LANG_SAVE
719     AC_LANG_CPLUSPLUS
720     ac_cv_mprotect_works=yes
721     dnl First the tests that should segfault
722     for test_def in NONE_READ NONE_WRITE READ_WRITE; do
723     AC_TRY_RUN([
724     #define CONFIGURE_TEST_VM_MAP
725     #define TEST_VM_PROT_$test_def
726     #include "vm_alloc.cpp"
727     ], ac_cv_mprotect_works=no, rm -f core,
728     dnl When cross-compiling, do not assume anything
729     ac_cv_mprotect_works="guessing no"
730     )
731     done
732     AC_TRY_RUN([
733     #define CONFIGURE_TEST_VM_MAP
734     #define TEST_VM_PROT_RDWR_WRITE
735     #include "vm_alloc.cpp"
736     ], , ac_cv_mprotect_works=no,
737     dnl When cross-compiling, do not assume anything
738     ac_cv_mprotect_works="guessing no"
739     )
740     AC_LANG_RESTORE
741     ]
742     )
743    
744     dnl Remove support for mmap() if mprotect() does not work
745     if [[ "x$have_mmap_vm" = "xyes" ]]; then
746     case $ac_cv_mprotect_works in
747     *yes) have_mmap_vm=yes;;
748     *no) have_mmap_vm=no;;
749     esac
750     fi
751     AC_TRANSLATE_DEFINE(HAVE_MMAP_VM, $have_mmap_vm,
752     [Define if your system has a working mmap()-based memory allocator.])
753    
754     fi dnl HAVE_MMAP_VM
755    
756     dnl Check if we can modify the __PAGEZERO segment for use as Low Memory
757     AC_CACHE_CHECK([whether __PAGEZERO can be Low Memory area 0x0000-0x3000],
758     ac_cv_pagezero_hack, [
759     ac_cv_pagezero_hack=no
760     if AC_TRY_COMMAND([Darwin/testlmem.sh 0x3000]); then
761     ac_cv_pagezero_hack=yes
762     dnl might as well skip the test for mmap-able low memory
763     ac_cv_can_map_lm=no
764     fi
765     ])
766     AC_TRANSLATE_DEFINE(PAGEZERO_HACK, "$ac_cv_pagezero_hack",
767     [Define if the __PAGEZERO Mach-O Low Memory Globals hack works on this system.])
768    
769     dnl Check if we can mmap 0x3000 bytes from 0x0000
770     AC_CACHE_CHECK([whether we can map Low Memory area 0x0000-0x3000],
771     ac_cv_can_map_lm, [
772     AC_LANG_SAVE
773     AC_LANG_CPLUSPLUS
774     AC_TRY_RUN([
775     #include "vm_alloc.cpp"
776     int main(void) { /* returns 0 if we could map the lowmem globals */
777     volatile char * lm = 0;
778     if (vm_init() < 0) exit(1);
779     if (vm_acquire_fixed(0, 0x2000) < 0) exit(1);
780     lm[0] = 'z';
781     if (vm_release((char *)lm, 0x2000) < 0) exit(1);
782     vm_exit(); exit(0);
783     }
784     ], ac_cv_can_map_lm=yes, ac_cv_can_map_lm=no,
785     dnl When cross-compiling, do not assume anything.
786     ac_cv_can_map_lm="guessing no"
787     )
788     AC_LANG_RESTORE
789     ]
790     )
791    
792     dnl Check signal handlers need to be reinstalled
793     AC_CACHE_CHECK([whether signal handlers need to be reinstalled],
794     ac_cv_signal_need_reinstall, [
795     AC_LANG_SAVE
796     AC_LANG_CPLUSPLUS
797     AC_TRY_RUN([
798     #include <stdlib.h>
799     #ifdef HAVE_UNISTD_H
800     #include <unistd.h>
801     #endif
802     #include <signal.h>
803     static int handled_signal = 0;
804     RETSIGTYPE sigusr1_handler(int) { handled_signal++; }
805     int main(void) { /* returns 0 if signals need not to be reinstalled */
806     signal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1);
807     exit(handled_signal == 2);
808     }
809     ], ac_cv_signal_need_reinstall=yes, ac_cv_signal_need_reinstall=no,
810     dnl When cross-compiling, do not assume anything.
811     ac_cv_signal_need_reinstall="guessing yes"
812     )
813     AC_LANG_RESTORE
814     ]
815     )
816     AC_TRANSLATE_DEFINE(SIGNAL_NEED_REINSTALL, "$ac_cv_signal_need_reinstall",
817     [Define if your system requires signals to be reinstalled.])
818    
819     dnl Check if sigaction handlers need to be reinstalled
820     AC_CACHE_CHECK([whether sigaction handlers need to be reinstalled],
821     ac_cv_sigaction_need_reinstall, [
822     AC_LANG_SAVE
823     AC_LANG_CPLUSPLUS
824     AC_TRY_RUN([
825     #include <stdlib.h>
826     #ifdef HAVE_UNISTD_H
827     #include <unistd.h>
828     #endif
829     #include <signal.h>
830     static int handled_signal = 0;
831     RETSIGTYPE sigusr1_handler(int) { handled_signal++; }
832     typedef RETSIGTYPE (*signal_handler)(int);
833     static signal_handler mysignal(int sig, signal_handler handler) {
834     struct sigaction old_sa;
835     struct sigaction new_sa;
836     new_sa.sa_handler = handler;
837     return ((sigaction(sig,&new_sa,&old_sa) < 0) ? SIG_IGN : old_sa.sa_handler);
838     }
839     int main(void) { /* returns 0 if signals need not to be reinstalled */
840     mysignal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1);
841     exit(handled_signal == 2);
842     }
843     ], ac_cv_sigaction_need_reinstall=yes, ac_cv_sigaction_need_reinstall=no,
844     dnl When cross-compiling, do not assume anything.
845     ac_cv_sigaction_need_reinstall="guessing yes"
846     )
847     AC_LANG_RESTORE
848     ]
849     )
850     AC_TRANSLATE_DEFINE(SIGACTION_NEED_REINSTALL, "$ac_cv_sigaction_need_reinstall",
851     [Define if your system requires sigactions to be reinstalled.])
852    
853     dnl Check if Mach exceptions supported.
854     AC_CACHE_CHECK([whether your system supports Mach exceptions],
855     ac_cv_have_mach_exceptions, [
856     AC_LANG_SAVE
857     AC_LANG_CPLUSPLUS
858     AC_TRY_RUN([
859     #define HAVE_MACH_EXCEPTIONS 1
860     #define CONFIGURE_TEST_SIGSEGV_RECOVERY
861     #include "vm_alloc.cpp"
862     #include "sigsegv.cpp"
863     ],
864     ac_cv_have_mach_exceptions=yes,
865     ac_cv_have_mach_exceptions=no,
866     dnl When cross-compiling, do not assume anything.
867     ac_cv_have_mach_exceptions=no
868     )
869     AC_LANG_RESTORE
870     ]
871     )
872     if [[ "$ac_cv_have_mach_exceptions" = "yes" ]]; then
873     sigsegv_recovery=mach
874     fi
875     AC_TRANSLATE_DEFINE(HAVE_MACH_EXCEPTIONS, "$ac_cv_have_mach_exceptions",
876     [Define if your system supports Mach exceptions.])
877    
878 gbeauche 1.9 dnl Check if Windows exceptions are supported.
879     AC_CACHE_CHECK([whether your system supports Windows exceptions],
880     ac_cv_have_win32_exceptions, [
881     AC_LANG_SAVE
882     AC_LANG_CPLUSPLUS
883     AC_TRY_RUN([
884     #define HAVE_WIN32_EXCEPTIONS 1
885     #define CONFIGURE_TEST_SIGSEGV_RECOVERY
886     #include "vm_alloc.cpp"
887     #include "sigsegv.cpp"
888     ], [
889     sigsegv_recovery=win32
890     ac_cv_have_win32_exceptions=yes
891     ],
892     ac_cv_have_win32_exceptions=no,
893     dnl When cross-compiling, do not assume anything.
894     ac_cv_have_win32_exceptions=no
895     )
896     AC_LANG_RESTORE
897     ]
898     )
899     AC_TRANSLATE_DEFINE(HAVE_WIN32_EXCEPTIONS, "$ac_cv_have_win32_exceptions",
900     [Define if your system supports Windows exceptions.])
901    
902 gbeauche 1.1 dnl Otherwise, check if extended signals are supported.
903     if [[ -z "$sigsegv_recovery" ]]; then
904     AC_CACHE_CHECK([whether your system supports extended signal handlers],
905     ac_cv_have_extended_signals, [
906     AC_LANG_SAVE
907     AC_LANG_CPLUSPLUS
908     AC_TRY_RUN([
909     #define HAVE_SIGINFO_T 1
910     #define CONFIGURE_TEST_SIGSEGV_RECOVERY
911     #include "vm_alloc.cpp"
912     #include "sigsegv.cpp"
913     ],
914     ac_cv_have_extended_signals=yes,
915     ac_cv_have_extended_signals=no,
916     dnl When cross-compiling, do not assume anything.
917     ac_cv_have_extended_signals=no
918     )
919     AC_LANG_RESTORE
920     ]
921     )
922     if [[ "$ac_cv_have_extended_signals" = "yes" ]]; then
923     sigsegv_recovery=siginfo
924     fi
925     AC_TRANSLATE_DEFINE(HAVE_SIGINFO_T, "$ac_cv_have_extended_signals",
926     [Define if your system support extended signals.])
927     fi
928    
929     dnl Otherwise, check for subterfuges.
930     if [[ -z "$sigsegv_recovery" ]]; then
931     AC_CACHE_CHECK([whether we then have a subterfuge for your system],
932     ac_cv_have_sigcontext_hack, [
933     AC_LANG_SAVE
934     AC_LANG_CPLUSPLUS
935     AC_TRY_RUN([
936     #define HAVE_SIGCONTEXT_SUBTERFUGE 1
937     #define CONFIGURE_TEST_SIGSEGV_RECOVERY
938     #include "vm_alloc.cpp"
939     #include "sigsegv.cpp"
940     ],
941     ac_cv_have_sigcontext_hack=yes,
942     ac_cv_have_sigcontext_hack=no,
943     dnl When cross-compiling, do not assume anything.
944     ac_cv_have_sigcontext_hack=no
945     )
946     AC_LANG_RESTORE
947     ])
948     if [[ "$ac_cv_have_sigcontext_hack" = "yes" ]]; then
949     sigsegv_recovery=sigcontext
950     fi
951     AC_TRANSLATE_DEFINE(HAVE_SIGCONTEXT_SUBTERFUGE, "$ac_cv_have_sigcontext_hack",
952     [Define if we know a hack to replace siginfo_t->si_addr member.])
953     fi
954    
955     dnl Check if we can ignore the fault (instruction skipping in SIGSEGV handler)
956     AC_CACHE_CHECK([whether we can skip instruction in SIGSEGV handler],
957     ac_cv_have_skip_instruction, [
958     AC_LANG_SAVE
959     AC_LANG_CPLUSPLUS
960     AC_TRY_RUN([
961     #define HAVE_SIGSEGV_SKIP_INSTRUCTION 1
962     #define CONFIGURE_TEST_SIGSEGV_RECOVERY
963     #include "vm_alloc.cpp"
964     #include "sigsegv.cpp"
965     ], ac_cv_have_skip_instruction=yes, ac_cv_have_skip_instruction=no,
966     dnl When cross-compiling, do not assume anything.
967     ac_cv_have_skip_instruction=no
968     )
969     AC_LANG_RESTORE
970     ]
971     )
972     AC_TRANSLATE_DEFINE(HAVE_SIGSEGV_SKIP_INSTRUCTION, "$ac_cv_have_skip_instruction",
973     [Define if we can ignore the fault (instruction skipping in SIGSEGV handler).])
974    
975     dnl Can we do Video on SEGV Signals ?
976     CAN_VOSF=no
977     if [[ -n "$sigsegv_recovery" ]]; then
978     CAN_VOSF=yes
979     fi
980    
981     dnl Enable VOSF screen updates with this feature is requested and feasible
982     if [[ "x$WANT_VOSF" = "xyes" -a "x$CAN_VOSF" = "xyes" ]]; then
983     AC_DEFINE(ENABLE_VOSF, 1, [Define if using video enabled on SEGV signals.])
984     else
985     WANT_VOSF=no
986     fi
987    
988 gbeauche 1.8 dnl Check addressing mode to use
989     AC_MSG_CHECKING([for addressing mode to use])
990     if [[ "$EMULATED_PPC" != "yes" ]]; then
991     if [[ "$WANT_ADDRESSING_MODE" != "real" ]]; then
992     AC_MSG_WARN([Running in native PowerPC mode, force use of Real Addressing.])
993     WANT_ADDRESSING_MODE="real"
994     fi
995     fi
996     if [[ "$WANT_ADDRESSING_MODE" = "direct" ]]; then
997     if [[ -n "$NATMEM_OFFSET" ]]; then
998     NATMEM_OFFSET_DEF="-DNATMEM_OFFSET=$NATMEM_OFFSET"
999     fi
1000     AC_LANG_SAVE
1001     AC_LANG_CPLUSPLUS
1002     cat confdefs.h > conftest.$ac_ext
1003     cat >> conftest.$ac_ext << EOF
1004     #include <stdio.h>
1005     #include <string.h>
1006     #include "vm_alloc.cpp"
1007    
1008     int main(void)
1009     {
1010     if (vm_init() < 0)
1011     return 1;
1012    
1013     static const struct {
1014     unsigned long base;
1015     unsigned int size;
1016     } ranges[[]] = {
1017     { 0x00000000, 0x0003000 },
1018     { 0x10000000, 0x2000000 },
1019     { 0x40800000, 0x0400000 },
1020     { 0x68070000, 0x0010000 },
1021     { 0x69000000, 0x0080000 },
1022     { 0x68ffe000, 0x0002000 },
1023     { 0x5fffe000, 0x0002000 },
1024     { 0x60000000, 0x0040000 },
1025     };
1026     const int n_ranges = sizeof(ranges)/ sizeof(ranges[[0]]);
1027    
1028     #ifdef NATMEM_OFFSET
1029     unsigned long ofs = NATMEM_OFFSET;
1030     #else
1031     for (unsigned long ofs = 0x10000000; ofs <= 0x90000000; ofs += 0x10000000)
1032     #endif
1033     for (int i = 0; i < n_ranges; i++) {
1034     char *m = (char *)(ranges[[i]].base + ofs);
1035     if (vm_acquire_fixed(m, ranges[[i]].size) != 0)
1036     break;
1037     memset(m, 0, ranges[[i]].size);
1038     vm_release(m, ranges[[i]].size);
1039     if (i == n_ranges - 1) {
1040 gbeauche 1.13 if (sizeof(void *) == 8 && ofs > 0xffffffff)
1041     printf("0x%lxul\n", ofs);
1042     else
1043     printf("0x%08x\n", ofs);
1044 gbeauche 1.8 return 0;
1045     }
1046     }
1047    
1048     vm_exit();
1049     return 1;
1050     }
1051     EOF
1052     doit='$CXX conftest.$ac_ext -o conftest.$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS $LIBS $NATMEM_OFFSET_DEF >& AS_MESSAGE_LOG_FD'
1053     if AC_TRY_EVAL(doit); then
1054     NATMEM_OFFSET=`./conftest.$ac_exeext`
1055 gbeauche 1.9 else
1056     NATMEM_OFFSET=
1057 gbeauche 1.8 fi
1058     rm -f conftest*
1059     AC_LANG_RESTORE
1060 gbeauche 1.9
1061     if [[ -z "$NATMEM_OFFSET" ]]; then
1062     AC_MSG_ERROR([could not determine a sensible NATMEM_OFFSET value])
1063     else
1064     WANT_ADDRESSING_MODE="direct,$NATMEM_OFFSET"
1065     AC_DEFINE_UNQUOTED(NATMEM_OFFSET, $NATMEM_OFFSET,
1066     [Define constant offset for Mac address translation])
1067     fi
1068 gbeauche 1.8 fi
1069     AC_MSG_RESULT($WANT_ADDRESSING_MODE)
1070    
1071 gbeauche 1.26 dnl Utility macro used by next two tests.
1072     dnl AC_EXAMINE_OBJECT(C source code,
1073     dnl commands examining object file,
1074     dnl [commands to run if compile failed]):
1075     dnl
1076     dnl Compile the source code to an object file; then convert it into a
1077     dnl printable representation. All unprintable characters and
1078     dnl asterisks (*) are replaced by dots (.). All white space is
1079     dnl deleted. Newlines (ASCII 0x10) in the input are preserved in the
1080     dnl output, but runs of newlines are compressed to a single newline.
1081     dnl Finally, line breaks are forcibly inserted so that no line is
1082     dnl longer than 80 columns and the file ends with a newline. The
1083     dnl result of all this processing is in the file conftest.dmp, which
1084     dnl may be examined by the commands in the second argument.
1085     dnl
1086     AC_DEFUN([gcc_AC_EXAMINE_OBJECT],
1087     [AC_LANG_SAVE
1088     AC_LANG_C
1089     dnl Next bit cribbed from AC_TRY_COMPILE.
1090     cat > conftest.$ac_ext <<EOF
1091     [#line __oline__ "configure"
1092     #include "confdefs.h"
1093     $1
1094     ]EOF
1095     if AC_TRY_EVAL(ac_compile); then
1096     od -c conftest.o |
1097     sed ['s/^[0-7]*[ ]*/ /
1098     s/\*/./g
1099     s/ \\n/*/g
1100     s/ [0-9][0-9][0-9]/./g
1101     s/ \\[^ ]/./g'] |
1102     tr -d '
1103     ' | tr -s '*' '
1104     ' | fold | sed '$a\
1105     ' > conftest.dmp
1106     $2
1107     ifelse($3, , , else
1108     $3
1109     )dnl
1110     fi
1111     rm -rf conftest*
1112     AC_LANG_RESTORE])
1113    
1114     dnl Floating point format probe.
1115     dnl The basic concept is the same as the above: grep the object
1116     dnl file for an interesting string. We have to watch out for
1117     dnl rounding changing the values in the object, however; this is
1118     dnl handled by ignoring the least significant byte of the float.
1119     dnl
1120     dnl Does not know about VAX G-float or C4x idiosyncratic format.
1121     dnl It does know about PDP-10 idiosyncratic format, but this is
1122     dnl not presently supported by GCC. S/390 "binary floating point"
1123     dnl is in fact IEEE (but maybe we should have that in EBCDIC as well
1124     dnl as ASCII?)
1125     dnl
1126     AC_DEFUN([gcc_AC_C_FLOAT_FORMAT],
1127     [AC_CACHE_CHECK(floating point format, ac_cv_c_float_format,
1128     [gcc_AC_EXAMINE_OBJECT(
1129     [/* This will not work unless sizeof(double) == 8. */
1130     extern char sizeof_double_must_be_8 [sizeof(double) == 8 ? 1 : -1];
1131    
1132     /* This structure must have no internal padding. */
1133     struct possibility {
1134     char prefix[8];
1135     double candidate;
1136     char postfix[8];
1137     };
1138    
1139     #define C(cand) { "\nformat:", cand, ":tamrof\n" }
1140     struct possibility table [] =
1141     {
1142     C( 3.25724264705901305206e+01), /* @@IEEEFP - IEEE 754 */
1143     C( 3.53802595280598432000e+18), /* D__float - VAX */
1144     C( 5.32201830133125317057e-19), /* D.PDP-10 - PDP-10 - the dot is 0x13a */
1145     C( 1.77977764695171661377e+10), /* IBMHEXFP - s/390 format, ascii */
1146     C(-5.22995989424860458374e+10) /* IBMHEXFP - s/390 format, EBCDIC */
1147     };],
1148     [if grep 'format:.@IEEEF.:tamrof' conftest.dmp >/dev/null 2>&1; then
1149     ac_cv_c_float_format='IEEE (big-endian)'
1150     elif grep 'format:.I@@PFE.:tamrof' conftest.dmp >/dev/null 2>&1; then
1151     ac_cv_c_float_format='IEEE (big-endian)'
1152     elif grep 'format:.FEEEI@.:tamrof' conftest.dmp >/dev/null 2>&1; then
1153     ac_cv_c_float_format='IEEE (little-endian)'
1154     elif grep 'format:.EFP@@I.:tamrof' conftest.dmp >/dev/null 2>&1; then
1155     ac_cv_c_float_format='IEEE (little-endian)'
1156     elif grep 'format:.__floa.:tamrof' conftest.dmp >/dev/null 2>&1; then
1157     ac_cv_c_float_format='VAX D-float'
1158     elif grep 'format:..PDP-1.:tamrof' conftest.dmp >/dev/null 2>&1; then
1159     ac_cv_c_float_format='PDP-10'
1160     elif grep 'format:.BMHEXF.:tamrof' conftest.dmp >/dev/null 2>&1; then
1161     ac_cv_c_float_format='IBM 370 hex'
1162     else
1163     AC_MSG_ERROR(Unknown floating point format)
1164     fi],
1165     [AC_MSG_ERROR(compile failed)])
1166     ])
1167     # IEEE is the default format. If the float endianness isn't the same
1168     # as the integer endianness, we have to set FLOAT_WORDS_BIG_ENDIAN
1169     # (which is a tristate: yes, no, default). This is only an issue with
1170     # IEEE; the other formats are only supported by a few machines each,
1171     # all with the same endianness.
1172     format=IEEE_FLOAT_FORMAT
1173     fbigend=
1174     case $ac_cv_c_float_format in
1175     'IEEE (big-endian)' )
1176     if test $ac_cv_c_bigendian = no; then
1177     fbigend=1
1178     fi
1179     ;;
1180     'IEEE (little-endian)' )
1181     if test $ac_cv_c_bigendian = yes; then
1182     fbigend=0
1183     fi
1184     ;;
1185     'VAX D-float' )
1186     format=VAX_FLOAT_FORMAT
1187     ;;
1188     'PDP-10' )
1189     format=PDP10_FLOAT_FORMAT
1190     ;;
1191     'IBM 370 hex' )
1192     format=IBM_FLOAT_FORMAT
1193     ;;
1194     esac
1195     AC_DEFINE_UNQUOTED(HOST_FLOAT_FORMAT, $format,
1196     [Define to the floating point format of the host machine.])
1197     if test -n "$fbigend"; then
1198     AC_DEFINE_UNQUOTED(HOST_FLOAT_WORDS_BIG_ENDIAN, $fbigend,
1199     [Define to 1 if the host machine stores floating point numbers in
1200     memory with the word containing the sign bit at the lowest address,
1201     or to 0 if it does it the other way around.
1202    
1203     This macro should not be defined if the ordering is the same as for
1204     multi-word integers.])
1205     fi
1206     ])
1207    
1208     dnl Check for host float format
1209     gcc_AC_C_FLOAT_FORMAT
1210    
1211 gbeauche 1.1 dnl Platform specific binary postprocessor
1212     AC_PATH_PROG(BLESS, "true")
1213     if [[ "x$ac_cv_pagezero_hack" = "xyes" ]]; then
1214     BLESS=Darwin/lowmem
1215     LDFLAGS="$LDFLAGS -pagezero_size 0x3000"
1216     fi
1217    
1218     dnl Check for GCC 2.7 or higher.
1219     HAVE_GCC27=no
1220     AC_MSG_CHECKING(for GCC 2.7 or higher)
1221 gbeauche 1.36 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#if ! (__GNUC__ - 1 > 1 || __GNUC_MINOR__ - 1 > 5)
1222     # error gcc < 2.7
1223 gbeauche 1.44 typedef syntax error;
1224 gbeauche 1.36 #endif
1225     ]])],
1226     [AC_MSG_RESULT(yes); HAVE_GCC27=yes],
1227     [AC_MSG_RESULT(no)])
1228 gbeauche 1.1
1229     dnl Check for GCC 3.0 or higher.
1230     HAVE_GCC30=no
1231     AC_MSG_CHECKING(for GCC 3.0 or higher)
1232 gbeauche 1.36 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#if ! (__GNUC__ >= 3)
1233     # error gcc < 3
1234 gbeauche 1.44 typedef syntax error;
1235 gbeauche 1.36 #endif
1236     ]])],
1237     [AC_MSG_RESULT(yes); HAVE_GCC30=yes],
1238     [AC_MSG_RESULT(no)])
1239 gbeauche 1.1
1240     dnl Check for ICC.
1241     AC_MSG_CHECKING(for ICC)
1242     HAVE_ICC=no
1243     if $CXX -V -v 2>&1 | grep -q "Intel(R) C++ Compiler"; then
1244     HAVE_ICC=yes
1245     fi
1246     AC_MSG_RESULT($HAVE_ICC)
1247    
1248 gbeauche 1.9 dnl Determine the generated object format
1249 gbeauche 1.24 AC_CACHE_CHECK([the format of compiler generated objects],
1250 gbeauche 1.9 ac_cv_object_format, [
1251 gbeauche 1.1 echo 'int i;' > conftest.$ac_ext
1252 gbeauche 1.9 ac_cv_object_format=no
1253 gbeauche 1.1 if AC_TRY_EVAL(ac_compile); then
1254     case `/usr/bin/file conftest.$ac_objext` in
1255     *"ELF"*)
1256 gbeauche 1.9 ac_cv_object_format=elf
1257     ;;
1258 gbeauche 1.24 *"Mach-O"*)
1259     ac_cv_object_format=mach
1260     ;;
1261 gbeauche 1.9 *)
1262     ac_cv_object_format=unknown
1263 gbeauche 1.1 ;;
1264     esac
1265     fi
1266     rm -rf conftest*
1267     ])
1268    
1269 gbeauche 1.32 dnl Add -fno-strict-aliasing for slirp sources
1270     if [[ "x$HAVE_GCC30" = "xyes" ]]; then
1271     SAVED_CFLAGS="$CFLAGS"
1272     CFLAGS="$CFLAGS -fno-strict-aliasing"
1273     AC_CACHE_CHECK([whether the compiler supports -fno-strict-aliasing],
1274     ac_cv_gcc_no_strict_aliasing, [
1275     AC_TRY_COMPILE([],[],
1276     [ac_cv_gcc_no_strict_aliasing=yes; AC_SUBST(SLIRP_CFLAGS, "-fno-strict-aliasing")],
1277     [ac_cv_gcc_no_strict_aliasing=no])
1278     ])
1279     CFLAGS="$SAVED_CFLAGS"
1280     fi
1281    
1282 gbeauche 1.39 dnl Add -mdynamic-no-pic for MacOS X (XXX icc10 will support MacOS X)
1283     if [[ "x$HAVE_GCC30" = "xyes" -a "x$HAVE_ICC" = "xno" ]]; then
1284 gbeauche 1.31 SAVED_CFLAGS="$CFLAGS"
1285     CFLAGS="$CFLAGS -mdynamic-no-pic"
1286     AC_CACHE_CHECK([whether the compiler supports -mdynamic-no-pic],
1287     ac_cv_gcc_mdynamic_no_pic, [
1288     AC_TRY_COMPILE([],[],[ac_cv_gcc_mdynamic_no_pic=yes],[ac_cv_gcc_mdynamic_no_pic=no])
1289     ])
1290     if [[ "x$ac_cv_gcc_mdynamic_no_pic" = "xyes" ]]; then
1291     CXXFLAGS="$CXXFLAGS -mdynamic-no-pic"
1292     else
1293     CFLAGS="$SAVED_CFLAGS"
1294     fi
1295     fi
1296    
1297 gbeauche 1.1 dnl CPU emulator sources
1298     if [[ "x$EMULATED_PPC" = "xyes" ]]; then
1299     CPUSRCS="\
1300 gbeauche 1.9 ../kpx_cpu/src/mathlib/ieeefp.cpp \
1301 gbeauche 1.26 ../kpx_cpu/src/mathlib/mathlib.cpp \
1302 gbeauche 1.1 ../kpx_cpu/src/cpu/ppc/ppc-cpu.cpp \
1303     ../kpx_cpu/src/cpu/ppc/ppc-decode.cpp \
1304     ../kpx_cpu/src/cpu/ppc/ppc-execute.cpp \
1305     ../kpx_cpu/src/cpu/ppc/ppc-translate.cpp"
1306     CPPFLAGS="$CPPFLAGS -I../kpx_cpu/include -I../kpx_cpu/src"
1307    
1308     dnl Enable JIT compiler, if possible
1309     if [[ "x$WANT_JIT" = "xyes" ]]; then
1310     AC_CACHE_CHECK([whether dyngen can be used],
1311     ac_cv_use_dyngen, [
1312 gbeauche 1.9 case $host_cpu:$ac_cv_object_format in
1313     powerpc:elf)
1314 gbeauche 1.1 ac_cv_use_dyngen=yes
1315     ;;
1316 gbeauche 1.9 x86_64:elf)
1317 gbeauche 1.1 ac_cv_use_dyngen=yes
1318     ;;
1319 gbeauche 1.9 i?86:elf)
1320 gbeauche 1.1 ac_cv_use_dyngen=yes
1321     ;;
1322 gbeauche 1.43 mips:elf)
1323     ac_cv_use_dyngen=yes
1324     ;;
1325 gbeauche 1.24 powerpc:mach)
1326     ac_cv_use_dyngen=yes
1327     ;;
1328 gbeauche 1.41 i?86:mach)
1329     ac_cv_use_dyngen=yes
1330     ;;
1331 gbeauche 1.1 *:*)
1332     ac_cv_use_dyngen=no
1333     ;;
1334     esac
1335     dnl Check for a suitable synthetic opcodes compiler (icc is faking itself as gcc 3.2.2)
1336     if [[ -z "$DYNGEN_CC" ]]; then
1337     if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_ICC" = "xno" ]]; then
1338     DYNGEN_CC=$CXX
1339     else
1340 gbeauche 1.44 for p in /usr/bin /usr/local/bin /usr/freeware/bin; do
1341 gbeauche 1.1 gxx="$p/g++"
1342     if [[ -x "$gxx" ]]; then
1343     DYNGEN_CC="$gxx"
1344     fi
1345     done
1346     fi
1347     fi
1348 gbeauche 1.27 if [[ -z "$DYNGEN_CC" ]]; then
1349 gbeauche 1.1 ac_cv_use_dyngen=no
1350     fi
1351     ])
1352     if [[ "x$ac_cv_use_dyngen" = "xyes" ]]; then
1353     case $host_cpu in
1354     i?86)
1355 gbeauche 1.46 DYNGEN_OP_FLAGS="-fomit-frame-pointer"
1356 gbeauche 1.24 ;;
1357 gbeauche 1.43 mips)
1358     DYNGEN_OP_FLAGS="-fno-delayed-branch -mno-abicalls"
1359     ;;
1360 gbeauche 1.24 powerpc)
1361     if [[ "x$ac_cv_object_format" = "xmach" ]]; then
1362     DYNGEN_OP_FLAGS="-mdynamic-no-pic"
1363 gbeauche 1.1 fi
1364     ;;
1365     esac
1366 gbeauche 1.44 have_dyngen_gcc3=no
1367     case "x`$DYNGEN_CC -dumpversion`" in
1368     x[12].*) ;;
1369     x*) have_dyngen_gcc3=yes ;;
1370     esac
1371     if [[ "x$have_dyngen_gcc3" = "xyes" ]]; then
1372 gbeauche 1.24 DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -falign-functions=0"
1373     else
1374     DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -malign-functions=0"
1375     fi
1376 gbeauche 1.38 DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -finline-functions -finline-limit=10000 -fno-exceptions -g0"
1377 gbeauche 1.44 if [[ "x$have_dyngen_gcc3" = "xyes" ]]; then
1378 gbeauche 1.1 DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -fno-reorder-blocks -fno-optimize-sibling-calls"
1379     fi
1380 gbeauche 1.43 if [[ "x$DYNGEN_CC" != "x$CXX" ]]; then
1381     DYNGEN_CFLAGS="-O2 $CFLAGS"
1382     DYNGEN_CXXFLAGS="-O2 $CXXFLAGS"
1383     else
1384     DYNGEN_CFLAGS="\$(CFLAGS)"
1385     DYNGEN_CXXFLAGS="\$(CXXFLAGS)"
1386     fi
1387 gbeauche 1.1 else
1388     WANT_JIT=no
1389     fi
1390     AC_TRANSLATE_DEFINE(ENABLE_DYNGEN, $ac_cv_use_dyngen, [Define to enable dyngen engine])
1391     if [[ "x$WANT_JIT" = "xyes" ]]; then
1392     DYNGENSRCS="\
1393     ../kpx_cpu/src/cpu/jit/dyngen.c \
1394     ../kpx_cpu/src/cpu/jit/cxxdemangle.cpp"
1395     CPUSRCS="\
1396     ../kpx_cpu/src/cpu/jit/jit-cache.cpp \
1397     ../kpx_cpu/src/cpu/jit/basic-dyngen.cpp \
1398     ../kpx_cpu/src/cpu/ppc/ppc-dyngen.cpp $CPUSRCS"
1399     fi
1400     fi
1401     CPUSRCS="$CPUSRCS ../kpx_cpu/sheepshaver_glue.cpp"
1402     else
1403     WANT_JIT=no
1404     fi
1405     if [[ "x$ac_cv_use_dyngen" = "xyes" ]]; then
1406     AC_CACHE_CHECK([whether static data regions are executable],
1407     ac_cv_have_static_data_exec, [
1408     AC_TRY_RUN([int main(void) {
1409 gbeauche 1.25 #if defined(__powerpc__) || defined(__ppc__)
1410 gbeauche 1.1 static unsigned int p[8] = {0x4e800020,};
1411     asm volatile("dcbst 0,%0" : : "r" (p) : "memory");
1412     asm volatile("sync" : : : "memory");
1413     asm volatile("icbi 0,%0" : : "r" (p) : "memory");
1414     asm volatile("sync" : : : "memory");
1415     asm volatile("isync" : : : "memory");
1416     ((void (*)(void))p)();
1417     return 0;
1418     #endif
1419     return 1;
1420     }], ac_cv_have_static_data_exec=yes, ac_cv_have_static_data_exec=no,
1421     dnl When cross-compiling, do not assume anything.
1422     ac_cv_have_static_data_exec=no
1423     )
1424     ])
1425 gbeauche 1.14 else
1426     ac_cv_use_dyngen=no
1427 gbeauche 1.1 fi
1428     AC_TRANSLATE_DEFINE(HAVE_STATIC_DATA_EXEC, "$ac_cv_have_static_data_exec",
1429     [Define if your system marks static data pages as executable.])
1430    
1431     if [[ "x$WANT_JIT" = "xyes" ]]; then
1432     CPPFLAGS="$CPPFLAGS -DUSE_JIT"
1433     fi
1434    
1435 gbeauche 1.43 dnl Higher level optimizations with MIPSPro compilers are possible
1436     if [[ "x$HAVE_IPA" = "xyes" ]]; then
1437     CFLAGS="`echo $CFLAGS | sed -e 's/-g//g'` -O3 -OPT:Olimit=0 -IPA"
1438     CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-g//g'` -O3 -OPT:Olimit=0 -IPA"
1439     CXXFLAGS="-LANG:std $CXXFLAGS"
1440     LDFLAGS="$LDFLAGS -O3 -OPT:Olimit=0 -IPA"
1441     fi
1442    
1443 gbeauche 1.1 dnl Generate Makefile.
1444 gbeauche 1.16 AC_SUBST(PERL)
1445 gbeauche 1.14 AC_SUBST(USE_DYNGEN, [$ac_cv_use_dyngen])
1446 gbeauche 1.1 AC_SUBST(DYNGENSRCS)
1447     AC_SUBST(DYNGEN_CC)
1448 gbeauche 1.43 AC_SUBST(DYNGEN_CFLAGS)
1449     AC_SUBST(DYNGEN_CXXFLAGS)
1450 gbeauche 1.1 AC_SUBST(DYNGEN_OP_FLAGS)
1451     AC_SUBST(SYSSRCS)
1452     AC_SUBST(CPUSRCS)
1453     AC_SUBST(BLESS)
1454     AC_SUBST(KEYCODES)
1455 gbeauche 1.5 AC_OUTPUT([
1456     Makefile
1457     ../MacOSX/Info.plist
1458     ])
1459 gbeauche 1.1
1460     dnl Print summary.
1461     echo
1462     echo SheepShaver configuration summary:
1463     echo
1464     echo SDL support ...................... : $SDL_SUPPORT
1465 gbeauche 1.21 echo FBDev DGA support ................ : $WANT_FBDEV_DGA
1466 gbeauche 1.1 echo XFree86 DGA support .............. : $WANT_XF86_DGA
1467     echo XFree86 VidMode support .......... : $WANT_XF86_VIDMODE
1468     echo Using PowerPC emulator ........... : $EMULATED_PPC
1469     echo Enable JIT compiler .............. : $WANT_JIT
1470     echo Enable video on SEGV signals ..... : $WANT_VOSF
1471     echo ESD sound support ................ : $WANT_ESD
1472     echo GTK user interface ............... : $WANT_GTK
1473     echo mon debugger support ............. : $WANT_MON
1474 gbeauche 1.8 echo Addressing mode .................. : $WANT_ADDRESSING_MODE
1475 gbeauche 1.1 echo Bad memory access recovery type .. : $sigsegv_recovery
1476     echo
1477     echo "Configuration done. Now type \"make\"."