ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/configure.ac
(Generate patch)

Comparing BasiliskII/src/Unix/configure.ac (file contents):
Revision 1.1 by gbeauche, 2002-09-16T13:29:33Z vs.
Revision 1.21 by gbeauche, 2003-10-12T15:56:00Z

# Line 1 | Line 1
1   dnl Process this file with autoconf to produce a configure script.
2   dnl Written in 2002 by Christian Bauer et al.
3  
4 < AC_INIT(main_unix.cpp)
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 Options.
9 > dnl Aliases for PACKAGE and VERSION macros.
10 > AC_DEFINE(PACKAGE, PACKAGE_NAME, [Alias to PACKAGE for i18n.])
11 > AC_DEFINE(VERSION, PACKAGE_VERSION, [Alias to VERSION for i18n.])
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 JIT compiler options.
24 + AC_ARG_ENABLE(jit-compiler,  [  --enable-jit-compiler   enable JIT compiler [default=no]], [WANT_JIT=$enableval], [WANT_JIT=no])
25 + AC_ARG_ENABLE(jit-debug,     [  --enable-jit-debug      activate native code disassemblers [default=no]], [WANT_JIT_DEBUG=$enableval], [WANT_JIT_DEBUG=no])
26 +
27   dnl FPU emulation core.
28   AC_ARG_ENABLE(fpe,
29   [  --enable-fpe=FPE        specify which fpu emulator to use [default=auto]],
# Line 65 | Line 78 | HAVE_I386=no
78   HAVE_M68K=no
79   HAVE_SPARC=no
80   HAVE_POWERPC=no
81 + HAVE_X86_64=no
82   case "$target_cpu" in
83 <  i386* | i486* | i586* | i686* | i786* ) CPU_TYPE=i386 HAVE_I386=yes;;
84 <  m68k* ) CPU_TYPE=m68k HAVE_M68K=yes;;
85 <  sparc* ) CPU_TYPE=sparc HAVE_SPARC=yes;;
86 <  powerpc* ) CPU_TYPE=powerpc HAVE_POWERPC=yes;;
87 <  *) CPU_TYPE=`echo $target_cpu | sed -e 's/-/_/g'`;;
83 >  i386* | i486* | i586* | i686* | i786* ) HAVE_I386=yes;;
84 >  m68k* ) HAVE_M68K=yes;;
85 >  sparc* ) HAVE_SPARC=yes;;
86 >  powerpc* ) HAVE_POWERPC=yes;;
87 >  x86_64* ) HAVE_X86_64=yes;;
88   esac
75 DEFINES="$DEFINES -DCPU_$CPU_TYPE"
89  
90   dnl Checks for programs.
91   AC_PROG_CC
# Line 99 | Line 112 | if [[ "x$WANT_MON" = "xyes" ]]; then
112              AC_CHECK_LIB(Hcurses, tgetent, ,
113                AC_CHECK_LIB(curses, tgetent))))))
114      AC_CHECK_LIB(readline, readline)
102    AC_CHECK_HEADERS(readline.h history.h readline/readline.h readline/history.h)
115    else
116      AC_MSG_RESULT(no)
117      AC_MSG_WARN([Could not find mon, ignoring --with-mon.])
# Line 135 | Line 147 | fi
147   AC_CHECK_FUNCS(pthread_cancel)
148   AC_CHECK_FUNCS(pthread_mutexattr_setprotocol)
149   AC_CHECK_FUNCS(pthread_mutexattr_settype)
150 + AC_CHECK_FUNCS(pthread_mutexattr_setpshared)
151  
152   dnl If POSIX.4 semaphores are not available, we emulate them with pthread mutexes.
153   SEMSRC=
# Line 181 | Line 194 | if [[ "x$WANT_GTK" = "xyes" ]]; then
194      CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
195      LIBS="$LIBS $GTK_LIBS"
196      UISRCS=prefs_editor_gtk.cpp
197 +    dnl somehow, <gnome-i18n.h> would redefine gettext() to nothing if
198 +    dnl ENABLE_NLS is not set, thusly conflicting with C++ <string> which
199 +    dnl includes <libintl.h>
200 +    AM_GNU_GETTEXT
201      B2_PATH_GNOMEUI([
202        AC_DEFINE(HAVE_GNOMEUI, 1, [Define if libgnomeui is available.])
203        CXXFLAGS="$CXXFLAGS $GNOMEUI_CFLAGS"
# Line 210 | Line 227 | AC_SYS_LARGEFILE
227  
228   dnl Checks for header files.
229   AC_HEADER_STDC
230 < AC_CHECK_HEADERS(unistd.h fcntl.h sys/time.h sys/mman.h)
230 > AC_CHECK_HEADERS(unistd.h fcntl.h sys/time.h sys/mman.h mach/mach.h)
231 > AC_CHECK_HEADERS(readline.h history.h readline/readline.h readline/history.h)
232  
233   dnl Checks for typedefs, structures, and compiler characteristics.
234   AC_C_BIGENDIAN
# Line 355 | Line 373 | irix*)
373    LIBS="$LIBS -laudio"
374    WANT_ESD=no
375  
376 <  dnl Check if our compiler supports -Ofast (MIPSPro)
377 <  HAVE_OFAST=no
376 >  dnl Check if our compiler supports -IPA (MIPSPro)
377 >  HAVE_IPA=no
378    ocflags="$CFLAGS"
379 <  CFLAGS=`echo $CFLAGS | sed -e 's/ -g / -Ofast /;s/^-g /-Ofast /;s/-g$/ -Ofast/;s/^-g$/-Ofast/'`
380 <  AC_MSG_CHECKING(if "-Ofast" works)
379 >  CFLAGS=`echo "$CFLAGS -IPA" | sed -e "s/-g//g"`
380 >  AC_MSG_CHECKING(if "-IPA" works)
381    dnl Do a test compile of an empty function
382 <  AC_TRY_COMPILE(,, [AC_MSG_RESULT(yes); HAVE_OFAST=yes], AC_MSG_RESULT(no))
382 >  AC_TRY_COMPILE(,, [AC_MSG_RESULT(yes); HAVE_IPA=yes], AC_MSG_RESULT(no))
383    CFLAGS="$ocflags"
384  
385    ;;
# Line 548 | Line 566 | AC_CACHE_CHECK([whether we can map Low M
566    AC_TRY_RUN([
567      #include "vm_alloc.cpp"
568      int main(void) { /* returns 0 if we could map the lowmem globals */
569 <      volatile char * lm;
569 >      volatile char * lm = 0;
570        if (vm_init() < 0) exit(1);
571 <      if ((lm = (volatile char *)vm_acquire_fixed(0, 0x2000)) == VM_MAP_FAILED) exit(1);
571 >      if (vm_acquire_fixed(0, 0x2000) < 0) exit(1);
572        lm[0] = 'z';
573        if (vm_release((char *)lm, 0x2000) < 0) exit(1);
574        vm_exit(); exit(0);
# Line 624 | Line 642 | AC_CACHE_CHECK([whether sigaction handle
642   AC_TRANSLATE_DEFINE(SIGACTION_NEED_REINSTALL, "$ac_cv_sigaction_need_reinstall",
643    [Define if your system requires sigactions to be reinstalled.])
644  
645 < dnl Check if extended signals are supported.
646 < AC_CACHE_CHECK([whether your system supports extended signal handlers],
647 <  ac_cv_have_extended_signals, [
645 > dnl Check if Mach exceptions supported.
646 > AC_CACHE_CHECK([whether your system supports Mach exceptions],
647 >  ac_cv_have_mach_exceptions, [
648    AC_LANG_SAVE
649    AC_LANG_CPLUSPLUS
650    AC_TRY_RUN([
651 <    #define HAVE_SIGINFO_T 1
651 >    #define HAVE_MACH_EXCEPTIONS 1
652      #define CONFIGURE_TEST_SIGSEGV_RECOVERY
653      #include "vm_alloc.cpp"
654      #include "sigsegv.cpp"
655 <  ], ac_cv_have_extended_signals=yes, ac_cv_have_extended_signals=no,
655 >  ], [
656 >  sigsegv_recovery=mach
657 >  ac_cv_have_mach_exceptions=yes
658 >  ],
659 >  ac_cv_have_mach_exceptions=no,
660    dnl When cross-compiling, do not assume anything.
661 <  ac_cv_have_extended_signals=no
661 >  ac_cv_have_mach_exceptions=no
662    )
663    AC_LANG_RESTORE
664    ]
665   )
666 < AC_TRANSLATE_DEFINE(HAVE_SIGINFO_T, "$ac_cv_have_extended_signals",
667 <  [Define if your system support extended signals.])
666 > AC_TRANSLATE_DEFINE(HAVE_MACH_EXCEPTIONS, "$ac_cv_have_mach_exceptions",
667 >  [Define if your system supports Mach exceptions.])
668 >
669 > dnl Otherwise, check if extended signals are supported.
670 > if [[ -z "$sigsegv_recovery" ]]; then
671 >  AC_CACHE_CHECK([whether your system supports extended signal handlers],
672 >    ac_cv_have_extended_signals, [
673 >    AC_LANG_SAVE
674 >    AC_LANG_CPLUSPLUS
675 >    AC_TRY_RUN([
676 >      #define HAVE_SIGINFO_T 1
677 >      #define CONFIGURE_TEST_SIGSEGV_RECOVERY
678 >      #include "vm_alloc.cpp"
679 >      #include "sigsegv.cpp"
680 >    ], [
681 >    sigsegv_recovery=siginfo
682 >    ac_cv_have_extended_signals=yes
683 >    ],
684 >    ac_cv_have_extended_signals=no,
685 >    dnl When cross-compiling, do not assume anything.
686 >    ac_cv_have_extended_signals=no
687 >    )
688 >    AC_LANG_RESTORE
689 >    ]
690 >  )
691 >  AC_TRANSLATE_DEFINE(HAVE_SIGINFO_T, "$ac_cv_have_extended_signals",
692 >    [Define if your system support extended signals.])
693 > fi
694  
695   dnl Otherwise, check for subterfuges.
696 < if [[ "x$ac_cv_have_extended_signals" = "xno" ]]; then
696 > if [[ -z "$sigsegv_recovery" ]]; then
697    AC_CACHE_CHECK([whether we then have a subterfuge for your system],
698    ac_cv_have_sigcontext_hack, [
699      AC_LANG_SAVE
# Line 655 | Line 703 | if [[ "x$ac_cv_have_extended_signals" =
703        #define CONFIGURE_TEST_SIGSEGV_RECOVERY
704        #include "vm_alloc.cpp"
705        #include "sigsegv.cpp"
706 <    ], ac_cv_have_sigcontext_hack=yes, ac_cv_have_sigcontext_hack=no,
706 >    ], [
707 >    sigsegv_recovery=sigcontext
708 >    ac_cv_have_sigcontext_hack=yes
709 >    ],
710 >    ac_cv_have_sigcontext_hack=no,
711      dnl When cross-compiling, do not assume anything.
712      ac_cv_have_sigcontext_hack=no
713      )
# Line 687 | Line 739 | AC_TRANSLATE_DEFINE(HAVE_SIGSEGV_SKIP_IN
739  
740   dnl Can we do Video on SEGV Signals ?
741   CAN_VOSF=no
742 < if [[ "$ac_cv_have_extended_signals" = "yes" -o "$ac_cv_have_sigcontext_hack" = "yes" ]]; then
742 > if [[ -n "$sigsegv_recovery" ]]; then
743    CAN_VOSF=yes
744   fi
745  
# Line 739 | Line 791 | else
791    fi
792   fi
793  
794 + dnl Banked Memory Addressing mode is not supported by the JIT compiler
795 + if [[ "x$WANT_JIT" = "xyes" -a "x$ADDRESSING_MODE" = "xmemory banks" ]]; then
796 +  AC_MSG_ERROR([Sorry, the JIT Compiler requires Direct Addressing, at least])
797 + fi
798 +
799   dnl Enable VOSF screen updates with this feature is requested and feasible
800   if [[ "x$WANT_VOSF" = "xyes" -a "x$CAN_VOSF" = "xyes" ]]; then
801      AC_DEFINE(ENABLE_VOSF, 1, [Define if using video enabled on SEGV signals.])
# Line 759 | Line 816 | AC_MSG_RESULT($HAVE_GAS)
816   dnl Check for GCC 2.7 or higher.
817   HAVE_GCC27=no
818   AC_MSG_CHECKING(for GCC 2.7 or higher)
819 < AC_EGREP_CPP(yes,
819 > AC_EGREP_CPP(xyes,
820   [#if __GNUC__ - 1 > 1 || __GNUC_MINOR__ - 1 > 5
821 <  yes
821 >  xyes
822   #endif
823   ], [AC_MSG_RESULT(yes); HAVE_GCC27=yes], AC_MSG_RESULT(no))
824  
825   dnl Check for GCC 3.0 or higher.
826   HAVE_GCC30=no
827   AC_MSG_CHECKING(for GCC 3.0 or higher)
828 < AC_EGREP_CPP(yes,
828 > AC_EGREP_CPP(xyes,
829   [#if __GNUC__ >= 3
830 <  yes
830 >  xyes
831   #endif
832   ], [AC_MSG_RESULT(yes); HAVE_GCC30=yes], AC_MSG_RESULT(no))
833  
# Line 804 | Line 861 | fi
861   dnl Select appropriate CPU source and REGPARAM define.
862   ASM_OPTIMIZATIONS=none
863   CPUSRCS="cpuemu1.cpp cpuemu2.cpp cpuemu3.cpp cpuemu4.cpp cpuemu5.cpp cpuemu6.cpp cpuemu7.cpp cpuemu8.cpp"
864 < if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" -a "x$OS_TYPE" != "xfreebsd" ]]; then
864 >
865 > dnl (gb) JITSRCS will be emptied later if the JIT is not available
866 > dnl Other platforms should define their own set of noflags file variants
867 > CAN_JIT=no
868 > JITSRCS="compemu1.cpp compemu2.cpp compemu3.cpp compemu4.cpp compemu5.cpp compemu6.cpp compemu7.cpp compemu8.cpp"
869 >
870 > if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" ]]; then
871    dnl i386 CPU
872 <  DEFINES="$DEFINES -DREGPARAM=\"__attribute__((regparm(3)))\""
872 >  DEFINES="$DEFINES -DUNALIGNED_PROFITABLE -DREGPARAM=\"__attribute__((regparm(3)))\""
873    if [[ "x$HAVE_GAS" = "xyes" ]]; then
874      ASM_OPTIMIZATIONS=i386
875 <    DEFINES="$DEFINES -DX86_ASSEMBLY -DUNALIGNED_PROFITABLE -DOPTIMIZED_FLAGS"
876 <    CPUSRCS="cpufast1.s cpufast2.s cpufast3.s cpufast4.s cpufast5.s cpufast6.s cpufast7.s cpufast8.s"
875 >    DEFINES="$DEFINES -DX86_ASSEMBLY -DOPTIMIZED_FLAGS -DSAHF_SETO_PROFITABLE"
876 >    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"
877 >    CAN_JIT=yes
878 >  fi
879 > elif [[ "x$HAVE_GCC30" = "xyes" -a "x$HAVE_X86_64" = "xyes" ]]; then
880 >  dnl x86-64 CPU
881 >  DEFINES="$DEFINES -DUNALIGNED_PROFITABLE"
882 >  if [[ "x$HAVE_GAS" = "xyes" ]]; then
883 >    ASM_OPTIMIZATIONS="x86-64"
884 >    DEFINES="$DEFINES -DX86_64_ASSEMBLY -DOPTIMIZED_FLAGS"
885    fi
886   elif [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_SPARC" = "xyes" -a "x$HAVE_GAS" = "xyes" ]]; then
887    dnl SPARC CPU
# Line 841 | Line 912 | elif [[ "x$WANT_NATIVE_M68K" = "xyes" ]]
912    CPUSRCS="asm_support.s"
913   fi
914  
915 + dnl Enable JIT compiler, if possible.
916 + if [[ "x$WANT_JIT" = "xyes" -a "x$CAN_JIT" ]]; then
917 +  JITSRCS="$JITSRCS ../uae_cpu/compiler/compemu_support.cpp ../uae_cpu/compiler/compemu_fpp.cpp compstbl.o cpustbl_nf.o"
918 +  DEFINES="$DEFINES -DUSE_JIT -DUSE_JIT_FPU"
919 +  
920 +  if [[ "x$WANT_JIT_DEBUG" = "xyes" ]]; then
921 +    if [[ "x$WANT_MON" = "xyes" ]]; then
922 +      DEFINES="$DEFINES -DJIT_DEBUG=1"
923 +    else
924 +      AC_MSG_WARN([cxmon not found, ignoring --enable-jit-debug])
925 +      WANT_JIT_DEBUG=no
926 +    fi
927 +  fi
928 +
929 +  dnl IEEE core is the only FPU emulator to use with the JIT compiler
930 +  case $FPE_CORE_TEST_ORDER in
931 +  ieee*) ;;
932 +  *) AC_MSG_WARN([Forcing use of the IEEE FPU core, as the JIT compiler supports only this one.]) ;;
933 +  esac
934 +  FPE_CORE_TEST_ORDER="ieee"
935 + else
936 +  WANT_JIT=no
937 +  WANT_JIT_DEBUG=no
938 +  JITSRCS=""
939 + fi
940 +
941   dnl Utility macro used by next two tests.
942   dnl AC_EXAMINE_OBJECT(C source code,
943   dnl     commands examining object file,
# Line 985 | Line 1082 | AC_CHECK_HEADERS(ieee754.h ieeefp.h floa
1082   for fpe in $FPE_CORE_TEST_ORDER; do
1083    case $fpe in
1084    ieee)
1085 <    if echo "$ac_cv_c_float_format" | grep -q IEEE; then
1085 >    case $ac_cv_c_float_format in
1086 >    IEEE*)
1087        FPE_CORE="IEEE fpu core"
1088        DEFINES="$DEFINES -DFPU_IEEE"
1089        FPUSRCS="../uae_cpu/fpu/fpu_ieee.cpp"
1090 +      dnl Math functions not mandated by C99 standard
1091 +      AC_CHECK_FUNCS(isnanl isinfl)
1092 +      dnl Math functions required by C99 standard, but probably not
1093 +      dnl implemented everywhere. In that case, we fall back to the
1094 +      dnl regular variant for doubles.
1095 +      AC_CHECK_FUNCS(logl log10l expl powl fabsl sqrtl)
1096 +      AC_CHECK_FUNCS(sinl cosl tanl sinhl coshl tanhl)
1097 +      AC_CHECK_FUNCS(asinl acosl atanl asinhl acoshl atanhl)
1098 +      AC_CHECK_FUNCS(floorl ceill)
1099        break
1100 <    fi
1100 >      ;;
1101 >    esac
1102      ;;
1103    x86)
1104      if [[ ":$HAVE_GCC27:$HAVE_I386:$HAVE_GAS:" = ":yes:yes:yes:" ]]; then
# Line 1017 | Line 1125 | fi
1125  
1126   dnl Check for certain math functions
1127   AC_CHECK_FUNCS(atanh)
1128 < AC_CHECK_FUNCS(isnan isinf)             dnl C99
1021 < AC_CHECK_FUNCS(isnanl isinfl)   dnl IEEE ?
1128 > AC_CHECK_FUNCS(isnan isinf finite isnormal signbit)
1129  
1130   dnl UAE CPU sources for all non-m68k-native architectures.
1131   if [[ "x$WANT_NATIVE_M68K" = "xno" ]]; then
1132    CPUINCLUDES="-I../uae_cpu"
1133 <  CPUSRCS="../uae_cpu/basilisk_glue.cpp ../uae_cpu/memory.cpp ../uae_cpu/newcpu.cpp ../uae_cpu/readcpu.cpp $FPUSRCS cpustbl.cpp cpudefs.cpp $CPUSRCS"
1133 >  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"
1134   fi
1135  
1136   dnl Remove the "-g" option if set for GCC.
# Line 1032 | Line 1139 | if [[ "x$HAVE_GCC27" = "xyes" ]]; then
1139    CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-g//g'`
1140   fi
1141  
1142 < dnl Or if we have -Ofast
1143 < if [[ "x$HAVE_OFAST" = "xyes" ]]; then
1144 <  CFLAGS="`echo $CFLAGS | sed -e 's/-g//g'` -Ofast"
1145 <  CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-g//g'` -Ofast"
1142 > dnl Or if we have -IPA (MIPSPro compilers)
1143 > if [[ "x$HAVE_IPA" = "xyes" ]]; then
1144 >  CFLAGS="`echo $CFLAGS | sed -e 's/-g//g'` -O3 -OPT:Olimit=0 -IPA"
1145 >  CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-g//g'` -O3 -OPT:Olimit=0 -IPA"
1146    CXXFLAGS="-LANG:std $CXXFLAGS"
1147 <  LDFLAGS="$LDFLAGS -ipa"
1147 >  LDFLAGS="$LDFLAGS -O3 -OPT:Olimit=0 -IPA"
1148   fi
1149  
1150   dnl Generate Makefile.
# Line 1045 | Line 1152 | AC_SUBST(DEFINES)
1152   AC_SUBST(SYSSRCS)
1153   AC_SUBST(CPUINCLUDES)
1154   AC_SUBST(CPUSRCS)
1155 < AC_OUTPUT(Makefile)
1155 > AC_CONFIG_FILES([Makefile])
1156 > AC_OUTPUT
1157  
1158   dnl Print summary.
1159   echo
# Line 1059 | Line 1167 | echo ESD sound support .................
1167   echo GTK user interface ..................... : $WANT_GTK
1168   echo mon debugger support ................... : $WANT_MON
1169   echo Running m68k code natively ............. : $WANT_NATIVE_M68K
1170 + echo Use JIT compiler ....................... : $WANT_JIT
1171 + echo JIT debug mode ......................... : $WANT_JIT_DEBUG
1172   echo Floating-Point emulation core .......... : $FPE_CORE
1173   echo Assembly optimizations ................. : $ASM_OPTIMIZATIONS
1174   echo Addressing mode ........................ : $ADDRESSING_MODE
1175 + echo Bad memory access recovery type ........ : $sigsegv_recovery
1176   echo
1177   echo "Configuration done. Now type \"make\" (or \"gmake\")."

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines