ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/configure.ac
Revision: 1.54
Committed: 2005-08-18T22:10:15Z (19 years, 3 months ago) by gbeauche
Branch: MAIN
Changes since 1.53: +2 -2 lines
Log Message:
don't grab in -mdynamic-no-pic with icc, note that you need icc >= 9.0.25
to have a working build

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