ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/configure.ac
Revision: 1.1
Committed: 2002-09-16T13:29:33Z (22 years, 1 month ago) by gbeauche
Branch: MAIN
Log Message:
Now use autoconf 2.52+ as it provides nice AC_SYS_LARGEFILE check and a
fixed check for exit() prototype.

File Contents

# User Rev Content
1 gbeauche 1.1 dnl Process this file with autoconf to produce a configure script.
2     dnl Written in 2002 by Christian Bauer et al.
3    
4     AC_INIT(main_unix.cpp)
5     AC_PREREQ(2.52)
6     AC_CONFIG_HEADER(config.h)
7    
8     dnl Options.
9     AC_ARG_ENABLE(xf86-dga, [ --enable-xf86-dga use the XFree86 DGA extension [default=yes]], [WANT_XF86_DGA=$enableval], [WANT_XF86_DGA=yes])
10     AC_ARG_ENABLE(xf86-vidmode, [ --enable-xf86-vidmode use the XFree86 VidMode extension [default=yes]], [WANT_XF86_VIDMODE=$enableval], [WANT_XF86_VIDMODE=yes])
11     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])
12     AC_ARG_ENABLE(vosf, [ --enable-vosf enable video on SEGV signals [default=yes]], [WANT_VOSF=$enableval], [WANT_VOSF=yes])
13    
14     dnl FPU emulation core.
15     AC_ARG_ENABLE(fpe,
16     [ --enable-fpe=FPE specify which fpu emulator to use [default=auto]],
17     [ case "$enableval" in
18     dnl default is always ieee, if architecture has this fp format
19     auto) FPE_CORE_TEST_ORDER="ieee uae";;
20     ieee) FPE_CORE_TEST_ORDER="ieee";;
21     uae) FPE_CORE_TEST_ORDER="uae";;
22     x86) FPE_CORE_TEST_ORDER="x86";;
23     *) AC_MSG_ERROR([--enable-fpe takes only one of the following values: auto, x86, ieee, uae]);;
24     esac
25     ],
26     [ FPE_CORE_TEST_ORDER="ieee uae"
27     ])
28    
29     dnl Addressing modes.
30     AC_ARG_ENABLE(addressing,
31     [ --enable-addressing=AM specify the addressing mode to use [default=fastest]],
32     [ case "$enableval" in
33     real) ADDRESSING_TEST_ORDER="real";;
34     direct) ADDRESSING_TEST_ORDER="direct";;
35     banks) ADDRESSING_TEST_ORDER="banks";;
36     fastest)ADDRESSING_TEST_ORDER="direct banks";;
37     *) AC_MSG_ERROR([--enable-addressing takes only one of the following values: fastest, real, direct, banks]);;
38     esac
39     ],
40     [ ADDRESSING_TEST_ORDER="direct banks"
41     ])
42    
43     dnl External packages.
44     AC_ARG_WITH(esd, [ --with-esd support ESD for sound under Linux/FreeBSD [default=yes]], [WANT_ESD=$withval], [WANT_ESD=yes])
45     AC_ARG_WITH(gtk, [ --with-gtk use GTK user interface [default=yes]], [WANT_GTK=$withval], [WANT_GTK=yes])
46     AC_ARG_WITH(mon, [ --with-mon use mon as debugger [default=yes]], [WANT_MON=$withval], [WANT_MON=yes])
47    
48     dnl Canonical system information.
49     AC_CANONICAL_HOST
50     AC_CANONICAL_TARGET
51    
52     dnl Target OS type (target is host if not cross-compiling).
53     case "$target_os" in
54     linux*) OS_TYPE=linux;;
55     netbsd*) OS_TYPE=netbsd;;
56     freebsd*) OS_TYPE=freebsd;;
57     solaris*) OS_TYPE=solaris;;
58     darwin*) OS_TYPE=darwin;;
59     *) OS_TYPE=`echo $target_os | sed -e 's/-/_/g' | sed -e 's/\./_/g'`;;
60     esac
61     DEFINES="$DEFINES -DOS_$OS_TYPE"
62    
63     dnl Target CPU type.
64     HAVE_I386=no
65     HAVE_M68K=no
66     HAVE_SPARC=no
67     HAVE_POWERPC=no
68     case "$target_cpu" in
69     i386* | i486* | i586* | i686* | i786* ) CPU_TYPE=i386 HAVE_I386=yes;;
70     m68k* ) CPU_TYPE=m68k HAVE_M68K=yes;;
71     sparc* ) CPU_TYPE=sparc HAVE_SPARC=yes;;
72     powerpc* ) CPU_TYPE=powerpc HAVE_POWERPC=yes;;
73     *) CPU_TYPE=`echo $target_cpu | sed -e 's/-/_/g'`;;
74     esac
75     DEFINES="$DEFINES -DCPU_$CPU_TYPE"
76    
77     dnl Checks for programs.
78     AC_PROG_CC
79     AC_PROG_CC_C_O
80     AC_PROG_CPP
81     AC_PROG_CXX
82     AC_PROG_MAKE_SET
83     AC_PROG_INSTALL
84    
85     dnl We use mon if possible.
86     MONSRCS=
87     if [[ "x$WANT_MON" = "xyes" ]]; then
88     AC_MSG_CHECKING(for mon)
89     mon_srcdir=../../../mon/src
90     if grep mon_init $mon_srcdir/mon.h >/dev/null 2>/dev/null; then
91     AC_MSG_RESULT(yes)
92     AC_DEFINE(ENABLE_MON, 1, [Define if using "mon".])
93     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"
94     CXXFLAGS="$CXXFLAGS -I$mon_srcdir -I$mon_srcdir/disass"
95     AC_CHECK_LIB(ncurses, tgetent, ,
96     AC_CHECK_LIB(termcap, tgetent, ,
97     AC_CHECK_LIB(termlib, tgetent, ,
98     AC_CHECK_LIB(terminfo, tgetent, ,
99     AC_CHECK_LIB(Hcurses, tgetent, ,
100     AC_CHECK_LIB(curses, tgetent))))))
101     AC_CHECK_LIB(readline, readline)
102     AC_CHECK_HEADERS(readline.h history.h readline/readline.h readline/history.h)
103     else
104     AC_MSG_RESULT(no)
105     AC_MSG_WARN([Could not find mon, ignoring --with-mon.])
106     WANT_MON=no
107     fi
108     fi
109    
110     dnl Checks for libraries.
111     AC_CHECK_LIB(posix4, sem_init)
112     AC_CHECK_LIB(rt, timer_create)
113    
114     dnl We need X11.
115     AC_PATH_XTRA
116     if [[ "x$no_x" = "xyes" ]]; then
117     AC_MSG_ERROR([You need X11 to run Basilisk II.])
118     fi
119     CFLAGS="$CFLAGS $X_CFLAGS"
120     CXXFLAGS="$CXXFLAGS $X_CFLAGS"
121     LIBS="$LIBS $X_PRE_LIBS $X_LIBS -lX11 -lXext $X_EXTRA_LIBS"
122    
123     dnl We want pthreads. Try libpthread first, then libc_r (FreeBSD), then PTL.
124     HAVE_PTHREADS=yes
125     AC_CHECK_LIB(pthread, pthread_create, , [
126     AC_CHECK_LIB(c_r, pthread_create, , [
127     AC_CHECK_LIB(PTL, pthread_create, , [
128     HAVE_PTHREADS=no
129     ])
130     ])
131     ])
132     if [[ "x$HAVE_PTHREADS" = "xyes" ]]; then
133     AC_DEFINE(HAVE_PTHREADS, 1, [Define if pthreads are available.])
134     fi
135     AC_CHECK_FUNCS(pthread_cancel)
136     AC_CHECK_FUNCS(pthread_mutexattr_setprotocol)
137     AC_CHECK_FUNCS(pthread_mutexattr_settype)
138    
139     dnl If POSIX.4 semaphores are not available, we emulate them with pthread mutexes.
140     SEMSRC=
141     AC_CHECK_FUNCS(sem_init, , [
142     if test "x$HAVE_PTHREADS" = "xyes"; then
143     SEMSRC=posix_sem.cpp
144     fi
145     ])
146    
147     dnl We use DGA (XFree86 or fbdev) if possible.
148     if [[ "x$WANT_XF86_DGA" = "xyes" ]]; then
149     AC_CHECK_LIB(Xxf86dga, XF86DGAQueryExtension, [
150     AC_DEFINE(ENABLE_XF86_DGA, 1, [Define if using XFree86 DGA extension.])
151     LIBS="$LIBS -lXxf86dga"
152     if [[ "x$WANT_FBDEV_DGA" = "xyes" ]]; then
153     AC_MSG_WARN([Cannot have both --enable-xf86-dga and --enable-fbdev-dga, ignoring --enable-fbdev-dga.])
154     WANT_FBDEV_DGA=no
155     fi
156     ], [
157     AC_MSG_WARN([Could not find XFree86 DGA extension, ignoring --enable-xf86-dga.])
158     WANT_XF86_DGA=no
159     ])
160     fi
161     if [[ "x$WANT_FBDEV_DGA" = "xyes" ]]; then
162     AC_DEFINE(ENABLE_FBDEV_DGA, 1, [Define if using DGA with framebuffer device.])
163     fi
164    
165     dnl We use XFree86 VidMode if possible.
166     if [[ "x$WANT_XF86_VIDMODE" = "xyes" ]]; then
167     AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryExtension, [
168     AC_DEFINE(ENABLE_XF86_VIDMODE, 1, [Define if using XFree86 DGA extension.])
169     LIBS="$LIBS -lXxf86vm"
170     ], [
171     AC_MSG_WARN([Could not find XFree86 VidMode extension, ignoring --enable-xf86-vidmode.])
172     WANT_XF86_VIDMODE=no
173     ])
174     fi
175    
176     dnl We use GTK+ if possible.
177     UISRCS=../dummy/prefs_editor_dummy.cpp
178     if [[ "x$WANT_GTK" = "xyes" ]]; then
179     AM_PATH_GTK(1.2.0, [
180     AC_DEFINE(ENABLE_GTK, 1, [Define if using GTK.])
181     CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
182     LIBS="$LIBS $GTK_LIBS"
183     UISRCS=prefs_editor_gtk.cpp
184     B2_PATH_GNOMEUI([
185     AC_DEFINE(HAVE_GNOMEUI, 1, [Define if libgnomeui is available.])
186     CXXFLAGS="$CXXFLAGS $GNOMEUI_CFLAGS"
187     LIBS="$LIBS $GNOMEUI_LIBS"
188     ], [])
189     ], [
190     AC_MSG_WARN([Could not find GTK+, disabling user interface.])
191     WANT_GTK=no
192     ])
193     fi
194    
195     dnl We use ESD if possible.
196     if [[ "x$WANT_ESD" = "xyes" ]]; then
197     AM_PATH_ESD(0.2.8, [
198     AC_DEFINE(ENABLE_ESD, 1, [Define is using ESD.])
199     CFLAGS="$CFLAGS $ESD_CFLAGS"
200     CXXFLAGS="$CXXFLAGS $ESD_CFLAGS"
201     LIBS="$LIBS $ESD_LIBS"
202     ], [
203     AC_MSG_WARN([Could not find ESD, disabling ESD support.])
204     WANT_ESD=no
205     ])
206     fi
207    
208     dnl We use 64-bit file size support if possible.
209     AC_SYS_LARGEFILE
210    
211     dnl Checks for header files.
212     AC_HEADER_STDC
213     AC_CHECK_HEADERS(unistd.h fcntl.h sys/time.h sys/mman.h)
214    
215     dnl Checks for typedefs, structures, and compiler characteristics.
216     AC_C_BIGENDIAN
217     AC_C_CONST
218     AC_C_INLINE
219     AC_CHECK_SIZEOF(short, 2)
220     AC_CHECK_SIZEOF(int, 4)
221     AC_CHECK_SIZEOF(long, 4)
222     AC_CHECK_SIZEOF(long long, 8)
223     AC_CHECK_SIZEOF(float, 4)
224     AC_CHECK_SIZEOF(double, 8)
225     AC_CHECK_SIZEOF(long double, 12)
226     AC_CHECK_SIZEOF(void *, 4)
227     AC_TYPE_OFF_T
228     AC_CHECK_TYPE(loff_t, off_t)
229     AC_CHECK_TYPE(caddr_t, [char *])
230     AC_TYPE_SIZE_T
231     AC_TYPE_SIGNAL
232     AC_HEADER_TIME
233     AC_STRUCT_TM
234    
235     dnl Check whether sys/socket.h defines type socklen_t.
236     dnl (extracted from ac-archive/Miscellaneous)
237     AC_CACHE_CHECK([for socklen_t],
238     ac_cv_type_socklen_t, [
239     AC_TRY_COMPILE([
240     #include <sys/types.h>
241     #include <sys/socket.h>
242     ], [socklen_t len = 42; return 0;],
243     ac_cv_type_socklen_t=yes, ac_cv_type_socklen_t=no,
244     dnl When cross-compiling, do not assume anything.
245     ac_cv_type_socklen_t="guessing no"
246     )
247     ])
248     if [[ "x$ac_cv_type_socklen_t" != "xyes" ]]; then
249     AC_DEFINE(socklen_t, int, [Define to 'int' if <sys/types.h> doesn't define.])
250     fi
251    
252     dnl Checks for library functions.
253     AC_CHECK_FUNCS(strdup cfmakeraw)
254     AC_CHECK_FUNCS(clock_gettime timer_create)
255     AC_CHECK_FUNCS(sigaction signal)
256     AC_CHECK_FUNCS(mmap mprotect munmap)
257     AC_CHECK_FUNCS(vm_allocate vm_deallocate vm_protect)
258    
259     dnl Darwin seems to define mach_task_self() instead of task_self().
260     AC_CHECK_FUNCS(mach_task_self task_self)
261    
262     dnl Check for headers and functions related to pty support (sshpty.c)
263     dnl From openssh-3.2.2p1 configure.ac
264    
265     AC_CHECK_HEADERS(strings.h login.h sys/bsdtty.h sys/stat.h util.h pty.h)
266     AC_CHECK_FUNCS(_getpty vhangup strlcpy)
267    
268     case "$host" in
269     *-*-hpux10.26)
270     disable_ptmx_check=yes
271     ;;
272     *-*-linux*)
273     no_dev_ptmx=1
274     ;;
275     mips-sony-bsd|mips-sony-newsos4)
276     AC_DEFINE(HAVE_NEWS4, 1, [Define if you are on NEWS-OS (additions from openssh-3.2.2p1, for sshpty.c).])
277     ;;
278     *-*-sco3.2v4*)
279     no_dev_ptmx=1
280     ;;
281     *-*-sco3.2v5*)
282     no_dev_ptmx=1
283     ;;
284     esac
285    
286     if test -z "$no_dev_ptmx" ; then
287     if test "x$disable_ptmx_check" != "xyes" ; then
288     AC_CHECK_FILE([/dev/ptmx],
289     [
290     AC_DEFINE_UNQUOTED(HAVE_DEV_PTMX, 1, [Define if you have /dev/ptmx.])
291     have_dev_ptmx=1
292     ]
293     )
294     fi
295     fi
296     AC_CHECK_FILE([/dev/ptc],
297     [
298     AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC, 1, [Define if you have /dev/ptc.])
299     have_dev_ptc=1
300     ]
301     )
302    
303     dnl (end of code from openssh-3.2.2p1 configure.ac)
304    
305    
306     dnl Select system-dependant source files.
307     SERIALSRC=serial_unix.cpp
308     ETHERSRC=../dummy/ether_dummy.cpp
309     SCSISRC=../dummy/scsi_dummy.cpp
310     AUDIOSRC=../dummy/audio_dummy.cpp
311     EXTRASYSSRCS=
312     CAN_NATIVE_M68K=no
313     case "$target_os" in
314     linux*)
315     ETHERSRC=ether_unix.cpp
316     AUDIOSRC=audio_oss_esd.cpp
317     SCSISRC=Linux/scsi_linux.cpp
318     ;;
319     freebsd*)
320     ETHERSRC=ether_unix.cpp
321     AUDIOSRC=audio_oss_esd.cpp
322     DEFINES="$DEFINES -DBSD_COMP"
323     CXXFLAGS="$CXXFLAGS -fpermissive"
324     dnl Check for the CAM library
325     AC_CHECK_LIB(cam, cam_open_btl, HAVE_LIBCAM=yes, HAVE_LIBCAM=no)
326     if [[ "x$HAVE_LIBCAM" = "xno" ]]; then
327     AC_MSG_WARN([Cannot find libcam for SCSI management, disabling SCSI support.])
328     else
329     dnl Check for the sys kernel includes
330     AC_CHECK_HEADER(camlib.h)
331     if [[ "x$ac_cv_header_camlib_h" = "xno" ]]; then
332     dnl In this case I should fix this thing including a "patch"
333     dnl to access directly to the functions in the kernel :) --Orlando
334     AC_MSG_WARN([Cannot find includes for CAM library, disabling SCSI support.])
335     else
336     SCSISRC=FreeBSD/scsi_freebsd.cpp
337     LIBS="$LIBS -lcam"
338     DEFINES="$DEFINES -DCAM"
339     fi
340     fi
341     ;;
342     netbsd*)
343     CAN_NATIVE_M68K=yes
344     ;;
345     solaris*)
346     AUDIOSRC=Solaris/audio_solaris.cpp
347     DEFINES="$DEFINES -DBSD_COMP -D_POSIX_PTHREAD_SEMANTICS"
348     ;;
349     irix*)
350     ETHERSRC=ether_unix.cpp
351     AUDIOSRC=Irix/audio_irix.cpp
352     EXTRASYSSRCS=Irix/unaligned.c
353     dnl IRIX headers work fine, but somehow don't define or use "STDC_HEADERS"
354     DEFINES="$DEFINES -DCRTSCTS=CNEW_RTSCTS -DB230400=B115200 -DSTDC_HEADERS"
355     LIBS="$LIBS -laudio"
356     WANT_ESD=no
357    
358     dnl Check if our compiler supports -Ofast (MIPSPro)
359     HAVE_OFAST=no
360     ocflags="$CFLAGS"
361     CFLAGS=`echo $CFLAGS | sed -e 's/ -g / -Ofast /;s/^-g /-Ofast /;s/-g$/ -Ofast/;s/^-g$/-Ofast/'`
362     AC_MSG_CHECKING(if "-Ofast" works)
363     dnl Do a test compile of an empty function
364     AC_TRY_COMPILE(,, [AC_MSG_RESULT(yes); HAVE_OFAST=yes], AC_MSG_RESULT(no))
365     CFLAGS="$ocflags"
366    
367     ;;
368     esac
369    
370     dnl Use 68k CPU natively?
371     WANT_NATIVE_M68K=no
372     if [[ "x$HAVE_M68K" = "xyes" -a "x$CAN_NATIVE_M68K" = "xyes" ]]; then
373     AC_DEFINE(ENABLE_NATIVE_M68K, 1, [Define if using native 68k mode.])
374     WANT_NATIVE_M68K=yes
375     fi
376    
377     if [[ "x$HAVE_PTHREADS" = "xno" ]]; then
378     dnl Serial, ethernet and audio support needs pthreads
379     AC_MSG_WARN([You don't have pthreads, disabling serial, ethernet and audio support.])
380     SERIALSRC=../dummy/serial_dummy.cpp
381     ETHERSRC=../dummy/ether_dummy.cpp
382     AUDIOSRC=../dummy/audio_dummy.cpp
383     fi
384     SYSSRCS="$SERIALSRC $ETHERSRC $SCSISRC $AUDIOSRC $SEMSRC $UISRCS $MONSRCS $EXTRASYSSRCS"
385    
386     dnl Define a macro that translates a yesno-variable into a C macro definition
387     dnl to be put into the config.h file
388     dnl $1 -- the macro to define
389     dnl $2 -- the value to translate
390     dnl $3 -- template name
391     AC_DEFUN(AC_TRANSLATE_DEFINE, [
392     if [[ "x$2" = "xyes" -o "x$2" = "xguessing yes" ]]; then
393     AC_DEFINE($1, 1, $3)
394     fi
395     ])
396    
397     dnl Various checks if the system supports vm_allocate() and the like functions.
398     have_mach_vm=no
399     if [[ "x$ac_cv_func_vm_allocate" = "xyes" -a "x$ac_cv_func_vm_deallocate" = "xyes" -a \
400     "x$ac_cv_func_vm_protect" = "xyes" ]]; then
401     have_mach_vm=yes
402     fi
403     AC_TRANSLATE_DEFINE(HAVE_MACH_VM, "$have_mach_vm",
404     [Define if your system has a working vm_allocate()-based memory allocator.])
405    
406     dnl Check that vm_allocate(), vm_protect() work
407     if [[ "x$have_mach_vm" = "xyes" ]]; then
408    
409     AC_CACHE_CHECK([whether vm_protect works],
410     ac_cv_vm_protect_works, [
411     AC_LANG_SAVE
412     AC_LANG_CPLUSPLUS
413     ac_cv_vm_protect_works=yes
414     dnl First the tests that should segfault
415     for test_def in NONE_READ NONE_WRITE READ_WRITE; do
416     AC_TRY_RUN([
417     #define CONFIGURE_TEST_VM_MAP
418     #define TEST_VM_PROT_$test_def
419     #include "vm_alloc.cpp"
420     ], ac_cv_vm_protect_works=no, rm -f core,
421     dnl When cross-compiling, do not assume anything
422     ac_cv_vm_protect_works="guessing no"
423     )
424     done
425     AC_TRY_RUN([
426     #define CONFIGURE_TEST_VM_MAP
427     #define TEST_VM_PROT_RDWR_WRITE
428     #include "vm_alloc.cpp"
429     ], , ac_cv_vm_protect_works=no,
430     dnl When cross-compiling, do not assume anything
431     ac_cv_vm_protect_works="guessing no"
432     )
433     AC_LANG_RESTORE
434     ]
435     )
436    
437     dnl Remove support for vm_allocate() if vm_protect() does not work
438     if [[ "x$have_mach_vm" = "xyes" ]]; then
439     case $ac_cv_vm_protect_works in
440     *yes) have_mach_vm=yes;;
441     *no) have_mach_vm=no;;
442     esac
443     fi
444     AC_TRANSLATE_DEFINE(HAVE_MACH_VM, "$have_mach_vm",
445     [Define if your system has a working vm_allocate()-based memory allocator.])
446    
447     fi dnl HAVE_MACH_VM
448    
449     dnl Various checks if the system supports mmap() and the like functions.
450     dnl ... and Mach memory allocators are not supported
451     have_mmap_vm=no
452     if [[ "x$ac_cv_func_mmap" = "xyes" -a "x$ac_cv_func_munmap" = "xyes" -a \
453     "x$ac_cv_func_mprotect" = "xyes" ]]; then
454     if [[ "x$have_mach_vm" = "xno" ]]; then
455     have_mmap_vm=yes
456     fi
457     fi
458     AC_TRANSLATE_DEFINE(HAVE_MMAP_VM, "$have_mmap_vm",
459     [Define if your system has a working mmap()-based memory allocator.])
460    
461     dnl Check that mmap() and associated functions work.
462     if [[ "x$have_mmap_vm" = "xyes" ]]; then
463    
464     dnl Check if we have a working anonymous mmap()
465     AC_CACHE_CHECK([whether mmap supports MAP_ANON],
466     ac_cv_mmap_anon, [
467     AC_LANG_SAVE
468     AC_LANG_CPLUSPLUS
469     AC_TRY_RUN([
470     #define HAVE_MMAP_ANON
471     #define CONFIGURE_TEST_VM_MAP
472     #define TEST_VM_MMAP_ANON
473     #include "vm_alloc.cpp"
474     ], ac_cv_mmap_anon=yes, ac_cv_mmap_anon=no,
475     dnl When cross-compiling, do not assume anything.
476     ac_cv_mmap_anon="guessing no"
477     )
478     AC_LANG_RESTORE
479     ]
480     )
481     AC_TRANSLATE_DEFINE(HAVE_MMAP_ANON, "$ac_cv_mmap_anon",
482     [Define if <sys/mman.h> defines MAP_ANON and mmap()'ing with MAP_ANON works.])
483    
484     AC_CACHE_CHECK([whether mmap supports MAP_ANONYMOUS],
485     ac_cv_mmap_anonymous, [
486     AC_LANG_SAVE
487     AC_LANG_CPLUSPLUS
488     AC_TRY_RUN([
489     #define HAVE_MMAP_ANONYMOUS
490     #define CONFIGURE_TEST_VM_MAP
491     #define TEST_VM_MMAP_ANON
492     #include "vm_alloc.cpp"
493     ], ac_cv_mmap_anonymous=yes, ac_cv_mmap_anonymous=no,
494     dnl When cross-compiling, do not assume anything.
495     ac_cv_mmap_anonymous="guessing no"
496     )
497     AC_LANG_RESTORE
498     ]
499     )
500     AC_TRANSLATE_DEFINE(HAVE_MMAP_ANONYMOUS, "$ac_cv_mmap_anonymous",
501     [Define if <sys/mman.h> defines MAP_ANONYMOUS and mmap()'ing with MAP_ANONYMOUS works.])
502    
503     AC_CACHE_CHECK([whether mprotect works],
504     ac_cv_mprotect_works, [
505     AC_LANG_SAVE
506     AC_LANG_CPLUSPLUS
507     ac_cv_mprotect_works=yes
508     dnl First the tests that should segfault
509     for test_def in NONE_READ NONE_WRITE READ_WRITE; do
510     AC_TRY_RUN([
511     #define CONFIGURE_TEST_VM_MAP
512     #define TEST_VM_PROT_$test_def
513     #include "vm_alloc.cpp"
514     ], ac_cv_mprotect_works=no, rm -f core,
515     dnl When cross-compiling, do not assume anything
516     ac_cv_mprotect_works="guessing no"
517     )
518     done
519     AC_TRY_RUN([
520     #define CONFIGURE_TEST_VM_MAP
521     #define TEST_VM_PROT_RDWR_WRITE
522     #include "vm_alloc.cpp"
523     ], , ac_cv_mprotect_works=no,
524     dnl When cross-compiling, do not assume anything
525     ac_cv_mprotect_works="guessing no"
526     )
527     AC_LANG_RESTORE
528     ]
529     )
530    
531     dnl Remove support for mmap() if mprotect() does not work
532     if [[ "x$have_mmap_vm" = "xyes" ]]; then
533     case $ac_cv_mprotect_works in
534     *yes) have_mmap_vm=yes;;
535     *no) have_mmap_vm=no;;
536     esac
537     fi
538     AC_TRANSLATE_DEFINE(HAVE_MMAP_VM, $have_mmap_vm,
539     [Define if your system has a working mmap()-based memory allocator.])
540    
541     fi dnl HAVE_MMAP_VM
542    
543     dnl Check if we can mmap 0x2000 bytes from 0x0000
544     AC_CACHE_CHECK([whether we can map Low Memory area 0x0000-0x2000],
545     ac_cv_can_map_lm, [
546     AC_LANG_SAVE
547     AC_LANG_CPLUSPLUS
548     AC_TRY_RUN([
549     #include "vm_alloc.cpp"
550     int main(void) { /* returns 0 if we could map the lowmem globals */
551     volatile char * lm;
552     if (vm_init() < 0) exit(1);
553     if ((lm = (volatile char *)vm_acquire_fixed(0, 0x2000)) == VM_MAP_FAILED) exit(1);
554     lm[0] = 'z';
555     if (vm_release((char *)lm, 0x2000) < 0) exit(1);
556     vm_exit(); exit(0);
557     }
558     ], ac_cv_can_map_lm=yes, ac_cv_can_map_lm=no,
559     dnl When cross-compiling, do not assume anything.
560     ac_cv_can_map_lm="guessing no"
561     )
562     AC_LANG_RESTORE
563     ]
564     )
565    
566     dnl Check signal handlers need to be reinstalled
567     AC_CACHE_CHECK([whether signal handlers need to be reinstalled],
568     ac_cv_signal_need_reinstall, [
569     AC_LANG_SAVE
570     AC_LANG_CPLUSPLUS
571     AC_TRY_RUN([
572     #include <stdlib.h>
573     #ifdef HAVE_UNISTD_H
574     #include <unistd.h>
575     #endif
576     #include <signal.h>
577     static int handled_signal = 0;
578     RETSIGTYPE sigusr1_handler(int) { handled_signal++; }
579     int main(void) { /* returns 0 if signals need not to be reinstalled */
580     signal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1);
581     exit(handled_signal == 2);
582     }
583     ], ac_cv_signal_need_reinstall=yes, ac_cv_signal_need_reinstall=no,
584     dnl When cross-compiling, do not assume anything.
585     ac_cv_signal_need_reinstall="guessing yes"
586     )
587     AC_LANG_RESTORE
588     ]
589     )
590     AC_TRANSLATE_DEFINE(SIGNAL_NEED_REINSTALL, "$ac_cv_signal_need_reinstall",
591     [Define if your system requires signals to be reinstalled.])
592    
593     dnl Check if sigaction handlers need to be reinstalled
594     AC_CACHE_CHECK([whether sigaction handlers need to be reinstalled],
595     ac_cv_sigaction_need_reinstall, [
596     AC_LANG_SAVE
597     AC_LANG_CPLUSPLUS
598     AC_TRY_RUN([
599     #include <stdlib.h>
600     #ifdef HAVE_UNISTD_H
601     #include <unistd.h>
602     #endif
603     #include <signal.h>
604     static int handled_signal = 0;
605     RETSIGTYPE sigusr1_handler(int) { handled_signal++; }
606     typedef RETSIGTYPE (*signal_handler)(int);
607     static signal_handler mysignal(int sig, signal_handler handler) {
608     struct sigaction old_sa;
609     struct sigaction new_sa;
610     new_sa.sa_handler = handler;
611     return ((sigaction(sig,&new_sa,&old_sa) < 0) ? SIG_IGN : old_sa.sa_handler);
612     }
613     int main(void) { /* returns 0 if signals need not to be reinstalled */
614     mysignal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1);
615     exit(handled_signal == 2);
616     }
617     ], ac_cv_sigaction_need_reinstall=yes, ac_cv_sigaction_need_reinstall=no,
618     dnl When cross-compiling, do not assume anything.
619     ac_cv_sigaction_need_reinstall="guessing yes"
620     )
621     AC_LANG_RESTORE
622     ]
623     )
624     AC_TRANSLATE_DEFINE(SIGACTION_NEED_REINSTALL, "$ac_cv_sigaction_need_reinstall",
625     [Define if your system requires sigactions to be reinstalled.])
626    
627     dnl Check if extended signals are supported.
628     AC_CACHE_CHECK([whether your system supports extended signal handlers],
629     ac_cv_have_extended_signals, [
630     AC_LANG_SAVE
631     AC_LANG_CPLUSPLUS
632     AC_TRY_RUN([
633     #define HAVE_SIGINFO_T 1
634     #define CONFIGURE_TEST_SIGSEGV_RECOVERY
635     #include "vm_alloc.cpp"
636     #include "sigsegv.cpp"
637     ], ac_cv_have_extended_signals=yes, ac_cv_have_extended_signals=no,
638     dnl When cross-compiling, do not assume anything.
639     ac_cv_have_extended_signals=no
640     )
641     AC_LANG_RESTORE
642     ]
643     )
644     AC_TRANSLATE_DEFINE(HAVE_SIGINFO_T, "$ac_cv_have_extended_signals",
645     [Define if your system support extended signals.])
646    
647     dnl Otherwise, check for subterfuges.
648     if [[ "x$ac_cv_have_extended_signals" = "xno" ]]; then
649     AC_CACHE_CHECK([whether we then have a subterfuge for your system],
650     ac_cv_have_sigcontext_hack, [
651     AC_LANG_SAVE
652     AC_LANG_CPLUSPLUS
653     AC_TRY_RUN([
654     #define HAVE_SIGCONTEXT_SUBTERFUGE 1
655     #define CONFIGURE_TEST_SIGSEGV_RECOVERY
656     #include "vm_alloc.cpp"
657     #include "sigsegv.cpp"
658     ], ac_cv_have_sigcontext_hack=yes, ac_cv_have_sigcontext_hack=no,
659     dnl When cross-compiling, do not assume anything.
660     ac_cv_have_sigcontext_hack=no
661     )
662     AC_LANG_RESTORE
663     ])
664     AC_TRANSLATE_DEFINE(HAVE_SIGCONTEXT_SUBTERFUGE, "$ac_cv_have_sigcontext_hack",
665     [Define if we know a hack to replace siginfo_t->si_addr member.])
666     fi
667    
668     dnl Check if we can ignore the fault (instruction skipping in SIGSEGV handler)
669     AC_CACHE_CHECK([whether we can skip instruction in SIGSEGV handler],
670     ac_cv_have_skip_instruction, [
671     AC_LANG_SAVE
672     AC_LANG_CPLUSPLUS
673     AC_TRY_RUN([
674     #define HAVE_SIGSEGV_SKIP_INSTRUCTION 1
675     #define CONFIGURE_TEST_SIGSEGV_RECOVERY
676     #include "vm_alloc.cpp"
677     #include "sigsegv.cpp"
678     ], ac_cv_have_skip_instruction=yes, ac_cv_have_skip_instruction=no,
679     dnl When cross-compiling, do not assume anything.
680     ac_cv_have_skip_instruction=no
681     )
682     AC_LANG_RESTORE
683     ]
684     )
685     AC_TRANSLATE_DEFINE(HAVE_SIGSEGV_SKIP_INSTRUCTION, "$ac_cv_have_skip_instruction",
686     [Define if we can ignore the fault (instruction skipping in SIGSEGV handler).])
687    
688     dnl Can we do Video on SEGV Signals ?
689     CAN_VOSF=no
690     if [[ "$ac_cv_have_extended_signals" = "yes" -o "$ac_cv_have_sigcontext_hack" = "yes" ]]; then
691     CAN_VOSF=yes
692     fi
693    
694     dnl Determine the addressing mode to use
695     if [[ "x$WANT_NATIVE_M68K" = "xyes" ]]; then
696     ADDRESSING_MODE="real"
697     else
698     ADDRESSING_MODE=""
699     AC_MSG_CHECKING([for the addressing mode to use])
700     for am in $ADDRESSING_TEST_ORDER; do
701     case $am in
702     real)
703     dnl Requires ability to mmap() Low Memory globals
704     if [[ "x$ac_cv_can_map_lm" = "xno" ]]; then
705     continue
706     fi
707     dnl Requires VOSF screen updates
708     if [[ "x$CAN_VOSF" = "xno" ]]; then
709     continue
710     fi
711     dnl Real addressing will probably work.
712     ADDRESSING_MODE="real"
713     WANT_VOSF=yes dnl we can use VOSF and we need it actually
714     DEFINES="$DEFINES -DREAL_ADDRESSING"
715     break
716     ;;
717     direct)
718     dnl Requires VOSF screen updates
719     if [[ "x$CAN_VOSF" = "xyes" ]]; then
720     ADDRESSING_MODE="direct"
721     WANT_VOSF=yes dnl we can use VOSF and we need it actually
722     DEFINES="$DEFINES -DDIRECT_ADDRESSING"
723     break
724     fi
725     ;;
726     banks)
727     dnl Default addressing mode
728     ADDRESSING_MODE="memory banks"
729     break
730     ;;
731     *)
732     AC_MSG_ERROR([Internal configure.in script error for $am addressing mode])
733     esac
734     done
735     AC_MSG_RESULT($ADDRESSING_MODE)
736     if [[ "x$ADDRESSING_MODE" = "x" ]]; then
737     AC_MSG_WARN([Sorry, no suitable addressing mode in $ADDRESSING_TEST_ORDER])
738     ADDRESSING_MODE="memory banks"
739     fi
740     fi
741    
742     dnl Enable VOSF screen updates with this feature is requested and feasible
743     if [[ "x$WANT_VOSF" = "xyes" -a "x$CAN_VOSF" = "xyes" ]]; then
744     AC_DEFINE(ENABLE_VOSF, 1, [Define if using video enabled on SEGV signals.])
745     else
746     WANT_VOSF=no
747     fi
748    
749     dnl Check for GAS.
750     HAVE_GAS=no
751     AC_MSG_CHECKING(for GAS .p2align feature)
752     cat >conftest.S << EOF
753     .text
754     .p2align 5
755     EOF
756     if $CC conftest.S -c -o conftest.o >/dev/null 2>&1 ; then HAVE_GAS=yes; fi
757     AC_MSG_RESULT($HAVE_GAS)
758    
759     dnl Check for GCC 2.7 or higher.
760     HAVE_GCC27=no
761     AC_MSG_CHECKING(for GCC 2.7 or higher)
762     AC_EGREP_CPP(yes,
763     [#if __GNUC__ - 1 > 1 || __GNUC_MINOR__ - 1 > 5
764     yes
765     #endif
766     ], [AC_MSG_RESULT(yes); HAVE_GCC27=yes], AC_MSG_RESULT(no))
767    
768     dnl Check for GCC 3.0 or higher.
769     HAVE_GCC30=no
770     AC_MSG_CHECKING(for GCC 3.0 or higher)
771     AC_EGREP_CPP(yes,
772     [#if __GNUC__ >= 3
773     yes
774     #endif
775     ], [AC_MSG_RESULT(yes); HAVE_GCC30=yes], AC_MSG_RESULT(no))
776    
777     dnl Set "-fomit-frame-pointer" on i386 GCC 2.7 or higher.
778     dnl Also set "-fno-exceptions" for C++ because exception handling requires
779     dnl the frame pointer.
780     if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" ]]; then
781     CFLAGS="$CFLAGS -fomit-frame-pointer"
782     CXXFLAGS="$CXXFLAGS -fomit-frame-pointer -fno-exceptions"
783     fi
784    
785     dnl (gb) Do not merge constants since it breaks fpu/fpu_x86.cpp.
786     dnl As of 2001/08/02, this affects the following compilers:
787     dnl Official: probably gcc-3.1 (mainline CVS)
788     dnl Mandrake: gcc-2.96 >= 0.59mdk, gcc-3.0.1 >= 0.1mdk
789     dnl Red Hat : gcc-2.96 >= 89, gcc-3.0 >= 1
790     if [[ "x$HAVE_GCC27" = "xyes" ]]; then
791     SAVED_CXXFLAGS="$CXXFLAGS"
792     CXXFLAGS="$CXXFLAGS -fno-merge-constants"
793     AC_CACHE_CHECK([whether GCC supports constants merging], ac_cv_gcc_constants_merging, [
794     AC_LANG_SAVE
795     AC_LANG_CPLUSPLUS
796     AC_TRY_COMPILE([],[],[ac_cv_gcc_constants_merging=yes],[ac_cv_gcc_constants_merging=no])
797     AC_LANG_RESTORE
798     ])
799     if [[ "x$ac_cv_gcc_constants_merging" != "xyes" ]]; then
800     CXXFLAGS="$SAVED_CXXFLAGS"
801     fi
802     fi
803    
804     dnl Select appropriate CPU source and REGPARAM define.
805     ASM_OPTIMIZATIONS=none
806     CPUSRCS="cpuemu1.cpp cpuemu2.cpp cpuemu3.cpp cpuemu4.cpp cpuemu5.cpp cpuemu6.cpp cpuemu7.cpp cpuemu8.cpp"
807     if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" -a "x$OS_TYPE" != "xfreebsd" ]]; then
808     dnl i386 CPU
809     DEFINES="$DEFINES -DREGPARAM=\"__attribute__((regparm(3)))\""
810     if [[ "x$HAVE_GAS" = "xyes" ]]; then
811     ASM_OPTIMIZATIONS=i386
812     DEFINES="$DEFINES -DX86_ASSEMBLY -DUNALIGNED_PROFITABLE -DOPTIMIZED_FLAGS"
813     CPUSRCS="cpufast1.s cpufast2.s cpufast3.s cpufast4.s cpufast5.s cpufast6.s cpufast7.s cpufast8.s"
814     fi
815     elif [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_SPARC" = "xyes" -a "x$HAVE_GAS" = "xyes" ]]; then
816     dnl SPARC CPU
817     case "$target_os" in
818     solaris*)
819     AC_MSG_CHECKING(SPARC CPU architecture)
820     SPARC_TYPE=`Solaris/which_sparc`
821     AC_MSG_RESULT($SPARC_TYPE)
822     case "$SPARC_TYPE" in
823     SPARC_V8)
824     ASM_OPTIMIZATIONS="SPARC V8 architecture"
825     DEFINES="$DEFINES -DSPARC_V8_ASSEMBLY" dnl -DOPTIMIZED_FLAGS"
826     CFLAGS="$CFLAGS -Wa,-Av8"
827     CXXFLAGS="$CXXFLAGS -Wa,-Av8"
828     ;;
829     SPARC_V9)
830     ASM_OPTIMIZATIONS="SPARC V9 architecture"
831     DEFINES="$DEFINES -DSPARC_V9_ASSEMBLY" dnl -DOPTIMIZED_FLAGS"
832     CFLAGS="$CFLAGS -Wa,-Av9"
833     CXXFLAGS="$CXXFLAGS -Wa,-Av9"
834     ;;
835     esac
836     ;;
837     esac
838     elif [[ "x$WANT_NATIVE_M68K" = "xyes" ]]; then
839     dnl Native m68k, no emulation
840     CPUINCLUDES="-I../native_cpu"
841     CPUSRCS="asm_support.s"
842     fi
843    
844     dnl Utility macro used by next two tests.
845     dnl AC_EXAMINE_OBJECT(C source code,
846     dnl commands examining object file,
847     dnl [commands to run if compile failed]):
848     dnl
849     dnl Compile the source code to an object file; then convert it into a
850     dnl printable representation. All unprintable characters and
851     dnl asterisks (*) are replaced by dots (.). All white space is
852     dnl deleted. Newlines (ASCII 0x10) in the input are preserved in the
853     dnl output, but runs of newlines are compressed to a single newline.
854     dnl Finally, line breaks are forcibly inserted so that no line is
855     dnl longer than 80 columns and the file ends with a newline. The
856     dnl result of all this processing is in the file conftest.dmp, which
857     dnl may be examined by the commands in the second argument.
858     dnl
859     AC_DEFUN([gcc_AC_EXAMINE_OBJECT],
860     [AC_LANG_SAVE
861     AC_LANG_C
862     dnl Next bit cribbed from AC_TRY_COMPILE.
863     cat > conftest.$ac_ext <<EOF
864     [#line __oline__ "configure"
865     #include "confdefs.h"
866     $1
867     ]EOF
868     if AC_TRY_EVAL(ac_compile); then
869     od -c conftest.o |
870     sed ['s/^[0-7]*[ ]*/ /
871     s/\*/./g
872     s/ \\n/*/g
873     s/ [0-9][0-9][0-9]/./g
874     s/ \\[^ ]/./g'] |
875     tr -d '
876     ' | tr -s '*' '
877     ' | fold | sed '$a\
878     ' > conftest.dmp
879     $2
880     ifelse($3, , , else
881     $3
882     )dnl
883     fi
884     rm -rf conftest*
885     AC_LANG_RESTORE])
886    
887     dnl Floating point format probe.
888     dnl The basic concept is the same as the above: grep the object
889     dnl file for an interesting string. We have to watch out for
890     dnl rounding changing the values in the object, however; this is
891     dnl handled by ignoring the least significant byte of the float.
892     dnl
893     dnl Does not know about VAX G-float or C4x idiosyncratic format.
894     dnl It does know about PDP-10 idiosyncratic format, but this is
895     dnl not presently supported by GCC. S/390 "binary floating point"
896     dnl is in fact IEEE (but maybe we should have that in EBCDIC as well
897     dnl as ASCII?)
898     dnl
899     AC_DEFUN([gcc_AC_C_FLOAT_FORMAT],
900     [AC_CACHE_CHECK(floating point format, ac_cv_c_float_format,
901     [gcc_AC_EXAMINE_OBJECT(
902     [/* This will not work unless sizeof(double) == 8. */
903     extern char sizeof_double_must_be_8 [sizeof(double) == 8 ? 1 : -1];
904    
905     /* This structure must have no internal padding. */
906     struct possibility {
907     char prefix[8];
908     double candidate;
909     char postfix[8];
910     };
911    
912     #define C(cand) { "\nformat:", cand, ":tamrof\n" }
913     struct possibility table [] =
914     {
915     C( 3.25724264705901305206e+01), /* @@IEEEFP - IEEE 754 */
916     C( 3.53802595280598432000e+18), /* D__float - VAX */
917     C( 5.32201830133125317057e-19), /* D.PDP-10 - PDP-10 - the dot is 0x13a */
918     C( 1.77977764695171661377e+10), /* IBMHEXFP - s/390 format, ascii */
919     C(-5.22995989424860458374e+10) /* IBMHEXFP - s/390 format, EBCDIC */
920     };],
921     [if grep 'format:.@IEEEF.:tamrof' conftest.dmp >/dev/null 2>&1; then
922     ac_cv_c_float_format='IEEE (big-endian)'
923     elif grep 'format:.I@@PFE.:tamrof' conftest.dmp >/dev/null 2>&1; then
924     ac_cv_c_float_format='IEEE (big-endian)'
925     elif grep 'format:.FEEEI@.:tamrof' conftest.dmp >/dev/null 2>&1; then
926     ac_cv_c_float_format='IEEE (little-endian)'
927     elif grep 'format:.EFP@@I.:tamrof' conftest.dmp >/dev/null 2>&1; then
928     ac_cv_c_float_format='IEEE (little-endian)'
929     elif grep 'format:.__floa.:tamrof' conftest.dmp >/dev/null 2>&1; then
930     ac_cv_c_float_format='VAX D-float'
931     elif grep 'format:..PDP-1.:tamrof' conftest.dmp >/dev/null 2>&1; then
932     ac_cv_c_float_format='PDP-10'
933     elif grep 'format:.BMHEXF.:tamrof' conftest.dmp >/dev/null 2>&1; then
934     ac_cv_c_float_format='IBM 370 hex'
935     else
936     AC_MSG_ERROR(Unknown floating point format)
937     fi],
938     [AC_MSG_ERROR(compile failed)])
939     ])
940     # IEEE is the default format. If the float endianness isn't the same
941     # as the integer endianness, we have to set FLOAT_WORDS_BIG_ENDIAN
942     # (which is a tristate: yes, no, default). This is only an issue with
943     # IEEE; the other formats are only supported by a few machines each,
944     # all with the same endianness.
945     format=IEEE_FLOAT_FORMAT
946     fbigend=
947     case $ac_cv_c_float_format in
948     'IEEE (big-endian)' )
949     if test $ac_cv_c_bigendian = no; then
950     fbigend=1
951     fi
952     ;;
953     'IEEE (little-endian)' )
954     if test $ac_cv_c_bigendian = yes; then
955     fbigend=0
956     fi
957     ;;
958     'VAX D-float' )
959     format=VAX_FLOAT_FORMAT
960     ;;
961     'PDP-10' )
962     format=PDP10_FLOAT_FORMAT
963     ;;
964     'IBM 370 hex' )
965     format=IBM_FLOAT_FORMAT
966     ;;
967     esac
968     AC_DEFINE_UNQUOTED(HOST_FLOAT_FORMAT, $format,
969     [Define to the floating point format of the host machine.])
970     if test -n "$fbigend"; then
971     AC_DEFINE_UNQUOTED(HOST_FLOAT_WORDS_BIG_ENDIAN, $fbigend,
972     [Define to 1 if the host machine stores floating point numbers in
973     memory with the word containing the sign bit at the lowest address,
974     or to 0 if it does it the other way around.
975    
976     This macro should not be defined if the ordering is the same as for
977     multi-word integers.])
978     fi
979     ])
980    
981     dnl Select appropriate FPU source.
982     gcc_AC_C_FLOAT_FORMAT
983     AC_CHECK_HEADERS(ieee754.h ieeefp.h floatingpoint.h nan.h)
984    
985     for fpe in $FPE_CORE_TEST_ORDER; do
986     case $fpe in
987     ieee)
988     if echo "$ac_cv_c_float_format" | grep -q IEEE; then
989     FPE_CORE="IEEE fpu core"
990     DEFINES="$DEFINES -DFPU_IEEE"
991     FPUSRCS="../uae_cpu/fpu/fpu_ieee.cpp"
992     break
993     fi
994     ;;
995     x86)
996     if [[ ":$HAVE_GCC27:$HAVE_I386:$HAVE_GAS:" = ":yes:yes:yes:" ]]; then
997     FPE_CORE="i387 fpu core"
998     DEFINES="$DEFINES -DFPU_X86"
999     FPUSRCS="../uae_cpu/fpu/fpu_x86.cpp"
1000     break
1001     fi
1002     ;;
1003     uae)
1004     FPE_CORE="uae fpu core"
1005     DEFINES="$DEFINES -DFPU_UAE"
1006     FPUSRCS="../uae_cpu/fpu/fpu_uae.cpp"
1007     break
1008     ;;
1009     *)
1010     AC_MSG_ERROR([Internal configure.in script error for $fpe fpu core])
1011     ;;
1012     esac
1013     done
1014     if [[ "x$FPE_CORE" = "x" ]]; then
1015     AC_MSG_ERROR([Sorry, no suitable FPU core found in $FPE_CORE_TEST_ORDER])
1016     fi
1017    
1018     dnl Check for certain math functions
1019     AC_CHECK_FUNCS(atanh)
1020     AC_CHECK_FUNCS(isnan isinf) dnl C99
1021     AC_CHECK_FUNCS(isnanl isinfl) dnl IEEE ?
1022    
1023     dnl UAE CPU sources for all non-m68k-native architectures.
1024     if [[ "x$WANT_NATIVE_M68K" = "xno" ]]; then
1025     CPUINCLUDES="-I../uae_cpu"
1026     CPUSRCS="../uae_cpu/basilisk_glue.cpp ../uae_cpu/memory.cpp ../uae_cpu/newcpu.cpp ../uae_cpu/readcpu.cpp $FPUSRCS cpustbl.cpp cpudefs.cpp $CPUSRCS"
1027     fi
1028    
1029     dnl Remove the "-g" option if set for GCC.
1030     if [[ "x$HAVE_GCC27" = "xyes" ]]; then
1031     CFLAGS=`echo $CFLAGS | sed -e 's/-g//g'`
1032     CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-g//g'`
1033     fi
1034    
1035     dnl Or if we have -Ofast
1036     if [[ "x$HAVE_OFAST" = "xyes" ]]; then
1037     CFLAGS="`echo $CFLAGS | sed -e 's/-g//g'` -Ofast"
1038     CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-g//g'` -Ofast"
1039     CXXFLAGS="-LANG:std $CXXFLAGS"
1040     LDFLAGS="$LDFLAGS -ipa"
1041     fi
1042    
1043     dnl Generate Makefile.
1044     AC_SUBST(DEFINES)
1045     AC_SUBST(SYSSRCS)
1046     AC_SUBST(CPUINCLUDES)
1047     AC_SUBST(CPUSRCS)
1048     AC_OUTPUT(Makefile)
1049    
1050     dnl Print summary.
1051     echo
1052     echo Basilisk II configuration summary:
1053     echo
1054     echo XFree86 DGA support .................... : $WANT_XF86_DGA
1055     echo XFree86 VidMode support ................ : $WANT_XF86_VIDMODE
1056     echo fbdev DGA support ...................... : $WANT_FBDEV_DGA
1057     echo Enable video on SEGV signals ........... : $WANT_VOSF
1058     echo ESD sound support ...................... : $WANT_ESD
1059     echo GTK user interface ..................... : $WANT_GTK
1060     echo mon debugger support ................... : $WANT_MON
1061     echo Running m68k code natively ............. : $WANT_NATIVE_M68K
1062     echo Floating-Point emulation core .......... : $FPE_CORE
1063     echo Assembly optimizations ................. : $ASM_OPTIMIZATIONS
1064     echo Addressing mode ........................ : $ADDRESSING_MODE
1065     echo
1066     echo "Configuration done. Now type \"make\" (or \"gmake\")."