--- SheepShaver/src/Unix/configure.ac 2007/07/28 15:44:36 1.60 +++ SheepShaver/src/Unix/configure.ac 2011/12/29 07:39:56 1.71 @@ -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 @@ -425,6 +480,9 @@ mips-sony-bsd|mips-sony-newsos4) *-*-cygwin*) no_dev_ptmx=1 ;; +*-*-darwin*) + no_dev_ptmx=1 + ;; esac if test -z "$no_dev_ptmx" ; then @@ -524,6 +582,7 @@ AC_CHECK_FRAMEWORK(CoreFoundation, [#inc AC_CHECK_FRAMEWORK(CoreAudio, [#include ]) AC_CHECK_FRAMEWORK(AudioUnit, [#include ]) AC_CHECK_FRAMEWORK(AudioToolbox, [#include ]) +AC_CHECK_FRAMEWORK(AppKit, []) dnl Select system-dependant sources. SERIALSRC=serial_unix.cpp @@ -560,12 +619,15 @@ darwin*) EXTRASYSSRCS="$EXTRASYSSRCS ../MacOSX/sys_darwin.cpp" fi if [[ "x$ac_cv_framework_Carbon" = "xyes" ]]; then - EXTFSSRC=../MacOSX/extfs_macosx.mm - PREFSSRC="../MacOSX/prefs_macosx.mm ../MacOSX/PrefsEditor/PrefsEditor.mm" - CPPFLAGS="$CPPFLAGS -I../MacOSX/PrefsEditor" - fi - if [[ "x$ac_cv_framework_CoreAudio" = "xyes" ]]; then + EXTFSSRC=../MacOSX/extfs_macosx.cpp + 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$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*) @@ -586,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") @@ -608,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.]) @@ -615,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 @@ -628,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 @@ -1528,6 +1636,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