ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/configure.ac
Revision: 1.46
Committed: 2005-05-15T17:22:12Z (19 years, 6 months ago) by gbeauche
Branch: MAIN
Changes since 1.45: +1 -1 lines
Log Message:
Fix and factor out ether_exit(). Pitifully, MacOS X 10.2 does not make select()
a cancellation point when it is passed a NULL timeout. Workarounded in
receive_func() with a full inline of poll_fd() + pthread_testcancel().

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