ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/configure.ac
Revision: 1.44
Committed: 2005-05-14T08:42:39Z (19 years, 5 months ago) by gbeauche
Branch: MAIN
Changes since 1.43: +1 -0 lines
Log Message:
ethernet/slirp works on netbsd too

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 gbeauche 1.44 ETHERSRC=ether_unix.cpp
453 gbeauche 1.1 ;;
454     solaris*)
455     AUDIOSRC=Solaris/audio_solaris.cpp
456     DEFINES="$DEFINES -DBSD_COMP -D_POSIX_PTHREAD_SEMANTICS"
457     ;;
458     irix*)
459     ETHERSRC=ether_unix.cpp
460     AUDIOSRC=Irix/audio_irix.cpp
461     EXTRASYSSRCS=Irix/unaligned.c
462     dnl IRIX headers work fine, but somehow don't define or use "STDC_HEADERS"
463     DEFINES="$DEFINES -DCRTSCTS=CNEW_RTSCTS -DB230400=B115200 -DSTDC_HEADERS"
464     LIBS="$LIBS -laudio"
465     WANT_ESD=no
466    
467 gbeauche 1.14 dnl Check if our compiler supports -IPA (MIPSPro)
468     HAVE_IPA=no
469 gbeauche 1.1 ocflags="$CFLAGS"
470 gbeauche 1.14 CFLAGS=`echo "$CFLAGS -IPA" | sed -e "s/-g//g"`
471     AC_MSG_CHECKING(if "-IPA" works)
472 gbeauche 1.1 dnl Do a test compile of an empty function
473 gbeauche 1.14 AC_TRY_COMPILE(,, [AC_MSG_RESULT(yes); HAVE_IPA=yes], AC_MSG_RESULT(no))
474 gbeauche 1.1 CFLAGS="$ocflags"
475 gbeauche 1.30 ;;
476     darwin*)
477     if [[ "x$ac_cv_framework_IOKit" = "xyes" ]]; then
478     EXTRASYSSRCS="../MacOSX/sys_darwin.cpp"
479     fi
480 gbeauche 1.41 if [[ "x$ac_cv_framework_Carbon" = "xyes" ]]; then
481     EXTFSSRC=../MacOSX/extfs_macosx.mm
482     fi
483 gbeauche 1.1 ;;
484 gbeauche 1.36 cygwin*)
485     SERIALSRC="../dummy/serial_dummy.cpp"
486 gbeauche 1.37 EXTRASYSSRCS="../Windows/BasiliskII.rc"
487 gbeauche 1.36 ;;
488 gbeauche 1.1 esac
489 gbeauche 1.43
490     dnl Is the slirp library supported?
491     if [[ "x$ETHERSRC" = "xether_unix.cpp" ]]; then
492     AC_DEFINE(HAVE_SLIRP, 1, [Define if slirp library is supported])
493     SLIRP_SRCS="\
494     ../slirp/bootp.c ../slirp/ip_output.c ../slirp/tcp_input.c \
495     ../slirp/cksum.c ../slirp/mbuf.c ../slirp/tcp_output.c \
496     ../slirp/debug.c ../slirp/misc.c ../slirp/tcp_subr.c \
497     ../slirp/if.c ../slirp/sbuf.c ../slirp/tcp_timer.c \
498     ../slirp/ip_icmp.c ../slirp/slirp.c ../slirp/tftp.c \
499     ../slirp/ip_input.c ../slirp/socket.c ../slirp/udp.c"
500     fi
501     AC_SUBST(SLIRP_SRCS)
502    
503 gbeauche 1.26 dnl SDL overrides
504     if [[ "x$WANT_SDL" = "xyes" ]]; then
505     AC_DEFINE(USE_SDL, 1, [Define to enble SDL support])
506     fi
507     if [[ "x$WANT_SDL_VIDEO" = "xyes" ]]; then
508 gbeauche 1.31 AC_DEFINE(USE_SDL_VIDEO, 1, [Define to enable SDL video graphics support])
509 gbeauche 1.30 VIDEOSRCS="../SDL/video_sdl.cpp"
510 gbeauche 1.29 KEYCODES="../SDL/keycodes"
511 gbeauche 1.30 if [[ "x$ac_cv_framework_Carbon" = "xyes" ]]; then
512     EXTRASYSSRCS="$EXTRASYSSRCS ../MacOSX/clip_macosx.cpp"
513     else
514 gbeauche 1.38 case "$target_os" in
515     cygwin*)
516     EXTRASYSSRCS="$EXTRASYSSRCS ../Windows/clip_windows.cpp"
517     ;;
518     *)
519     EXTRASYSSRCS="$EXTRASYSSRCS ../dummy/clip_dummy.cpp"
520     ;;
521     esac
522 gbeauche 1.30 fi
523 gbeauche 1.26 else
524 gbeauche 1.30 VIDEOSRCS="video_x.cpp"
525 gbeauche 1.29 KEYCODES="keycodes"
526 gbeauche 1.30 EXTRASYSSRCS="$EXTRASYSSRCS clip_unix.cpp"
527 gbeauche 1.26 fi
528 gbeauche 1.31 if [[ "x$WANT_SDL_AUDIO" = "xyes" ]]; then
529     AC_DEFINE(USE_SDL_AUDIO, 1, [Define to enable SDL audio support])
530     AUDIOSRC="../SDL/audio_sdl.cpp"
531     fi
532 gbeauche 1.1
533     dnl Use 68k CPU natively?
534     WANT_NATIVE_M68K=no
535     if [[ "x$HAVE_M68K" = "xyes" -a "x$CAN_NATIVE_M68K" = "xyes" ]]; then
536     AC_DEFINE(ENABLE_NATIVE_M68K, 1, [Define if using native 68k mode.])
537     WANT_NATIVE_M68K=yes
538     fi
539    
540     if [[ "x$HAVE_PTHREADS" = "xno" ]]; then
541     dnl Serial, ethernet and audio support needs pthreads
542     AC_MSG_WARN([You don't have pthreads, disabling serial, ethernet and audio support.])
543     SERIALSRC=../dummy/serial_dummy.cpp
544     ETHERSRC=../dummy/ether_dummy.cpp
545     AUDIOSRC=../dummy/audio_dummy.cpp
546     fi
547 gbeauche 1.41 SYSSRCS="$VIDEOSRCS $EXTFSSRC $SERIALSRC $ETHERSRC $SCSISRC $AUDIOSRC $SEMSRC $UISRCS $MONSRCS $EXTRASYSSRCS"
548 gbeauche 1.1
549     dnl Define a macro that translates a yesno-variable into a C macro definition
550     dnl to be put into the config.h file
551     dnl $1 -- the macro to define
552     dnl $2 -- the value to translate
553     dnl $3 -- template name
554     AC_DEFUN(AC_TRANSLATE_DEFINE, [
555     if [[ "x$2" = "xyes" -o "x$2" = "xguessing yes" ]]; then
556     AC_DEFINE($1, 1, $3)
557     fi
558     ])
559    
560 gbeauche 1.25 dnl Check that the host supports TUN/TAP devices
561     AC_CACHE_CHECK([whether TUN/TAP is supported],
562     ac_cv_tun_tap_support, [
563     AC_TRY_COMPILE([
564     #if defined(HAVE_LINUX_IF_H) && defined(HAVE_LINUX_IF_TUN_H)
565     #include <linux/if.h>
566     #include <linux/if_tun.h>
567     #endif
568     #if defined(HAVE_NET_IF_H) && defined(HAVE_NET_IF_TUN_H)
569     #include <net/if.h>
570     #include <net/if_tun.h>
571     #endif
572     ], [
573     struct ifreq ifr;
574     memset(&ifr, 0, sizeof(ifr));
575     ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
576     ],
577     ac_cv_tun_tap_support=yes, ac_cv_tun_tap_support=no
578     )
579     ])
580     AC_TRANSLATE_DEFINE(ENABLE_TUNTAP, "$ac_cv_tun_tap_support",
581     [Define if your system supports TUN/TAP devices.])
582    
583 gbeauche 1.1 dnl Various checks if the system supports vm_allocate() and the like functions.
584     have_mach_vm=no
585     if [[ "x$ac_cv_func_vm_allocate" = "xyes" -a "x$ac_cv_func_vm_deallocate" = "xyes" -a \
586     "x$ac_cv_func_vm_protect" = "xyes" ]]; then
587     have_mach_vm=yes
588     fi
589     AC_TRANSLATE_DEFINE(HAVE_MACH_VM, "$have_mach_vm",
590     [Define if your system has a working vm_allocate()-based memory allocator.])
591    
592     dnl Check that vm_allocate(), vm_protect() work
593     if [[ "x$have_mach_vm" = "xyes" ]]; then
594    
595     AC_CACHE_CHECK([whether vm_protect works],
596     ac_cv_vm_protect_works, [
597     AC_LANG_SAVE
598     AC_LANG_CPLUSPLUS
599     ac_cv_vm_protect_works=yes
600     dnl First the tests that should segfault
601     for test_def in NONE_READ NONE_WRITE READ_WRITE; do
602     AC_TRY_RUN([
603     #define CONFIGURE_TEST_VM_MAP
604     #define TEST_VM_PROT_$test_def
605     #include "vm_alloc.cpp"
606     ], ac_cv_vm_protect_works=no, rm -f core,
607     dnl When cross-compiling, do not assume anything
608     ac_cv_vm_protect_works="guessing no"
609     )
610     done
611     AC_TRY_RUN([
612     #define CONFIGURE_TEST_VM_MAP
613     #define TEST_VM_PROT_RDWR_WRITE
614     #include "vm_alloc.cpp"
615     ], , ac_cv_vm_protect_works=no,
616     dnl When cross-compiling, do not assume anything
617     ac_cv_vm_protect_works="guessing no"
618     )
619     AC_LANG_RESTORE
620     ]
621     )
622    
623     dnl Remove support for vm_allocate() if vm_protect() does not work
624     if [[ "x$have_mach_vm" = "xyes" ]]; then
625     case $ac_cv_vm_protect_works in
626     *yes) have_mach_vm=yes;;
627     *no) have_mach_vm=no;;
628     esac
629     fi
630     AC_TRANSLATE_DEFINE(HAVE_MACH_VM, "$have_mach_vm",
631     [Define if your system has a working vm_allocate()-based memory allocator.])
632    
633     fi dnl HAVE_MACH_VM
634    
635     dnl Various checks if the system supports mmap() and the like functions.
636     dnl ... and Mach memory allocators are not supported
637     have_mmap_vm=no
638     if [[ "x$ac_cv_func_mmap" = "xyes" -a "x$ac_cv_func_munmap" = "xyes" -a \
639     "x$ac_cv_func_mprotect" = "xyes" ]]; then
640     if [[ "x$have_mach_vm" = "xno" ]]; then
641     have_mmap_vm=yes
642     fi
643     fi
644     AC_TRANSLATE_DEFINE(HAVE_MMAP_VM, "$have_mmap_vm",
645     [Define if your system has a working mmap()-based memory allocator.])
646    
647     dnl Check that mmap() and associated functions work.
648     if [[ "x$have_mmap_vm" = "xyes" ]]; then
649    
650     dnl Check if we have a working anonymous mmap()
651     AC_CACHE_CHECK([whether mmap supports MAP_ANON],
652     ac_cv_mmap_anon, [
653     AC_LANG_SAVE
654     AC_LANG_CPLUSPLUS
655     AC_TRY_RUN([
656     #define HAVE_MMAP_ANON
657     #define CONFIGURE_TEST_VM_MAP
658     #define TEST_VM_MMAP_ANON
659     #include "vm_alloc.cpp"
660     ], ac_cv_mmap_anon=yes, ac_cv_mmap_anon=no,
661     dnl When cross-compiling, do not assume anything.
662     ac_cv_mmap_anon="guessing no"
663     )
664     AC_LANG_RESTORE
665     ]
666     )
667     AC_TRANSLATE_DEFINE(HAVE_MMAP_ANON, "$ac_cv_mmap_anon",
668     [Define if <sys/mman.h> defines MAP_ANON and mmap()'ing with MAP_ANON works.])
669    
670     AC_CACHE_CHECK([whether mmap supports MAP_ANONYMOUS],
671     ac_cv_mmap_anonymous, [
672     AC_LANG_SAVE
673     AC_LANG_CPLUSPLUS
674     AC_TRY_RUN([
675     #define HAVE_MMAP_ANONYMOUS
676     #define CONFIGURE_TEST_VM_MAP
677     #define TEST_VM_MMAP_ANON
678     #include "vm_alloc.cpp"
679     ], ac_cv_mmap_anonymous=yes, ac_cv_mmap_anonymous=no,
680     dnl When cross-compiling, do not assume anything.
681     ac_cv_mmap_anonymous="guessing no"
682     )
683     AC_LANG_RESTORE
684     ]
685     )
686     AC_TRANSLATE_DEFINE(HAVE_MMAP_ANONYMOUS, "$ac_cv_mmap_anonymous",
687     [Define if <sys/mman.h> defines MAP_ANONYMOUS and mmap()'ing with MAP_ANONYMOUS works.])
688    
689     AC_CACHE_CHECK([whether mprotect works],
690     ac_cv_mprotect_works, [
691     AC_LANG_SAVE
692     AC_LANG_CPLUSPLUS
693     ac_cv_mprotect_works=yes
694     dnl First the tests that should segfault
695     for test_def in NONE_READ NONE_WRITE READ_WRITE; do
696     AC_TRY_RUN([
697     #define CONFIGURE_TEST_VM_MAP
698     #define TEST_VM_PROT_$test_def
699     #include "vm_alloc.cpp"
700     ], ac_cv_mprotect_works=no, rm -f core,
701     dnl When cross-compiling, do not assume anything
702     ac_cv_mprotect_works="guessing no"
703     )
704     done
705     AC_TRY_RUN([
706     #define CONFIGURE_TEST_VM_MAP
707     #define TEST_VM_PROT_RDWR_WRITE
708     #include "vm_alloc.cpp"
709     ], , ac_cv_mprotect_works=no,
710     dnl When cross-compiling, do not assume anything
711     ac_cv_mprotect_works="guessing no"
712     )
713     AC_LANG_RESTORE
714     ]
715     )
716    
717     dnl Remove support for mmap() if mprotect() does not work
718     if [[ "x$have_mmap_vm" = "xyes" ]]; then
719     case $ac_cv_mprotect_works in
720     *yes) have_mmap_vm=yes;;
721     *no) have_mmap_vm=no;;
722     esac
723     fi
724     AC_TRANSLATE_DEFINE(HAVE_MMAP_VM, $have_mmap_vm,
725     [Define if your system has a working mmap()-based memory allocator.])
726    
727     fi dnl HAVE_MMAP_VM
728    
729 gbeauche 1.23 dnl Check if we can modify the __PAGEZERO segment for use as Low Memory
730     AC_CACHE_CHECK([whether __PAGEZERO can be Low Memory area 0x0000-0x2000],
731     ac_cv_pagezero_hack, [
732     ac_cv_pagezero_hack=no
733     if AC_TRY_COMMAND([Darwin/testlmem.sh 0x2000]); then
734     ac_cv_pagezero_hack=yes
735     dnl might as well skip the test for mmap-able low memory
736     ac_cv_can_map_lm=no
737     fi
738     ])
739     AC_TRANSLATE_DEFINE(PAGEZERO_HACK, "$ac_cv_pagezero_hack",
740     [Define if the __PAGEZERO Mach-O Low Memory Globals hack works on this system.])
741    
742 gbeauche 1.1 dnl Check if we can mmap 0x2000 bytes from 0x0000
743     AC_CACHE_CHECK([whether we can map Low Memory area 0x0000-0x2000],
744     ac_cv_can_map_lm, [
745     AC_LANG_SAVE
746     AC_LANG_CPLUSPLUS
747     AC_TRY_RUN([
748     #include "vm_alloc.cpp"
749     int main(void) { /* returns 0 if we could map the lowmem globals */
750 gbeauche 1.15 volatile char * lm = 0;
751 gbeauche 1.1 if (vm_init() < 0) exit(1);
752 gbeauche 1.15 if (vm_acquire_fixed(0, 0x2000) < 0) exit(1);
753 gbeauche 1.1 lm[0] = 'z';
754     if (vm_release((char *)lm, 0x2000) < 0) exit(1);
755     vm_exit(); exit(0);
756     }
757     ], ac_cv_can_map_lm=yes, ac_cv_can_map_lm=no,
758     dnl When cross-compiling, do not assume anything.
759     ac_cv_can_map_lm="guessing no"
760     )
761     AC_LANG_RESTORE
762     ]
763     )
764    
765 gbeauche 1.34 dnl Check if we have POSIX shared memory support
766     AC_CACHE_CHECK([whether POSIX shared memory is working],
767     ac_cv_have_posix_shm, [
768     AC_LANG_SAVE
769     AC_LANG_CPLUSPLUS
770     AC_TRY_RUN([
771     #define HAVE_POSIX_SHM
772     #include "vm_alloc.cpp"
773     int main(void) { /* returns 0 if we have working POSIX shm */
774     if (vm_init() < 0) exit(2);
775     char *m1 = (char *)vm_acquire(32768, VM_MAP_DEFAULT | VM_MAP_33BIT);
776     if (m1 == VM_MAP_FAILED) exit(3);
777     vm_exit(); exit(0);
778     }
779     ], ac_cv_have_posix_shm=yes, ac_cv_have_posix_shm=no,
780     dnl When cross-compiling, do not assume anything.
781     ac_cv_have_posix_shm="guessing no"
782     )
783     AC_LANG_RESTORE
784     ]
785     )
786     AC_TRANSLATE_DEFINE(HAVE_POSIX_SHM, "$ac_cv_have_posix_shm",
787     [Define if your system supports POSIX shared memory.])
788    
789     dnl Check if we have working 33-bit memory addressing
790     AC_CACHE_CHECK([whether 33-bit memory addressing is working],
791     ac_cv_have_33bit_addressing, [
792     AC_LANG_SAVE
793     AC_LANG_CPLUSPLUS
794     AC_TRY_RUN([
795     #define USE_33BIT_ADDRESSING 1
796     #include "vm_alloc.cpp"
797     int main(void) { /* returns 0 if we have working 33-bit addressing */
798     if (sizeof(void *) < 8) exit(1);
799     if (vm_init() < 0) exit(2);
800     char *m1 = (char *)vm_acquire(32768, VM_MAP_DEFAULT | VM_MAP_33BIT);
801     if (m1 == VM_MAP_FAILED) exit(3);
802     char *m2 = m1 + (1L << 32);
803     m1[0] = 0x12; if (m2[0] != 0x12) exit(4);
804     m2[0] = 0x34; if (m1[0] != 0x34) exit(5);
805     vm_exit(); exit(0);
806     }
807     ], ac_cv_have_33bit_addressing=yes, ac_cv_have_33bit_addressing=no,
808     dnl When cross-compiling, do not assume anything.
809     ac_cv_have_33bit_addressing="guessing no"
810     )
811     AC_LANG_RESTORE
812     ]
813     )
814    
815 gbeauche 1.1 dnl Check signal handlers need to be reinstalled
816     AC_CACHE_CHECK([whether signal handlers need to be reinstalled],
817     ac_cv_signal_need_reinstall, [
818     AC_LANG_SAVE
819     AC_LANG_CPLUSPLUS
820     AC_TRY_RUN([
821     #include <stdlib.h>
822     #ifdef HAVE_UNISTD_H
823     #include <unistd.h>
824     #endif
825     #include <signal.h>
826     static int handled_signal = 0;
827     RETSIGTYPE sigusr1_handler(int) { handled_signal++; }
828     int main(void) { /* returns 0 if signals need not to be reinstalled */
829     signal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1);
830     exit(handled_signal == 2);
831     }
832     ], ac_cv_signal_need_reinstall=yes, ac_cv_signal_need_reinstall=no,
833     dnl When cross-compiling, do not assume anything.
834     ac_cv_signal_need_reinstall="guessing yes"
835     )
836     AC_LANG_RESTORE
837     ]
838     )
839     AC_TRANSLATE_DEFINE(SIGNAL_NEED_REINSTALL, "$ac_cv_signal_need_reinstall",
840     [Define if your system requires signals to be reinstalled.])
841    
842     dnl Check if sigaction handlers need to be reinstalled
843     AC_CACHE_CHECK([whether sigaction handlers need to be reinstalled],
844     ac_cv_sigaction_need_reinstall, [
845     AC_LANG_SAVE
846     AC_LANG_CPLUSPLUS
847     AC_TRY_RUN([
848     #include <stdlib.h>
849     #ifdef HAVE_UNISTD_H
850     #include <unistd.h>
851     #endif
852     #include <signal.h>
853     static int handled_signal = 0;
854     RETSIGTYPE sigusr1_handler(int) { handled_signal++; }
855     typedef RETSIGTYPE (*signal_handler)(int);
856     static signal_handler mysignal(int sig, signal_handler handler) {
857     struct sigaction old_sa;
858     struct sigaction new_sa;
859     new_sa.sa_handler = handler;
860     return ((sigaction(sig,&new_sa,&old_sa) < 0) ? SIG_IGN : old_sa.sa_handler);
861     }
862     int main(void) { /* returns 0 if signals need not to be reinstalled */
863     mysignal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1);
864     exit(handled_signal == 2);
865     }
866     ], ac_cv_sigaction_need_reinstall=yes, ac_cv_sigaction_need_reinstall=no,
867     dnl When cross-compiling, do not assume anything.
868     ac_cv_sigaction_need_reinstall="guessing yes"
869     )
870     AC_LANG_RESTORE
871     ]
872     )
873     AC_TRANSLATE_DEFINE(SIGACTION_NEED_REINSTALL, "$ac_cv_sigaction_need_reinstall",
874     [Define if your system requires sigactions to be reinstalled.])
875    
876 gbeauche 1.21 dnl Check if Mach exceptions supported.
877     AC_CACHE_CHECK([whether your system supports Mach exceptions],
878     ac_cv_have_mach_exceptions, [
879 gbeauche 1.1 AC_LANG_SAVE
880     AC_LANG_CPLUSPLUS
881     AC_TRY_RUN([
882 gbeauche 1.21 #define HAVE_MACH_EXCEPTIONS 1
883 gbeauche 1.1 #define CONFIGURE_TEST_SIGSEGV_RECOVERY
884     #include "vm_alloc.cpp"
885     #include "sigsegv.cpp"
886 gbeauche 1.21 ], [
887     sigsegv_recovery=mach
888     ac_cv_have_mach_exceptions=yes
889     ],
890     ac_cv_have_mach_exceptions=no,
891 gbeauche 1.1 dnl When cross-compiling, do not assume anything.
892 gbeauche 1.21 ac_cv_have_mach_exceptions=no
893 gbeauche 1.1 )
894     AC_LANG_RESTORE
895     ]
896     )
897 gbeauche 1.21 AC_TRANSLATE_DEFINE(HAVE_MACH_EXCEPTIONS, "$ac_cv_have_mach_exceptions",
898     [Define if your system supports Mach exceptions.])
899    
900 gbeauche 1.36 dnl Check if Windows exceptions are supported.
901     AC_CACHE_CHECK([whether your system supports Windows exceptions],
902     ac_cv_have_win32_exceptions, [
903     AC_LANG_SAVE
904     AC_LANG_CPLUSPLUS
905     AC_TRY_RUN([
906     #define HAVE_WIN32_EXCEPTIONS 1
907     #define CONFIGURE_TEST_SIGSEGV_RECOVERY
908     #include "vm_alloc.cpp"
909     #include "sigsegv.cpp"
910     ], [
911     sigsegv_recovery=win32
912     ac_cv_have_win32_exceptions=yes
913     ],
914     ac_cv_have_win32_exceptions=no,
915     dnl When cross-compiling, do not assume anything.
916     ac_cv_have_win32_exceptions=no
917     )
918     AC_LANG_RESTORE
919     ]
920     )
921     AC_TRANSLATE_DEFINE(HAVE_WIN32_EXCEPTIONS, "$ac_cv_have_win32_exceptions",
922     [Define if your system supports Windows exceptions.])
923    
924 gbeauche 1.21 dnl Otherwise, check if extended signals are supported.
925     if [[ -z "$sigsegv_recovery" ]]; then
926     AC_CACHE_CHECK([whether your system supports extended signal handlers],
927     ac_cv_have_extended_signals, [
928     AC_LANG_SAVE
929     AC_LANG_CPLUSPLUS
930     AC_TRY_RUN([
931     #define HAVE_SIGINFO_T 1
932     #define CONFIGURE_TEST_SIGSEGV_RECOVERY
933     #include "vm_alloc.cpp"
934     #include "sigsegv.cpp"
935     ], [
936     sigsegv_recovery=siginfo
937     ac_cv_have_extended_signals=yes
938     ],
939     ac_cv_have_extended_signals=no,
940     dnl When cross-compiling, do not assume anything.
941     ac_cv_have_extended_signals=no
942     )
943     AC_LANG_RESTORE
944     ]
945     )
946     AC_TRANSLATE_DEFINE(HAVE_SIGINFO_T, "$ac_cv_have_extended_signals",
947     [Define if your system support extended signals.])
948     fi
949 gbeauche 1.1
950     dnl Otherwise, check for subterfuges.
951 gbeauche 1.21 if [[ -z "$sigsegv_recovery" ]]; then
952 gbeauche 1.1 AC_CACHE_CHECK([whether we then have a subterfuge for your system],
953     ac_cv_have_sigcontext_hack, [
954     AC_LANG_SAVE
955     AC_LANG_CPLUSPLUS
956     AC_TRY_RUN([
957     #define HAVE_SIGCONTEXT_SUBTERFUGE 1
958     #define CONFIGURE_TEST_SIGSEGV_RECOVERY
959     #include "vm_alloc.cpp"
960     #include "sigsegv.cpp"
961 gbeauche 1.21 ], [
962     sigsegv_recovery=sigcontext
963     ac_cv_have_sigcontext_hack=yes
964     ],
965     ac_cv_have_sigcontext_hack=no,
966 gbeauche 1.1 dnl When cross-compiling, do not assume anything.
967     ac_cv_have_sigcontext_hack=no
968     )
969     AC_LANG_RESTORE
970     ])
971     AC_TRANSLATE_DEFINE(HAVE_SIGCONTEXT_SUBTERFUGE, "$ac_cv_have_sigcontext_hack",
972     [Define if we know a hack to replace siginfo_t->si_addr member.])
973     fi
974    
975     dnl Check if we can ignore the fault (instruction skipping in SIGSEGV handler)
976     AC_CACHE_CHECK([whether we can skip instruction in SIGSEGV handler],
977     ac_cv_have_skip_instruction, [
978     AC_LANG_SAVE
979     AC_LANG_CPLUSPLUS
980     AC_TRY_RUN([
981     #define HAVE_SIGSEGV_SKIP_INSTRUCTION 1
982     #define CONFIGURE_TEST_SIGSEGV_RECOVERY
983     #include "vm_alloc.cpp"
984     #include "sigsegv.cpp"
985     ], ac_cv_have_skip_instruction=yes, ac_cv_have_skip_instruction=no,
986     dnl When cross-compiling, do not assume anything.
987     ac_cv_have_skip_instruction=no
988     )
989     AC_LANG_RESTORE
990     ]
991     )
992     AC_TRANSLATE_DEFINE(HAVE_SIGSEGV_SKIP_INSTRUCTION, "$ac_cv_have_skip_instruction",
993     [Define if we can ignore the fault (instruction skipping in SIGSEGV handler).])
994    
995     dnl Can we do Video on SEGV Signals ?
996     CAN_VOSF=no
997 gbeauche 1.21 if [[ -n "$sigsegv_recovery" ]]; then
998 gbeauche 1.1 CAN_VOSF=yes
999     fi
1000    
1001 gbeauche 1.23 dnl A dummy program that returns always true
1002 gbeauche 1.28 AC_PATH_PROG([BLESS], "true")
1003 gbeauche 1.23
1004 gbeauche 1.1 dnl Determine the addressing mode to use
1005     if [[ "x$WANT_NATIVE_M68K" = "xyes" ]]; then
1006     ADDRESSING_MODE="real"
1007     else
1008     ADDRESSING_MODE=""
1009     AC_MSG_CHECKING([for the addressing mode to use])
1010     for am in $ADDRESSING_TEST_ORDER; do
1011     case $am in
1012     real)
1013     dnl Requires ability to mmap() Low Memory globals
1014 gbeauche 1.23 if [[ "x$ac_cv_can_map_lm$ac_cv_pagezero_hack" = "xnono" ]]; then
1015 gbeauche 1.1 continue
1016     fi
1017 gbeauche 1.23 dnl Requires VOSF screen updates
1018 gbeauche 1.1 if [[ "x$CAN_VOSF" = "xno" ]]; then
1019     continue
1020     fi
1021     dnl Real addressing will probably work.
1022     ADDRESSING_MODE="real"
1023     WANT_VOSF=yes dnl we can use VOSF and we need it actually
1024     DEFINES="$DEFINES -DREAL_ADDRESSING"
1025 gbeauche 1.23 if [[ "x$ac_cv_pagezero_hack" = "xyes" ]]; then
1026     BLESS=Darwin/lowmem
1027     LDFLAGS="$LDFLAGS -pagezero_size 0x2000"
1028     fi
1029 gbeauche 1.1 break
1030     ;;
1031     direct)
1032     dnl Requires VOSF screen updates
1033     if [[ "x$CAN_VOSF" = "xyes" ]]; then
1034     ADDRESSING_MODE="direct"
1035     WANT_VOSF=yes dnl we can use VOSF and we need it actually
1036     DEFINES="$DEFINES -DDIRECT_ADDRESSING"
1037     break
1038     fi
1039     ;;
1040     banks)
1041     dnl Default addressing mode
1042     ADDRESSING_MODE="memory banks"
1043     break
1044     ;;
1045     *)
1046     AC_MSG_ERROR([Internal configure.in script error for $am addressing mode])
1047     esac
1048     done
1049     AC_MSG_RESULT($ADDRESSING_MODE)
1050     if [[ "x$ADDRESSING_MODE" = "x" ]]; then
1051     AC_MSG_WARN([Sorry, no suitable addressing mode in $ADDRESSING_TEST_ORDER])
1052     ADDRESSING_MODE="memory banks"
1053     fi
1054     fi
1055    
1056 gbeauche 1.5 dnl Banked Memory Addressing mode is not supported by the JIT compiler
1057     if [[ "x$WANT_JIT" = "xyes" -a "x$ADDRESSING_MODE" = "xmemory banks" ]]; then
1058     AC_MSG_ERROR([Sorry, the JIT Compiler requires Direct Addressing, at least])
1059     fi
1060    
1061 gbeauche 1.1 dnl Enable VOSF screen updates with this feature is requested and feasible
1062     if [[ "x$WANT_VOSF" = "xyes" -a "x$CAN_VOSF" = "xyes" ]]; then
1063     AC_DEFINE(ENABLE_VOSF, 1, [Define if using video enabled on SEGV signals.])
1064     else
1065     WANT_VOSF=no
1066     fi
1067    
1068     dnl Check for GAS.
1069     HAVE_GAS=no
1070     AC_MSG_CHECKING(for GAS .p2align feature)
1071     cat >conftest.S << EOF
1072     .text
1073     .p2align 5
1074     EOF
1075     if $CC conftest.S -c -o conftest.o >/dev/null 2>&1 ; then HAVE_GAS=yes; fi
1076     AC_MSG_RESULT($HAVE_GAS)
1077    
1078     dnl Check for GCC 2.7 or higher.
1079     HAVE_GCC27=no
1080     AC_MSG_CHECKING(for GCC 2.7 or higher)
1081 cebix 1.17 AC_EGREP_CPP(xyes,
1082 gbeauche 1.1 [#if __GNUC__ - 1 > 1 || __GNUC_MINOR__ - 1 > 5
1083 cebix 1.17 xyes
1084 gbeauche 1.1 #endif
1085     ], [AC_MSG_RESULT(yes); HAVE_GCC27=yes], AC_MSG_RESULT(no))
1086    
1087     dnl Check for GCC 3.0 or higher.
1088     HAVE_GCC30=no
1089     AC_MSG_CHECKING(for GCC 3.0 or higher)
1090 cebix 1.17 AC_EGREP_CPP(xyes,
1091 gbeauche 1.1 [#if __GNUC__ >= 3
1092 cebix 1.17 xyes
1093 gbeauche 1.1 #endif
1094     ], [AC_MSG_RESULT(yes); HAVE_GCC30=yes], AC_MSG_RESULT(no))
1095    
1096 gbeauche 1.39 dnl Check for ICC.
1097     AC_MSG_CHECKING(for ICC)
1098     HAVE_ICC=no
1099     if $CXX -V -v 2>&1 | grep -q "Intel(R) C++ Compiler"; then
1100     HAVE_ICC=yes
1101     fi
1102     AC_MSG_RESULT($HAVE_ICC)
1103    
1104 gbeauche 1.1 dnl Set "-fomit-frame-pointer" on i386 GCC 2.7 or higher.
1105     dnl Also set "-fno-exceptions" for C++ because exception handling requires
1106     dnl the frame pointer.
1107     if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" ]]; then
1108     CFLAGS="$CFLAGS -fomit-frame-pointer"
1109     CXXFLAGS="$CXXFLAGS -fomit-frame-pointer -fno-exceptions"
1110     fi
1111    
1112     dnl (gb) Do not merge constants since it breaks fpu/fpu_x86.cpp.
1113     dnl As of 2001/08/02, this affects the following compilers:
1114     dnl Official: probably gcc-3.1 (mainline CVS)
1115     dnl Mandrake: gcc-2.96 >= 0.59mdk, gcc-3.0.1 >= 0.1mdk
1116     dnl Red Hat : gcc-2.96 >= 89, gcc-3.0 >= 1
1117 gbeauche 1.39 if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_ICC" = "xno" ]]; then
1118 gbeauche 1.1 SAVED_CXXFLAGS="$CXXFLAGS"
1119     CXXFLAGS="$CXXFLAGS -fno-merge-constants"
1120     AC_CACHE_CHECK([whether GCC supports constants merging], ac_cv_gcc_constants_merging, [
1121     AC_LANG_SAVE
1122     AC_LANG_CPLUSPLUS
1123     AC_TRY_COMPILE([],[],[ac_cv_gcc_constants_merging=yes],[ac_cv_gcc_constants_merging=no])
1124     AC_LANG_RESTORE
1125     ])
1126     if [[ "x$ac_cv_gcc_constants_merging" != "xyes" ]]; then
1127     CXXFLAGS="$SAVED_CXXFLAGS"
1128     fi
1129     fi
1130    
1131 gbeauche 1.33 dnl Store motion was introduced in 3.3-hammer branch and any gcc >= 3.4
1132     dnl However, there are some corner cases exposed on x86-64
1133 gbeauche 1.39 if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_ICC" = "xno" ]]; then
1134 gbeauche 1.33 SAVED_CXXFLAGS="$CXXFLAGS"
1135     CXXFLAGS="$CXXFLAGS -fno-gcse-sm"
1136     AC_CACHE_CHECK([whether GCC supports store motion], ac_cv_gcc_store_motion, [
1137     AC_LANG_SAVE
1138     AC_LANG_CPLUSPLUS
1139     AC_TRY_COMPILE([],[],[ac_cv_gcc_store_motion=yes],[ac_cv_gcc_store_motion=no])
1140     AC_LANG_RESTORE
1141     ])
1142     if [[ "x$ac_cv_gcc_store_motion" != "xyes" ]]; then
1143     CXXFLAGS="$SAVED_CXXFLAGS"
1144     fi
1145     fi
1146    
1147 gbeauche 1.39 dnl Add -fno-strict-aliasing for slirp sources
1148     if [[ "x$HAVE_GCC30" = "xyes" ]]; then
1149 gbeauche 1.40 SAVED_CFLAGS="$CFLAGS"
1150 gbeauche 1.39 CFLAGS="$CFLAGS -fno-strict-aliasing"
1151     AC_CACHE_CHECK([whether the compiler supports -fno-strict-aliasing],
1152     ac_cv_gcc_no_strict_aliasing, [
1153     AC_TRY_COMPILE([],[],
1154     [ac_cv_gcc_no_strict_aliasing=yes; AC_SUBST(SLIRP_CFLAGS, "$CFLAGS")],
1155     [ac_cv_gcc_no_strict_aliasing=no])
1156     ])
1157     CFLAGS="$SAVED_CFLAGS"
1158     fi
1159    
1160 gbeauche 1.1 dnl Select appropriate CPU source and REGPARAM define.
1161     ASM_OPTIMIZATIONS=none
1162     CPUSRCS="cpuemu1.cpp cpuemu2.cpp cpuemu3.cpp cpuemu4.cpp cpuemu5.cpp cpuemu6.cpp cpuemu7.cpp cpuemu8.cpp"
1163 gbeauche 1.5
1164     dnl (gb) JITSRCS will be emptied later if the JIT is not available
1165     dnl Other platforms should define their own set of noflags file variants
1166     CAN_JIT=no
1167     JITSRCS="compemu1.cpp compemu2.cpp compemu3.cpp compemu4.cpp compemu5.cpp compemu6.cpp compemu7.cpp compemu8.cpp"
1168    
1169 gbeauche 1.11 if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" ]]; then
1170 gbeauche 1.1 dnl i386 CPU
1171 gbeauche 1.7 DEFINES="$DEFINES -DUNALIGNED_PROFITABLE -DREGPARAM=\"__attribute__((regparm(3)))\""
1172 gbeauche 1.1 if [[ "x$HAVE_GAS" = "xyes" ]]; then
1173     ASM_OPTIMIZATIONS=i386
1174 gbeauche 1.7 DEFINES="$DEFINES -DX86_ASSEMBLY -DOPTIMIZED_FLAGS -DSAHF_SETO_PROFITABLE"
1175 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"
1176 gbeauche 1.11 CAN_JIT=yes
1177 gbeauche 1.13 fi
1178     elif [[ "x$HAVE_GCC30" = "xyes" -a "x$HAVE_X86_64" = "xyes" ]]; then
1179     dnl x86-64 CPU
1180     DEFINES="$DEFINES -DUNALIGNED_PROFITABLE"
1181     if [[ "x$HAVE_GAS" = "xyes" ]]; then
1182     ASM_OPTIMIZATIONS="x86-64"
1183     DEFINES="$DEFINES -DX86_64_ASSEMBLY -DOPTIMIZED_FLAGS"
1184 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"
1185     CAN_JIT=yes
1186 gbeauche 1.34 WANT_33BIT_ADDRESSING=yes
1187 gbeauche 1.1 fi
1188     elif [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_SPARC" = "xyes" -a "x$HAVE_GAS" = "xyes" ]]; then
1189     dnl SPARC CPU
1190     case "$target_os" in
1191     solaris*)
1192     AC_MSG_CHECKING(SPARC CPU architecture)
1193     SPARC_TYPE=`Solaris/which_sparc`
1194     AC_MSG_RESULT($SPARC_TYPE)
1195     case "$SPARC_TYPE" in
1196     SPARC_V8)
1197     ASM_OPTIMIZATIONS="SPARC V8 architecture"
1198     DEFINES="$DEFINES -DSPARC_V8_ASSEMBLY" dnl -DOPTIMIZED_FLAGS"
1199     CFLAGS="$CFLAGS -Wa,-Av8"
1200     CXXFLAGS="$CXXFLAGS -Wa,-Av8"
1201     ;;
1202     SPARC_V9)
1203     ASM_OPTIMIZATIONS="SPARC V9 architecture"
1204     DEFINES="$DEFINES -DSPARC_V9_ASSEMBLY" dnl -DOPTIMIZED_FLAGS"
1205     CFLAGS="$CFLAGS -Wa,-Av9"
1206     CXXFLAGS="$CXXFLAGS -Wa,-Av9"
1207     ;;
1208     esac
1209     ;;
1210     esac
1211     elif [[ "x$WANT_NATIVE_M68K" = "xyes" ]]; then
1212     dnl Native m68k, no emulation
1213     CPUINCLUDES="-I../native_cpu"
1214     CPUSRCS="asm_support.s"
1215     fi
1216    
1217 gbeauche 1.5 dnl Enable JIT compiler, if possible.
1218     if [[ "x$WANT_JIT" = "xyes" -a "x$CAN_JIT" ]]; then
1219     JITSRCS="$JITSRCS ../uae_cpu/compiler/compemu_support.cpp ../uae_cpu/compiler/compemu_fpp.cpp compstbl.o cpustbl_nf.o"
1220     DEFINES="$DEFINES -DUSE_JIT -DUSE_JIT_FPU"
1221    
1222     if [[ "x$WANT_JIT_DEBUG" = "xyes" ]]; then
1223     if [[ "x$WANT_MON" = "xyes" ]]; then
1224     DEFINES="$DEFINES -DJIT_DEBUG=1"
1225     else
1226     AC_MSG_WARN([cxmon not found, ignoring --enable-jit-debug])
1227     WANT_JIT_DEBUG=no
1228     fi
1229     fi
1230 gbeauche 1.8
1231     dnl IEEE core is the only FPU emulator to use with the JIT compiler
1232     case $FPE_CORE_TEST_ORDER in
1233     ieee*) ;;
1234     *) AC_MSG_WARN([Forcing use of the IEEE FPU core, as the JIT compiler supports only this one.]) ;;
1235     esac
1236     FPE_CORE_TEST_ORDER="ieee"
1237 gbeauche 1.5 else
1238     WANT_JIT=no
1239     WANT_JIT_DEBUG=no
1240     JITSRCS=""
1241     fi
1242    
1243 gbeauche 1.34 dnl Use 33-bit memory addressing?
1244     if [[ "$ac_cv_have_33bit_addressing:$WANT_33BIT_ADDRESSING" = "yes:yes" ]]; then
1245     use_33bit_addressing=yes
1246     fi
1247     AC_TRANSLATE_DEFINE(USE_33BIT_ADDRESSING, "$use_33bit_addressing",
1248     [Define to use 33-bit memory addressing on 64-bit JIT capable systems.])
1249    
1250 gbeauche 1.1 dnl Utility macro used by next two tests.
1251     dnl AC_EXAMINE_OBJECT(C source code,
1252     dnl commands examining object file,
1253     dnl [commands to run if compile failed]):
1254     dnl
1255     dnl Compile the source code to an object file; then convert it into a
1256     dnl printable representation. All unprintable characters and
1257     dnl asterisks (*) are replaced by dots (.). All white space is
1258     dnl deleted. Newlines (ASCII 0x10) in the input are preserved in the
1259     dnl output, but runs of newlines are compressed to a single newline.
1260     dnl Finally, line breaks are forcibly inserted so that no line is
1261     dnl longer than 80 columns and the file ends with a newline. The
1262     dnl result of all this processing is in the file conftest.dmp, which
1263     dnl may be examined by the commands in the second argument.
1264     dnl
1265     AC_DEFUN([gcc_AC_EXAMINE_OBJECT],
1266     [AC_LANG_SAVE
1267     AC_LANG_C
1268     dnl Next bit cribbed from AC_TRY_COMPILE.
1269     cat > conftest.$ac_ext <<EOF
1270     [#line __oline__ "configure"
1271     #include "confdefs.h"
1272     $1
1273     ]EOF
1274     if AC_TRY_EVAL(ac_compile); then
1275     od -c conftest.o |
1276     sed ['s/^[0-7]*[ ]*/ /
1277     s/\*/./g
1278     s/ \\n/*/g
1279     s/ [0-9][0-9][0-9]/./g
1280     s/ \\[^ ]/./g'] |
1281     tr -d '
1282     ' | tr -s '*' '
1283     ' | fold | sed '$a\
1284     ' > conftest.dmp
1285     $2
1286     ifelse($3, , , else
1287     $3
1288     )dnl
1289     fi
1290     rm -rf conftest*
1291     AC_LANG_RESTORE])
1292    
1293     dnl Floating point format probe.
1294     dnl The basic concept is the same as the above: grep the object
1295     dnl file for an interesting string. We have to watch out for
1296     dnl rounding changing the values in the object, however; this is
1297     dnl handled by ignoring the least significant byte of the float.
1298     dnl
1299     dnl Does not know about VAX G-float or C4x idiosyncratic format.
1300     dnl It does know about PDP-10 idiosyncratic format, but this is
1301     dnl not presently supported by GCC. S/390 "binary floating point"
1302     dnl is in fact IEEE (but maybe we should have that in EBCDIC as well
1303     dnl as ASCII?)
1304     dnl
1305     AC_DEFUN([gcc_AC_C_FLOAT_FORMAT],
1306     [AC_CACHE_CHECK(floating point format, ac_cv_c_float_format,
1307     [gcc_AC_EXAMINE_OBJECT(
1308     [/* This will not work unless sizeof(double) == 8. */
1309     extern char sizeof_double_must_be_8 [sizeof(double) == 8 ? 1 : -1];
1310    
1311     /* This structure must have no internal padding. */
1312     struct possibility {
1313     char prefix[8];
1314     double candidate;
1315     char postfix[8];
1316     };
1317    
1318     #define C(cand) { "\nformat:", cand, ":tamrof\n" }
1319     struct possibility table [] =
1320     {
1321     C( 3.25724264705901305206e+01), /* @@IEEEFP - IEEE 754 */
1322     C( 3.53802595280598432000e+18), /* D__float - VAX */
1323     C( 5.32201830133125317057e-19), /* D.PDP-10 - PDP-10 - the dot is 0x13a */
1324     C( 1.77977764695171661377e+10), /* IBMHEXFP - s/390 format, ascii */
1325     C(-5.22995989424860458374e+10) /* IBMHEXFP - s/390 format, EBCDIC */
1326     };],
1327     [if grep 'format:.@IEEEF.:tamrof' conftest.dmp >/dev/null 2>&1; then
1328     ac_cv_c_float_format='IEEE (big-endian)'
1329     elif grep 'format:.I@@PFE.:tamrof' conftest.dmp >/dev/null 2>&1; then
1330     ac_cv_c_float_format='IEEE (big-endian)'
1331     elif grep 'format:.FEEEI@.:tamrof' conftest.dmp >/dev/null 2>&1; then
1332     ac_cv_c_float_format='IEEE (little-endian)'
1333     elif grep 'format:.EFP@@I.:tamrof' conftest.dmp >/dev/null 2>&1; then
1334     ac_cv_c_float_format='IEEE (little-endian)'
1335     elif grep 'format:.__floa.:tamrof' conftest.dmp >/dev/null 2>&1; then
1336     ac_cv_c_float_format='VAX D-float'
1337     elif grep 'format:..PDP-1.:tamrof' conftest.dmp >/dev/null 2>&1; then
1338     ac_cv_c_float_format='PDP-10'
1339     elif grep 'format:.BMHEXF.:tamrof' conftest.dmp >/dev/null 2>&1; then
1340     ac_cv_c_float_format='IBM 370 hex'
1341     else
1342     AC_MSG_ERROR(Unknown floating point format)
1343     fi],
1344     [AC_MSG_ERROR(compile failed)])
1345     ])
1346     # IEEE is the default format. If the float endianness isn't the same
1347     # as the integer endianness, we have to set FLOAT_WORDS_BIG_ENDIAN
1348     # (which is a tristate: yes, no, default). This is only an issue with
1349     # IEEE; the other formats are only supported by a few machines each,
1350     # all with the same endianness.
1351     format=IEEE_FLOAT_FORMAT
1352     fbigend=
1353     case $ac_cv_c_float_format in
1354     'IEEE (big-endian)' )
1355     if test $ac_cv_c_bigendian = no; then
1356     fbigend=1
1357     fi
1358     ;;
1359     'IEEE (little-endian)' )
1360     if test $ac_cv_c_bigendian = yes; then
1361     fbigend=0
1362     fi
1363     ;;
1364     'VAX D-float' )
1365     format=VAX_FLOAT_FORMAT
1366     ;;
1367     'PDP-10' )
1368     format=PDP10_FLOAT_FORMAT
1369     ;;
1370     'IBM 370 hex' )
1371     format=IBM_FLOAT_FORMAT
1372     ;;
1373     esac
1374     AC_DEFINE_UNQUOTED(HOST_FLOAT_FORMAT, $format,
1375     [Define to the floating point format of the host machine.])
1376     if test -n "$fbigend"; then
1377     AC_DEFINE_UNQUOTED(HOST_FLOAT_WORDS_BIG_ENDIAN, $fbigend,
1378     [Define to 1 if the host machine stores floating point numbers in
1379     memory with the word containing the sign bit at the lowest address,
1380     or to 0 if it does it the other way around.
1381    
1382     This macro should not be defined if the ordering is the same as for
1383     multi-word integers.])
1384     fi
1385     ])
1386    
1387     dnl Select appropriate FPU source.
1388     gcc_AC_C_FLOAT_FORMAT
1389     AC_CHECK_HEADERS(ieee754.h ieeefp.h floatingpoint.h nan.h)
1390    
1391     for fpe in $FPE_CORE_TEST_ORDER; do
1392     case $fpe in
1393     ieee)
1394 gbeauche 1.2 case $ac_cv_c_float_format in
1395     IEEE*)
1396 gbeauche 1.1 FPE_CORE="IEEE fpu core"
1397     DEFINES="$DEFINES -DFPU_IEEE"
1398     FPUSRCS="../uae_cpu/fpu/fpu_ieee.cpp"
1399 gbeauche 1.4 dnl Math functions not mandated by C99 standard
1400     AC_CHECK_FUNCS(isnanl isinfl)
1401     dnl Math functions required by C99 standard, but probably not
1402     dnl implemented everywhere. In that case, we fall back to the
1403     dnl regular variant for doubles.
1404     AC_CHECK_FUNCS(logl log10l expl powl fabsl sqrtl)
1405     AC_CHECK_FUNCS(sinl cosl tanl sinhl coshl tanhl)
1406     AC_CHECK_FUNCS(asinl acosl atanl asinhl acoshl atanhl)
1407     AC_CHECK_FUNCS(floorl ceill)
1408 gbeauche 1.1 break
1409 gbeauche 1.2 ;;
1410     esac
1411 gbeauche 1.1 ;;
1412     x86)
1413     if [[ ":$HAVE_GCC27:$HAVE_I386:$HAVE_GAS:" = ":yes:yes:yes:" ]]; then
1414     FPE_CORE="i387 fpu core"
1415     DEFINES="$DEFINES -DFPU_X86"
1416     FPUSRCS="../uae_cpu/fpu/fpu_x86.cpp"
1417     break
1418     fi
1419     ;;
1420     uae)
1421     FPE_CORE="uae fpu core"
1422     DEFINES="$DEFINES -DFPU_UAE"
1423     FPUSRCS="../uae_cpu/fpu/fpu_uae.cpp"
1424     break
1425     ;;
1426     *)
1427     AC_MSG_ERROR([Internal configure.in script error for $fpe fpu core])
1428     ;;
1429     esac
1430     done
1431     if [[ "x$FPE_CORE" = "x" ]]; then
1432     AC_MSG_ERROR([Sorry, no suitable FPU core found in $FPE_CORE_TEST_ORDER])
1433     fi
1434    
1435     dnl Check for certain math functions
1436     AC_CHECK_FUNCS(atanh)
1437 gbeauche 1.4 AC_CHECK_FUNCS(isnan isinf finite isnormal signbit)
1438 gbeauche 1.1
1439     dnl UAE CPU sources for all non-m68k-native architectures.
1440     if [[ "x$WANT_NATIVE_M68K" = "xno" ]]; then
1441     CPUINCLUDES="-I../uae_cpu"
1442 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"
1443 gbeauche 1.1 fi
1444    
1445     dnl Remove the "-g" option if set for GCC.
1446     if [[ "x$HAVE_GCC27" = "xyes" ]]; then
1447 gbeauche 1.33 CFLAGS=`echo $CFLAGS | sed -e 's/-g\b//g'`
1448     CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-g\b//g'`
1449 gbeauche 1.1 fi
1450    
1451 gbeauche 1.14 dnl Or if we have -IPA (MIPSPro compilers)
1452     if [[ "x$HAVE_IPA" = "xyes" ]]; then
1453     CFLAGS="`echo $CFLAGS | sed -e 's/-g//g'` -O3 -OPT:Olimit=0 -IPA"
1454     CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-g//g'` -O3 -OPT:Olimit=0 -IPA"
1455 gbeauche 1.1 CXXFLAGS="-LANG:std $CXXFLAGS"
1456 gbeauche 1.14 LDFLAGS="$LDFLAGS -O3 -OPT:Olimit=0 -IPA"
1457 gbeauche 1.1 fi
1458    
1459     dnl Generate Makefile.
1460     AC_SUBST(DEFINES)
1461     AC_SUBST(SYSSRCS)
1462     AC_SUBST(CPUINCLUDES)
1463     AC_SUBST(CPUSRCS)
1464 gbeauche 1.23 AC_SUBST(BLESS)
1465 gbeauche 1.29 AC_SUBST(KEYCODES)
1466 cebix 1.16 AC_CONFIG_FILES([Makefile])
1467     AC_OUTPUT
1468 gbeauche 1.1
1469     dnl Print summary.
1470     echo
1471     echo Basilisk II configuration summary:
1472     echo
1473 gbeauche 1.26 echo SDL support ............................ : $SDL_SUPPORT
1474 gbeauche 1.1 echo XFree86 DGA support .................... : $WANT_XF86_DGA
1475     echo XFree86 VidMode support ................ : $WANT_XF86_VIDMODE
1476     echo fbdev DGA support ...................... : $WANT_FBDEV_DGA
1477     echo Enable video on SEGV signals ........... : $WANT_VOSF
1478     echo ESD sound support ...................... : $WANT_ESD
1479     echo GTK user interface ..................... : $WANT_GTK
1480     echo mon debugger support ................... : $WANT_MON
1481     echo Running m68k code natively ............. : $WANT_NATIVE_M68K
1482 gbeauche 1.5 echo Use JIT compiler ....................... : $WANT_JIT
1483     echo JIT debug mode ......................... : $WANT_JIT_DEBUG
1484 gbeauche 1.1 echo Floating-Point emulation core .......... : $FPE_CORE
1485     echo Assembly optimizations ................. : $ASM_OPTIMIZATIONS
1486     echo Addressing mode ........................ : $ADDRESSING_MODE
1487 gbeauche 1.21 echo Bad memory access recovery type ........ : $sigsegv_recovery
1488 gbeauche 1.1 echo
1489     echo "Configuration done. Now type \"make\" (or \"gmake\")."