1
0
mirror of https://git.code.sf.net/p/fuse-emulator/fuse synced 2026-01-27 01:41:34 +03:00
Files
fuse/configure.ac
2018-09-04 21:25:06 +01:00

992 lines
30 KiB
Plaintext

dnl Process this file with autoconf to produce a configure script.
dnl This program is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 2 of the License, or
dnl (at your option) any later version.
dnl
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License along
dnl with this program; if not, write to the Free Software Foundation, Inc.,
dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
dnl
dnl Author contact information:
dnl
dnl E-mail: philip-fuse@shadowmagic.org.uk
dnl Package version
m4_define([fuse_version], [1.5.6])
dnl Product full version
m4_define([fuse_major_version], [1])
m4_define([fuse_minor_version], [5])
m4_define([fuse_micro_version], [6])
m4_define([fuse_nano_version], [0])
m4_define([fuse_full_version], [fuse_major_version.fuse_minor_version.fuse_micro_version.fuse_nano_version])
m4_define([fuse_rc_version], [fuse_major_version,fuse_minor_version,fuse_micro_version,fuse_nano_version])
dnl Package info
m4_define([fuse_copyright], ["(c) 1999-2018 Philip Kendall and others"])
m4_define([fuse_url], [http://fuse-emulator.sourceforge.net/])
m4_define([fuse_bugreport], [http://sourceforge.net/p/fuse-emulator/bugs/])
AC_INIT([fuse],[fuse_version],[fuse_bugreport],[fuse],[fuse_url])
AC_CONFIG_SRCDIR(fuse.c)
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS(config.h)
AC_CANONICAL_HOST
dnl Use automake to produce `Makefile.in'
AM_INIT_AUTOMAKE([1.11 foreign subdir-objects -Wall])
AM_SILENT_RULES([yes])
dnl Substitutions for .in files
FUSE_FULL_VERSION=fuse_full_version
FUSE_COPYRIGHT=fuse_copyright
FUSE_URL=fuse_url
AC_SUBST(FUSE_FULL_VERSION)
AC_SUBST(FUSE_COPYRIGHT)
AC_SUBST(FUSE_URL)
dnl Definitions for config.h
AC_DEFINE([FUSE_RC_VERSION], [fuse_rc_version],
[Define version information for win32 executables])
AC_DEFINE([FUSE_COPYRIGHT], [fuse_copyright], [Define copyright of Fuse])
dnl Checks for programs.
AC_PROG_CC
AM_PROG_CC_C_O
AC_PATH_PROG(PERL, perl)
AC_SUBST(PERL)
AM_PROG_LEX
AC_PROG_YACC
LT_INIT
dnl Check for host specific programs
case "$host_os" in
mingw32*)
AC_CHECK_TOOL([WINDRES], [windres])
if test -z "$WINDRES" ; then
AC_MSG_ERROR([windres is required to compile Fuse for $host hosts])
fi
AC_CHECK_PROGS([MAN2HTML], [man2html])
AC_CHECK_PROGS([GROFF], [groff])
AC_CHECK_PROGS([UNIX2DOS], [unix2dos])
;;
esac
dnl Generate commandy.h
YFLAGS="$YFLAGS -d"
AC_SUBST(YFLAGS)
dnl Check for big endianness
AC_C_BIGENDIAN
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(
libgen.h \
siginfo.h \
strings.h \
sys/soundcard.h \
sys/audio.h \
sys/audioio.h
)
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
dnl Checks for library functions.
AC_CHECK_FUNCS(dirname geteuid getopt_long fsync)
AC_CHECK_LIB([m],[cos])
AX_STRING_STRCASECMP
if test x"$ac_cv_string_strcasecmp" = "xno" ; then
AX_STRINGS_STRCASECMP
fi
dnl Allow the user to say that various libraries are in one place
AC_ARG_WITH(local-prefix,
[ --with-local-prefix=PFX local libraries installed in PFX (optional)],
CPPFLAGS="$CPPFLAGS -I$withval/include"; LDFLAGS="$LDFLAGS -L$withval/lib",
if test "$prefix" != "NONE"; then
CPPFLAGS="$CPPFLAGS -I$prefix/include"; LDFLAGS="$LDFLAGS -L$prefix/lib"
fi)
dnl Check that libspectrum is available and that it is new enough
PKG_CHECK_MODULES([LIBSPECTRUM], [libspectrum >= 1.4.0])
dnl Check if supplied libspectrum has its own internal GLib replacement
AC_MSG_CHECKING(whether libspectrum has its own internal GLib replacement)
ac_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $LIBSPECTRUM_CFLAGS"
AC_PREPROC_IFELSE(
[AC_LANG_SOURCE([
#include <libspectrum.h>
#if LIBSPECTRUM_HAS_GLIB_REPLACEMENT == 0
#error "GLib replacement not found"
#endif
])],
[fakeglib=yes; AC_MSG_RESULT(yes)],
[fakeglib=no; AC_MSG_RESULT(no)]
)
CPPFLAGS="$ac_save_CPPFLAGS"
# If we're not libspectrum's own internal GLib replacement, we must use the
# real thing
AS_IF([test "$fakeglib" = no], [
PKG_CHECK_MODULES(
[GLIB],
[glib-2.0 >= 2.20.0],
[AC_DEFINE([HAVE_LIB_GLIB], 1, [Defined if we've got GLib])],
[AC_MSG_ERROR([GLib not found, and libspectrum has no internal replacement])]
)
])
dnl Check if supplied libspectrum has support for compressed szx files
AC_MSG_CHECKING(whether libspectrum supports compressed szx snaps)
ac_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $LIBSPECTRUM_CFLAGS"
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#include <libspectrum.h>]],
[[
int test = LIBSPECTRUM_SUPPORTS_ZLIB_COMPRESSION;
]])
],
[LIBSPEC_HAVE_ZLIB=yes; AC_MSG_RESULT(yes)],
[LIBSPEC_HAVE_ZLIB=""; AC_MSG_RESULT(no)]
)
CPPFLAGS="$ac_save_CPPFLAGS"
AC_SUBST(LIBSPEC_HAVE_ZLIB)
dnl Select a user interface
dnl Try various UI options; set the `ui' variable when we've got one
dnl we like, and then don't look at the other options
AC_PATH_XTRA
dnl Look for Win32 UI (default=no)
AC_MSG_CHECKING(whether Win32 UI requested)
AC_ARG_WITH(win32,
[ --with-win32 use Win32 for user interface],
if test "$withval" = no; then win32=no; else win32=yes; fi,
win32=auto)
if test "$win32" = auto; then
case "$host_os" in
mingw32*)
win32=yes
;;
*)
win32=no
;;
esac
fi
AC_MSG_RESULT($win32)
if test "$win32" = yes; then
AC_CHECK_HEADER(windows.h,
LIBS="$LIBS -mwindows -lcomctl32 -lwinmm";
AC_DEFINE([UI_WIN32], 1, [Defined if Win32 UI in use])
UI=win32,
AC_MSG_ERROR([Win32 UI not found]))
fi
dnl Look for svgalib (default=no)
if test -z "$UI"; then
AC_MSG_CHECKING(whether svgalib UI requested)
AC_ARG_WITH(svgalib,
[ --with-svgalib use svgalib for user interface],
if test "$withval" = no; then svgalib=no; else svgalib=yes; fi,
svgalib=no)
AC_MSG_RESULT($svgalib)
if test "$svgalib" = yes; then
AC_CHECK_HEADER(vga.h,
LIBS="$LIBS -lvga";
AC_DEFINE([UI_SVGA], 1, [Defined if svgalib UI in use])
AC_DEFINE([USE_WIDGET], 1,
[Defined if we're using a widget-based UI])
UI=svga; WIDGET=widget,
AC_MSG_ERROR([svgalib not found]))
fi
fi
dnl Look for framebuffer interface for SA1110 (default=no)
if test -z "$UI"; then
AC_MSG_CHECKING(whether framebuffer UI requested)
AC_ARG_WITH(fb,
[ --with-fb use framebuffer for user interface],
if test "$withval" = no; then fb=no; else fb=yes; fi,
fb=no)
AC_MSG_RESULT($fb)
if test "$fb" = yes; then
AC_DEFINE([UI_FB], 1, [Defined if framebuffer UI in use])
AC_DEFINE([USE_WIDGET], 1, [Defined if we're using a widget-based UI])
UI=fb; WIDGET=widget;
dnl Look for libgpm (default=yes)
AC_MSG_CHECKING(whether gpm requested)
AC_ARG_WITH(gpm,
[ --without-gpm don't use libgpm for e.g. Kempston mouse],
if test "$withval" = no; then gpm=no; else gpm=yes; fi,
gpm=yes)
AC_MSG_RESULT($gpm)
dnl Note: we use libdl to get libgpm at runtime
if test "$gpm" = yes; then
AC_CHECK_HEADER(gpm.h,
LIBS="$LIBS -ldl";
AC_DEFINE([HAVE_GPM_H], 1, [Defined if gpm in use]),
AC_MSG_ERROR([libgpm not found]))
fi
fi
fi
dnl Look for Wii interface (default = 0)
if test -z "$UI"; then
AC_MSG_CHECKING(whether Wii UI requested)
AC_ARG_WITH(wii,
[ --with-wii use Wii FB for user interface],
if test "$withval" = no; then wii=no; else wii=yes; fi,
wii=no)
AC_MSG_RESULT($wii)
if test "$wii" = yes; then
AC_DEFINE([UI_WII], 1, [Defined if Wii UI in use])
AC_DEFINE([USE_WIDGET], 1, [Defined if we're using a widget-based UI])
AC_DEFINE([USE_JOYSTICK], 1, [Defined if we're using hardware joysticks])
UI=wii; WIDGET=widget;
host_os=wii
dnl Look for libgpm (default=yes)
AC_MSG_CHECKING(whether gpm requested)
AC_ARG_WITH(gpm,
[ --without-gpm don't use libgpm for e.g. Kempston mouse],
if test "$withval" = no; then gpm=no; else gpm=yes; fi,
gpm=yes)
AC_MSG_RESULT($gpm)
dnl Note: we use libdl to get libgpm at runtime
if test "$gpm" = yes; then
AC_CHECK_HEADER(gpm.h,
LIBS="$LIBS -ldl";
AC_DEFINE([HAVE_GPM_H], 1, [Defined if gpm in use]),
AC_MSG_ERROR([libgpm not found]))
fi
fi
fi
dnl Look for SDL (default=no)
if test -z "$UI"; then
AC_MSG_CHECKING(whether SDL UI requested)
AC_ARG_WITH(sdl,
[ --with-sdl use SDL for user interface],
if test "$withval" = no; then sdl=no; else sdl=yes; fi,
sdl=no)
AC_MSG_RESULT($sdl)
if test "$sdl" = yes; then
SDL_VERSION=1.2.4
AM_PATH_SDL($SDL_VERSION,
AC_DEFINE([UI_SDL], 1, [Defined if the SDL UI in use])
AC_DEFINE([USE_WIDGET], 1,
[Defined if we're using a widget-based UI])
UI=sdl; WIDGET=widget,
AC_MSG_ERROR([SDL version $SDL_VERSION not found]))
fi
fi
dnl Look for null UI (default=no)
if test -z "$UI"; then
AC_MSG_CHECKING(whether null UI requested)
AC_ARG_WITH(null-ui,
[ --with-null-ui use null user interface],
if test "$withval" = no; then null_ui=no; else null_ui=yes; fi,
null_ui=no)
AC_MSG_RESULT($null_ui)
if test "$null_ui" = yes; then
AC_DEFINE([UI_NULL], 1, [Defined if null UI is in use])
UI=null
fi
fi
dnl Look for GTK+ (default=yes)
if test -z "$UI"; then
AC_MSG_CHECKING(whether GTK+ UI requested)
AC_ARG_WITH(gtk,
[ --without-gtk don't use GTK+ for user interface],
if test "$withval" = no; then gtk=no; else gtk=yes; fi,
if test "$fakeglib" = yes; then gtk=no; else gtk=yes; fi)
AC_MSG_RESULT($gtk)
if test "$gtk" = yes; then
if test "$fakeglib" = yes; then
AC_MSG_ERROR([libspectrum is using its own internal GLib replacement
GTK+ requires the real GLib library, so the GTK+ UI cannot be used with
the libspectrum that was found. Rebuild libspectrum to use the real GLib
library (i.e. do not pass --with-fake-glib) instead of its own replacement.])
fi
AC_ARG_ENABLE(gtk3,
AS_HELP_STRING([--disable-gtk3],[prefer GTK+ 2 to GTK+ 3]),
if test "$enableval" = yes; then gtk3=yes; else gtk3=no; fi,
gtk3=auto
)
if test "$gtk3" = yes; then
PKG_CHECK_MODULES(GTK, [gtk+-3.0],,
AC_MSG_ERROR([GTK+ not found])
)
elif test "$gtk3" = no; then
AM_PATH_GTK_2_0(2.18.0,,
AC_MSG_ERROR([GTK+ not found])
)
elif test "$gtk3" = auto; then
PKG_CHECK_MODULES([GTK], [gtk+-3.0], [gtk3=yes], [true])
if test "$gtk3" = auto; then
AM_PATH_GTK_2_0(2.18.0,
gtk3=no,
AC_MSG_WARN([GTK+ not found. Reverting to Xlib])
gtk3=no
gtk=no
)
fi
fi
fi
if test "$gtk" = yes; then
AC_DEFINE([UI_GTK], 1, [Defined if GTK+ UI is in use])
UI=gtk;
LIBS="$LIBS -lX11";
fi
fi
AM_CONDITIONAL(HAVE_GTK2, test "$gtk3" != yes)
if test "$UI" = gtk; then
AC_PATH_XTRA
fi
dnl Look for Xlib UI (default=yes)
if test -z "$UI"; then
if test "$with_x" = no; then
AC_MSG_ERROR([Please specify --with-svgalib or --with-fb, not --without-x.])
fi
AC_PATH_XTRA
CFLAGS="$CFLAGS $X_CFLAGS";
LDFLAGS="$LDFLAGS $X_LIBS";
LIBS="$LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS";
dnl This apparently needed for SVR4 systems to link correctly
dnl Basically the same as a part of AC_PATH_XTRA, but using `gethostname'
dnl instead of `gethostbyname'.
dnl Thanks to Erik Kunze for pointing out this problem
AC_CHECK_FUNC(gethostname)
if test $ac_cv_func_gethostname = no; then
AC_CHECK_LIB(nsl, gethostname, X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl")
fi
AC_CHECK_FUNC(connect)
if test $ac_cv_func_connect = no; then
AC_CHECK_LIB(socket, connect, X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS", ,
$X_EXTRA_LIBS)
fi
dnl Check for the MIT-SHM extension
AC_CHECK_HEADERS( X11/extensions/XShm.h,,,[[
#include <sys/ipc.h>
#include <sys/shm.h>
#include <X11/Xlib.h>
]])
AC_CHECK_LIB( Xext, XShmAttach, LIBS="$LIBS -lXext" )
AC_DEFINE([UI_X], 1, [Defined if Xlib UI in use])
UI=xlib; WIDGET=widget;
AC_DEFINE([USE_WIDGET], 1, [Defined if we're using a widget-based UI])
fi
AM_CONDITIONAL(UI_FB, test "$UI" = fb)
AM_CONDITIONAL(UI_GTK, test "$UI" = gtk)
AM_CONDITIONAL(UI_NULL, test "$UI" = null)
AM_CONDITIONAL(UI_SDL, test "$UI" = sdl)
AM_CONDITIONAL(UI_SVGA, test "$UI" = svga)
AM_CONDITIONAL(UI_WII, test "$UI" = wii)
AM_CONDITIONAL(UI_WIN32, test "$UI" = win32)
AM_CONDITIONAL(UI_X, test "$UI" = xlib)
AM_CONDITIONAL(USE_WIDGET, test x$WIDGET != x)
AC_SUBST(UI)
dnl Locate common options for widget UIs
if test -n "$WIDGET"; then
OPTIONS_DIR="$WIDGET"
else
OPTIONS_DIR="$UI"
fi
AC_SUBST(OPTIONS_DIR)
dnl Check whether to use zlib (the UNIX version is called z, Win32 zdll)
AC_MSG_CHECKING(whether to use zlib)
AC_ARG_WITH(zlib,
[ --without-zlib don't use zlib],
if test "$withval" = no; then zlib=no; else zlib=yes; fi,
zlib=yes)
AC_MSG_RESULT($zlib)
if test "$zlib" = yes; then
zlib=no
AC_CHECK_HEADERS(
zlib.h,
AC_SEARCH_LIBS(compress2, z zdll, zlib=yes)
)
fi
dnl Check if supplied libspectrum has support for bz2 compressed files
AC_MSG_CHECKING(whether libspectrum supports compressed bz2 files)
ac_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $LIBSPECTRUM_CFLAGS"
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#include <libspectrum.h>]],
[[
int test = LIBSPECTRUM_SUPPORTS_BZ2_COMPRESSION;
]])
],
[LIBSPEC_HAVE_BZ2=yes; AC_MSG_RESULT(yes)],
[LIBSPEC_HAVE_BZ2=""; AC_MSG_RESULT(no)]
)
CPPFLAGS="$ac_save_CPPFLAGS"
AC_SUBST(LIBSPEC_HAVE_BZ2)
dnl Check if supplied libspectrum has support for wav files
AC_MSG_CHECKING(whether libspectrum supports wav files)
ac_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $LIBSPECTRUM_CFLAGS"
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#include <libspectrum.h>]],
[[
int test = LIBSPECTRUM_SUPPORTS_AUDIOFILE;
]])
],
[LIBSPEC_HAVE_AUDIOFILE=yes; AC_MSG_RESULT(yes)],
[LIBSPEC_HAVE_AUDIOFILE=""; AC_MSG_RESULT(no)]
)
CPPFLAGS="$ac_save_CPPFLAGS"
AC_SUBST(LIBSPEC_HAVE_AUDIOFILE)
dnl Check if a version of libpng which supplies png_write_png is available
AC_MSG_CHECKING(whether PNG support requested)
AC_ARG_WITH(png,
[ --without-png don't use libpng],
if test "$withval" = no; then libpng=no; else libpng=yes; fi,
libpng=yes)
AC_MSG_RESULT($libpng)
if test "$libpng" = yes; then
PKG_CHECK_MODULES(
[PNG],
[libpng],
[AC_DEFINE([USE_LIBPNG], 1, [Defined if we're going to be using the installed libpng])],
[AC_MSG_WARN([libpng not found - saving screenshots disabled])
libpng=no]
)
fi
AC_SUBST(PNG_CFLAGS)
AC_SUBST(PNG_LIBS)
dnl Check if we can improve Blip Buffer accuracy on LP64 platforms
AC_CHECK_SIZEOF(long)
AC_MSG_CHECKING([Blip Buffer accuracy])
AS_IF([test "$ac_cv_sizeof_long" -ge 8],
[AC_DEFINE([BLIP_BUFFER_ACCURACY], [32], [Defined if we can increase Blip Buffer accuracy])
AC_MSG_RESULT([32])],
[AC_MSG_RESULT([default])]
)
dnl Check if a version of libasound which supplies pcm is available
AC_MSG_CHECKING(whether ALSA requested)
AC_ARG_WITH(alsa,
[ --without-alsa don't use libasound (ALSA)],
if test "$withval" = no; then libasound=no; else libasound=yes; fi,
libasound=yes)
AC_MSG_RESULT($libasound)
if test "$libasound" = yes; then
AC_CHECK_LIB( asound, snd_pcm_hw_params_set_period_size_near,
[AC_CHECK_HEADER(
alsa/asoundlib.h,
[alsa_available=yes],
[AC_MSG_WARN(alsa/asoundlib.h not found - no ALSA output)]
)],
[AC_MSG_WARN(snd_pcm_hw_params_set_period_size_near not found - no ALSA output)]
)
fi
dnl Check if a version of libao which supplies ao_open_live is available
AC_MSG_CHECKING(whether libao requested)
AC_ARG_WITH(libao,
[ --with-libao use libao for sound output],
if test "$withval" = no; then libao=no; else libao=yes; fi,
libao=no)
AC_MSG_RESULT($libao)
if test "$libao" = yes; then
AC_CHECK_LIB( ao, ao_open_live,
[AC_CHECK_HEADER(
ao/ao.h,
[ao_available=yes],
[AC_MSG_WARN(ao/ao.h not found - no libao sound output)]
)],
[AC_MSG_WARN(ao_open_live not found - no libao sound output)]
)
fi
dnl Check if DirectSound is available
AC_CHECK_HEADER(
dsound.h,
[dxsound_available=yes],,
[#define DIRECTSOUND_VERSION 0x0700
#include <windows.h>
#include <mmsystem.h>]
)
dnl Check if MS Windows Multimedia API sound is available
AC_CHECK_HEADER(
mmsystem.h,
[win32sound_available=yes],,
[#include <windows.h>]
)
dnl Check if CoreAudio is available
AC_CHECK_HEADER(
AudioToolbox/AudioToolbox.h,
[coreaudio_available=yes],,
)
dnl
dnl Decide which sound routines to use
dnl
AC_MSG_CHECKING(which sound routines to use)
if test "$UI" = sdl; then
SOUND_LIBADD='sound/sdlsound.$(OBJEXT)' SOUND_LIBS='' sound_fifo=yes
audio_driver="SDL"
elif test "$dxsound_available" = yes; then
SOUND_LIBADD='sound/dxsound.$(OBJEXT)' SOUND_LIBS='-ldsound -lole32 -ldxguid'
audio_driver="DirectX"
AC_DEFINE([DIRECTSOUND_VERSION], 0x0700, [DirectX 7 or higher is required])
elif test "$win32sound_available" = yes; then
SOUND_LIBADD='sound/win32sound.$(OBJEXT)' SOUND_LIBS='-lwinmm'
audio_driver="win32sound"
elif test "$alsa_available" = yes; then
SOUND_LIBADD='sound/alsasound.$(OBJEXT)' SOUND_LIBS='-lasound'
audio_driver="ALSA"
elif test "$ao_available" = yes; then
SOUND_LIBADD='sound/aosound.$(OBJEXT)' SOUND_LIBS='-lao'
audio_driver="libao"
elif test "$ac_cv_header_dsound_h" = yes; then
# Later selection between these two
SOUND_LIBADD='sound/sunsound.$(OBJEXT) sound/hpsound.$(OBJEXT)' SOUND_LIBS=''
audio_driver="Solaris or HP/UX"
elif test "$ac_cv_header_sys_soundcard_h" = yes; then
SOUND_LIBADD='sound/osssound.$(OBJEXT)' SOUND_LIBS=''
audio_driver="OSS"
elif test "$ac_cv_header_sys_audioio_h" = yes; then
dnl OpenBSD
SOUND_LIBADD='sound/sunsound.$(OBJEXT)' SOUND_LIBS=''
audio_driver="OpenBSD"
elif test "$coreaudio_available" = yes; then
SOUND_LIBADD='sound/coreaudiosound.$(OBJEXT)' SOUND_LIBS='-framework CoreAudio -framework AudioUnit' sound_fifo=yes
audio_driver="CoreAudio"
elif test "$wii" = yes; then
SOUND_LIBADD='sound/wiisound.$(OBJEXT)' SOUND_LIBS='' sound_fifo=yes
audio_driver="Wii"
else
SOUND_LIBADD='sound/nullsound.$(OBJEXT)' SOUND_LIBS=''
audio_driver="none"
fi
AC_MSG_RESULT($audio_driver)
if test "$audio_driver" = "none"; then
AC_DEFINE([NO_SOUND], 1, [Defined if no sound code is present])
AC_MSG_WARN(No sound library has been found)
fi
if test "$sound_fifo" = yes; then
dnl Strange construct used here as += doesn't seem to work on OS X
SOUND_LIBADD="$SOUND_LIBADD"' sound/sfifo.$(OBJEXT)'
AC_DEFINE([SOUND_FIFO], 1, [Defined if the sound code uses a fifo])
fi
AC_SUBST(SOUND_LIBADD)
AC_SUBST(SOUND_LIBS)
dnl Are we supplying the ROMs or relying on another package?
AC_MSG_CHECKING(where to find the Spectrum ROM images)
AC_ARG_WITH(roms-dir,
[ --with-roms-dir=DIR location of the Spectrum ROM images],
,
unset withval
)
if test "$withval" = ""; then
echo 'we supply them'
else
echo "$withval"
AC_DEFINE_UNQUOTED(ROMSDIR, "$withval", [Location of the ROM images])
fi
AC_MSG_CHECKING(whether hardware joystick support requested)
AC_ARG_WITH(joystick,
[ --without-joystick use a real joystick for Kempston emulation etc.],
if test "$withval" = no; then stick=no; else stick=yes; fi,
stick=yes)
AC_MSG_RESULT($stick)
if test "$stick" = yes; then
dnl We prefer to use UI-specific joystick code. (Default.)
dnl If there is none, or you override this here, we use libjsw.
dnl (svgalib appears to dislike switched joysticks on the parallel port...)
case "$UI" in
svga|sdl|win32)
dnl Libraries such as svgalib provide their own joystick code.
AC_MSG_CHECKING([whether to use $UI's joystick support])
AC_ARG_ENABLE(ui-joystick,
AS_HELP_STRING([--disable-ui-joystick], [use libjsw joystick code (where supported)]),
if test "$enableval" = no; then libjsw=yes; else libjsw=no; fi,
libjsw=no)
if test "$libjsw" = yes; then
AC_MSG_RESULT([no, use libjsw])
else
AC_MSG_RESULT(yes)
AC_DEFINE([USE_JOYSTICK], 1, [Defined if we're using hardware joysticks])
fi
;;
gtk|xlib)
dnl These UIs could use SDL library for handling joysticks
AC_MSG_CHECKING([whether to use $UI's joystick support])
AC_ARG_ENABLE(ui-joystick,
AS_HELP_STRING([--disable-ui-joystick], [use libjsw joystick code (where supported)]),
if test "$enableval" = no; then libjsw=yes; else libjsw=no; fi,
libjsw=no)
if test "$libjsw" = yes; then
AC_MSG_RESULT([no, use libjsw])
else
AC_MSG_RESULT(yes)
SDL_VERSION=1.2.4
AM_PATH_SDL($SDL_VERSION,
AC_DEFINE([USE_JOYSTICK], 1, [Defined if we're using hardware joysticks]),
AC_MSG_WARN([SDL version $SDL_VERSION not found - joystick support disabled])
stick=no)
fi
;;
wii)
dnl Wii UI check this elsewhere
AC_MSG_RESULT(yes)
libjsw=no
;;
*)
dnl Our only option is libjsw.
libjsw=yes
;;
esac
if test "$libjsw" = yes; then
dnl Look for libjsw. If missing, use QAOP<space>.
AC_CHECK_HEADERS(jsw.h,
LIBS="$LIBS -ljsw";
AC_DEFINE([USE_JOYSTICK], 1,
[Defined if we're using hardware joysticks]),
AC_MSG_WARN(jsw.h not found - joystick support disabled)
stick=no)
fi
fi
dnl See if libxml2 is available (for the config file handling)
AC_MSG_CHECKING(whether libxml2 support requested)
AC_ARG_WITH(libxml2,
[ --without-libxml2 use a libxml2 for settings],
if test "$withval" = no; then libxml2=no; else libxml2=yes; fi,
libxml2=yes)
AC_MSG_RESULT($libxml2)
if test "$libxml2" = yes; then
PKG_CHECK_MODULES(
[XML],
[libxml-2.0 >= 2.6.0],
[AC_DEFINE([HAVE_LIB_XML2], 1, [Defined if we've got libxml2])],
[AC_MSG_WARN([libxml2 not found - config file will use ini format])
libxml2="no"]
)
fi
AC_SUBST(XML_CFLAGS)
AC_SUBST(XML_LIBS)
dnl Work out which timer routines to use
AC_MSG_CHECKING(which timer routines to use)
if test "$UI" = sdl; then
TIMER_LIBADD='timer/sdl.$(OBJEXT)'
AC_MSG_RESULT(SDL)
else
TIMER_LIBADD='timer/native.$(OBJEXT)'
AC_MSG_RESULT(native)
fi
AC_SUBST(TIMER_LIBADD)
dnl See if sockets are supported
AC_MSG_CHECKING([whether sockets support requested])
AC_ARG_ENABLE(sockets,
AS_HELP_STRING([--disable-sockets], [do not use sockets]),
if test "$enableval" = yes; then sockets=yes; else sockets=no; fi,
sockets=yes)
AC_MSG_RESULT($sockets)
if test "$sockets" = yes; then
case "$host_os" in
mingw32*)
AC_CHECK_HEADER([winsock2.h], [LIBS="$LIBS -lws2_32"], [sockets=no])
;;
*)
AC_CHECK_HEADER([sys/socket.h],, [sockets=no])
;;
esac
fi
AM_CONDITIONAL(HAVE_SOCKETS, test "$sockets" = yes)
dnl See if POSIX threads are supported
AC_MSG_CHECKING([whether pthread support requested])
AC_ARG_WITH(pthread,
AS_HELP_STRING([--without-pthread],[do not use POSIX threads]),
if test "$withval" = no; then pthread=no; else pthread=yes; fi,
pthread=yes)
AC_MSG_RESULT($pthread)
if test "$pthread" = yes; then
AX_PTHREAD([],
[AC_MSG_WARN(POSIX threads not found - some peripherals disabled)
pthread=no])
fi
if test "$pthread" = yes -a "$sockets" = yes; then
build_spectranet=yes
AC_DEFINE([BUILD_SPECTRANET], 1, [Defined if we support spectranet])
else
build_spectranet=no
fi
AM_CONDITIONAL(BUILD_SPECTRANET, test "$build_spectranet" = yes)
dnl See if Linux TAP devices are supported
AC_MSG_CHECKING(whether Linux TAP devices are supported)
ac_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $LIBSPECTRUM_CFLAGS"
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[
#include <linux/if_tun.h>
#include <net/if.h>
#include <sys/ioctl.h>
]],[[
int test1 = IFF_TAP | IFF_NO_PI;
int test2 = TUNSETIFF;
]])
],
[AC_DEFINE([BUILD_SPECCYBOOT], 1, [Define to 1 if SpeccyBoot is supported.])
linux_tap=yes
AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(no)]
)
CPPFLAGS="$ac_save_CPPFLAGS"
AM_CONDITIONAL(HAVE_TUNTAP, test x$linux_tap != x)
AM_CONDITIONAL(BUILD_SPECCYBOOT, test x$linux_tap != x)
dnl Check if Python embedding is possible
AC_MSG_CHECKING(whether Python embedding requested)
AC_ARG_WITH(python,
[ --without-python don't use libpng],
if test "$withval" = no; then python=no; else python=yes; fi,
python=yes)
AC_MSG_RESULT($python)
if test "$python" = yes; then
PKG_CHECK_MODULES(
[PYTHON],
[python3],
[AC_DEFINE([USE_PYTHON], 1, [Defined if we're going to be enabling embedded Python])],
[AC_MSG_WARN([Python not found - embedded scripting disabled])
python=no]
)
fi
AM_CONDITIONAL(HAVE_PYTHON, test "$python" = yes)
AC_SUBST(PYTHON_CFLAGS)
AC_SUBST(PYTHON_LIBS)
dnl Work out which standard routines we're missing
AC_MSG_CHECKING(which standard routines we're missing)
missing_routines=''
if test "$ac_cv_func_dirname" = no; then
missing_routines="$missing_routines"'dirname '
fi
AM_CONDITIONAL(COMPAT_DIRNAME, test "$ac_cv_func_dirname" = no)
if test "$ac_cv_func_getopt_long" = no; then
case "$host_os" in
amigaos|morphos)
dnl Our getopt_long replacement doesn't work, so don't use it
;;
*)
compat_getopt=yes
missing_routines="$missing_routines"'getopt_long '
;;
esac
fi
AM_CONDITIONAL(COMPAT_GETOPT, test "$compat_getopt" = yes)
if test "x$missing_routines" = x; then
missing_routines='(none)'
fi
AC_MSG_RESULT($missing_routines)
dnl Work out which compatibility routines to use
AC_MSG_CHECKING(which compatibility routines to use)
case "$host_os" in
amigaos)
COMPAT_OSNAME='amiga'
;;
linux*)
COMPAT_OSNAME='linux'
;;
morphos)
COMPAT_OSNAME='morphos'
;;
mingw32*)
COMPAT_OSNAME='win32'
AC_DEFINE([WINVER], 0x0500, [Minimal supported version of Windows is 2000])
AC_DEFINE([_WIN32_IE], 0x501, [Internet Explorer 5.01 or higher is required])
AC_DEFINE([WIN32_LEAN_AND_MEAN],, [Exclude rarely used stuff from Windows headers <windows.h>])
;;
wii)
COMPAT_OSNAME='wii'
;;
*)
COMPAT_OSNAME='unix'
;;
esac
AC_MSG_RESULT($COMPAT_OSNAME)
AM_CONDITIONAL(COMPAT_AMIGA, test "$COMPAT_OSNAME" = 'amiga')
AM_CONDITIONAL(COMPAT_LINUX, test "$COMPAT_OSNAME" = 'linux')
AM_CONDITIONAL(COMPAT_MORPHOS, test "$COMPAT_OSNAME" = 'morphos')
AM_CONDITIONAL(COMPAT_UNIX, test "$COMPAT_OSNAME" = 'unix')
AM_CONDITIONAL(COMPAT_WII, test "$COMPAT_OSNAME" = 'wii')
AM_CONDITIONAL(COMPAT_WIN32, test "$COMPAT_OSNAME" = 'win32')
dnl Decide whether to install desktop and mime files
AC_ARG_ENABLE(desktop-integration,
AS_HELP_STRING([--enable-desktop-integration], [add menu entry and file associations]),
if test "$enableval" = yes; then desktopintegration=yes; else desktopintegration=no; fi,
desktopintegration=no)
AC_MSG_CHECKING(whether to install desktop file)
AC_MSG_RESULT($desktopintegration)
AM_CONDITIONAL(DESKTOP_INTEGRATION, test "$desktopintegration" = yes)
AC_CHECK_PROGS(GTK_UPDATE_ICON_CACHE,gtk-update-icon-cache,true)
dnl Where to install the desktop and mime files
AC_ARG_WITH(desktop-dir,
AS_HELP_STRING([--with-desktop-dir=DIR], [location of desktop files (default=datadir)]),
if test "$withval" = no; then desktopdir=no; else desktopdir=yes; fi,
desktopdir=no)
if test "$desktopdir" = yes; then
DESKTOP_DATADIR=$with_desktop_dir
else
DESKTOP_DATADIR="$datadir"
fi
AM_CONDITIONAL(DESKTOP_DATADIR, test "$desktopdir" = yes)
AC_SUBST(DESKTOP_DATADIR)
dnl Where to install the bash completion script
AC_ARG_WITH([bash-completion-dir],
[AS_HELP_STRING([--with-bash-completion-dir=DIR],
[install bash completion script in given directory])],
if test "$withval" = no; then with_bash_completion_dir=""; fi
)
if test "$with_bash_completion_dir" = yes; then
PKG_CHECK_VAR([BASH_COMPLETION_DIR], [bash-completion], [completionsdir], [],
[BASH_COMPLETION_DIR="${sysconfdir}/bash_completion.d"])
else
BASH_COMPLETION_DIR="$with_bash_completion_dir"
fi
AM_CONDITIONAL([BASH_COMPLETION], [test -n "$BASH_COMPLETION_DIR"])
AC_SUBST([BASH_COMPLETION_DIR])
dnl Do we want the low memory compile?
AC_MSG_CHECKING(whether low memory compile requested)
AC_ARG_ENABLE(smallmem,
[ --enable-smallmem low memory compile needed],
if test "$enableval" = yes; then
smallmem=yes;
else
smallmem=no;
fi,
smallmem=no)
if test "$smallmem" = no; then
AC_DEFINE([HAVE_ENOUGH_MEMORY], 1, [Defined if we've got enough memory to compile z80_ops.c])
fi
AC_MSG_RESULT($smallmem)
dnl Do we want lots of warning messages?
AC_MSG_CHECKING(whether lots of warnings requested)
AC_ARG_ENABLE(warnings,
[ --enable-warnings give lots of warnings if using gcc],
if test "$enableval" = yes; then
warnings=yes;
else
warnings=no;
fi,
warnings=no)
AC_MSG_RESULT($warnings)
dnl If it appears we're using gcc as our compiler, turn on warnings
if test "$ac_cv_c_compiler_gnu" = yes; then
WARN_CFLAGS="-Wall -Wwrite-strings"
dnl And possibly lots of warnings
if test "$warnings" = yes; then
WARN_CFLAGS="$WARN_CFLAGS -Wstrict-prototypes -Winline -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Waggregate-return -W -Wsign-compare"
fi
fi
AC_SUBST(WARN_CFLAGS)
AC_CONFIG_FILES([
Makefile
data/win32/fuse.manifest
data/win32/installer.nsi
])
AC_OUTPUT
dnl Status summary
echo ""
echo "****************************"
echo "*** Libspectrum features ***"
echo "****************************"
echo ""
echo "Internal GLib replacement: ${fakeglib}"
echo "zlib support: ${LIBSPEC_HAVE_ZLIB:-no}"
echo "bzip2 support: ${LIBSPEC_HAVE_BZ2:-no}"
echo "audiofile support: ${LIBSPEC_HAVE_AUDIOFILE:-no}"
echo ""
echo "********************"
echo "*** Fuse options ***"
echo "********************"
echo ""
echo "User interface: ${UI}"
if test "${UI}" = "gtk"; then
echo "Using GTK+ 3: ${gtk3}"
fi
if test x"${gpm}" != "x"; then
echo "libgpm support: ${gpm}"
fi
echo "Joystick support: ${stick}"
if test "${stick}" = "yes"; then
echo "Using libjsw for joystick support: ${libjsw}"
fi
echo "zlib support: ${zlib}"
echo "libxml2 support: ${libxml2}"
echo "libpng support: ${libpng}"
echo "Audio driver: ${audio_driver}"
echo "Spectranet support: ${build_spectranet}"
echo "SpeccyBoot support: ${linux_tap:-no}"
echo "Desktop integration: ${desktopintegration}"
echo "Embedded Python support: ${python}"
echo ""
echo "Type 'make' to compile Fuse"
echo ""