ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/configure.ac
Revision: 1.42
Committed: 2005-05-13T17:43:38Z (19 years, 4 months ago) by gbeauche
Branch: MAIN
Changes since 1.41: +6 -2 lines
Log Message:
Use a custom poll_fd() function implemented as select() on platforms that
don't support poll() natively, e.g. MacOS X and some older BSDs.

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 et al.
3    
4 cebix 1.16 AC_INIT([Basilisk II], 1.0, [Christian.Bauer@uni-mainz.de], BasiliskII)
5     AC_CONFIG_SRCDIR(main_unix.cpp)
6 gbeauche 1.1 AC_PREREQ(2.52)
7     AC_CONFIG_HEADER(config.h)
8    
9 gbeauche 1.19 dnl Aliases for PACKAGE and VERSION macros.
10 gbeauche 1.22 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE_NAME", [Define this program name.])
11     AC_DEFINE_UNQUOTED(VERSION, "$PACKAGE_VERSION", [Define this program version.])
12 gbeauche 1.19
13 gbeauche 1.21 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.5 dnl Video options.
18 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])
19     AC_ARG_ENABLE(xf86-vidmode, [ --enable-xf86-vidmode use the XFree86 VidMode extension [default=yes]], [WANT_XF86_VIDMODE=$enableval], [WANT_XF86_VIDMODE=yes])
20     AC_ARG_ENABLE(fbdev-dga, [ --enable-fbdev-dga use direct frame buffer access via /dev/fb [default=yes]], [WANT_FBDEV_DGA=$enableval], [WANT_FBDEV_DGA=yes])
21     AC_ARG_ENABLE(vosf, [ --enable-vosf enable video on SEGV signals [default=yes]], [WANT_VOSF=$enableval], [WANT_VOSF=yes])
22    
23 gbeauche 1.26 dnl SDL options.
24 gbeauche 1.41 AC_ARG_ENABLE(sdl-static, [ --enable-sdl-static use SDL static libraries for linking [default=no]], [WANT_SDL_STATIC=$enableval], [WANT_SDL_STATIC=no])
25 gbeauche 1.26 AC_ARG_ENABLE(sdl-video, [ --enable-sdl-video use SDL for video graphics [default=no]], [WANT_SDL_VIDEO=$enableval], [WANT_SDL_VIDEO=no])
26 gbeauche 1.31 AC_ARG_ENABLE(sdl-audio, [ --enable-sdl-audio use SDL for audio [default=no]], [WANT_SDL_AUDIO=$enableval], [WANT_SDL_AUDIO=no])
27 gbeauche 1.26
28 gbeauche 1.5 dnl JIT compiler options.
29     AC_ARG_ENABLE(jit-compiler, [ --enable-jit-compiler enable JIT compiler [default=no]], [WANT_JIT=$enableval], [WANT_JIT=no])
30     AC_ARG_ENABLE(jit-debug, [ --enable-jit-debug activate native code disassemblers [default=no]], [WANT_JIT_DEBUG=$enableval], [WANT_JIT_DEBUG=no])
31    
32 gbeauche 1.1 dnl FPU emulation core.
33     AC_ARG_ENABLE(fpe,
34     [ --enable-fpe=FPE specify which fpu emulator to use [default=auto]],
35     [ case "$enableval" in
36     dnl default is always ieee, if architecture has this fp format
37     auto) FPE_CORE_TEST_ORDER="ieee uae";;
38     ieee) FPE_CORE_TEST_ORDER="ieee";;
39     uae) FPE_CORE_TEST_ORDER="uae";;
40     x86) FPE_CORE_TEST_ORDER="x86";;
41     *) AC_MSG_ERROR([--enable-fpe takes only one of the following values: auto, x86, ieee, uae]);;
42     esac
43     ],
44     [ FPE_CORE_TEST_ORDER="ieee uae"
45     ])
46    
47     dnl Addressing modes.
48     AC_ARG_ENABLE(addressing,
49     [ --enable-addressing=AM specify the addressing mode to use [default=fastest]],
50     [ case "$enableval" in
51     real) ADDRESSING_TEST_ORDER="real";;
52     direct) ADDRESSING_TEST_ORDER="direct";;
53     banks) ADDRESSING_TEST_ORDER="banks";;
54     fastest)ADDRESSING_TEST_ORDER="direct banks";;
55     *) AC_MSG_ERROR([--enable-addressing takes only one of the following values: fastest, real, direct, banks]);;
56     esac
57     ],
58     [ ADDRESSING_TEST_ORDER="direct banks"
59     ])
60    
61     dnl External packages.
62     AC_ARG_WITH(esd, [ --with-esd support ESD for sound under Linux/FreeBSD [default=yes]], [WANT_ESD=$withval], [WANT_ESD=yes])
63     AC_ARG_WITH(gtk, [ --with-gtk use GTK user interface [default=yes]], [WANT_GTK=$withval], [WANT_GTK=yes])
64     AC_ARG_WITH(mon, [ --with-mon use mon as debugger [default=yes]], [WANT_MON=$withval], [WANT_MON=yes])
65    
66     dnl Canonical system information.
67     AC_CANONICAL_HOST
68     AC_CANONICAL_TARGET
69    
70     dnl Target OS type (target is host if not cross-compiling).
71     case "$target_os" in
72     linux*) OS_TYPE=linux;;
73     netbsd*) OS_TYPE=netbsd;;
74     freebsd*) OS_TYPE=freebsd;;
75     solaris*) OS_TYPE=solaris;;
76     darwin*) OS_TYPE=darwin;;
77     *) OS_TYPE=`echo $target_os | sed -e 's/-/_/g' | sed -e 's/\./_/g'`;;
78     esac
79     DEFINES="$DEFINES -DOS_$OS_TYPE"
80    
81     dnl Target CPU type.
82     HAVE_I386=no
83     HAVE_M68K=no
84     HAVE_SPARC=no
85     HAVE_POWERPC=no
86 gbeauche 1.13 HAVE_X86_64=no
87 gbeauche 1.1 case "$target_cpu" in
88 gbeauche 1.12 i386* | i486* | i586* | i686* | i786* ) HAVE_I386=yes;;
89     m68k* ) HAVE_M68K=yes;;
90     sparc* ) HAVE_SPARC=yes;;
91     powerpc* ) HAVE_POWERPC=yes;;
92 gbeauche 1.13 x86_64* ) HAVE_X86_64=yes;;
93 gbeauche 1.1 esac
94    
95     dnl Checks for programs.
96     AC_PROG_CC
97     AC_PROG_CC_C_O
98     AC_PROG_CPP
99     AC_PROG_CXX
100     AC_PROG_MAKE_SET
101     AC_PROG_INSTALL
102 gbeauche 1.36 AC_PROG_EGREP
103 gbeauche 1.1
104     dnl We use mon if possible.
105     MONSRCS=
106     if [[ "x$WANT_MON" = "xyes" ]]; then
107     AC_MSG_CHECKING(for mon)
108     mon_srcdir=../../../mon/src
109     if grep mon_init $mon_srcdir/mon.h >/dev/null 2>/dev/null; then
110     AC_MSG_RESULT(yes)
111     AC_DEFINE(ENABLE_MON, 1, [Define if using "mon".])
112     MONSRCS="$mon_srcdir/mon.cpp $mon_srcdir/mon_6502.cpp $mon_srcdir/mon_z80.cpp $mon_srcdir/mon_cmd.cpp $mon_srcdir/mon_disass.cpp $mon_srcdir/mon_ppc.cpp $mon_srcdir/mon_lowmem.cpp $mon_srcdir/disass/floatformat.c $mon_srcdir/disass/i386-dis.c $mon_srcdir/disass/m68k-dis.c $mon_srcdir/disass/m68k-opc.c"
113     CXXFLAGS="$CXXFLAGS -I$mon_srcdir -I$mon_srcdir/disass"
114     AC_CHECK_LIB(ncurses, tgetent, ,
115     AC_CHECK_LIB(termcap, tgetent, ,
116     AC_CHECK_LIB(termlib, tgetent, ,
117     AC_CHECK_LIB(terminfo, tgetent, ,
118     AC_CHECK_LIB(Hcurses, tgetent, ,
119     AC_CHECK_LIB(curses, tgetent))))))
120     AC_CHECK_LIB(readline, readline)
121     else
122     AC_MSG_RESULT(no)
123     AC_MSG_WARN([Could not find mon, ignoring --with-mon.])
124     WANT_MON=no
125     fi
126     fi
127    
128     dnl Checks for libraries.
129     AC_CHECK_LIB(posix4, sem_init)
130     AC_CHECK_LIB(rt, timer_create)
131 gbeauche 1.34 AC_CHECK_LIB(rt, shm_open)
132 gbeauche 1.1
133 gbeauche 1.26 dnl Do we need SDL?
134     WANT_SDL=no
135     if [[ "x$WANT_SDL_VIDEO" = "xyes" ]]; then
136     WANT_SDL=yes
137     WANT_XF86_DGA=no
138     WANT_XF86_VIDMODE=no
139     WANT_FBDEV_DGA=no
140 gbeauche 1.31 SDL_SUPPORT="$SDL_SUPPORT video"
141     fi
142     if [[ "x$WANT_SDL_AUDIO" = "xyes" ]]; then
143     WANT_SDL=yes
144     SDL_SUPPORT="$SDL_SUPPORT audio"
145 gbeauche 1.26 fi
146     if [[ "x$WANT_SDL" = "xyes" ]]; then
147     AC_PATH_PROG(sdl_config, "sdl-config")
148     if [[ -n "$sdl_config" ]]; then
149 gbeauche 1.36 case $target_os in
150     # Special treatment for Cygwin so that we can still use the POSIX layer
151     *cygwin*)
152     sdl_cflags="-I`$sdl_config --prefix`/include/SDL"
153     sdl_libs="-L`$sdl_config --exec-prefix`/lib -lSDL"
154     ;;
155     *)
156     sdl_cflags=`$sdl_config --cflags`
157 gbeauche 1.41 if [[ "x$WANT_SDL_STATIC" = "xyes" ]]; then
158     sdl_libs=`$sdl_config --static-libs`
159     else
160     sdl_libs=`$sdl_config --libs`
161     fi
162 gbeauche 1.36 ;;
163     esac
164 gbeauche 1.26 CFLAGS="$CFLAGS $sdl_cflags"
165     CXXFLAGS="$CXXFLAGS $sdl_cflags"
166     LIBS="$LIBS $sdl_libs"
167     else
168     WANT_SDL=no
169     fi
170 gbeauche 1.31 SDL_SUPPORT=`echo "$SDL_SUPPORT" | sed -e "s/^ //"`
171     else
172     SDL_SUPPORT="none"
173 gbeauche 1.26 fi
174    
175     dnl We need X11, if not using SDL.
176     if [[ "x$WANT_SDL" = "xno" ]]; then
177     AC_PATH_XTRA
178     if [[ "x$no_x" = "xyes" ]]; then
179     AC_MSG_ERROR([You need X11 to run Basilisk II.])
180     fi
181     CFLAGS="$CFLAGS $X_CFLAGS"
182     CXXFLAGS="$CXXFLAGS $X_CFLAGS"
183     LIBS="$LIBS $X_PRE_LIBS $X_LIBS -lX11 -lXext $X_EXTRA_LIBS"
184     fi
185 gbeauche 1.1
186     dnl We want pthreads. Try libpthread first, then libc_r (FreeBSD), then PTL.
187     HAVE_PTHREADS=yes
188     AC_CHECK_LIB(pthread, pthread_create, , [
189     AC_CHECK_LIB(c_r, pthread_create, , [
190     AC_CHECK_LIB(PTL, pthread_create, , [
191     HAVE_PTHREADS=no
192     ])
193     ])
194     ])
195     if [[ "x$HAVE_PTHREADS" = "xyes" ]]; then
196     AC_DEFINE(HAVE_PTHREADS, 1, [Define if pthreads are available.])
197     fi
198     AC_CHECK_FUNCS(pthread_cancel)
199     AC_CHECK_FUNCS(pthread_mutexattr_setprotocol)
200     AC_CHECK_FUNCS(pthread_mutexattr_settype)
201 gbeauche 1.3 AC_CHECK_FUNCS(pthread_mutexattr_setpshared)
202 gbeauche 1.1
203     dnl If POSIX.4 semaphores are not available, we emulate them with pthread mutexes.
204     SEMSRC=
205     AC_CHECK_FUNCS(sem_init, , [
206     if test "x$HAVE_PTHREADS" = "xyes"; then
207     SEMSRC=posix_sem.cpp
208     fi
209     ])
210    
211     dnl We use DGA (XFree86 or fbdev) if possible.
212     if [[ "x$WANT_XF86_DGA" = "xyes" ]]; then
213     AC_CHECK_LIB(Xxf86dga, XF86DGAQueryExtension, [
214     AC_DEFINE(ENABLE_XF86_DGA, 1, [Define if using XFree86 DGA extension.])
215     LIBS="$LIBS -lXxf86dga"
216     if [[ "x$WANT_FBDEV_DGA" = "xyes" ]]; then
217     AC_MSG_WARN([Cannot have both --enable-xf86-dga and --enable-fbdev-dga, ignoring --enable-fbdev-dga.])
218     WANT_FBDEV_DGA=no
219     fi
220     ], [
221     AC_MSG_WARN([Could not find XFree86 DGA extension, ignoring --enable-xf86-dga.])
222     WANT_XF86_DGA=no
223     ])
224     fi
225     if [[ "x$WANT_FBDEV_DGA" = "xyes" ]]; then
226     AC_DEFINE(ENABLE_FBDEV_DGA, 1, [Define if using DGA with framebuffer device.])
227     fi
228    
229     dnl We use XFree86 VidMode if possible.
230     if [[ "x$WANT_XF86_VIDMODE" = "xyes" ]]; then
231     AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension, [
232     AC_DEFINE(ENABLE_XF86_VIDMODE, 1, [Define if using XFree86 DGA extension.])
233     LIBS="$LIBS -lXxf86vm"
234     ], [
235     AC_MSG_WARN([Could not find XFree86 VidMode extension, ignoring --enable-xf86-vidmode.])
236     WANT_XF86_VIDMODE=no
237     ])
238     fi
239    
240     dnl We use GTK+ if possible.
241     UISRCS=../dummy/prefs_editor_dummy.cpp
242     if [[ "x$WANT_GTK" = "xyes" ]]; then
243     AM_PATH_GTK(1.2.0, [
244     AC_DEFINE(ENABLE_GTK, 1, [Define if using GTK.])
245     CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
246     LIBS="$LIBS $GTK_LIBS"
247     UISRCS=prefs_editor_gtk.cpp
248 gbeauche 1.18 dnl somehow, <gnome-i18n.h> would redefine gettext() to nothing if
249     dnl ENABLE_NLS is not set, thusly conflicting with C++ <string> which
250     dnl includes <libintl.h>
251     AM_GNU_GETTEXT
252 gbeauche 1.1 B2_PATH_GNOMEUI([
253     AC_DEFINE(HAVE_GNOMEUI, 1, [Define if libgnomeui is available.])
254     CXXFLAGS="$CXXFLAGS $GNOMEUI_CFLAGS"
255     LIBS="$LIBS $GNOMEUI_LIBS"
256     ], [])
257     ], [
258     AC_MSG_WARN([Could not find GTK+, disabling user interface.])
259     WANT_GTK=no
260     ])
261     fi
262    
263     dnl We use ESD if possible.
264     if [[ "x$WANT_ESD" = "xyes" ]]; then
265     AM_PATH_ESD(0.2.8, [
266     AC_DEFINE(ENABLE_ESD, 1, [Define is using ESD.])
267     CFLAGS="$CFLAGS $ESD_CFLAGS"
268     CXXFLAGS="$CXXFLAGS $ESD_CFLAGS"
269     LIBS="$LIBS $ESD_LIBS"
270     ], [
271     AC_MSG_WARN([Could not find ESD, disabling ESD support.])
272     WANT_ESD=no
273     ])
274     fi
275    
276     dnl We use 64-bit file size support if possible.
277     AC_SYS_LARGEFILE
278    
279     dnl Checks for header files.
280     AC_HEADER_STDC
281 gbeauche 1.24 AC_CHECK_HEADERS(unistd.h fcntl.h sys/types.h sys/time.h sys/mman.h mach/mach.h)
282 gbeauche 1.20 AC_CHECK_HEADERS(readline.h history.h readline/readline.h readline/history.h)
283 gbeauche 1.42 AC_CHECK_HEADERS(sys/socket.h sys/ioctl.h sys/filio.h sys/bitypes.h sys/wait.h)
284     AC_CHECK_HEADERS(sys/poll.h sys/select.h)
285 gbeauche 1.39 AC_CHECK_HEADERS(arpa/inet.h)
286 gbeauche 1.35 AC_CHECK_HEADERS(linux/if.h linux/if_tun.h net/if.h net/if_tun.h, [], [], [
287 gbeauche 1.42 #ifdef HAVE_SYS_TYPES_H
288     #include <sys/types.h>
289     #endif
290 gbeauche 1.35 #ifdef HAVE_SYS_SOCKET_H
291     #include <sys/socket.h>
292     #endif
293     ])
294 gbeauche 1.30 AC_CHECK_HEADERS(AvailabilityMacros.h)
295 gbeauche 1.1
296     dnl Checks for typedefs, structures, and compiler characteristics.
297     AC_C_BIGENDIAN
298     AC_C_CONST
299     AC_C_INLINE
300     AC_CHECK_SIZEOF(short, 2)
301     AC_CHECK_SIZEOF(int, 4)
302     AC_CHECK_SIZEOF(long, 4)
303     AC_CHECK_SIZEOF(long long, 8)
304     AC_CHECK_SIZEOF(float, 4)
305     AC_CHECK_SIZEOF(double, 8)
306     AC_CHECK_SIZEOF(long double, 12)
307     AC_CHECK_SIZEOF(void *, 4)
308     AC_TYPE_OFF_T
309 gbeauche 1.24 AC_CHECK_TYPES(loff_t)
310     AC_CHECK_TYPES(caddr_t)
311 gbeauche 1.1 AC_TYPE_SIZE_T
312     AC_TYPE_SIGNAL
313     AC_HEADER_TIME
314     AC_STRUCT_TM
315    
316     dnl Check whether sys/socket.h defines type socklen_t.
317     dnl (extracted from ac-archive/Miscellaneous)
318     AC_CACHE_CHECK([for socklen_t],
319     ac_cv_type_socklen_t, [
320     AC_TRY_COMPILE([
321     #include <sys/types.h>
322     #include <sys/socket.h>
323     ], [socklen_t len = 42; return 0;],
324     ac_cv_type_socklen_t=yes, ac_cv_type_socklen_t=no,
325     dnl When cross-compiling, do not assume anything.
326     ac_cv_type_socklen_t="guessing no"
327     )
328     ])
329     if [[ "x$ac_cv_type_socklen_t" != "xyes" ]]; then
330     AC_DEFINE(socklen_t, int, [Define to 'int' if <sys/types.h> doesn't define.])
331     fi
332    
333     dnl Checks for library functions.
334 gbeauche 1.39 AC_CHECK_FUNCS(strdup strerror cfmakeraw)
335 gbeauche 1.1 AC_CHECK_FUNCS(clock_gettime timer_create)
336     AC_CHECK_FUNCS(sigaction signal)
337     AC_CHECK_FUNCS(mmap mprotect munmap)
338     AC_CHECK_FUNCS(vm_allocate vm_deallocate vm_protect)
339 gbeauche 1.42 AC_CHECK_FUNCS(poll inet_aton)
340 gbeauche 1.1
341     dnl Darwin seems to define mach_task_self() instead of task_self().
342     AC_CHECK_FUNCS(mach_task_self task_self)
343    
344     dnl Check for headers and functions related to pty support (sshpty.c)
345     dnl From openssh-3.2.2p1 configure.ac
346    
347     AC_CHECK_HEADERS(strings.h login.h sys/bsdtty.h sys/stat.h util.h pty.h)
348     AC_CHECK_FUNCS(_getpty vhangup strlcpy)
349    
350     case "$host" in
351     *-*-hpux10.26)
352     disable_ptmx_check=yes
353     ;;
354     *-*-linux*)
355     no_dev_ptmx=1
356     ;;
357     mips-sony-bsd|mips-sony-newsos4)
358     AC_DEFINE(HAVE_NEWS4, 1, [Define if you are on NEWS-OS (additions from openssh-3.2.2p1, for sshpty.c).])
359     ;;
360     *-*-sco3.2v4*)
361     no_dev_ptmx=1
362     ;;
363     *-*-sco3.2v5*)
364     no_dev_ptmx=1
365     ;;
366 gbeauche 1.36 *-*-cygwin*)
367     no_dev_ptmx=1
368     ;;
369 gbeauche 1.1 esac
370    
371     if test -z "$no_dev_ptmx" ; then
372     if test "x$disable_ptmx_check" != "xyes" ; then
373     AC_CHECK_FILE([/dev/ptmx],
374     [
375     AC_DEFINE_UNQUOTED(HAVE_DEV_PTMX, 1, [Define if you have /dev/ptmx.])
376     have_dev_ptmx=1
377     ]
378     )
379     fi
380     fi
381     AC_CHECK_FILE([/dev/ptc],
382     [
383     AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC, 1, [Define if you have /dev/ptc.])
384     have_dev_ptc=1
385     ]
386     )
387    
388     dnl (end of code from openssh-3.2.2p1 configure.ac)
389    
390    
391 gbeauche 1.30 dnl AC_CHECK_FRAMEWORK($1=NAME, $2=INCLUDES)
392     AC_DEFUN(AC_CHECK_FRAMEWORK, [
393     AS_VAR_PUSHDEF([ac_Framework], [ac_cv_framework_$1])dnl
394     AC_CACHE_CHECK([whether compiler supports framework $1],
395     ac_Framework, [
396     saved_LIBS="$LIBS"
397     LIBS="$LIBS -framework $1"
398     AC_TRY_LINK(
399     [$2], [int main(void) { return 0; }],
400     [AS_VAR_SET(ac_Framework, yes)], [AS_VAR_SET(ac_Framework, no); LIBS="$saved_LIBS"]
401     )
402     ])
403     AS_IF([test AS_VAR_GET(ac_Framework) = yes],
404     [AC_DEFINE(AS_TR_CPP(HAVE_FRAMEWORK_$1), 1, [Define if framework $1 is available.])]
405     )
406     AS_VAR_POPDEF([ac_Framework])dnl
407     ])
408    
409     dnl Check for some MacOS X frameworks
410     AC_CHECK_FRAMEWORK(Carbon, [#include <Carbon/Carbon.h>])
411     AC_CHECK_FRAMEWORK(IOKit, [#include <IOKit/IOKitLib.h>])
412    
413 gbeauche 1.1 dnl Select system-dependant source files.
414     SERIALSRC=serial_unix.cpp
415     ETHERSRC=../dummy/ether_dummy.cpp
416     SCSISRC=../dummy/scsi_dummy.cpp
417     AUDIOSRC=../dummy/audio_dummy.cpp
418 gbeauche 1.41 EXTFSSRC=extfs_unix.cpp
419 gbeauche 1.1 EXTRASYSSRCS=
420     CAN_NATIVE_M68K=no
421     case "$target_os" in
422     linux*)
423     ETHERSRC=ether_unix.cpp
424     AUDIOSRC=audio_oss_esd.cpp
425     SCSISRC=Linux/scsi_linux.cpp
426     ;;
427     freebsd*)
428     ETHERSRC=ether_unix.cpp
429     AUDIOSRC=audio_oss_esd.cpp
430     DEFINES="$DEFINES -DBSD_COMP"
431     CXXFLAGS="$CXXFLAGS -fpermissive"
432     dnl Check for the CAM library
433     AC_CHECK_LIB(cam, cam_open_btl, HAVE_LIBCAM=yes, HAVE_LIBCAM=no)
434     if [[ "x$HAVE_LIBCAM" = "xno" ]]; then
435     AC_MSG_WARN([Cannot find libcam for SCSI management, disabling SCSI support.])
436     else
437     dnl Check for the sys kernel includes
438     AC_CHECK_HEADER(camlib.h)
439     if [[ "x$ac_cv_header_camlib_h" = "xno" ]]; then
440     dnl In this case I should fix this thing including a "patch"
441     dnl to access directly to the functions in the kernel :) --Orlando
442     AC_MSG_WARN([Cannot find includes for CAM library, disabling SCSI support.])
443     else
444     SCSISRC=FreeBSD/scsi_freebsd.cpp
445     LIBS="$LIBS -lcam"
446     DEFINES="$DEFINES -DCAM"
447     fi
448     fi
449     ;;
450     netbsd*)
451     CAN_NATIVE_M68K=yes
452     ;;
453     solaris*)
454     AUDIOSRC=Solaris/audio_solaris.cpp
455     DEFINES="$DEFINES -DBSD_COMP -D_POSIX_PTHREAD_SEMANTICS"
456     ;;
457     irix*)
458     ETHERSRC=ether_unix.cpp
459     AUDIOSRC=Irix/audio_irix.cpp
460     EXTRASYSSRCS=Irix/unaligned.c
461     dnl IRIX headers work fine, but somehow don't define or use "STDC_HEADERS"
462     DEFINES="$DEFINES -DCRTSCTS=CNEW_RTSCTS -DB230400=B115200 -DSTDC_HEADERS"
463     LIBS="$LIBS -laudio"
464     WANT_ESD=no
465    
466 gbeauche 1.14 dnl Check if our compiler supports -IPA (MIPSPro)
467     HAVE_IPA=no
468 gbeauche 1.1 ocflags="$CFLAGS"
469 gbeauche 1.14 CFLAGS=`echo "$CFLAGS -IPA" | sed -e "s/-g//g"`
470     AC_MSG_CHECKING(if "-IPA" works)
471 gbeauche 1.1 dnl Do a test compile of an empty function
472 gbeauche 1.14 AC_TRY_COMPILE(,, [AC_MSG_RESULT(yes); HAVE_IPA=yes], AC_MSG_RESULT(no))
473 gbeauche 1.1 CFLAGS="$ocflags"
474 gbeauche 1.30 ;;
475     darwin*)
476     if [[ "x$ac_cv_framework_IOKit" = "xyes" ]]; then
477     EXTRASYSSRCS="../MacOSX/sys_darwin.cpp"
478     fi
479 gbeauche 1.41 if [[ "x$ac_cv_framework_Carbon" = "xyes" ]]; then
480     EXTFSSRC=../MacOSX/extfs_macosx.mm
481     fi
482 gbeauche 1.1 ;;
483 gbeauche 1.36 cygwin*)
484     SERIALSRC="../dummy/serial_dummy.cpp"
485 gbeauche 1.37 EXTRASYSSRCS="../Windows/BasiliskII.rc"
486 gbeauche 1.36 ;;
487 gbeauche 1.1 esac
488 gbeauche 1.26 dnl SDL overrides
489     if [[ "x$WANT_SDL" = "xyes" ]]; then
490     AC_DEFINE(USE_SDL, 1, [Define to enble SDL support])
491     fi
492     if [[ "x$WANT_SDL_VIDEO" = "xyes" ]]; then
493 gbeauche 1.31 AC_DEFINE(USE_SDL_VIDEO, 1, [Define to enable SDL video graphics support])
494 gbeauche 1.30 VIDEOSRCS="../SDL/video_sdl.cpp"
495 gbeauche 1.29 KEYCODES="../SDL/keycodes"
496 gbeauche 1.30 if [[ "x$ac_cv_framework_Carbon" = "xyes" ]]; then
497     EXTRASYSSRCS="$EXTRASYSSRCS ../MacOSX/clip_macosx.cpp"
498     else
499 gbeauche 1.38 case "$target_os" in
500     cygwin*)
501     EXTRASYSSRCS="$EXTRASYSSRCS ../Windows/clip_windows.cpp"
502     ;;
503     *)
504     EXTRASYSSRCS="$EXTRASYSSRCS ../dummy/clip_dummy.cpp"
505     ;;
506     esac
507 gbeauche 1.30 fi
508 gbeauche 1.26 else
509 gbeauche 1.30 VIDEOSRCS="video_x.cpp"
510 gbeauche 1.29 KEYCODES="keycodes"
511 gbeauche 1.30 EXTRASYSSRCS="$EXTRASYSSRCS clip_unix.cpp"
512 gbeauche 1.26 fi
513 gbeauche 1.31 if [[ "x$WANT_SDL_AUDIO" = "xyes" ]]; then
514     AC_DEFINE(USE_SDL_AUDIO, 1, [Define to enable SDL audio support])
515     AUDIOSRC="../SDL/audio_sdl.cpp"
516     fi
517 gbeauche 1.1
518     dnl Use 68k CPU natively?
519     WANT_NATIVE_M68K=no
520     if [[ "x$HAVE_M68K" = "xyes" -a "x$CAN_NATIVE_M68K" = "xyes" ]]; then
521     AC_DEFINE(ENABLE_NATIVE_M68K, 1, [Define if using native 68k mode.])
522     WANT_NATIVE_M68K=yes
523     fi
524    
525     if [[ "x$HAVE_PTHREADS" = "xno" ]]; then
526     dnl Serial, ethernet and audio support needs pthreads
527     AC_MSG_WARN([You don't have pthreads, disabling serial, ethernet and audio support.])
528     SERIALSRC=../dummy/serial_dummy.cpp
529     ETHERSRC=../dummy/ether_dummy.cpp
530     AUDIOSRC=../dummy/audio_dummy.cpp
531     fi
532 gbeauche 1.41 SYSSRCS="$VIDEOSRCS $EXTFSSRC $SERIALSRC $ETHERSRC $SCSISRC $AUDIOSRC $SEMSRC $UISRCS $MONSRCS $EXTRASYSSRCS"
533 gbeauche 1.1
534     dnl Define a macro that translates a yesno-variable into a C macro definition
535     dnl to be put into the config.h file
536     dnl $1 -- the macro to define
537     dnl $2 -- the value to translate
538     dnl $3 -- template name
539     AC_DEFUN(AC_TRANSLATE_DEFINE, [
540     if [[ "x$2" = "xyes" -o "x$2" = "xguessing yes" ]]; then
541     AC_DEFINE($1, 1, $3)
542     fi
543     ])
544    
545 gbeauche 1.25 dnl Check that the host supports TUN/TAP devices
546     AC_CACHE_CHECK([whether TUN/TAP is supported],
547     ac_cv_tun_tap_support, [
548     AC_TRY_COMPILE([
549     #if defined(HAVE_LINUX_IF_H) && defined(HAVE_LINUX_IF_TUN_H)
550     #include <linux/if.h>
551     #include <linux/if_tun.h>
552     #endif
553     #if defined(HAVE_NET_IF_H) && defined(HAVE_NET_IF_TUN_H)
554     #include <net/if.h>
555     #include <net/if_tun.h>
556     #endif
557     ], [
558     struct ifreq ifr;
559     memset(&ifr, 0, sizeof(ifr));
560     ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
561     ],
562     ac_cv_tun_tap_support=yes, ac_cv_tun_tap_support=no
563     )
564     ])
565     AC_TRANSLATE_DEFINE(ENABLE_TUNTAP, "$ac_cv_tun_tap_support",
566     [Define if your system supports TUN/TAP devices.])
567    
568 gbeauche 1.1 dnl Various checks if the system supports vm_allocate() and the like functions.
569     have_mach_vm=no
570     if [[ "x$ac_cv_func_vm_allocate" = "xyes" -a "x$ac_cv_func_vm_deallocate" = "xyes" -a \
571     "x$ac_cv_func_vm_protect" = "xyes" ]]; then
572     have_mach_vm=yes
573     fi
574     AC_TRANSLATE_DEFINE(HAVE_MACH_VM, "$have_mach_vm",
575     [Define if your system has a working vm_allocate()-based memory allocator.])
576    
577     dnl Check that vm_allocate(), vm_protect() work
578     if [[ "x$have_mach_vm" = "xyes" ]]; then
579    
580     AC_CACHE_CHECK([whether vm_protect works],
581     ac_cv_vm_protect_works, [
582     AC_LANG_SAVE
583     AC_LANG_CPLUSPLUS
584     ac_cv_vm_protect_works=yes
585     dnl First the tests that should segfault
586     for test_def in NONE_READ NONE_WRITE READ_WRITE; do
587     AC_TRY_RUN([
588     #define CONFIGURE_TEST_VM_MAP
589     #define TEST_VM_PROT_$test_def
590     #include "vm_alloc.cpp"
591     ], ac_cv_vm_protect_works=no, rm -f core,
592     dnl When cross-compiling, do not assume anything
593     ac_cv_vm_protect_works="guessing no"
594     )
595     done
596     AC_TRY_RUN([
597     #define CONFIGURE_TEST_VM_MAP
598     #define TEST_VM_PROT_RDWR_WRITE
599     #include "vm_alloc.cpp"
600     ], , ac_cv_vm_protect_works=no,
601     dnl When cross-compiling, do not assume anything
602     ac_cv_vm_protect_works="guessing no"
603     )
604     AC_LANG_RESTORE
605     ]
606     )
607    
608     dnl Remove support for vm_allocate() if vm_protect() does not work
609     if [[ "x$have_mach_vm" = "xyes" ]]; then
610     case $ac_cv_vm_protect_works in
611     *yes) have_mach_vm=yes;;
612     *no) have_mach_vm=no;;
613     esac
614     fi
615     AC_TRANSLATE_DEFINE(HAVE_MACH_VM, "$have_mach_vm",
616     [Define if your system has a working vm_allocate()-based memory allocator.])
617    
618     fi dnl HAVE_MACH_VM
619    
620     dnl Various checks if the system supports mmap() and the like functions.
621     dnl ... and Mach memory allocators are not supported
622     have_mmap_vm=no
623     if [[ "x$ac_cv_func_mmap" = "xyes" -a "x$ac_cv_func_munmap" = "xyes" -a \
624     "x$ac_cv_func_mprotect" = "xyes" ]]; then
625     if [[ "x$have_mach_vm" = "xno" ]]; then
626     have_mmap_vm=yes
627     fi
628     fi
629     AC_TRANSLATE_DEFINE(HAVE_MMAP_VM, "$have_mmap_vm",
630     [Define if your system has a working mmap()-based memory allocator.])
631    
632     dnl Check that mmap() and associated functions work.
633     if [[ "x$have_mmap_vm" = "xyes" ]]; then
634    
635     dnl Check if we have a working anonymous mmap()
636     AC_CACHE_CHECK([whether mmap supports MAP_ANON],
637     ac_cv_mmap_anon, [
638     AC_LANG_SAVE
639     AC_LANG_CPLUSPLUS
640     AC_TRY_RUN([
641     #define HAVE_MMAP_ANON
642     #define CONFIGURE_TEST_VM_MAP
643     #define TEST_VM_MMAP_ANON
644     #include "vm_alloc.cpp"
645     ], ac_cv_mmap_anon=yes, ac_cv_mmap_anon=no,
646     dnl When cross-compiling, do not assume anything.
647     ac_cv_mmap_anon="guessing no"
648     )
649     AC_LANG_RESTORE
650     ]
651     )
652     AC_TRANSLATE_DEFINE(HAVE_MMAP_ANON, "$ac_cv_mmap_anon",
653     [Define if <sys/mman.h> defines MAP_ANON and mmap()'ing with MAP_ANON works.])
654    
655     AC_CACHE_CHECK([whether mmap supports MAP_ANONYMOUS],
656     ac_cv_mmap_anonymous, [
657     AC_LANG_SAVE
658     AC_LANG_CPLUSPLUS
659     AC_TRY_RUN([
660     #define HAVE_MMAP_ANONYMOUS
661     #define CONFIGURE_TEST_VM_MAP
662     #define TEST_VM_MMAP_ANON
663     #include "vm_alloc.cpp"
664     ], ac_cv_mmap_anonymous=yes, ac_cv_mmap_anonymous=no,
665     dnl When cross-compiling, do not assume anything.
666     ac_cv_mmap_anonymous="guessing no"
667     )
668     AC_LANG_RESTORE
669     ]
670     )
671     AC_TRANSLATE_DEFINE(HAVE_MMAP_ANONYMOUS, "$ac_cv_mmap_anonymous",
672     [Define if <sys/mman.h> defines MAP_ANONYMOUS and mmap()'ing with MAP_ANONYMOUS works.])
673    
674     AC_CACHE_CHECK([whether mprotect works],
675     ac_cv_mprotect_works, [
676     AC_LANG_SAVE
677     AC_LANG_CPLUSPLUS
678     ac_cv_mprotect_works=yes
679     dnl First the tests that should segfault
680     for test_def in NONE_READ NONE_WRITE READ_WRITE; do
681     AC_TRY_RUN([
682     #define CONFIGURE_TEST_VM_MAP
683     #define TEST_VM_PROT_$test_def
684     #include "vm_alloc.cpp"
685     ], ac_cv_mprotect_works=no, rm -f core,
686     dnl When cross-compiling, do not assume anything
687     ac_cv_mprotect_works="guessing no"
688     )
689     done
690     AC_TRY_RUN([
691     #define CONFIGURE_TEST_VM_MAP
692     #define TEST_VM_PROT_RDWR_WRITE
693     #include "vm_alloc.cpp"
694     ], , ac_cv_mprotect_works=no,
695     dnl When cross-compiling, do not assume anything
696     ac_cv_mprotect_works="guessing no"
697     )
698     AC_LANG_RESTORE
699     ]
700     )
701    
702     dnl Remove support for mmap() if mprotect() does not work
703     if [[ "x$have_mmap_vm" = "xyes" ]]; then
704     case $ac_cv_mprotect_works in
705     *yes) have_mmap_vm=yes;;
706     *no) have_mmap_vm=no;;
707     esac
708     fi
709     AC_TRANSLATE_DEFINE(HAVE_MMAP_VM, $have_mmap_vm,
710     [Define if your system has a working mmap()-based memory allocator.])
711    
712     fi dnl HAVE_MMAP_VM
713    
714 gbeauche 1.23 dnl Check if we can modify the __PAGEZERO segment for use as Low Memory
715     AC_CACHE_CHECK([whether __PAGEZERO can be Low Memory area 0x0000-0x2000],
716     ac_cv_pagezero_hack, [
717     ac_cv_pagezero_hack=no
718     if AC_TRY_COMMAND([Darwin/testlmem.sh 0x2000]); then
719     ac_cv_pagezero_hack=yes
720     dnl might as well skip the test for mmap-able low memory
721     ac_cv_can_map_lm=no
722     fi
723     ])
724     AC_TRANSLATE_DEFINE(PAGEZERO_HACK, "$ac_cv_pagezero_hack",
725     [Define if the __PAGEZERO Mach-O Low Memory Globals hack works on this system.])
726    
727 gbeauche 1.1 dnl Check if we can mmap 0x2000 bytes from 0x0000
728     AC_CACHE_CHECK([whether we can map Low Memory area 0x0000-0x2000],
729     ac_cv_can_map_lm, [
730     AC_LANG_SAVE
731     AC_LANG_CPLUSPLUS
732     AC_TRY_RUN([
733     #include "vm_alloc.cpp"
734     int main(void) { /* returns 0 if we could map the lowmem globals */
735 gbeauche 1.15 volatile char * lm = 0;
736 gbeauche 1.1 if (vm_init() < 0) exit(1);
737 gbeauche 1.15 if (vm_acquire_fixed(0, 0x2000) < 0) exit(1);
738 gbeauche 1.1 lm[0] = 'z';
739     if (vm_release((char *)lm, 0x2000) < 0) exit(1);
740     vm_exit(); exit(0);
741     }
742     ], ac_cv_can_map_lm=yes, ac_cv_can_map_lm=no,
743     dnl When cross-compiling, do not assume anything.
744     ac_cv_can_map_lm="guessing no"
745     )
746     AC_LANG_RESTORE
747     ]
748     )
749    
750 gbeauche 1.34 dnl Check if we have POSIX shared memory support
751     AC_CACHE_CHECK([whether POSIX shared memory is working],
752     ac_cv_have_posix_shm, [
753     AC_LANG_SAVE
754     AC_LANG_CPLUSPLUS
755     AC_TRY_RUN([
756     #define HAVE_POSIX_SHM
757     #include "vm_alloc.cpp"
758     int main(void) { /* returns 0 if we have working POSIX shm */
759     if (vm_init() < 0) exit(2);
760     char *m1 = (char *)vm_acquire(32768, VM_MAP_DEFAULT | VM_MAP_33BIT);
761     if (m1 == VM_MAP_FAILED) exit(3);
762     vm_exit(); exit(0);
763     }
764     ], ac_cv_have_posix_shm=yes, ac_cv_have_posix_shm=no,
765     dnl When cross-compiling, do not assume anything.
766     ac_cv_have_posix_shm="guessing no"
767     )
768     AC_LANG_RESTORE
769     ]
770     )
771     AC_TRANSLATE_DEFINE(HAVE_POSIX_SHM, "$ac_cv_have_posix_shm",
772     [Define if your system supports POSIX shared memory.])
773    
774     dnl Check if we have working 33-bit memory addressing
775     AC_CACHE_CHECK([whether 33-bit memory addressing is working],
776     ac_cv_have_33bit_addressing, [
777     AC_LANG_SAVE
778     AC_LANG_CPLUSPLUS
779     AC_TRY_RUN([
780     #define USE_33BIT_ADDRESSING 1
781     #include "vm_alloc.cpp"
782     int main(void) { /* returns 0 if we have working 33-bit addressing */
783     if (sizeof(void *) < 8) exit(1);
784     if (vm_init() < 0) exit(2);
785     char *m1 = (char *)vm_acquire(32768, VM_MAP_DEFAULT | VM_MAP_33BIT);
786     if (m1 == VM_MAP_FAILED) exit(3);
787     char *m2 = m1 + (1L << 32);
788     m1[0] = 0x12; if (m2[0] != 0x12) exit(4);
789     m2[0] = 0x34; if (m1[0] != 0x34) exit(5);
790     vm_exit(); exit(0);
791     }
792     ], ac_cv_have_33bit_addressing=yes, ac_cv_have_33bit_addressing=no,
793     dnl When cross-compiling, do not assume anything.
794     ac_cv_have_33bit_addressing="guessing no"
795     )
796     AC_LANG_RESTORE
797     ]
798     )
799    
800 gbeauche 1.1 dnl Check signal handlers need to be reinstalled
801     AC_CACHE_CHECK([whether signal handlers need to be reinstalled],
802     ac_cv_signal_need_reinstall, [
803     AC_LANG_SAVE
804     AC_LANG_CPLUSPLUS
805     AC_TRY_RUN([
806     #include <stdlib.h>
807     #ifdef HAVE_UNISTD_H
808     #include <unistd.h>
809     #endif
810     #include <signal.h>
811     static int handled_signal = 0;
812     RETSIGTYPE sigusr1_handler(int) { handled_signal++; }
813     int main(void) { /* returns 0 if signals need not to be reinstalled */
814     signal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1);
815     exit(handled_signal == 2);
816     }
817     ], ac_cv_signal_need_reinstall=yes, ac_cv_signal_need_reinstall=no,
818     dnl When cross-compiling, do not assume anything.
819     ac_cv_signal_need_reinstall="guessing yes"
820     )
821     AC_LANG_RESTORE
822     ]
823     )
824     AC_TRANSLATE_DEFINE(SIGNAL_NEED_REINSTALL, "$ac_cv_signal_need_reinstall",
825     [Define if your system requires signals to be reinstalled.])
826    
827     dnl Check if sigaction handlers need to be reinstalled
828     AC_CACHE_CHECK([whether sigaction handlers need to be reinstalled],
829     ac_cv_sigaction_need_reinstall, [
830     AC_LANG_SAVE
831     AC_LANG_CPLUSPLUS
832     AC_TRY_RUN([
833     #include <stdlib.h>
834     #ifdef HAVE_UNISTD_H
835     #include <unistd.h>
836     #endif
837     #include <signal.h>
838     static int handled_signal = 0;
839     RETSIGTYPE sigusr1_handler(int) { handled_signal++; }
840     typedef RETSIGTYPE (*signal_handler)(int);
841     static signal_handler mysignal(int sig, signal_handler handler) {
842     struct sigaction old_sa;
843     struct sigaction new_sa;
844     new_sa.sa_handler = handler;
845     return ((sigaction(sig,&new_sa,&old_sa) < 0) ? SIG_IGN : old_sa.sa_handler);
846     }
847     int main(void) { /* returns 0 if signals need not to be reinstalled */
848     mysignal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1);
849     exit(handled_signal == 2);
850     }
851     ], ac_cv_sigaction_need_reinstall=yes, ac_cv_sigaction_need_reinstall=no,
852     dnl When cross-compiling, do not assume anything.
853     ac_cv_sigaction_need_reinstall="guessing yes"
854     )
855     AC_LANG_RESTORE
856     ]
857     )
858     AC_TRANSLATE_DEFINE(SIGACTION_NEED_REINSTALL, "$ac_cv_sigaction_need_reinstall",
859     [Define if your system requires sigactions to be reinstalled.])
860    
861 gbeauche 1.21 dnl Check if Mach exceptions supported.
862     AC_CACHE_CHECK([whether your system supports Mach exceptions],
863     ac_cv_have_mach_exceptions, [
864 gbeauche 1.1 AC_LANG_SAVE
865     AC_LANG_CPLUSPLUS
866     AC_TRY_RUN([
867 gbeauche 1.21 #define HAVE_MACH_EXCEPTIONS 1
868 gbeauche 1.1 #define CONFIGURE_TEST_SIGSEGV_RECOVERY
869     #include "vm_alloc.cpp"
870     #include "sigsegv.cpp"
871 gbeauche 1.21 ], [
872     sigsegv_recovery=mach
873     ac_cv_have_mach_exceptions=yes
874     ],
875     ac_cv_have_mach_exceptions=no,
876 gbeauche 1.1 dnl When cross-compiling, do not assume anything.
877 gbeauche 1.21 ac_cv_have_mach_exceptions=no
878 gbeauche 1.1 )
879     AC_LANG_RESTORE
880     ]
881     )
882 gbeauche 1.21 AC_TRANSLATE_DEFINE(HAVE_MACH_EXCEPTIONS, "$ac_cv_have_mach_exceptions",
883     [Define if your system supports Mach exceptions.])
884    
885 gbeauche 1.36 dnl Check if Windows exceptions are supported.
886     AC_CACHE_CHECK([whether your system supports Windows exceptions],
887     ac_cv_have_win32_exceptions, [
888     AC_LANG_SAVE
889     AC_LANG_CPLUSPLUS
890     AC_TRY_RUN([
891     #define HAVE_WIN32_EXCEPTIONS 1
892     #define CONFIGURE_TEST_SIGSEGV_RECOVERY
893     #include "vm_alloc.cpp"
894     #include "sigsegv.cpp"
895     ], [
896     sigsegv_recovery=win32
897     ac_cv_have_win32_exceptions=yes
898     ],
899     ac_cv_have_win32_exceptions=no,
900     dnl When cross-compiling, do not assume anything.
901     ac_cv_have_win32_exceptions=no
902     )
903     AC_LANG_RESTORE
904     ]
905     )
906     AC_TRANSLATE_DEFINE(HAVE_WIN32_EXCEPTIONS, "$ac_cv_have_win32_exceptions",
907     [Define if your system supports Windows exceptions.])
908    
909 gbeauche 1.21 dnl Otherwise, check if extended signals are supported.
910     if [[ -z "$sigsegv_recovery" ]]; then
911     AC_CACHE_CHECK([whether your system supports extended signal handlers],
912     ac_cv_have_extended_signals, [
913     AC_LANG_SAVE
914     AC_LANG_CPLUSPLUS
915     AC_TRY_RUN([
916     #define HAVE_SIGINFO_T 1
917     #define CONFIGURE_TEST_SIGSEGV_RECOVERY
918     #include "vm_alloc.cpp"
919     #include "sigsegv.cpp"
920     ], [
921     sigsegv_recovery=siginfo
922     ac_cv_have_extended_signals=yes
923     ],
924     ac_cv_have_extended_signals=no,
925     dnl When cross-compiling, do not assume anything.
926     ac_cv_have_extended_signals=no
927     )
928     AC_LANG_RESTORE
929     ]
930     )
931     AC_TRANSLATE_DEFINE(HAVE_SIGINFO_T, "$ac_cv_have_extended_signals",
932     [Define if your system support extended signals.])
933     fi
934 gbeauche 1.1
935     dnl Otherwise, check for subterfuges.
936 gbeauche 1.21 if [[ -z "$sigsegv_recovery" ]]; then
937 gbeauche 1.1 AC_CACHE_CHECK([whether we then have a subterfuge for your system],
938     ac_cv_have_sigcontext_hack, [
939     AC_LANG_SAVE
940     AC_LANG_CPLUSPLUS
941     AC_TRY_RUN([
942     #define HAVE_SIGCONTEXT_SUBTERFUGE 1
943     #define CONFIGURE_TEST_SIGSEGV_RECOVERY
944     #include "vm_alloc.cpp"
945     #include "sigsegv.cpp"
946 gbeauche 1.21 ], [
947     sigsegv_recovery=sigcontext
948     ac_cv_have_sigcontext_hack=yes
949     ],
950     ac_cv_have_sigcontext_hack=no,
951 gbeauche 1.1 dnl When cross-compiling, do not assume anything.
952     ac_cv_have_sigcontext_hack=no
953     )
954     AC_LANG_RESTORE
955     ])
956     AC_TRANSLATE_DEFINE(HAVE_SIGCONTEXT_SUBTERFUGE, "$ac_cv_have_sigcontext_hack",
957     [Define if we know a hack to replace siginfo_t->si_addr member.])
958     fi
959    
960     dnl Check if we can ignore the fault (instruction skipping in SIGSEGV handler)
961     AC_CACHE_CHECK([whether we can skip instruction in SIGSEGV handler],
962     ac_cv_have_skip_instruction, [
963     AC_LANG_SAVE
964     AC_LANG_CPLUSPLUS
965     AC_TRY_RUN([
966     #define HAVE_SIGSEGV_SKIP_INSTRUCTION 1
967     #define CONFIGURE_TEST_SIGSEGV_RECOVERY
968     #include "vm_alloc.cpp"
969     #include "sigsegv.cpp"
970     ], ac_cv_have_skip_instruction=yes, ac_cv_have_skip_instruction=no,
971     dnl When cross-compiling, do not assume anything.
972     ac_cv_have_skip_instruction=no
973     )
974     AC_LANG_RESTORE
975     ]
976     )
977     AC_TRANSLATE_DEFINE(HAVE_SIGSEGV_SKIP_INSTRUCTION, "$ac_cv_have_skip_instruction",
978     [Define if we can ignore the fault (instruction skipping in SIGSEGV handler).])
979    
980     dnl Can we do Video on SEGV Signals ?
981     CAN_VOSF=no
982 gbeauche 1.21 if [[ -n "$sigsegv_recovery" ]]; then
983 gbeauche 1.1 CAN_VOSF=yes
984     fi
985    
986 gbeauche 1.23 dnl A dummy program that returns always true
987 gbeauche 1.28 AC_PATH_PROG([BLESS], "true")
988 gbeauche 1.23
989 gbeauche 1.1 dnl Determine the addressing mode to use
990     if [[ "x$WANT_NATIVE_M68K" = "xyes" ]]; then
991     ADDRESSING_MODE="real"
992     else
993     ADDRESSING_MODE=""
994     AC_MSG_CHECKING([for the addressing mode to use])
995     for am in $ADDRESSING_TEST_ORDER; do
996     case $am in
997     real)
998     dnl Requires ability to mmap() Low Memory globals
999 gbeauche 1.23 if [[ "x$ac_cv_can_map_lm$ac_cv_pagezero_hack" = "xnono" ]]; then
1000 gbeauche 1.1 continue
1001     fi
1002 gbeauche 1.23 dnl Requires VOSF screen updates
1003 gbeauche 1.1 if [[ "x$CAN_VOSF" = "xno" ]]; then
1004     continue
1005     fi
1006     dnl Real addressing will probably work.
1007     ADDRESSING_MODE="real"
1008     WANT_VOSF=yes dnl we can use VOSF and we need it actually
1009     DEFINES="$DEFINES -DREAL_ADDRESSING"
1010 gbeauche 1.23 if [[ "x$ac_cv_pagezero_hack" = "xyes" ]]; then
1011     BLESS=Darwin/lowmem
1012     LDFLAGS="$LDFLAGS -pagezero_size 0x2000"
1013     fi
1014 gbeauche 1.1 break
1015     ;;
1016     direct)
1017     dnl Requires VOSF screen updates
1018     if [[ "x$CAN_VOSF" = "xyes" ]]; then
1019     ADDRESSING_MODE="direct"
1020     WANT_VOSF=yes dnl we can use VOSF and we need it actually
1021     DEFINES="$DEFINES -DDIRECT_ADDRESSING"
1022     break
1023     fi
1024     ;;
1025     banks)
1026     dnl Default addressing mode
1027     ADDRESSING_MODE="memory banks"
1028     break
1029     ;;
1030     *)
1031     AC_MSG_ERROR([Internal configure.in script error for $am addressing mode])
1032     esac
1033     done
1034     AC_MSG_RESULT($ADDRESSING_MODE)
1035     if [[ "x$ADDRESSING_MODE" = "x" ]]; then
1036     AC_MSG_WARN([Sorry, no suitable addressing mode in $ADDRESSING_TEST_ORDER])
1037     ADDRESSING_MODE="memory banks"
1038     fi
1039     fi
1040    
1041 gbeauche 1.5 dnl Banked Memory Addressing mode is not supported by the JIT compiler
1042     if [[ "x$WANT_JIT" = "xyes" -a "x$ADDRESSING_MODE" = "xmemory banks" ]]; then
1043     AC_MSG_ERROR([Sorry, the JIT Compiler requires Direct Addressing, at least])
1044     fi
1045    
1046 gbeauche 1.1 dnl Enable VOSF screen updates with this feature is requested and feasible
1047     if [[ "x$WANT_VOSF" = "xyes" -a "x$CAN_VOSF" = "xyes" ]]; then
1048     AC_DEFINE(ENABLE_VOSF, 1, [Define if using video enabled on SEGV signals.])
1049     else
1050     WANT_VOSF=no
1051     fi
1052    
1053     dnl Check for GAS.
1054     HAVE_GAS=no
1055     AC_MSG_CHECKING(for GAS .p2align feature)
1056     cat >conftest.S << EOF
1057     .text
1058     .p2align 5
1059     EOF
1060     if $CC conftest.S -c -o conftest.o >/dev/null 2>&1 ; then HAVE_GAS=yes; fi
1061     AC_MSG_RESULT($HAVE_GAS)
1062    
1063     dnl Check for GCC 2.7 or higher.
1064     HAVE_GCC27=no
1065     AC_MSG_CHECKING(for GCC 2.7 or higher)
1066 cebix 1.17 AC_EGREP_CPP(xyes,
1067 gbeauche 1.1 [#if __GNUC__ - 1 > 1 || __GNUC_MINOR__ - 1 > 5
1068 cebix 1.17 xyes
1069 gbeauche 1.1 #endif
1070     ], [AC_MSG_RESULT(yes); HAVE_GCC27=yes], AC_MSG_RESULT(no))
1071    
1072     dnl Check for GCC 3.0 or higher.
1073     HAVE_GCC30=no
1074     AC_MSG_CHECKING(for GCC 3.0 or higher)
1075 cebix 1.17 AC_EGREP_CPP(xyes,
1076 gbeauche 1.1 [#if __GNUC__ >= 3
1077 cebix 1.17 xyes
1078 gbeauche 1.1 #endif
1079     ], [AC_MSG_RESULT(yes); HAVE_GCC30=yes], AC_MSG_RESULT(no))
1080    
1081 gbeauche 1.39 dnl Check for ICC.
1082     AC_MSG_CHECKING(for ICC)
1083     HAVE_ICC=no
1084     if $CXX -V -v 2>&1 | grep -q "Intel(R) C++ Compiler"; then
1085     HAVE_ICC=yes
1086     fi
1087     AC_MSG_RESULT($HAVE_ICC)
1088    
1089 gbeauche 1.1 dnl Set "-fomit-frame-pointer" on i386 GCC 2.7 or higher.
1090     dnl Also set "-fno-exceptions" for C++ because exception handling requires
1091     dnl the frame pointer.
1092     if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" ]]; then
1093     CFLAGS="$CFLAGS -fomit-frame-pointer"
1094     CXXFLAGS="$CXXFLAGS -fomit-frame-pointer -fno-exceptions"
1095     fi
1096    
1097     dnl (gb) Do not merge constants since it breaks fpu/fpu_x86.cpp.
1098     dnl As of 2001/08/02, this affects the following compilers:
1099     dnl Official: probably gcc-3.1 (mainline CVS)
1100     dnl Mandrake: gcc-2.96 >= 0.59mdk, gcc-3.0.1 >= 0.1mdk
1101     dnl Red Hat : gcc-2.96 >= 89, gcc-3.0 >= 1
1102 gbeauche 1.39 if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_ICC" = "xno" ]]; then
1103 gbeauche 1.1 SAVED_CXXFLAGS="$CXXFLAGS"
1104     CXXFLAGS="$CXXFLAGS -fno-merge-constants"
1105     AC_CACHE_CHECK([whether GCC supports constants merging], ac_cv_gcc_constants_merging, [
1106     AC_LANG_SAVE
1107     AC_LANG_CPLUSPLUS
1108     AC_TRY_COMPILE([],[],[ac_cv_gcc_constants_merging=yes],[ac_cv_gcc_constants_merging=no])
1109     AC_LANG_RESTORE
1110     ])
1111     if [[ "x$ac_cv_gcc_constants_merging" != "xyes" ]]; then
1112     CXXFLAGS="$SAVED_CXXFLAGS"
1113     fi
1114     fi
1115    
1116 gbeauche 1.33 dnl Store motion was introduced in 3.3-hammer branch and any gcc >= 3.4
1117     dnl However, there are some corner cases exposed on x86-64
1118 gbeauche 1.39 if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_ICC" = "xno" ]]; then
1119 gbeauche 1.33 SAVED_CXXFLAGS="$CXXFLAGS"
1120     CXXFLAGS="$CXXFLAGS -fno-gcse-sm"
1121     AC_CACHE_CHECK([whether GCC supports store motion], ac_cv_gcc_store_motion, [
1122     AC_LANG_SAVE
1123     AC_LANG_CPLUSPLUS
1124     AC_TRY_COMPILE([],[],[ac_cv_gcc_store_motion=yes],[ac_cv_gcc_store_motion=no])
1125     AC_LANG_RESTORE
1126     ])
1127     if [[ "x$ac_cv_gcc_store_motion" != "xyes" ]]; then
1128     CXXFLAGS="$SAVED_CXXFLAGS"
1129     fi
1130     fi
1131    
1132 gbeauche 1.39 dnl Add -fno-strict-aliasing for slirp sources
1133     if [[ "x$HAVE_GCC30" = "xyes" ]]; then
1134 gbeauche 1.40 SAVED_CFLAGS="$CFLAGS"
1135 gbeauche 1.39 CFLAGS="$CFLAGS -fno-strict-aliasing"
1136     AC_CACHE_CHECK([whether the compiler supports -fno-strict-aliasing],
1137     ac_cv_gcc_no_strict_aliasing, [
1138     AC_TRY_COMPILE([],[],
1139     [ac_cv_gcc_no_strict_aliasing=yes; AC_SUBST(SLIRP_CFLAGS, "$CFLAGS")],
1140     [ac_cv_gcc_no_strict_aliasing=no])
1141     ])
1142     CFLAGS="$SAVED_CFLAGS"
1143     fi
1144    
1145 gbeauche 1.1 dnl Select appropriate CPU source and REGPARAM define.
1146     ASM_OPTIMIZATIONS=none
1147     CPUSRCS="cpuemu1.cpp cpuemu2.cpp cpuemu3.cpp cpuemu4.cpp cpuemu5.cpp cpuemu6.cpp cpuemu7.cpp cpuemu8.cpp"
1148 gbeauche 1.5
1149     dnl (gb) JITSRCS will be emptied later if the JIT is not available
1150     dnl Other platforms should define their own set of noflags file variants
1151     CAN_JIT=no
1152     JITSRCS="compemu1.cpp compemu2.cpp compemu3.cpp compemu4.cpp compemu5.cpp compemu6.cpp compemu7.cpp compemu8.cpp"
1153    
1154 gbeauche 1.11 if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" ]]; then
1155 gbeauche 1.1 dnl i386 CPU
1156 gbeauche 1.7 DEFINES="$DEFINES -DUNALIGNED_PROFITABLE -DREGPARAM=\"__attribute__((regparm(3)))\""
1157 gbeauche 1.1 if [[ "x$HAVE_GAS" = "xyes" ]]; then
1158     ASM_OPTIMIZATIONS=i386
1159 gbeauche 1.7 DEFINES="$DEFINES -DX86_ASSEMBLY -DOPTIMIZED_FLAGS -DSAHF_SETO_PROFITABLE"
1160 gbeauche 1.10 JITSRCS="cpuemu1_nf.cpp cpuemu2_nf.cpp cpuemu3_nf.cpp cpuemu4_nf.cpp cpuemu5_nf.cpp cpuemu6_nf.cpp cpuemu7_nf.cpp cpuemu8_nf.cpp $JITSRCS"
1161 gbeauche 1.11 CAN_JIT=yes
1162 gbeauche 1.13 fi
1163     elif [[ "x$HAVE_GCC30" = "xyes" -a "x$HAVE_X86_64" = "xyes" ]]; then
1164     dnl x86-64 CPU
1165     DEFINES="$DEFINES -DUNALIGNED_PROFITABLE"
1166     if [[ "x$HAVE_GAS" = "xyes" ]]; then
1167     ASM_OPTIMIZATIONS="x86-64"
1168     DEFINES="$DEFINES -DX86_64_ASSEMBLY -DOPTIMIZED_FLAGS"
1169 gbeauche 1.32 JITSRCS="cpuemu1_nf.cpp cpuemu2_nf.cpp cpuemu3_nf.cpp cpuemu4_nf.cpp cpuemu5_nf.cpp cpuemu6_nf.cpp cpuemu7_nf.cpp cpuemu8_nf.cpp $JITSRCS"
1170     CAN_JIT=yes
1171 gbeauche 1.34 WANT_33BIT_ADDRESSING=yes
1172 gbeauche 1.1 fi
1173     elif [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_SPARC" = "xyes" -a "x$HAVE_GAS" = "xyes" ]]; then
1174     dnl SPARC CPU
1175     case "$target_os" in
1176     solaris*)
1177     AC_MSG_CHECKING(SPARC CPU architecture)
1178     SPARC_TYPE=`Solaris/which_sparc`
1179     AC_MSG_RESULT($SPARC_TYPE)
1180     case "$SPARC_TYPE" in
1181     SPARC_V8)
1182     ASM_OPTIMIZATIONS="SPARC V8 architecture"
1183     DEFINES="$DEFINES -DSPARC_V8_ASSEMBLY" dnl -DOPTIMIZED_FLAGS"
1184     CFLAGS="$CFLAGS -Wa,-Av8"
1185     CXXFLAGS="$CXXFLAGS -Wa,-Av8"
1186     ;;
1187     SPARC_V9)
1188     ASM_OPTIMIZATIONS="SPARC V9 architecture"
1189     DEFINES="$DEFINES -DSPARC_V9_ASSEMBLY" dnl -DOPTIMIZED_FLAGS"
1190     CFLAGS="$CFLAGS -Wa,-Av9"
1191     CXXFLAGS="$CXXFLAGS -Wa,-Av9"
1192     ;;
1193     esac
1194     ;;
1195     esac
1196     elif [[ "x$WANT_NATIVE_M68K" = "xyes" ]]; then
1197     dnl Native m68k, no emulation
1198     CPUINCLUDES="-I../native_cpu"
1199     CPUSRCS="asm_support.s"
1200     fi
1201    
1202 gbeauche 1.5 dnl Enable JIT compiler, if possible.
1203     if [[ "x$WANT_JIT" = "xyes" -a "x$CAN_JIT" ]]; then
1204     JITSRCS="$JITSRCS ../uae_cpu/compiler/compemu_support.cpp ../uae_cpu/compiler/compemu_fpp.cpp compstbl.o cpustbl_nf.o"
1205     DEFINES="$DEFINES -DUSE_JIT -DUSE_JIT_FPU"
1206    
1207     if [[ "x$WANT_JIT_DEBUG" = "xyes" ]]; then
1208     if [[ "x$WANT_MON" = "xyes" ]]; then
1209     DEFINES="$DEFINES -DJIT_DEBUG=1"
1210     else
1211     AC_MSG_WARN([cxmon not found, ignoring --enable-jit-debug])
1212     WANT_JIT_DEBUG=no
1213     fi
1214     fi
1215 gbeauche 1.8
1216     dnl IEEE core is the only FPU emulator to use with the JIT compiler
1217     case $FPE_CORE_TEST_ORDER in
1218     ieee*) ;;
1219     *) AC_MSG_WARN([Forcing use of the IEEE FPU core, as the JIT compiler supports only this one.]) ;;
1220     esac
1221     FPE_CORE_TEST_ORDER="ieee"
1222 gbeauche 1.5 else
1223     WANT_JIT=no
1224     WANT_JIT_DEBUG=no
1225     JITSRCS=""
1226     fi
1227    
1228 gbeauche 1.34 dnl Use 33-bit memory addressing?
1229     if [[ "$ac_cv_have_33bit_addressing:$WANT_33BIT_ADDRESSING" = "yes:yes" ]]; then
1230     use_33bit_addressing=yes
1231     fi
1232     AC_TRANSLATE_DEFINE(USE_33BIT_ADDRESSING, "$use_33bit_addressing",
1233     [Define to use 33-bit memory addressing on 64-bit JIT capable systems.])
1234    
1235 gbeauche 1.1 dnl Utility macro used by next two tests.
1236     dnl AC_EXAMINE_OBJECT(C source code,
1237     dnl commands examining object file,
1238     dnl [commands to run if compile failed]):
1239     dnl
1240     dnl Compile the source code to an object file; then convert it into a
1241     dnl printable representation. All unprintable characters and
1242     dnl asterisks (*) are replaced by dots (.). All white space is
1243     dnl deleted. Newlines (ASCII 0x10) in the input are preserved in the
1244     dnl output, but runs of newlines are compressed to a single newline.
1245     dnl Finally, line breaks are forcibly inserted so that no line is
1246     dnl longer than 80 columns and the file ends with a newline. The
1247     dnl result of all this processing is in the file conftest.dmp, which
1248     dnl may be examined by the commands in the second argument.
1249     dnl
1250     AC_DEFUN([gcc_AC_EXAMINE_OBJECT],
1251     [AC_LANG_SAVE
1252     AC_LANG_C
1253     dnl Next bit cribbed from AC_TRY_COMPILE.
1254     cat > conftest.$ac_ext <<EOF
1255     [#line __oline__ "configure"
1256     #include "confdefs.h"
1257     $1
1258     ]EOF
1259     if AC_TRY_EVAL(ac_compile); then
1260     od -c conftest.o |
1261     sed ['s/^[0-7]*[ ]*/ /
1262     s/\*/./g
1263     s/ \\n/*/g
1264     s/ [0-9][0-9][0-9]/./g
1265     s/ \\[^ ]/./g'] |
1266     tr -d '
1267     ' | tr -s '*' '
1268     ' | fold | sed '$a\
1269     ' > conftest.dmp
1270     $2
1271     ifelse($3, , , else
1272     $3
1273     )dnl
1274     fi
1275     rm -rf conftest*
1276     AC_LANG_RESTORE])
1277    
1278     dnl Floating point format probe.
1279     dnl The basic concept is the same as the above: grep the object
1280     dnl file for an interesting string. We have to watch out for
1281     dnl rounding changing the values in the object, however; this is
1282     dnl handled by ignoring the least significant byte of the float.
1283     dnl
1284     dnl Does not know about VAX G-float or C4x idiosyncratic format.
1285     dnl It does know about PDP-10 idiosyncratic format, but this is
1286     dnl not presently supported by GCC. S/390 "binary floating point"
1287     dnl is in fact IEEE (but maybe we should have that in EBCDIC as well
1288     dnl as ASCII?)
1289     dnl
1290     AC_DEFUN([gcc_AC_C_FLOAT_FORMAT],
1291     [AC_CACHE_CHECK(floating point format, ac_cv_c_float_format,
1292     [gcc_AC_EXAMINE_OBJECT(
1293     [/* This will not work unless sizeof(double) == 8. */
1294     extern char sizeof_double_must_be_8 [sizeof(double) == 8 ? 1 : -1];
1295    
1296     /* This structure must have no internal padding. */
1297     struct possibility {
1298     char prefix[8];
1299     double candidate;
1300     char postfix[8];
1301     };
1302    
1303     #define C(cand) { "\nformat:", cand, ":tamrof\n" }
1304     struct possibility table [] =
1305     {
1306     C( 3.25724264705901305206e+01), /* @@IEEEFP - IEEE 754 */
1307     C( 3.53802595280598432000e+18), /* D__float - VAX */
1308     C( 5.32201830133125317057e-19), /* D.PDP-10 - PDP-10 - the dot is 0x13a */
1309     C( 1.77977764695171661377e+10), /* IBMHEXFP - s/390 format, ascii */
1310     C(-5.22995989424860458374e+10) /* IBMHEXFP - s/390 format, EBCDIC */
1311     };],
1312     [if grep 'format:.@IEEEF.:tamrof' conftest.dmp >/dev/null 2>&1; then
1313     ac_cv_c_float_format='IEEE (big-endian)'
1314     elif grep 'format:.I@@PFE.:tamrof' conftest.dmp >/dev/null 2>&1; then
1315     ac_cv_c_float_format='IEEE (big-endian)'
1316     elif grep 'format:.FEEEI@.:tamrof' conftest.dmp >/dev/null 2>&1; then
1317     ac_cv_c_float_format='IEEE (little-endian)'
1318     elif grep 'format:.EFP@@I.:tamrof' conftest.dmp >/dev/null 2>&1; then
1319     ac_cv_c_float_format='IEEE (little-endian)'
1320     elif grep 'format:.__floa.:tamrof' conftest.dmp >/dev/null 2>&1; then
1321     ac_cv_c_float_format='VAX D-float'
1322     elif grep 'format:..PDP-1.:tamrof' conftest.dmp >/dev/null 2>&1; then
1323     ac_cv_c_float_format='PDP-10'
1324     elif grep 'format:.BMHEXF.:tamrof' conftest.dmp >/dev/null 2>&1; then
1325     ac_cv_c_float_format='IBM 370 hex'
1326     else
1327     AC_MSG_ERROR(Unknown floating point format)
1328     fi],
1329     [AC_MSG_ERROR(compile failed)])
1330     ])
1331     # IEEE is the default format. If the float endianness isn't the same
1332     # as the integer endianness, we have to set FLOAT_WORDS_BIG_ENDIAN
1333     # (which is a tristate: yes, no, default). This is only an issue with
1334     # IEEE; the other formats are only supported by a few machines each,
1335     # all with the same endianness.
1336     format=IEEE_FLOAT_FORMAT
1337     fbigend=
1338     case $ac_cv_c_float_format in
1339     'IEEE (big-endian)' )
1340     if test $ac_cv_c_bigendian = no; then
1341     fbigend=1
1342     fi
1343     ;;
1344     'IEEE (little-endian)' )
1345     if test $ac_cv_c_bigendian = yes; then
1346     fbigend=0
1347     fi
1348     ;;
1349     'VAX D-float' )
1350     format=VAX_FLOAT_FORMAT
1351     ;;
1352     'PDP-10' )
1353     format=PDP10_FLOAT_FORMAT
1354     ;;
1355     'IBM 370 hex' )
1356     format=IBM_FLOAT_FORMAT
1357     ;;
1358     esac
1359     AC_DEFINE_UNQUOTED(HOST_FLOAT_FORMAT, $format,
1360     [Define to the floating point format of the host machine.])
1361     if test -n "$fbigend"; then
1362     AC_DEFINE_UNQUOTED(HOST_FLOAT_WORDS_BIG_ENDIAN, $fbigend,
1363     [Define to 1 if the host machine stores floating point numbers in
1364     memory with the word containing the sign bit at the lowest address,
1365     or to 0 if it does it the other way around.
1366    
1367     This macro should not be defined if the ordering is the same as for
1368     multi-word integers.])
1369     fi
1370     ])
1371    
1372     dnl Select appropriate FPU source.
1373     gcc_AC_C_FLOAT_FORMAT
1374     AC_CHECK_HEADERS(ieee754.h ieeefp.h floatingpoint.h nan.h)
1375    
1376     for fpe in $FPE_CORE_TEST_ORDER; do
1377     case $fpe in
1378     ieee)
1379 gbeauche 1.2 case $ac_cv_c_float_format in
1380     IEEE*)
1381 gbeauche 1.1 FPE_CORE="IEEE fpu core"
1382     DEFINES="$DEFINES -DFPU_IEEE"
1383     FPUSRCS="../uae_cpu/fpu/fpu_ieee.cpp"
1384 gbeauche 1.4 dnl Math functions not mandated by C99 standard
1385     AC_CHECK_FUNCS(isnanl isinfl)
1386     dnl Math functions required by C99 standard, but probably not
1387     dnl implemented everywhere. In that case, we fall back to the
1388     dnl regular variant for doubles.
1389     AC_CHECK_FUNCS(logl log10l expl powl fabsl sqrtl)
1390     AC_CHECK_FUNCS(sinl cosl tanl sinhl coshl tanhl)
1391     AC_CHECK_FUNCS(asinl acosl atanl asinhl acoshl atanhl)
1392     AC_CHECK_FUNCS(floorl ceill)
1393 gbeauche 1.1 break
1394 gbeauche 1.2 ;;
1395     esac
1396 gbeauche 1.1 ;;
1397     x86)
1398     if [[ ":$HAVE_GCC27:$HAVE_I386:$HAVE_GAS:" = ":yes:yes:yes:" ]]; then
1399     FPE_CORE="i387 fpu core"
1400     DEFINES="$DEFINES -DFPU_X86"
1401     FPUSRCS="../uae_cpu/fpu/fpu_x86.cpp"
1402     break
1403     fi
1404     ;;
1405     uae)
1406     FPE_CORE="uae fpu core"
1407     DEFINES="$DEFINES -DFPU_UAE"
1408     FPUSRCS="../uae_cpu/fpu/fpu_uae.cpp"
1409     break
1410     ;;
1411     *)
1412     AC_MSG_ERROR([Internal configure.in script error for $fpe fpu core])
1413     ;;
1414     esac
1415     done
1416     if [[ "x$FPE_CORE" = "x" ]]; then
1417     AC_MSG_ERROR([Sorry, no suitable FPU core found in $FPE_CORE_TEST_ORDER])
1418     fi
1419    
1420     dnl Check for certain math functions
1421     AC_CHECK_FUNCS(atanh)
1422 gbeauche 1.4 AC_CHECK_FUNCS(isnan isinf finite isnormal signbit)
1423 gbeauche 1.1
1424     dnl UAE CPU sources for all non-m68k-native architectures.
1425     if [[ "x$WANT_NATIVE_M68K" = "xno" ]]; then
1426     CPUINCLUDES="-I../uae_cpu"
1427 gbeauche 1.5 CPUSRCS="../uae_cpu/basilisk_glue.cpp ../uae_cpu/memory.cpp ../uae_cpu/newcpu.cpp ../uae_cpu/readcpu.cpp $FPUSRCS cpustbl.cpp cpudefs.cpp $CPUSRCS $JITSRCS"
1428 gbeauche 1.1 fi
1429    
1430     dnl Remove the "-g" option if set for GCC.
1431     if [[ "x$HAVE_GCC27" = "xyes" ]]; then
1432 gbeauche 1.33 CFLAGS=`echo $CFLAGS | sed -e 's/-g\b//g'`
1433     CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-g\b//g'`
1434 gbeauche 1.1 fi
1435    
1436 gbeauche 1.14 dnl Or if we have -IPA (MIPSPro compilers)
1437     if [[ "x$HAVE_IPA" = "xyes" ]]; then
1438     CFLAGS="`echo $CFLAGS | sed -e 's/-g//g'` -O3 -OPT:Olimit=0 -IPA"
1439     CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-g//g'` -O3 -OPT:Olimit=0 -IPA"
1440 gbeauche 1.1 CXXFLAGS="-LANG:std $CXXFLAGS"
1441 gbeauche 1.14 LDFLAGS="$LDFLAGS -O3 -OPT:Olimit=0 -IPA"
1442 gbeauche 1.1 fi
1443    
1444     dnl Generate Makefile.
1445     AC_SUBST(DEFINES)
1446     AC_SUBST(SYSSRCS)
1447     AC_SUBST(CPUINCLUDES)
1448     AC_SUBST(CPUSRCS)
1449 gbeauche 1.23 AC_SUBST(BLESS)
1450 gbeauche 1.29 AC_SUBST(KEYCODES)
1451 cebix 1.16 AC_CONFIG_FILES([Makefile])
1452     AC_OUTPUT
1453 gbeauche 1.1
1454     dnl Print summary.
1455     echo
1456     echo Basilisk II configuration summary:
1457     echo
1458 gbeauche 1.26 echo SDL support ............................ : $SDL_SUPPORT
1459 gbeauche 1.1 echo XFree86 DGA support .................... : $WANT_XF86_DGA
1460     echo XFree86 VidMode support ................ : $WANT_XF86_VIDMODE
1461     echo fbdev DGA support ...................... : $WANT_FBDEV_DGA
1462     echo Enable video on SEGV signals ........... : $WANT_VOSF
1463     echo ESD sound support ...................... : $WANT_ESD
1464     echo GTK user interface ..................... : $WANT_GTK
1465     echo mon debugger support ................... : $WANT_MON
1466     echo Running m68k code natively ............. : $WANT_NATIVE_M68K
1467 gbeauche 1.5 echo Use JIT compiler ....................... : $WANT_JIT
1468     echo JIT debug mode ......................... : $WANT_JIT_DEBUG
1469 gbeauche 1.1 echo Floating-Point emulation core .......... : $FPE_CORE
1470     echo Assembly optimizations ................. : $ASM_OPTIMIZATIONS
1471     echo Addressing mode ........................ : $ADDRESSING_MODE
1472 gbeauche 1.21 echo Bad memory access recovery type ........ : $sigsegv_recovery
1473 gbeauche 1.1 echo
1474     echo "Configuration done. Now type \"make\" (or \"gmake\")."