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