quake2forge/configure.in

587 lines
15 KiB
Text
Raw Normal View History

dnl $Id$
dnl Process this file with autoconf to produce a configure script.
dnl stick the revision info into the resulting configure script
AC_REVISION($Revision$) dnl
AC_PREREQ(2.50)
AC_INIT(quake2, 0.2.1, quake2-devel@lists.quakeforge.net)
AC_CONFIG_AUX_DIR(.)
AC_CONFIG_SRCDIR(src/main.c)
AM_CONFIG_HEADER(config.h)
dnl get the build and target hosts
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE([1.6 foreign])
dnl configure --enable-maintainer-mode gets some extra targets
AM_MAINTAINER_MODE
dnl set some macros
AC_DEFINE_UNQUOTED(BUILDHOST, "${target_cpu}-${target_os}",
[Set to the canonical name of the target machine])
AC_SUBST(PROGRAM)
AC_SUBST(VERSION)
dnl ----------------------------------
dnl Overall configuration success flag
dnl ----------------------------------
quake2_config_ok=yes
dnl -------------------
dnl Checks for programs
dnl -------------------
AC_PROG_CC
dnl libtool is evil
AC_PROG_LIBTOOL
HAVE_MASM=""
AC_SUBST(HAVE_MASM)
AS="$CC"
ASFLAGS="\$(DEFS) \$(CFLAGS) \$(CPPFLAGS) \$(DEFAULT_INCLUDES) \$(INCLUDES)"
CCAS="$AS"
CCASFLAGS="$ASFLAGS"
AC_SUBST(AS)
AC_SUBST(ASFLAGS)
AC_SUBST(CCAS)
AC_SUBST(CCASFLAGS)
dnl --------------------
dnl Checks for libraries
dnl --------------------
dnl Solaris networking libraries
AC_PATH_PROG(unamepath, uname)
if test "_$unamepath" = _; then
system="unknown"
else
AC_MSG_CHECKING(system type)
system=`$unamepath -s`
AC_MSG_RESULT($system)
if test "$system" = "SunOS"; then
SYSTEM_LIBS="$SYSTEM_LIBS -lsocket -lnsl"
else
SYSTEM_LIBS=""
fi
AC_SUBST(SYSTEM_LIBS)
fi
dnl Check for ossaudio on NetBSD
OSS_LIBS=""
AC_CHECK_LIB([ossaudio], [_oss_ioctl], [OSS_LIBS="-lossaudio"])
AC_SUBST(OSS_LIBS)
dnl Check for POSIX threads
ACX_PTHREAD(,AC_MSG_ERROR(["POSIX threads required!"]))
dnl Check for SVGAlib
AC_ARG_WITH(svgalib,
[ --with-svgalib=DIR use SVGAlib found in DIR ],
HAVE_SVGALIB=$withval, HAVE_SVGALIB=auto)
if test "x$HAVE_SVGALIB" != xno; then
if test "x$HAVE_SVGALIB" != xauto; then
SVGALIB_CFLAGS="$SVGALIB_CFLAGS -I$withval/include"
SVGALIB_LIBS="$SVGALIB_LIBS -L$withval/lib"
dnl The default system location is /usr/include or
dnl /usr/local/include and we don't need to set CFLAGS
dnl for that
fi
save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $SVGALIB_CFLAGS"
AC_CHECK_HEADER(vga.h, HAVE_SVGALIB=yes, HAVE_SVGALIB=no)
CPPFLAGS="$save_CPPFLAGS"
dnl make sure -lvga works
if test "x$HAVE_SVGALIB" = xyes; then
AC_CHECK_LIB(vga, vga_getmousetype,
SVGALIB_LIBS="$SVGALIB_LIBS -lvga"
HAVE_SVGALIB=yes,
HAVE_SVGALIB=no,
[$SVGALIB_LIBS]
)
fi
if test "x$HAVE_SVGALIB" != xyes; then
SVGALIB_CFLAGS="" SVGALIB_LIBS=""
fi
fi
AC_SUBST(HAVE_SVGALIB)
AC_SUBST(SVGALIB_CFLAGS)
AC_SUBST(SVGALIB_LIBS)
dnl Check for X11
AC_PATH_XTRA
if test "x$no_x" = x; then
HAVE_X=yes
HAVE_XF86_VIDMODE=yes
HAVE_XF86_DGA=yes
XTRA_LIBS="-lX11"
AC_CHECK_LIB(Xext, XShmQueryExtension,
XTRA_LIBS="$XTRA_LIBS -lXext",
HAVE_X=no,
[ $X_LIBS $XTRA_LIBS $X_EXTRA_LIBS ]
)
if test "x$HAVE_X" = xyes; then
save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
AC_CHECK_HEADER(X11/extensions/xf86vmode.h,
dnl Make sure the library works
AC_CHECK_LIB(Xxf86vm, XF86VidModeSwitchToMode,
XTRA_LIBS="$XTRA_LIBS -lXxf86vm"
AC_DEFINE(HAVE_XF86_VIDMODE, 1, [Define this if you have the xf86vmode extension and its Xxf86vm library.]),
HAVE_XF86_VIDMODE=no,
[$X_LIBS $XTRA_LIBS $X_EXTRA_LIBS]
),
HAVE_XF86_VIDMODE=no,
[#include <X11/Xlib.h>]
)
CPPFLAGS="$save_CPPFLAGS"
fi
if test "x$HAVE_X" = xyes; then
save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
AC_CHECK_HEADER(X11/extensions/xf86dga.h,
AC_CHECK_LIB(Xxf86dga, XF86DGAQueryVersion,
XTRA_LIBS="$XTRA_LIBS -lXxf86dga"
AC_DEFINE(HAVE_XF86_DGA, 1, [Define this if you have the xf86dga extension and its Xxf86dga library.]),
HAVE_XF86_DGA=no,
[$X_LIBS $XTRA_LIBS $X_EXTRA_LIBS]
),
HAVE_XF86_DGA=no,
[#include <X11/Xlib.h>]
)
CPPFLAGS="$save_CPPFLAGS"
fi
if test "x$HAVE_X" != xyes; then
XTRA_LIBS=""
fi
fi
AC_SUBST(HAVE_X)
AC_SUBST(HAVE_XF86_VIDMODE)
AC_SUBST(HAVE_XF86_DGA)
AC_SUBST(XTRA_LIBS)
dnl Check for OpenGL
AC_ARG_WITH(opengl,
[ --with-opengl=DIR use OpenGL in DIR ],
HAVE_OPENGL=$withval,
HAVE_OPENGL=auto)
if test "x$HAVE_OPENGL" != xno; then
if test "x$HAVE_OPENGL" != xauto; then
OPENGL_CFLAGS="$OPENGL_CFLAGS -I$withval/include"
OPENGL_LIBS="$OPENGL_LIBS -L$withval/lib"
fi
save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $OPENGL_CFLAGS"
AC_CHECK_HEADER(GL/gl.h, HAVE_OPENGL=yes, HAVE_OPENGL=no)
CPPFLAGS="$save_CPPFLAGS"
if test "x$HAVE_OPENGL" = xyes; then
AC_CHECK_LIB(GL, glBegin,
OPENGL_LIBS="$OPENGL_LIBS -lGL"
HAVE_OPENGL=yes,
2002-10-14 21:36:35 +00:00
dnl add -lX11 and -lXext if the first test failed
dnl (for, e.g. FreeBSD)
unset ac_cv_lib_GL_glBegin
AC_CHECK_LIB(GL, glBegin,
OPENGL_LIBS="$OPENGL_LIBS -lX11 -lXext"
HAVE_OPENGL=yes,
HAVE_OPENGL=no,
[$OPENGL_LIBS -lX11 -lXext]
),
[$OPENGL_LIBS]
)
fi
if test "x$HAVE_OPENGL" = xyes; then
AC_CHECK_HEADER(GL/glext.h, HAVE_OPENGL_GLEXT=yes
AC_DEFINE(HAVE_OPENGL_GLEXT, 1, [Define this if you have GL/glext.h]),
HAVE_OPENGL_GLEXT=no,
[#include <GL/gl.h>])
fi
if test "x$HAVE_OPENGL" != xyes; then
OPENGL_CFLAGS=""
OPENGL_LIBS=""
fi
fi
AC_SUBST(HAVE_OPENGL)
AC_SUBST(OPENGL_LIBS)
AC_SUBST(OPENGL_CFLAGS)
dnl Check for SDL
AC_ARG_ENABLE(sdl,
[ --disable-sdl disable checking for SDL ],
)
if test "x$enable_sdl" != xno; then
AM_PATH_SDL(1.2.0,
HAVE_SDL=yes,
HAVE_SDL=no)
AC_SUBST(HAVE_SDL)
fi
#AC_CHECK_LIB(GL, glBegin)
# FIXME: Replace `main' with a function in `-lX11':
#AC_CHECK_LIB(X11, [main])
# FIXME: Replace `main' with a function in `-lXext':
#AC_CHECK_LIB([Xext], [main])
# FIXME: Replace `main' with a function in `-lXxf86dga':
#AC_CHECK_LIB([Xxf86dga], [main])
# FIXME: Replace `main' with a function in `-lXxf86vm':
#AC_CHECK_LIB([Xxf86vm], [main])
dnl -----------------------
dnl Checks for header files
dnl -----------------------
2002-04-10 01:41:52 +00:00
#AC_PATH_X
#AC_HEADER_DIRENT
#AC_HEADER_STDC
dnl AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS([ sys/soundcard.h ])
dnl -------------------------------------------------------------
dnl Checks for typedefs, structures, and compiler characteristics
dnl -------------------------------------------------------------
AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM
AC_TYPE_UID_T
AC_TYPE_VA_LIST
AC_MSG_CHECKING(for underscore prefix in names)
AC_TRY_LINK(
[asm(".long _bar");
int bar;],
[],
AC_DEFINE(HAVE_SYM_PREFIX_UNDERSCORE, 1, [Define this if C symbols are prefixed with an underscore]) AC_MSG_RESULT(yes),
AC_MSG_RESULT(no)
)
if test "x$ac_cv_header_sys_soundcard_h" = "xyes"; then
AC_MSG_CHECKING(for AFMT_S16_NE in sys/soundcard.h)
AC_EGREP_CPP([QF_maGiC_VALUE],
[ #include <sys/soundcard.h>
#ifdef AFMT_S16_NE
QF_maGiC_VALUE
#endif ],
HAVE_AFMT_S16_NE=yes
AC_MSG_RESULT(yes)
,
AC_MSG_RESULT(no)
)
else if test "x$ac_cv_header_soundcard_h" = "xyes"; then
AC_MSG_CHECKING(for AFMT_S16_NE in soundcard.h)
AC_EGREP_CPP([QF_maGiC_VALUE],
[ #include <soundcard.h>
#ifdef AFMT_S16_NE
QF_maGiC_VALUE
#endif ],
HAVE_AFMT_S16_NE=yes
AC_MSG_RESULT(yes)
,
AC_MSG_RESULT(no)
)
fi
fi
AC_SUBST(HAVE_AFMT_S16_NE)
dnl -----------------------------
dnl Checks for library functions.
dnl -----------------------------
#AC_FUNC_ERROR_AT_LINE
#AC_PROG_GCC_TRADITIONAL
2002-04-10 01:41:52 +00:00
#AC_FUNC_MALLOC
#AC_FUNC_MEMCMP
#AC_FUNC_MMAP
#AC_TYPE_SIGNAL
#AC_FUNC_STAT
#AC_FUNC_VPRINTF
#AC_CHECK_FUNCS([bzero floor getcwd gethostbyname getmntent getpagesize gettimeofday memmove memset mkdir munmap pow putenv select socket sqrt strcasecmp strchr strdup strerror strrchr strstr])
AC_FUNC_VA_COPY
AC_FUNC__VA_COPY
dnl Check for dynamic loader -- needed for the GL refreshers
AC_CHECK_FUNCS(dlopen)
DL_LIBS=""
if test "x$ac_cv_func_dlopen" != "xyes"; then
AC_CHECK_LIB(dl,
dlopen,
AC_DEFINE(HAVE_DLOPEN, 1, [Define if you have the dlopen function.]) DL_LIBS="-ldl"
)
fi
AC_SUBST(DL_LIBS)
#SDL_FLAGS=`sdl-config --libs`
#AC_SUBST(SDL_FLAGS)
dnl --------------------
dnl Input device support
dnl --------------------
AC_MSG_CHECKING(whether to enable joystick support)
AC_ARG_ENABLE(joystick,
[ --disable-joystick disable joystick support ],
AC_MSG_RESULT(no),
AC_MSG_RESULT(yes)
HAVE_JOYSTICK=yes
)
if test "x$HAVE_JOYSTICK" = "xyes";then
AC_CHECK_HEADER(linux/joystick.h, HAVE_JOYSTICK=yes
AC_DEFINE(HAVE_JOYSTICK, 1, [Define this if you want joystick support to be built])
, HAVE_JOYSTICK=no)
fi
dnl -------------------------
dnl Optimising compiler flags
dnl -------------------------
OPT_CFLAGS=""
USE_OPT=""
AC_MSG_CHECKING(whether to allow compiler optimisations)
AC_ARG_ENABLE(opt,
[ --disable-opt disable compiler optimisations ],
AC_MSG_RESULT(no),
AC_MSG_RESULT(yes)
USE_OPT="yes"
OPT_CFLAGS="$OPT_CFLAGS -O2 -ffast-math -funroll-loops -fomit-frame-pointer -fexpensive-optimizations"
)
if test "x$USE_OPT" = "xyes"; then
case "${host}" in
i?86-*-*)
2002-07-18 19:33:01 +00:00
AC_MSG_CHECKING(whether -falign-functions works)
save_CFLAGS="$CFLAGS"
CFLAGS="-falign-functions"
AC_TRY_COMPILE(
[],
[],
OPT_CFLAGS="$OPT_CFLAGS -falign-loops=2 -falign-jumps=2 -falign-functions=2"
AC_MSG_RESULT(yes),
OPT_CFLAGS="$OPT_CFLAGS -malign-loops=2 -malign-jumps=2 -malign-functions=2"
AC_MSG_RESULT(no),
)
CFLAGS="$save_CFLAGS"
;;
*)
;;
esac
fi
AC_SUBST(OPT_CFLAGS)
dnl -----------------
dnl Compiler warnings
dnl -----------------
WARN_CFLAGS=""
dnl USE_WARN=""
AC_MSG_CHECKING(whether to enable compiler warnings)
AC_ARG_ENABLE(warn,
[ --disable-warn disable compiler warnings ],
AC_MSG_RESULT(no),
AC_MSG_RESULT(yes)
dnl USE_WARN="yes"
WARN_CFLAGS="$WARN_CFLAGS -Wall -Werror"
)
AC_SUBST(WARN_CFLAGS)
dnl -------------------
dnl Checks for asm junk
dnl -------------------
AC_MSG_CHECKING(if assembler can be used)
case "${host}" in
i?86-*-*)
AC_MSG_RESULT(yes)
AC_MSG_CHECKING(if asm is disabled)
AC_ARG_ENABLE(asm,
[ --disable-asm disable assembler optimisation ],
AC_MSG_RESULT(asm disabled),
AC_DEFINE(USE_ASM, 1, [Define this if you want to use assembler optimised code])
ASM_ARCH=yes
AC_MSG_RESULT(asm enabled)
)
;;
*)
AC_MSG_RESULT(no)
;;
esac
AM_CONDITIONAL(ASM_ARCH, test "$ASM_ARCH" = "yes")
dnl -------------------
dnl Checks for SDL-only platforms
dnl -------------------
AC_MSG_CHECKING(if SDL sound can be used instead of native drivers)
case "${host}" in
*-sun-solaris*)
AC_MSG_RESULT(yes)
AC_MSG_WARN(Defaulting to SDL sound under Solaris due to temporary lack of native support.)
BUILD_SDLQUAKE2=yes
AC_DEFINE(BUILD_SDLQUAKE2, 1, [Define this if you want SDL sound instead of native drivers])
;;
i?86-*-*)
AC_MSG_RESULT(yes)
AC_MSG_CHECKING(if SDL sound will be used)
AC_ARG_ENABLE(sdlsound,
[ --enable-sdlsound enable SDL sound instead of native drivers ],
AC_MSG_RESULT(yes)
AC_DEFINE(BUILD_SDLQUAKE2, 1, [Define this if you want SDL sound instead of native drivers])
BUILD_SDLQUAKE2=yes,
AC_MSG_RESULT(no)
)
;;
*)
AC_MSG_RESULT(no)
;;
esac
AM_CONDITIONAL(BUILD_SDLQUAKE2, test "x$BUILD_SDLQUAKE2" = "xyes")
dnl ---------------------------------------------------
dnl Check if the xatrix and rogue sources are available
dnl ---------------------------------------------------
AC_MSG_CHECKING(if Xatrix missionpack source is available)
if test -f src/xatrix/g_main.c; then
AC_MSG_RESULT(yes)
DO_XATRIX=yes
else
AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING(if Rogue missionpack source is available)
if test -f src/rogue/g_main.c; then
AC_MSG_RESULT(yes)
DO_ROGUE=yes
else
AC_MSG_RESULT(no)
fi
AM_CONDITIONAL(DO_XATRIX, test "$DO_XATRIX" = "yes")
AM_CONDITIONAL(DO_ROGUE, test "$DO_ROGUE" = "yes")
dnl ----------------------
dnl Fill in path variables
dnl ----------------------
dnl $libdir usually gets set to ${exec_prefix}/lib,
dnl $prefix and $exec_prefix is likely to be "NONE"
dnl Autoconf usually sets pkglibdir correctly in the Makefile, but not in
dnl the configure script :(
test "$prefix" = "NONE" && prefix=/usr/local
test "$exec_prefix" = "NONE" && exec_prefix=$prefix
eval PKGLIBDIR="$libdir/$PACKAGE"
AC_DEFINE_UNQUOTED(PKGLIBDIR, "$PKGLIBDIR", [Define this to the path containing the dynamic modules (\${exec-prefix}/lib/quake2/)])
eval PKGDATADIR="$datadir/$PACKAGE"
AC_DEFINE_UNQUOTED(PKGDATADIR, "$PKGDATADIR", [Define this to the path containing the game data (\${prefix}/share/quake2/)])
dnl ---------------------------------
dnl Work out what refreshers to build
dnl ---------------------------------
VID_REFS=""
if test "x$HAVE_SVGALIB" = xyes; then
VID_REFS="$VID_REFS ref_soft.la"
BUILD_SOFT="yes"
fi
if test "x$HAVE_X" = xyes; then
VID_REFS="$VID_REFS ref_softx.la"
BUILD_SOFTX="yes"
fi
if test "x$HAVE_SDL" = xyes; then
VID_REFS="$VID_REFS ref_softsdl.la"
BUILD_SOFTSDL="yes"
fi
if test "x$HAVE_X" = xyes -a "x$HAVE_OPENGL" = xyes; then
VID_REFS="$VID_REFS ref_glx.la"
BUILD_GLX="yes"
fi
if test "x$HAVE_X" = xyes -a "x$HAVE_OPENGL" = xyes -a "x$HAVE_SVGALIB" = xyes; then
VID_REFS="$VID_REFS ref_tdfx.la"
BUILD_TDFX="yes"
fi
if test "x$HAVE_X" = xyes -a "x$HAVE_OPENGL" = xyes -a "x$HAVE_SDL" = xyes; then
VID_REFS="$VID_REFS ref_sdlgl.la"
BUILD_SDLGL="yes"
fi
AM_CONDITIONAL(BUILD_SOFT, test "x$BUILD_SOFT" = xyes)
AM_CONDITIONAL(BUILD_SOFTX, test "x$BUILD_SOFTX" = xyes)
AM_CONDITIONAL(BUILD_SOFTSDL, test "x$BUILD_SOFTSDL" = xyes)
AM_CONDITIONAL(BUILD_GLX, test "x$BUILD_GLX" = xyes)
AM_CONDITIONAL(BUILD_TDFX, test "x$BUILD_TDFX" = xyes)
AM_CONDITIONAL(BUILD_SDLGL, test "x$BUILD_SDLGL" = xyes)
AC_SUBST(VID_REFS)
dnl -----------------------------------------------------------
dnl Configuraton tests complete -- provide a summary of results
dnl -----------------------------------------------------------
if test $quake2_config_ok = no ; then
2003-02-11 05:16:08 +00:00
dnl AC_MSG_RESULT([
dnl Quake2Forge $VERSION: Automatic configuration FAILED.
dnl
dnl The file config.log has full details.
dnl
dnl The following required libraries are missing or misconfigured
dnl on your system:
dnl ])
if test "x$HAVE_OPENGL" != xyes
else
dnl Dump it out
AC_CONFIG_FILES([
Makefile
src/Makefile
src/baseq2/Makefile
src/ctf/Makefile
src/xatrix/Makefile
src/rogue/Makefile
data/Makefile
data/pixmaps/Makefile
data/baseq2/Makefile
quake2.spec
])
AC_OUTPUT
VID_REFS=`echo $VID_REFS | sed -e 's/ref_//g' -e 's/\.la//g'`
AC_MSG_RESULT([
Quake2Forge $VERSION: Automatic configuration OK.
Configuration summary:
Video refreshers: ${VID_REFS- none}
Platform: ${host}
Installation directories:
Program: ........... ${prefix}/bin
Audio/Video plugins: $PKGLIBDIR
Game data: ......... $PKGDATADIR
Type 'make' to compile Quake2Forge.
Type 'make install' to install Quake2Forge. Game data needs to be
installed in the game data directory shown above, before the game
can be played.
Happy fragging!
])
fi