ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/configure.ac
Revision: 1.55
Committed: 2005-12-04T15:03:11Z (18 years, 11 months ago) by gbeauche
Branch: MAIN
Changes since 1.54: +0 -2 lines
Log Message:
Fix Serial build on IRIX, remove the STDC_HEADERS manually defined macro
since it now works (egrep was missing previously, IIRC)

File Contents

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