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

File Contents

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