ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/MacOSX/configure.in
Revision: 1.20
Committed: 2006-07-28T13:28:54Z (17 years, 10 months ago) by nigel
Branch: MAIN
CVS Tags: nigel-build-19
Changes since 1.19: +9 -4 lines
Log Message:
Resync with latest src/Unix/configure.ac

File Contents

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