--- SheepShaver/src/Unix/configure.ac 2009/02/11 19:22:16 1.63 +++ SheepShaver/src/Unix/configure.ac 2012/06/16 02:16:40 1.74 @@ -5,6 +5,13 @@ AC_INIT([SheepShaver], 2.3, [Christian.B AC_CONFIG_SRCDIR(main_unix.cpp) AC_PREREQ(2.52) AC_CONFIG_HEADER(config.h) +AH_TOP( +#ifndef CONFIG_H +#define CONFIG_H +) +AH_BOTTOM( +#endif /* CONFIG_H */ +) dnl Canonical system information. AC_CANONICAL_HOST @@ -41,6 +48,13 @@ AC_ARG_WITH(gtk, [ --with-gt AC_ARG_WITH(mon, [ --with-mon use mon as debugger [default=yes]], [WANT_MON=$withval], [WANT_MON=yes]) AC_ARG_WITH(dgcc, [ --with-dgcc=COMPILER use C++ COMPILER to compile synthetic opcodes], [DYNGEN_CC=$withval]) +AC_ARG_WITH(bincue, + AS_HELP_STRING([--with-bincue], [Allow cdrom image files in bin/cue mode])) + +AC_ARG_WITH(libvhd, + AS_HELP_STRING([--with-libvhd], [Enable VHD disk images])) + + dnl Addressing mode AC_ARG_ENABLE(addressing, [ --enable-addressing=AM set the addressing mode to use [default=real]], @@ -56,6 +70,8 @@ dnl SDL options. AC_ARG_ENABLE(sdl-static, [ --enable-sdl-static use SDL static libraries for linking [default=no]], [WANT_SDL_STATIC=$enableval], [WANT_SDL_STATIC=no]) AC_ARG_ENABLE(sdl-video, [ --enable-sdl-video use SDL for video graphics [default=no]], [WANT_SDL_VIDEO=$enableval], [WANT_SDL_VIDEO=no]) AC_ARG_ENABLE(sdl-audio, [ --enable-sdl-audio use SDL for audio [default=no]], [WANT_SDL_AUDIO=$enableval], [WANT_SDL_AUDIO=no]) +AC_ARG_ENABLE(sdl-framework, [ --enable-sdl-framework use SDL framework [default=no]], [WANT_SDL_FRAMEWORK=$enableval], [WANT_SDL_FRAMEWORK=no]) +AC_ARG_ENABLE(sdl-framework-prefix, [ --enable-sdl-framework-prefix=PFX default=/Library/Frameworks], [SDL_FRAMEWORK="$enableval"], [SDL_FRAMEWORK=/Library/Frameworks]) dnl Checks for programs. AC_PROG_CC @@ -109,11 +125,11 @@ if [[ "x$WANT_MON" = "xyes" ]]; then MONSRCS="$mon_srcdir/mon.cpp $mon_srcdir/mon_6502.cpp $mon_srcdir/mon_z80.cpp $mon_srcdir/mon_cmd.cpp $mon_srcdir/mon_lowmem.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 $mon_srcdir/disass/mips-dis.c $mon_srcdir/disass/mips-opc.c $mon_srcdir/disass/mips16-opc.c" CXXFLAGS="$CXXFLAGS -I$mon_srcdir -I$mon_srcdir/disass" AC_CHECK_LIB(ncurses, tgetent, , - AC_CHECK_LIB(termcap, tgetent, , - AC_CHECK_LIB(termlib, tgetent, , - AC_CHECK_LIB(terminfo, tgetent, , - AC_CHECK_LIB(Hcurses, tgetent, , - AC_CHECK_LIB(curses, tgetent)))))) + [AC_CHECK_LIB(termcap, tgetent, , + [AC_CHECK_LIB(termlib, tgetent, , + [AC_CHECK_LIB(terminfo, tgetent, , + [AC_CHECK_LIB(Hcurses, tgetent, , + [AC_CHECK_LIB(curses, tgetent)])])])])]) AC_CHECK_LIB(readline, readline) AC_CHECK_HEADERS(readline.h history.h readline/readline.h readline/history.h) else @@ -128,6 +144,36 @@ dnl Checks for libraries. AC_CHECK_LIB(posix4, sem_init) AC_CHECK_LIB(m, cos) +dnl AC_CHECK_SDLFRAMEWORK($1=NAME, $2=INCLUDES) +dnl AC_TRY_LINK uses main() but SDL needs main to take args, +dnl therefore main is undefined with #undef. +dnl Framework can be in an custom location. +AC_DEFUN([AC_CHECK_SDLFRAMEWORK], [ + AS_VAR_PUSHDEF([ac_Framework], [ac_cv_framework_$1]) + AC_CACHE_CHECK([whether compiler supports framework $1], + ac_Framework, [ + saved_LIBS="$LIBS" + LIBS="$LIBS -framework $1" + if [[ "x$SDL_FRAMEWORK" != "x/Library/Frameworks" ]]; then + if [[ "x$SDL_FRAMEWORK" != "x/System/Library/Frameworks" ]]; then + LIBS="$saved_LIBS -F$SDL_FRAMEWORK -framework $1" + fi + fi + saved_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I$SDL_FRAMEWORK/SDL.framework/Headers" + AC_TRY_LINK( + [$2 +#undef main], [], + [AS_VAR_SET(ac_Framework, yes)], [AS_VAR_SET(ac_Framework, no); +LIBS="$saved_LIBS"; CPPFLAGS="$saved_CPPFLAGS"] + ) + ]) + AS_IF([test AS_VAR_GET(ac_Framework) = yes], + [AC_DEFINE(AS_TR_CPP(HAVE_FRAMEWORK_$1), 1, [Define if framework $1 is available.])] + ) + AS_VAR_POPDEF([ac_Framework]) +]) + dnl Do we need SDL? WANT_SDL=no if [[ "x$WANT_SDL_VIDEO" = "xyes" ]]; then @@ -142,21 +188,28 @@ if [[ "x$WANT_SDL_AUDIO" = "xyes" ]]; th SDL_SUPPORT="$SDL_SUPPORT audio" fi if [[ "x$WANT_SDL" = "xyes" ]]; then - AC_PATH_PROG(sdl_config, "sdl-config") - if [[ -n "$sdl_config" ]]; then - sdl_cflags=`$sdl_config --cflags` - if [[ "x$WANT_SDL_STATIC" = "xyes" ]]; then - sdl_libs=`$sdl_config --static-libs` + if [[ "x$WANT_SDL_FRAMEWORK" = "xyes" ]]; then + AC_CHECK_SDLFRAMEWORK(SDL, [#include ]) + else + ac_cv_framework_SDL=no + fi + if [[ "x$ac_cv_framework_SDL" = "xno" ]]; then + AC_PATH_PROG(sdl_config, "sdl-config") + if [[ -n "$sdl_config" ]]; then + sdl_cflags=`$sdl_config --cflags` + if [[ "x$WANT_SDL_STATIC" = "xyes" ]]; then + sdl_libs=`$sdl_config --static-libs` + else + sdl_libs=`$sdl_config --libs` + fi + CFLAGS="$CFLAGS $sdl_cflags" + CXXFLAGS="$CXXFLAGS $sdl_cflags" + LIBS="$LIBS $sdl_libs" else - sdl_libs=`$sdl_config --libs` + WANT_SDL=no + WANT_SDL_VIDEO=no + WANT_SDL_AUDIO=no fi - CFLAGS="$CFLAGS $sdl_cflags" - CXXFLAGS="$CXXFLAGS $sdl_cflags" - LIBS="$LIBS $sdl_libs" - else - WANT_SDL=no - WANT_SDL_VIDEO=no - WANT_SDL_AUDIO=no fi SDL_SUPPORT=`echo "$SDL_SUPPORT" | sed -e "s/^ //"` else @@ -174,6 +227,8 @@ if [[ "x$WANT_SDL_VIDEO" != "xyes" ]]; t LIBS="$LIBS $X_PRE_LIBS $X_LIBS -lX11 -lXext $X_EXTRA_LIBS" fi + + dnl We need pthreads on non-PowerPC systems. Try libpthread first, then libc_r (FreeBSD), then PTL. HAVE_PTHREADS=yes case $EMULATED_PPC:$target_os in @@ -315,7 +370,7 @@ AC_CHECK_HEADERS(mach/vm_map.h mach/mach AC_CHECK_HEADERS(unistd.h fcntl.h byteswap.h dirent.h) AC_CHECK_HEADERS(sys/socket.h sys/ioctl.h sys/filio.h sys/bitypes.h sys/wait.h) AC_CHECK_HEADERS(sys/time.h sys/poll.h sys/select.h arpa/inet.h) -AC_CHECK_HEADERS(linux/if.h linux/if_tun.h net/if.h net/if_tun.h, [], [], [ +AC_CHECK_HEADERS(netinet/in.h linux/if.h linux/if_tun.h net/if.h net/if_tun.h, [], [], [ #ifdef HAVE_SYS_TYPES_H #include #endif @@ -565,13 +620,14 @@ darwin*) fi if [[ "x$ac_cv_framework_Carbon" = "xyes" ]]; then EXTFSSRC=../MacOSX/extfs_macosx.cpp - if [[ "x$ac_cv_framework_AppKit" = "xyes" ]]; then - PREFSSRC="../MacOSX/prefs_macosx.mm ../MacOSX/PrefsEditor/PrefsEditor.mm" - CPPFLAGS="$CPPFLAGS -I../MacOSX/PrefsEditor" + if [[ "x$ac_cv_framework_AppKit" = "xyes" -a "x$WANT_GTK" = "xno" ]]; then + PREFSSRC="../MacOSX/prefs_macosx.mm ../MacOSX/Launcher/VMSettingsController.mm" + CPPFLAGS="$CPPFLAGS -I../MacOSX/Launcher" fi fi - if [[ "x$ac_cv_framework_CoreAudio" = "xyes" -a "x$WANT_SDL_AUDIO" = "xno" ]]; then + if [[ "x$WANT_ESD" = "xno" -a "x$ac_cv_framework_CoreAudio" = "xyes" -a "x$WANT_SDL_AUDIO" = "xno" ]]; then AUDIOSRC="../MacOSX/audio_macosx.cpp ../MacOSX/AudioBackEnd.cpp ../MacOSX/AudioDevice.cpp ../MacOSX/MacOSX_sound_if.cpp" + OSX_CORE_AUDIO="-DOSX_CORE_AUDIO" fi ;; irix*) @@ -592,6 +648,34 @@ irix*) ;; esac +dnl BINCUE +AS_IF([test "x$with_bincue" = "xyes" ], [have_bincue=yes], [have_bincue=no]) +AS_IF([test "x$have_bincue" = "xyes" ], [ + if [[ "xOSX_CORE_AUDIO" = "xno" -a "x$WANT_SDL_AUDIO"="xno"]]; then + AC_MSG_ERROR([You need SDL or OSX Core Audio to use BINCUE support.]) + else + CPPFLAGS="$CPPFLAGS -DBINCUE $OSX_CORE_AUDIO" + fi +]) + +dnl LIBVHD +AS_IF([test "x$with_libvhd" = "xyes" ], [have_libvhd=yes], [have_libvhd=no]) +AS_IF([test "x$have_libvhd" = "xyes" ], [ + CPPFLAGS="$CPPFLAGS -DHAVE_LIBVHD" + LIBS="$LIBS -lvhd" + case $target_os in + linux*) + LIBS="$LIBS -luuid" + esac + AC_CHECK_LIB(vhd, vhd_open) + AC_CHECK_LIB(vhd, vhd_io_read) + AC_CHECK_LIB(vhd, vhd_io_write) + AC_CHECK_LIB(vhd, vhd_close) +]) + + + + dnl Is the slirp library supported? case "$ac_cv_have_byte_bitfields" in yes|"guessing yes") @@ -614,6 +698,9 @@ AC_SUBST(SLIRP_SRCS) dnl SDL overrides if [[ "x$WANT_SDL" = "xyes" ]]; then AC_DEFINE(USE_SDL, 1, [Define to enble SDL support.]) + if [[ "x$WANT_SDL_FRAMEWORK" = "xyes" ]]; then + EXTRASYSSRCS="$EXTRASYSSRCS ../SDL/SDLMain.m" + fi fi if [[ "x$WANT_SDL_VIDEO" = "xyes" ]]; then AC_DEFINE(USE_SDL_VIDEO, 1, [Define to enable SDL video graphics support.]) @@ -621,6 +708,8 @@ if [[ "x$WANT_SDL_VIDEO" = "xyes" ]]; th KEYCODES="../SDL/keycodes" if [[ "x$ac_cv_framework_Carbon" = "xyes" ]]; then EXTRASYSSRCS="$EXTRASYSSRCS ../MacOSX/clip_macosx.cpp" + EXTRASYSSRCS="$EXTRASYSSRCS ../MacOSX/utils_macosx.mm" + CPPFLAGS="$CPPFLAGS -I../MacOSX" else EXTRASYSSRCS="$EXTRASYSSRCS ../dummy/clip_dummy.cpp" fi @@ -634,6 +723,19 @@ if [[ "x$WANT_SDL_AUDIO" = "xyes" ]]; th AUDIOSRC="../SDL/audio_sdl.cpp" fi +dnl BINCUE overrides + +if [[ "x$have_bincue" = "xyes" ]]; then + EXTRASYSSRCS="$EXTRASYSSRCS bincue_unix.cpp" +fi + +dnl libvhd overrides + +if [[ "x$have_libvhd" = "xyes" ]]; then + EXTRASYSSRCS="$EXTRASYSSRCS vhd_unix.cpp" +fi + + SYSSRCS="$VIDEOSRCS $EXTFSSRC $PREFSSRC $SERIALSRC $ETHERSRC $SCSISRC $AUDIOSRC $SEMSRC $UISRCS $EXTRASYSSRCS" dnl Define a macro that translates a yesno-variable into a C macro definition @@ -651,6 +753,9 @@ dnl Check that the host supports TUN/TAP AC_CACHE_CHECK([whether TUN/TAP is supported], ac_cv_tun_tap_support, [ AC_TRY_COMPILE([ + #if defined(HAVE_NETINET_IN_H) + #include + #endif #if defined(HAVE_LINUX_IF_H) && defined(HAVE_LINUX_IF_TUN_H) #include #include @@ -1389,6 +1494,9 @@ if [[ "x$EMULATED_PPC" = "xyes" ]]; then powerpc:mach) ac_cv_use_dyngen=yes ;; + x86_64:mach) + ac_cv_use_dyngen=yes + ;; i?86:mach) ac_cv_use_dyngen=yes ;; @@ -1463,7 +1571,7 @@ if [[ "x$EMULATED_PPC" = "xyes" ]]; then ../kpx_cpu/src/cpu/ppc/ppc-jit.cpp $CPUSRCS" fi fi - CPUSRCS="$CPUSRCS ../kpx_cpu/sheepshaver_glue.cpp" + CPUSRCS="$CPUSRCS ../kpx_cpu/sheepshaver_glue.cpp ../kpx_cpu/ppc-dis.c" else WANT_JIT=no fi @@ -1534,6 +1642,8 @@ echo echo SheepShaver configuration summary: echo echo SDL support ...................... : $SDL_SUPPORT +echo BINCUE support ................... : $have_bincue +echo LIBVHD support ................... : $have_libvhd echo FBDev DGA support ................ : $WANT_FBDEV_DGA echo XFree86 DGA support .............. : $WANT_XF86_DGA echo XFree86 VidMode support .......... : $WANT_XF86_VIDMODE