10 |
|
AC_ARG_ENABLE(xf86-vidmode, [ --enable-xf86-vidmode use the XFree86 VidMode extension [default=yes]], [WANT_XF86_VIDMODE=$enableval], [WANT_XF86_VIDMODE=yes]) |
11 |
|
AC_ARG_ENABLE(fbdev-dga, [ --enable-fbdev-dga use direct frame buffer access via /dev/fb [default=yes]], [WANT_FBDEV_DGA=$enableval], [WANT_FBDEV_DGA=yes]) |
12 |
|
AC_ARG_ENABLE(vosf, [ --enable-vosf enable video on SEGV signals [default=no]], [WANT_VOSF=$enableval], [WANT_VOSF=no]) |
13 |
< |
AC_ARG_ENABLE(16bit-vidmode, [ --enable-16bit-vidmode enable 16-bit video if possible [default=yes]], [WANT_16BIT_VIDMODE=$enableval], [WANT_16BIT_VIDMODE=yes]) |
13 |
> |
|
14 |
> |
dnl FPU emulation core. |
15 |
> |
AC_ARG_ENABLE(fpe, |
16 |
> |
[ --enable-fpe=which specify which fpu emulator to use [default=opt]], |
17 |
> |
[ case "$enableval" in |
18 |
> |
default) FPE_CORE="default";; dnl fpu_x86.cpp if i386 architecture, fpu_uae.cpp otherwise |
19 |
> |
uae) FPE_CORE="uae";; |
20 |
> |
*) AC_MSG_ERROR([--enable-fpe takes only one of the following values: default, uae]);; |
21 |
> |
esac |
22 |
> |
], |
23 |
> |
[ FPE_CORE="default" |
24 |
> |
]) |
25 |
> |
|
26 |
> |
dnl Addressing modes. |
27 |
|
AC_ARG_ENABLE(addressing, |
28 |
< |
[ --enable-addressing=mode specify the addressing mode to use [default=fastest]], |
28 |
> |
[ --enable-addressing=AM specify the addressing mode to use [default=fastest]], |
29 |
|
[ case "$enableval" in |
30 |
|
real) ADDRESSING_TEST_ORDER="real";; |
31 |
|
direct) ADDRESSING_TEST_ORDER="direct";; |
32 |
|
banks) ADDRESSING_TEST_ORDER="banks";; |
33 |
< |
dnl fastest) ADDRESSING_TEST_ORDER="real direct banks";; gb-- will enable later... |
34 |
< |
fastest) ADDRESSING_TEST_ORDER="direct banks";; |
22 |
< |
*) AC_MSG_ERROR([--enable-mem-addressing takes only one of the following values: fastest, real, direct, banks]);; |
33 |
> |
fastest)ADDRESSING_TEST_ORDER="direct banks";; |
34 |
> |
*) AC_MSG_ERROR([--enable-addressing takes only one of the following values: fastest, real, direct, banks]);; |
35 |
|
esac |
36 |
|
], |
25 |
– |
dnl [ ADDRESSING_TEST_ORDER="real direct banks" gb-- will probably reactivate later |
37 |
|
[ ADDRESSING_TEST_ORDER="direct banks" |
38 |
|
]) |
39 |
+ |
|
40 |
+ |
dnl External packages. |
41 |
|
AC_ARG_WITH(esd, [ --with-esd support ESD for sound under Linux/FreeBSD [default=yes]], [WANT_ESD=$withval], [WANT_ESD=yes]) |
42 |
|
AC_ARG_WITH(gtk, [ --with-gtk use GTK user interface [default=yes]], [WANT_GTK=$withval], [WANT_GTK=yes]) |
43 |
|
AC_ARG_WITH(mon, [ --with-mon use mon as debugger [default=yes]], [WANT_MON=$withval], [WANT_MON=yes]) |
60 |
|
HAVE_I386=no |
61 |
|
HAVE_M68K=no |
62 |
|
HAVE_SPARC=no |
63 |
+ |
HAVE_POWERPC=no |
64 |
|
case "$target_cpu" in |
65 |
|
i386* | i486* | i586* | i686* | i786* ) CPU_TYPE=i386 HAVE_I386=yes;; |
66 |
|
m68k* ) CPU_TYPE=m68k HAVE_M68K=yes;; |
67 |
|
sparc* ) CPU_TYPE=sparc HAVE_SPARC=yes;; |
68 |
+ |
powerpc* ) CPU_TYPE=powerpc HAVE_POWERPC=yes;; |
69 |
|
*) CPU_TYPE=`echo $target_cpu | sed -e 's/-/_/'`;; |
70 |
|
esac |
71 |
|
DEFINES="$DEFINES -DCPU_$CPU_TYPE" |
86 |
|
if grep mon_init $mon_srcdir/mon.h >/dev/null 2>/dev/null; then |
87 |
|
AC_MSG_RESULT(yes) |
88 |
|
AC_DEFINE(ENABLE_MON) |
89 |
< |
MONSRCS="$mon_srcdir/mon.cpp $mon_srcdir/mon_6502.cpp $mon_srcdir/mon_8080.cpp $mon_srcdir/mon_cmd.cpp $mon_srcdir/mon_disass.cpp $mon_srcdir/mon_ppc.cpp $mon_srcdir/disass/floatformat.c $mon_srcdir/disass/i386-dis.c $mon_srcdir/disass/m68k-dis.c $mon_srcdir/disass/m68k-opc.c" |
89 |
> |
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/disass/floatformat.c $mon_srcdir/disass/i386-dis.c $mon_srcdir/disass/m68k-dis.c $mon_srcdir/disass/m68k-opc.c" |
90 |
|
CXXFLAGS="$CXXFLAGS -I$mon_srcdir -I$mon_srcdir/disass" |
91 |
|
AC_CHECK_LIB(readline, readline) |
92 |
|
AC_CHECK_LIB(termcap, tputs) |
274 |
|
DEFINES="$DEFINES -DBSD_COMP -D_POSIX_PTHREAD_SEMANTICS" |
275 |
|
;; |
276 |
|
irix*) |
277 |
+ |
AUDIOSRC=Irix/audio_irix.cpp |
278 |
|
EXTRASYSSRCS=Irix/unaligned.c |
279 |
|
dnl IRIX headers work fine, but somehow don't define or use "STDC_HEADERS" |
280 |
|
DEFINES="$DEFINES -DCRTSCTS=CNEW_RTSCTS -DB230400=B115200 -DSTDC_HEADERS" |
281 |
< |
LIBS="$LIBS -lm" |
281 |
> |
LIBS="$LIBS -laudio" |
282 |
|
;; |
283 |
|
esac |
284 |
|
|
409 |
|
AC_LANG_RESTORE |
410 |
|
]) |
411 |
|
AC_TRANSLATE_DEFINE(HAVE_SIGCONTEXT_SUBTERFUGE, $ac_cv_have_sigcontext_hack) |
412 |
+ |
elif [[ "x$HAVE_POWERPC" = "xyes" ]]; then |
413 |
+ |
AC_CACHE_CHECK("whether we then have a subterfuge for your system", |
414 |
+ |
ac_cv_have_sigcontext_hack, [ |
415 |
+ |
AC_LANG_SAVE |
416 |
+ |
AC_LANG_CPLUSPLUS |
417 |
+ |
AC_TRY_RUN([ |
418 |
+ |
#include <unistd.h> |
419 |
+ |
#include <signal.h> |
420 |
+ |
#include <fcntl.h> |
421 |
+ |
#include <sys/mman.h> |
422 |
+ |
|
423 |
+ |
static volatile caddr_t mem = 0; |
424 |
+ |
static int zero_fd = -1; |
425 |
+ |
|
426 |
+ |
static RETSIGTYPE segfault_handler(int, struct sigcontext_struct *scs) |
427 |
+ |
{ if ((caddr_t)(scs->regs->dar) != mem) exit(1); |
428 |
+ |
munmap(mem, getpagesize()); close(zero_fd); exit(0); } |
429 |
+ |
|
430 |
+ |
int main() |
431 |
+ |
{ if ((zero_fd = open("/dev/zero", O_RDWR)) < 0) exit(1); |
432 |
+ |
if ((mem = (caddr_t)mmap(0, getpagesize(), PROT_READ, MAP_PRIVATE, zero_fd, 0)) == (caddr_t)MAP_FAILED) exit(1); |
433 |
+ |
struct sigaction sa; sa.sa_flags = 0; |
434 |
+ |
sa.sa_handler = (RETSIGTYPE (*)(int))segfault_handler; |
435 |
+ |
sigaction(SIGSEGV, &sa, 0); |
436 |
+ |
mem[0] = 0; |
437 |
+ |
exit(1); // should not be reached |
438 |
+ |
} |
439 |
+ |
], |
440 |
+ |
[ac_cv_have_sigcontext_hack=yes], |
441 |
+ |
[ac_cv_have_sigcontext_hack=no] |
442 |
+ |
) |
443 |
+ |
AC_LANG_RESTORE |
444 |
+ |
]) |
445 |
+ |
AC_TRANSLATE_DEFINE(HAVE_SIGCONTEXT_SUBTERFUGE, $ac_cv_have_sigcontext_hack) |
446 |
|
fi |
447 |
|
;; |
448 |
|
netbsd*) |
500 |
|
for am in $ADDRESSING_TEST_ORDER; do |
501 |
|
case $am in |
502 |
|
real) |
503 |
< |
dnl Requires ability to mmap Low Memory globals. |
503 |
> |
dnl Requires ability to mmap() Low Memory globals |
504 |
|
if [[ "x$ac_cv_can_map_lm" = "xno" ]]; then |
505 |
|
continue |
506 |
|
fi |
507 |
< |
if [[ "x$ac_cv_c_bigendian" = "xyes" ]]; then |
508 |
< |
dnl Requires only VOSF if 16-bit vidmode enable |
509 |
< |
if [[ "x$WANT_16BIT_VIDMODE" = "xyes" ]]; then |
460 |
< |
if [[ "x$CAN_VOSF" = "xno" ]]; then |
461 |
< |
continue |
462 |
< |
fi |
463 |
< |
else |
464 |
< |
DEFINES="$DEFINES -DDISABLE_16BIT_VIDMODE" |
465 |
< |
fi |
466 |
< |
else |
467 |
< |
dnl Requires VOSF |
468 |
< |
if [[ "x$CAN_VOSF" = "xno" ]]; then |
469 |
< |
continue |
470 |
< |
fi |
507 |
> |
dnl Requires VOSF screen updates |
508 |
> |
if [[ "x$CAN_VOSF" = "xno" ]]; then |
509 |
> |
continue |
510 |
|
fi |
511 |
< |
dnl Real addressing will probably work |
511 |
> |
dnl Real addressing will probably work. |
512 |
|
ADDRESSING_MODE="real" |
513 |
|
WANT_VOSF=yes dnl we can use VOSF and we need it actually |
514 |
|
DEFINES="$DEFINES -DREAL_ADDRESSING" |
515 |
|
break |
516 |
|
;; |
517 |
|
direct) |
518 |
< |
dnl Requires VOSF |
518 |
> |
dnl Requires VOSF screen updates |
519 |
|
if [[ "x$CAN_VOSF" = "xyes" ]]; then |
520 |
|
ADDRESSING_MODE="direct" |
521 |
|
WANT_VOSF=yes dnl we can use VOSF and we need it actually |
539 |
|
fi |
540 |
|
fi |
541 |
|
|
542 |
< |
dnl Since real and direct addressing modes automatically activate VOSF, |
543 |
< |
dnl I put this test here. |
505 |
< |
if [[ "x$WANT_VOSF" = "xyes" ]]; then |
506 |
< |
if [[ "x$CAN_VOSF" = "xno" ]]; then |
507 |
< |
AC_MSG_WARN([Sorry, your system does not support Video on SEGV signals]) |
508 |
< |
WANT_VOSF=no |
509 |
< |
else |
542 |
> |
dnl Enable VOSF screen updates with this feature is requested and feasible |
543 |
> |
if [[ "x$WANT_VOSF" = "xyes" -a "x$CAN_VOSF" = "xyes" ]]; then |
544 |
|
AC_DEFINE(ENABLE_VOSF) |
545 |
< |
fi |
545 |
> |
else |
546 |
> |
WANT_VOSF=no |
547 |
|
fi |
548 |
|
|
549 |
|
dnl Check for GAS. |
580 |
|
DEFINES="$DEFINES -DREGPARAM=\"__attribute__((regparm(3)))\"" |
581 |
|
if [[ "x$HAVE_GAS" = "xyes" ]]; then |
582 |
|
ASM_OPTIMIZATIONS=i386 |
583 |
< |
DEFINES="$DEFINES -DX86_ASSEMBLY -DOPTFLAGS" |
584 |
< |
CPUSRCS="../uae_cpu/compiler.cpp cpufast1.s cpufast2.s cpufast3.s cpufast4.s cpufast5.s cpufast6.s cpufast7.s cpufast8.s" |
583 |
> |
DEFINES="$DEFINES -DX86_ASSEMBLY -DUNALIGNED_PROFITABLE -DOPTIMIZED_FLAGS" |
584 |
> |
CPUSRCS="cpufast1.s cpufast2.s cpufast3.s cpufast4.s cpufast5.s cpufast6.s cpufast7.s cpufast8.s" |
585 |
|
FPUSRCS="../uae_cpu/fpu_x86.cpp" |
586 |
|
fi |
587 |
|
elif [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_SPARC" = "xyes" -a "x$HAVE_GAS" = "xyes" ]]; then |
594 |
|
case "$SPARC_TYPE" in |
595 |
|
SPARC_V8) |
596 |
|
ASM_OPTIMIZATIONS="SPARC V8 architecture" |
597 |
< |
DEFINES="$DEFINES -DSPARC_V8_ASSEMBLY" dnl -DOPTFLAGS" |
597 |
> |
DEFINES="$DEFINES -DSPARC_V8_ASSEMBLY" dnl -DOPTIMIZED_FLAGS" |
598 |
|
CFLAGS="$CFLAGS -Wa,-Av8" |
599 |
|
CXXFLAGS="$CXXFLAGS -Wa,-Av8" |
600 |
|
;; |
601 |
|
SPARC_V9) |
602 |
|
ASM_OPTIMIZATIONS="SPARC V9 architecture" |
603 |
< |
DEFINES="$DEFINES -DSPARC_V9_ASSEMBLY" dnl -DOPTFLAGS" |
603 |
> |
DEFINES="$DEFINES -DSPARC_V9_ASSEMBLY" dnl -DOPTIMIZED_FLAGS" |
604 |
|
CFLAGS="$CFLAGS -Wa,-Av9" |
605 |
|
CXXFLAGS="$CXXFLAGS -Wa,-Av9" |
606 |
|
;; |
613 |
|
CPUSRCS="asm_support.s" |
614 |
|
fi |
615 |
|
|
616 |
+ |
dnl Select appropriate FPU source. |
617 |
+ |
dnl 1. Optimized X86 assembly core if target is i386 architecture |
618 |
+ |
SAVED_DEFINES=$DEFINES |
619 |
+ |
if [[ "x$FPE_CORE" = "xdefault" ]]; then |
620 |
+ |
if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" -a "x$HAVE_GAS" = "xyes" ]]; then |
621 |
+ |
DEFINES="$DEFINES -DFPU_X86" |
622 |
+ |
FPE_CORE_STR="i386 optimized core" |
623 |
+ |
FPUSRCS="../uae_cpu/fpu/fpu_x86.cpp" |
624 |
+ |
fi |
625 |
+ |
fi |
626 |
+ |
|
627 |
+ |
dnl 2. JIT-FPU only supports IEEE-based implementation. |
628 |
+ |
if [[ "x$WANT_JIT_FPU" = "xyes" -a "x$FPE_CORE" != "xieee" ]]; then |
629 |
+ |
AC_MSG_WARN([Sorry, JIT-FPU supports only the "ieee" FPE implementation]) |
630 |
+ |
FPE_CORE="ieee" |
631 |
+ |
dnl Restore previous variables. FPE_CORE_STR and FPUSRCS are overwritten |
632 |
+ |
DEFINES=$SAVED_DEFINES |
633 |
+ |
fi |
634 |
+ |
|
635 |
+ |
dnl 3. Choose either IEEE-based implementation or the old UAE core |
636 |
+ |
if [[ "x$FPE_CORE" = "xieee" ]]; then |
637 |
+ |
AC_CHECK_HEADERS(fenv.h) |
638 |
+ |
AC_CHECK_FUNCS(feclearexcept fegetexceptflag feraiseexcept fesetexceptflag fetestexcept) |
639 |
+ |
AC_CHECK_FUNCS(fegetround fesetround) |
640 |
+ |
DEFINES="$DEFINES -DFPU_IEEE" |
641 |
+ |
FPE_CORE_STR="ieee-based fpu core" |
642 |
+ |
FPUSRCS="../uae_cpu/fpu/fpu_ieee.cpp" |
643 |
+ |
elif [[ "x$FPE_CORE" = "xuae" ]]; then |
644 |
+ |
DEFINES="$DEFINES -DFPU_UAE" |
645 |
+ |
FPE_CORE_STR="original uae core" |
646 |
+ |
FPUSRCS="../uae_cpu/fpu/fpu_uae.cpp" |
647 |
+ |
fi |
648 |
+ |
|
649 |
+ |
dnl Check for certain math functions |
650 |
+ |
AC_CHECK_FUNCS(atanh) |
651 |
+ |
AC_CHECK_FUNCS(isnan isinf) dnl C99 |
652 |
+ |
AC_CHECK_FUNCS(isnanl isinfl) dnl IEEE ? |
653 |
+ |
|
654 |
|
dnl UAE CPU sources for all non-m68k-native architectures. |
655 |
|
if [[ "x$WANT_NATIVE_M68K" = "xno" ]]; then |
656 |
|
CPUINCLUDES="-I../uae_cpu" |
683 |
|
echo GTK user interface ............... : $WANT_GTK |
684 |
|
echo mon debugger support ............. : $WANT_MON |
685 |
|
echo Running m68k code natively ....... : $WANT_NATIVE_M68K |
686 |
+ |
echo Floating-Point emulation core .... : $FPE_CORE_STR |
687 |
|
echo Assembly optimizations ........... : $ASM_OPTIMIZATIONS |
688 |
|
echo Addressing mode .................. : $ADDRESSING_MODE |
689 |
|
echo |