ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/configure.ac
Revision: 1.40
Committed: 2005-05-13T11:13:26Z (19 years, 5 months ago) by gbeauche
Branch: MAIN
Changes since 1.39: +1 -1 lines
Log Message:
fix CFLAGS preservation

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