--- SheepShaver/src/Unix/configure.ac 2006/04/06 22:36:43 1.49 +++ SheepShaver/src/Unix/configure.ac 2006/07/16 12:47:38 1.55 @@ -28,6 +28,7 @@ AC_ARG_ENABLE(fbdev-dga, [ --enable- AC_ARG_ENABLE(xf86-dga, [ --enable-xf86-dga use the XFree86 DGA extension [default=yes]], [WANT_XF86_DGA=$enableval], [WANT_XF86_DGA=yes]) AC_ARG_ENABLE(xf86-vidmode, [ --enable-xf86-vidmode use the XFree86 VidMode extension [default=yes]], [WANT_XF86_VIDMODE=$enableval], [WANT_XF86_VIDMODE=yes]) AC_ARG_ENABLE(vosf, [ --enable-vosf enable video on SEGV signals [default=yes]], [WANT_VOSF=$enableval], [WANT_VOSF=yes]) +AC_ARG_ENABLE(standalone-gui,[ --enable-standalone-gui enable a standalone GUI prefs editor [default=no]], [WANT_STANDALONE_GUI=$enableval], [WANT_STANDALONE_GUI=no]) AC_ARG_WITH(esd, [ --with-esd support ESD for sound under Linux/FreeBSD [default=yes]], [WANT_ESD=$withval], [WANT_ESD=yes]) AC_ARG_WITH(gtk, [ --with-gtk use GTK user interface [default=yes]], [case "$withval" in @@ -245,11 +246,8 @@ UISRCS=../dummy/prefs_editor_dummy.cpp case "x$WANT_GTK" in xgtk2*) AM_PATH_GTK_2_0(1.3.15, [ - AC_DEFINE(ENABLE_GTK, 1, [Define if using GTK.]) - CFLAGS="$CFLAGS $GTK_CFLAGS" - CXXFLAGS="$CXXFLAGS $GTK_CFLAGS" - LIBS="$LIBS $GTK_LIBS" - UISRCS=prefs_editor_gtk.cpp + GUI_CFLAGS="$GTK_CFLAGS" + GUI_LIBS="$GTK_LIBS" WANT_GTK=gtk2 ], [ case "x${WANT_GTK}x" in @@ -267,16 +265,28 @@ xgtk2*) esac if [[ "x$WANT_GTK" = "xgtk" ]]; then AM_PATH_GTK(1.2.0, [ - AC_DEFINE(ENABLE_GTK, 1, [Define if using GTK.]) - CFLAGS="$CFLAGS $GTK_CFLAGS" - CXXFLAGS="$CXXFLAGS $GTK_CFLAGS" - LIBS="$LIBS $GTK_LIBS" - UISRCS=prefs_editor_gtk.cpp + GUI_CFLAGS="$GTK_CFLAGS" + GUI_LIBS="$GTK_LIBS" ], [ AC_MSG_WARN([Could not find GTK+, disabling user interface.]) WANT_GTK=no ]) fi +if [[ "x$WANT_GTK" != "xno" -a "x$WANT_STANDALONE_GUI" = "xno" ]]; then + AC_DEFINE(ENABLE_GTK, 1, [Define if using GTK.]) + UISRCS=prefs_editor_gtk.cpp +fi +AC_SUBST(GUI_CFLAGS) +AC_SUBST(GUI_LIBS) + +dnl Build external GUI if requested. +if [[ "$WANT_STANDALONE_GUI" != "yes" ]]; then + WANT_STANDALONE_GUI=no +fi +if [[ "$WANT_GTK" = "no" ]]; then + WANT_STANDALONE_GUI=no +fi +AC_SUBST(STANDALONE_GUI, [$WANT_STANDALONE_GUI]) dnl We use ESD if possible. if [[ "x$WANT_ESD" = "xyes" ]]; then @@ -1337,7 +1347,8 @@ if [[ "x$EMULATED_PPC" = "xyes" ]]; then ../kpx_cpu/src/cpu/ppc/ppc-cpu.cpp \ ../kpx_cpu/src/cpu/ppc/ppc-decode.cpp \ ../kpx_cpu/src/cpu/ppc/ppc-execute.cpp \ - ../kpx_cpu/src/cpu/ppc/ppc-translate.cpp" + ../kpx_cpu/src/cpu/ppc/ppc-translate.cpp \ + ../kpx_cpu/src/utils/utils-cpuinfo.cpp" CPPFLAGS="$CPPFLAGS -I../kpx_cpu/include -I../kpx_cpu/src" dnl Enable JIT compiler, if possible @@ -1404,7 +1415,7 @@ if [[ "x$EMULATED_PPC" = "xyes" ]]; then x*) have_dyngen_gcc3=yes ;; esac if [[ "x$have_dyngen_gcc3" = "xyes" ]]; then - DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -falign-functions=0" + DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -fno-align-functions" else DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -malign-functions=0" fi @@ -1430,39 +1441,14 @@ if [[ "x$EMULATED_PPC" = "xyes" ]]; then CPUSRCS="\ ../kpx_cpu/src/cpu/jit/jit-cache.cpp \ ../kpx_cpu/src/cpu/jit/basic-dyngen.cpp \ - ../kpx_cpu/src/cpu/ppc/ppc-dyngen.cpp $CPUSRCS" + ../kpx_cpu/src/cpu/ppc/ppc-dyngen.cpp \ + ../kpx_cpu/src/cpu/ppc/ppc-jit.cpp $CPUSRCS" fi fi CPUSRCS="$CPUSRCS ../kpx_cpu/sheepshaver_glue.cpp" else WANT_JIT=no fi -if [[ "x$ac_cv_use_dyngen" = "xyes" ]]; then - AC_CACHE_CHECK([whether static data regions are executable], - ac_cv_have_static_data_exec, [ - AC_TRY_RUN([int main(void) { -#if defined(__powerpc__) || defined(__ppc__) - static unsigned int p[8] = {0x4e800020,}; - asm volatile("dcbst 0,%0" : : "r" (p) : "memory"); - asm volatile("sync" : : : "memory"); - asm volatile("icbi 0,%0" : : "r" (p) : "memory"); - asm volatile("sync" : : : "memory"); - asm volatile("isync" : : : "memory"); - ((void (*)(void))p)(); - return 0; -#endif - return 1; - }], ac_cv_have_static_data_exec=yes, ac_cv_have_static_data_exec=no, - dnl When cross-compiling, do not assume anything. - ac_cv_have_static_data_exec=no - ) - ]) -else - ac_cv_use_dyngen=no -fi -AC_TRANSLATE_DEFINE(HAVE_STATIC_DATA_EXEC, "$ac_cv_have_static_data_exec", - [Define if your system marks static data pages as executable.]) - if [[ "x$WANT_JIT" = "xyes" ]]; then CPPFLAGS="$CPPFLAGS -DUSE_JIT" fi @@ -1475,6 +1461,39 @@ if [[ "x$HAVE_IPA" = "xyes" ]]; then LDFLAGS="$LDFLAGS -O3 -OPT:Olimit=0 -IPA" fi +dnl Check for linker script support +case $target_os:$target_cpu in +linux*:i?86) LINKER_SCRIPT_FLAGS="-Wl,-T,ldscripts/linux-i386.ld";; +linux*:x86_64) LINKER_SCRIPT_FLAGS="-Wl,-T,ldscripts/linux-x86_64.ld";; +linux*:powerpc) LINKER_SCRIPT_FLAGS="-Wl,-T,ldscripts/linux-ppc.ld";; +netbsd*:i?86) LINKER_SCRIPT_FLAGS="-Wl,-T,ldscripts/linux-i386.ld";; +freebsd*:i?86) LINKER_SCRIPT_FLAGS="-Wl,-T,ldscripts/freebsd-i386.ld";; +darwin*:*) LINKER_SCRIPT_FLAGS="-Wl,-seg1addr,0x78048000";; +esac +if [[ -n "$LINKER_SCRIPT_FLAGS" ]]; then + AC_CACHE_CHECK([whether linker script is usable], + ac_cv_linker_script_works, [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + saved_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $LINKER_SCRIPT_FLAGS" + AC_TRY_RUN( + [int main() {if ((char *)&main < (char *)0x70000000) return 1;}], + [ac_cv_linker_script_works=yes], + [ac_cv_linker_script_works=no], + dnl When cross-compiling, assume it works + [ac_cv_linker_script_works="guessing yes"] + ) + AC_LANG_RESTORE + if [[ "$ac_cv_linker_script_works" = "no" ]]; then + LDFLAGS="$saved_LDFLAGS" + LINKER_SCRIPT_FLAGS="" + fi + ]) +fi +AC_TRANSLATE_DEFINE(HAVE_LINKER_SCRIPT, "$ac_cv_linker_script_works", + [Define if there is a linker script to relocate the executable above 0x70000000.]) + dnl Generate Makefile. AC_SUBST(PERL) AC_SUBST(USE_DYNGEN, [$ac_cv_use_dyngen])