dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.13) AC_INIT(source/sv_main.c) AC_REVISION($Revision$) dnl AM_CONFIG_HEADER(include/config.h) AC_CANONICAL_SYSTEM dnl This is the only place where the package version appears AM_INIT_AUTOMAKE(quakeforge, 0.2.99beta4) dnl Define the proper name and extra version numbers for package PROGRAM=QuakeForge QW_VERSION=2.40 QSG_VERSION=2.0 AC_DEFINE_UNQUOTED(PROGRAM, "$PROGRAM") AC_DEFINE_UNQUOTED(QW_VERSION, "$QW_VERSION") AC_DEFINE_UNQUOTED(QSG_VERSION, "$QSG_VERSION") AC_SUBST(PROGRAM) AC_SUBST(QW_VERSION) AC_SUBST(QSG_VERSION) ISODATE=`date +%Y-%m-%d` AC_SUBST(ISODATE) AC_LANG_C dnl ================================================================== dnl Checks for programs. dnl ================================================================== AC_PROG_AWK AC_PROG_CC AC_PROG_CPP AC_PROG_RANLIB AC_PROG_INSTALL AC_PROG_LN_S dnl ================================================================== dnl Checks for system services dnl ================================================================== AC_SYS_LONG_FILE_NAMES AC_EXEEXT AC_OBJEXT dnl ================================================================== dnl Checks for header files. dnl ================================================================== AC_HEADER_DIRENT AC_HEADER_STDC AC_HEADER_MAJOR AC_HEADER_SYS_WAIT AC_CHECK_HEADERS( stdarg.h unistd.h fcntl.h dlfcn.h windows.h sys/ioctl.h sys/mman.h \ sys/io.h asm/io.h \ sys/param.h sys/stat.h sys/time.h sys/timeb.h sys/types.h \ sys/socket.h netinet/in.h netdb.h arpa/inet.h sys/filio.h \ sys/soundcard.h linux/soundcard.h machine/soundcard.h sys/audioio.h \ dsound.h mmsystem.h initguid.h mme/mmsystem.h mme/mme_public.h \ sys/asoundlib.h string.h strings.h memory.h malloc.h \ errno.h sys/dir.h fnmatch.h \ mgraph.h linux/joystick.h ) dnl ================================================================== dnl Checks for typedefs, structures, and compiler characteristics dnl ================================================================== AC_C_CONST AC_C_INLINE AC_TYPE_SIZE_T AC_STRUCT_ST_BLKSIZE AC_HEADER_TIME AC_STRUCT_TM AC_C_BIGENDIAN AC_MSG_CHECKING(that fnmatch is in fnmatch.h) AC_TRY_COMPILE( [#include ], [int (*foo)() = fnmatch;], AC_DEFINE(HAVE_FNMATCH_PROTO) AC_MSG_RESULT(yes), AC_MSG_RESULT(no) ) AC_MSG_CHECKING(for socklen_t in sys/types.h) AC_TRY_COMPILE( [#include ], [ socklen_t x = 0;], AC_DEFINE(HAVE_SOCKLEN_T) AC_MSG_RESULT(yes), AC_MSG_RESULT(no) dnl FreeBSD 4.0 has it in sys/socket.h AC_MSG_CHECKING(for socklen_t in sys/socket.h) AC_TRY_COMPILE( [#include #include ], [ socklen_t x = 0;], AC_DEFINE(HAVE_SOCKLEN_T) AC_MSG_RESULT(yes), AC_MSG_RESULT(no) ) ) AC_MSG_CHECKING(for underscore prefix in names) AC_TRY_LINK( [asm(".long _bar"); int bar;], [], AC_DEFINE(HAVE_SYM_PREFIX_UNDERSCORE) AC_MSG_RESULT(yes), AC_MSG_RESULT(no) ) AC_MSG_CHECKING(for size_t in sys/types.h) AC_TRY_COMPILE( [#include ], [ size_t x = 0;], AC_DEFINE(HAVE_SIZE_T) AC_MSG_RESULT(yes), AC_MSG_RESULT(no) ) dnl maybe these two (at least the 2nd) should only be checked if ipv6 is enabled? AC_MSG_CHECKING(for ss_len in struct sockaddr_storage) AC_TRY_COMPILE( [#include #include ], [ void f(void) { struct sockaddr_storage ss; ss.ss_len=0; }], AC_DEFINE(HAVE_SS_LEN) AC_MSG_RESULT(yes), AC_MSG_RESULT(no) ) AC_MSG_CHECKING(for sin6_len in struct sockaddr_in6) AC_TRY_COMPILE( [#include #include ], [ void f(void) { struct sockaddr_in6 s6; s6.sin6_len=0; }], AC_DEFINE(HAVE_SIN6_LEN) AC_MSG_RESULT(yes), AC_MSG_RESULT(no) ) AC_MSG_CHECKING(for sa_len in struct sockaddr) AC_TRY_COMPILE( [#include #include ], [ void f(void) { struct sockaddr sa; sa.sa_len=0; }], AC_DEFINE(HAVE_SA_LEN) AC_MSG_RESULT(yes), AC_MSG_RESULT(no) ) dnl ================================================================== dnl Checks for library functions. dnl ================================================================== AC_FUNC_ALLOCA AC_FUNC_MEMCMP AC_FUNC_MMAP AC_TYPE_SIGNAL AC_FUNC_VPRINTF AC_CHECK_FUNCS( gethostname gethostbyname connect gettimeofday getwd mkdir \ ftime _ftime fcntl stat putenv select socket strerror strstr \ snprintf _snprintf vsnprintf _vsnprintf strsep dlopen getaddrinfo \ getnameinfo ) DL_LIBS="" if test "x$ac_cv_func_dlopen" != "xyes"; then AC_CHECK_LIB(dl, dlopen, AC_DEFINE(HAVE_DLOPEN) DL_LIBS="-ldl" ) fi AC_SUBST(DL_LIBS) dnl Checks for stricmp/strcasecmp AC_CHECK_FUNC(stricmp,, AC_CHECK_FUNC(strcasecmp, AC_DEFINE(stricmp,strcasecmp))) dnl Check for vsnprintf if test "x$ac_cv_func_vsnprintf" = "xno" -a \ "x$ac_cv_func__vsnprintf" = "xno"; then dnl libdb may have this AC_CHECK_LIB(db,vsnprintf) fi dnl Checks for working -lm AC_CHECK_LIB(m, pow,, AC_MSG_ERROR([math library (-lm) appears broken])) AC_ARG_ENABLE(zlib, [ --disable-zlib disable zlib support], ) if test "x$enable_zlib" != "xno"; then dnl Check for working -lz dnl Note - must have gztell *and* gzgets in -lz *and* zlib.h AC_CHECK_LIB(z, gztell, HAVE_ZLIB=yes, HAVE_ZLIB=no, [$LIBS]) if test "x$HAVE_ZLIB" = "xyes"; then AC_CHECK_LIB(z, gzgets, HAVE_ZLIB=yes, HAVE_ZLIB=no, [$LIBS]) if test "x$HAVE_ZLIB" = "xyes"; then AC_CHECK_HEADER(zlib.h, HAVE_ZLIB=yes, HAVE_ZLIB=no) if test "x$HAVE_ZLIB" = "xyes"; then Z_LIBS="-lz" AC_DEFINE(HAVE_ZLIB) fi fi fi fi dnl Checks for MGL support AC_ARG_WITH(mgl, [ --with-mgl[=DIR] use MGL found in DIR], HAVE_MGL=$withval, HAVE_MGL=auto) if test "x$HAVE_MGL" != xno; then if test "x$ac_cv_header_windows_h" != "xyes"; then HAVE_MGL=no else if test "x$HAVE_MGL" != xauto; then MGL_CFLAGS="$MGL_CFLAGS -I$withval/include" MGL_LIBS="$MGL_LIBS -L$withval/lib" fi save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $MGL_CFLAGS" AC_CHECK_HEADER(mgraph.h, HAVE_MGL=yes, HAVE_MGL=no) CPPFLAGS="$save_CPPFLAGS" dnl Make sure -lmgllt or -lmglfx works if test "x$HAVE_MGL" = xyes; then for lib in mglfx mgllt; do MGL_LIBS="$MGL_LIBS -lgdi32 -lwinmm -ldinput -lddraw" AC_CHECK_LIB($lib,MGL_registerDriver, MGL_LIBS="-l$lib $MGL_LIBS" HAVE_MGL=yes break, HAVE_MGL=no, [$MGL_LIBS]) done fi fi if test "x$HAVE_MGL" != xyes; then MGL_CFLAGS="" MGL_LIBS="" fi fi AC_SUBST(HAVE_MGL) AC_SUBST(MGL_CFLAGS) AC_SUBST(MGL_LIBS) dnl Checks for LibGGI support AC_ARG_WITH(ggi, [ --with-ggi[=DIR] use LibGGI found in DIR], HAVE_GGI=$withval, HAVE_GGI=auto) if test "x$HAVE_GGI" != xno; then if test "x$HAVE_GGI" != xauto; then GGI_CFLAGS="$GGI_CFLAGS= -I$withval/include" GGI_LIBS="$GGI_LIBS -L$withval/lib" dnl The default system location is /usr/include or /usr/local/include dnl and we (obviously) do not need to set CFLAGS for that fi save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $GGI_CFLAGS" AC_CHECK_HEADER(ggi/ggi.h, HAVE_GGI=yes, HAVE_GGI=no) CPPFLAGS="$save_CPPFLAGS" dnl Make sure -lggi works if test "x$HAVE_GGI" = xyes; then AC_CHECK_LIB(ggi, ggiEventsQueued, GGI_LIBS="$GGI_LIBS -lggi" HAVE_GGI=yes, HAVE_GGI=no, [$GGI_LIBS] ) fi if test "x$HAVE_GGI" != xyes; then GGI_CFLAGS="" GGI_LIBS="" fi fi AC_SUBST(HAVE_GGI) AC_SUBST(GGI_CFLAGS) AC_SUBST(GGI_LIBS) dnl Checks for SVGALib support AC_ARG_WITH(svga, [ --with-svga[=DIR] use SVGALib found in DIR], HAVE_SVGA=$withval, HAVE_SVGA=auto) if test "x$HAVE_SVGA" != xno; then if test "x$HAVE_SVGA" != xauto; then SVGA_CFLAGS="$SVGA_CFLAGS -I$withval/include" SVGA_LIBS="$SVGA_LIBS -L$withval/lib" dnl The default system location is /usr/include or /usr/local/include dnl and we (obviously) do not need to set CFLAGS for that fi save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $SVGA_CFLAGS" AC_CHECK_HEADER(vga.h, HAVE_SVGA=yes, HAVE_SVGA=no) CPPFLAGS="$save_CPPFLAGS" dnl Make sure -lvga works if test "x$HAVE_SVGA" = xyes; then AC_CHECK_LIB(vga, vga_getmousetype, SVGA_LIBS="$SVGA_LIBS -lvga" HAVE_SVGA=yes, HAVE_SVGA=no, [$SVGA_LIBS] ) fi if test "x$HAVE_SVGA" != xyes; then SVGA_CFLAGS="" SVGA_LIBS="" fi fi AC_SUBST(HAVE_SVGA) AC_SUBST(SVGA_CFLAGS) AC_SUBST(SVGA_LIBS) dnl Checks for X11 and XShm AC_PATH_XTRA if test "x$no_x" = x; then HAVE_X=yes AC_CHECK_LIB(Xext, XShmQueryExtension, X_SHM_LIB=-lXext, HAVE_X=no, [ $X_LIBS -lX11 $X_EXTRA_LIBS ] ) fi AC_SUBST(X_SHM_LIB) dnl Check for XFree86-VidMode support AC_ARG_ENABLE(vidmode, [ --enable-vidmode use XFree86 VidMode extension, if available], HAVE_VIDMODE=$enable_vidmode, HAVE_VIDMODE=auto) if test "x$HAVE_VIDMODE" != xno; then save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$X_CFLAGS $CPPFLAGS" AC_CHECK_HEADER(X11/extensions/xf86vmode.h, dnl Make sure the library works AC_CHECK_LIB(Xxf86vm, XF86VidModeSwitchToMode, AC_DEFINE(HAVE_VIDMODE) VIDMODE_LIBS="-lXxf86vm",, [$X_LIBS -lXext -lX11 $X_EXTRA_LIBS] ) ) CPPFLAGS="$save_CPPFLAGS" fi AC_SUBST(VIDMODE_LIBS) dnl Check for DGA support AC_ARG_ENABLE(dga, [ --enable-dga use XFree86 DGA extension, if available], HAVE_DGA=$enable_dga, HAVE_DGA=auto) if test "x$HAVE_DGA" != xno; then save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$X_CFLAGS $CPPFLAGS" AC_CHECK_HEADER(X11/extensions/xf86dga.h, dnl Make sure the library works AC_CHECK_LIB(Xxf86dga, XF86DGAQueryVersion, AC_DEFINE(HAVE_DGA) DGA_LIBS="-lXxf86dga",, [$X_LIBS -lXext -lX11 $X_EXTRA_LIBS] ) ) CPPFLAGS="$save_CPPFLAGS" fi AC_SUBST(DGA_LIBS) dnl Checks for GLIDE support AC_ARG_WITH(glide, [ --with-glide=DIR use the GLIDE 2.x SDK found in DIR], HAS_GLIDE=$withval, HAS_GLIDE=auto) if test "x$HAS_GLIDE" != xno; then if test "x$HAS_GLIDE" != xauto; then GLIDE_CFLAGS="$GLIDE_CFLAGS -I$withval/include" GLIDE_LIBS="$GLIDE_LIBS -L$withval/lib" else GLIDE_CFLAGS="$GLIDE_CFLAGS -I/usr/include/glide -I/usr/local/include/glide" fi save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $GLIDE_CFLAGS" AC_CHECK_HEADER(glide.h, HAS_GLIDE=yes, HAS_GLIDE=no) if test "x$HAS_GLIDE" != xyes; then HAS_GLIDE=no fi CPPFLAGS="$save_CPPFLAGS" fi dnl Checks for GLX support AC_ARG_WITH(glx, [ --with-glx[=DIR] use GLX with libraries found in DIR], glx_libraries=$withval, glx_libraries=auto ) AC_ARG_WITH(glx-includes, [ --with-glx-includes[=DIR] use GLX with header files found in DIR], glx_includes=$withval, glx_includes=auto ) if test "x$glx_includes" = xno; then glx_libraries="" fi if test "x$glx_librariesS" = xno; then glx_includes="" fi dnl Checks for GLX headers. lib[Mesa]GL should be either in a standard dnl include directory or the X include directory. Either way, we dnl use X_CFLAGS. if test "x$glx_includes" != xauto -a "x$glx_includes" != x; then save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -I$glx_includes" AC_CHECK_HEADER($glx_includes/GL/gl.h, HAVE_GLX=yes, HAVE_GLX=no ) CPPFLAGS="$save_CPPFLAGS" else save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $X_CFLAGS" AC_CHECK_HEADER(GL/gl.h, HAVE_GLX=yes, HAVE_GLX=no) CPPFLAGS="$save_CPPFLAGS" fi save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $X_CFLAGS" dnl Checks for OpenGL features in headers if test "x$HAVE_GLX" != xno; then AC_MSG_CHECKING(for GL_COLOR_INDEX8_EXT in GL/gl.h) AC_TRY_COMPILE([#include "GL/gl.h"], [ int x = (int) GL_COLOR_INDEX8_EXT;], AC_DEFINE(HAVE_GL_COLOR_INDEX8_EXT) AC_MSG_RESULT(yes), AC_MSG_RESULT(no) ) AC_CHECK_HEADERS(GL/glext.h) fi CPPFLAGS="$save_CPPFLAGS" dnl Make sure -lGL or -lMesaGL works if test "x$glx_libraries" != xauto -a "x$glx_libraries" != xno -a "x$glx_libraries" != x; then if test "x$HAVE_GLX" = xyes; then HAVE_GLX=no AC_CHECK_LIB(GL, glColor4f, HAVE_GLX=yes OGL_NAME=GL,, [ -L$glx_libraries ] ) if test "x$HAVE_GLX" != xyes; then AC_CHECK_LIB(MesaGL, glColor4f, HAVE_GLX=yes OGL_NAME=MesaGL,, [ -L$glx_libraries ] ) fi fi else if test "x$glx_libraries" != xauto \ -o "x$glx_libraries" != xno \ -o "x$glx_libraries" != x; then glx_libraries="" fi if test "x$HAVE_GLX" = xyes; then HAVE_GLX=no AC_CHECK_LIB(GL, glColor4f, HAVE_GLX=yes OGL_NAME=GL,, [ $X_LIBS ] ) if test "x$HAVE_GLX" != xyes; then AC_CHECK_LIB(MesaGL, glColor4f, HAVE_GLX=yes OGL_NAME=MesaGL,, [ $X_LIBS ] ) fi fi fi if test "x$HAVE_GLX" = xyes; then test "x$GLX_CFLAGS" != x && GLX_CFLAGS="-I$GLX_CFLAGS" test "x$glx_libraries" != x && GLX_LIBS="-L$glx_libraries" GLX_LIBS="$GLX_LIBS -l$OGL_NAME" AC_DEFINE(HAVE_GLX) else GLX_CFLAGS="" GLX_LIBS="" fi AC_SUBST(GLX_CFLAGS) AC_SUBST(GLX_LIBS) dnl SDL/SDL-GL checks AM_PATH_SDL(1.0.1, HAVE_SDL=yes, HAVE_SDL=no) if test "x$HAVE_SDL" != xno; then AM_CHECK_SGL(1.1.1, HAVE_SGL=yes, HAVE_SGL=no) fi AC_SUBST(HAVE_SDL) AC_SUBST(HAVE_SGL) # 3Dfx stuff.. # First we see if we can use mesa with glide support.. # if not then try the MiniGL.. TDFXGL_NAME="" AC_ARG_WITH(3dfx, [ --with-3dfx support 3Dfx output for the V1/V2, if a argument is specified it will be used as the GL wrapper lib for glide.], HAS_3dfx=$withval, HAS_3dfx=auto) if test "x$HAS_3dfx" != "xno" -a "x$HAS_SVGA" != "xno" \ -a "x$HAS_GLIDE" != "xno"; then if test "x$HAS_3dfx" != "xauto" -a "x$HAS_3dfx" != "xyes"; then TDFXGL_NAME="$HAS_3dfx" fi if test -z "$TDFXGL_NAME"; then dnl Check in reverse order of preference for a in 3dfxgl $OGL_NAME; do AC_CHECK_LIB($a, fxMesaCreateContext, TDFXGL_NAME=$a, qwfoo=qwfoo, [$GLIDE_LIBS $TDFXGL_LIBS]) done fi fi AC_MSG_CHECKING(for 3Dfx support) if test -n "$TDFXGL_NAME"; then TDFXGL_CFLAGS="$GLIDE_CFLAGS" TDFXGL_LIBS="$GLIDE_LIBS -l$TDFXGL_NAME" HAVE_TDFXGL="yes" AC_MSG_RESULT(yes (using $TDFXGL_NAME)) else TDFXGL_CFLAGS="" TDFXGL_NAME="" TDFXGL_LIBS="" AC_MSG_RESULT(no) fi AC_SUBST(TDFXGL_CFLAGS) AC_SUBST(TDFXGL_LIBS) if test "x$ac_cv_lib_pthread_pthread_exit" = "xyes"; then SND_LIBS="$SND_LIBS -lpthread" AC_DEFINE(HAVE_LIBPTHREAD) fi dnl ================================================================== dnl Checks for system type dnl ================================================================== dnl Checks for which system driver to use AC_MSG_CHECKING(for system driver) case "${host}" in i?86-*-mingw32*) SYSTYPE=WIN32 AC_MSG_RESULT([Win32 driver]) ;; *) SYSTYPE=POSIX AC_MSG_RESULT([default POSIX driver]) ;; esac AM_CONDITIONAL(SYSTYPE_WIN32, test "$SYSTYPE" = "WIN32") dnl Check for ia32 AC_MSG_CHECKING(for an ia32 machine) case "${host}" in i?86-*-*) AC_MSG_RESULT(yes) AC_MSG_CHECKING(to see if we should disable asm optimizations) AC_ARG_ENABLE(asmopt, [ --disable-asmopt disable assembler optimization], AC_MSG_RESULT(yes), AC_DEFINE(USE_INTEL_ASM) ASM_ARCH=yes AC_MSG_RESULT(no) ) ;; *) AC_MSG_RESULT(no) esac AM_CONDITIONAL(ASM_ARCH, test "$ASM_ARCH") dnl ================================================================== dnl Checks for sound dnl ================================================================== AC_CHECK_LIB(mme,waveOutOpen,HAVE_LIBMME=yes) AC_ARG_ENABLE(alsa, [ --disable-alsa disable alsa support], ) SNDTYPE="" SOUND_LIBS="" SOUND_CFLAGS="" AC_MSG_CHECKING(for sound support) if test "x$enable_alsa" != "xno"; then if test -z "$SNDTYPE" -a "x$ac_cv_header_sys_asoundlib_h" = "xyes"; then AC_EGREP_CPP([QF_maGiC_VALUE], [ #include #if defined(SND_LIB_MAJOR) && defined(SND_LIB_MINOR) #if SND_LIB_MAJOR>0 || (SND_LIB_MAJOR==0 && SND_LIB_MINOR==5) QF_maGiC_VALUE #endif #endif ], SNDTYPE="ALSA_0_5" SOUND_LIBS="-lasound", AC_EGREP_CPP([QF_maGiC_VALUE], [ #include #if defined(SND_LIB_MAJOR) && defined(SND_LIB_MINOR) #if SND_LIB_MAJOR>0 || (SND_LIB_MAJOR==0 && SND_LIB_MINOR>=6) QF_maGiC_VALUE #endif #endif ], SNDTYPE="ALSA_0_6" SOUND_LIBS="-lasound" ) ) fi fi dnl MME if test -z "$SNDTYPE" -a "x$ac_cv_header_mme_mmsystem_h" = "xyes" -a "x$HAVE_LIBMME" = "xyes"; then AC_EGREP_CPP([QF_maGiC_VALUE], [ #include #ifdef WAVE_OPEN_SHAREABLE QF_maGiC_VALUE #endif ], SNDTYPE="MME" SOUND_LIBS="-lmme" ) fi dnl OSS if test -z "$SNDTYPE" -a "x$ac_cv_header_sys_soundcard_h" = "xyes"; then AC_EGREP_CPP([QF_maGiC_VALUE],[ #include #ifdef SNDCTL_DSP_SETTRIGGER QF_maGiC_VALUE #endif ], SNDTYPE="OSS") fi if test -z "$SNDTYPE" -a "x$ac_cv_header_linux_soundcard_h" = "xyes"; then AC_EGREP_CPP([QF_maGiC_VALUE],[ #include #ifdef SNDCTL_DSP_SETTRIGGER QF_maGiC_VALUE #endif ], SNDTYPE="OSS") fi if test -z "$SNDTYPE" -a "x$ac_cv_header_machine_soundcard_h" = "xyes"; then AC_EGREP_CPP([QF_maGiC_VALUE],[ #include #ifdef SNDCTL_DSP_SETTRIGGER QF_maGiC_VALUE #endif ], SNDTYPE="OSS") fi dnl Sun if test -z "$SNDTYPE" -a "x$ac_cv_header_sys_audioio_h" = "xyes"; then AC_EGREP_CPP([QF_maGiC_VALUE],[ #include #ifdef AUDIO_SETINFO QF_maGiC_VALUE #endif ], SNDTYPE="SUN") fi dnl Win32 if test -z "$SNDTYPE" -a "x$ac_cv_header_windows_h" = "xyes" -a \ "x$ac_cv_header_mmsystem_h" = "xyes"; then AC_EGREP_CPP([QF_maGiC_VALUE],[ #include #include #ifdef GMEM_MOVEABLE #ifdef WAVE_FORMAT_PCM QF_maGiC_VALUE #endif #endif ], SNDTYPE="WIN32" SOUND_LIBS="-lwinmm") fi if test "$SNDTYPE"; then AC_MSG_RESULT([yes ($SNDTYPE)]) else AC_MSG_RESULT([no, using null sound driver]) fi AC_SUBST(SOUND_LIBS) AC_SUBST(SOUND_CFLAGS) AM_CONDITIONAL(SNDTYPE_ALSA_0_5, test "$SNDTYPE" = "ALSA_0_5") AM_CONDITIONAL(SNDTYPE_ALSA_0_6, test "$SNDTYPE" = "ALSA_0_6") AM_CONDITIONAL(SNDTYPE_MME, test "$SNDTYPE" = "MME") AM_CONDITIONAL(SNDTYPE_OSS, test "$SNDTYPE" = "OSS") AM_CONDITIONAL(SNDTYPE_SUN, test "$SNDTYPE" = "SUN") AM_CONDITIONAL(SNDTYPE_WIN32, test "$SNDTYPE" = "WIN32") AM_CONDITIONAL(SNDTYPE_NULL, test "$SNDTYPE" != "ALSA_0_5" -a "$SNDTYPE" != "ALSA_0_6" -a "$SNDTYPE" != "MME" -a "$SNDTYPE" != "OSS" -a "$SNDTYPE" != "SUN" -a "$SNDTYPE" != "WIN32") dnl Tests for joystick support AC_MSG_CHECKING(for joystick support) if test -z "$JOYTYPE" -a "x$ac_cv_header_linux_joystick_h" = "xyes"; then AC_EGREP_CPP([QF_maGiC_VALUE],[ #include #ifdef JS_VERSION QF_maGiC_VALUE #endif ], JOYTYPE="Linux") fi if test "$JOYTYPE"; then AC_MSG_RESULT([yes ($JOYTYPE)]) else AC_MSG_RESULT([no, using null joystick driver]) fi AC_SUBST(JOY_LIBS) AC_SUBST(JOY_CFLAGS) AM_CONDITIONAL(JOYTYPE_LINUX, test "$JOYTYPE" = "Linux") AM_CONDITIONAL(JOYTYPE_NULL, test "$JOYTYPE" != "Linux") dnl ================================================================== dnl Checks for CD-ROM dnl ================================================================== CD_LIBS="" CD_CFLAGS="" AC_MSG_CHECKING(for CD audio support) dnl Linux if test -z "$CDTYPE"; then AC_EGREP_CPP([QF_maGiC_VALUE], [ #include #ifdef CDROMREADTOCENTRY QF_maGiC_VALUE #endif ], AC_MSG_RESULT([yes (Linux)]) CDTYPE=LINUX ) fi if test -z "$CDTYPE"; then AC_EGREP_CPP([QF_maGIC_VALUE], [ #include #if defined(MCI_SET_DOOR_OPEN) QF_maGiC_VALUE #endif ], AC_MSG_RESULT([yes (Win32)]) CDTYPE=WIN32 ) fi test -z "$CDTYPE" && AC_MSG_RESULT([no, using null CD audio driver]) AC_SUBST(CD_LIBS) AC_SUBST(CD_CFLAGS) AM_CONDITIONAL(CDTYPE_LINUX, test "$CDTYPE" = "LINUX") AM_CONDITIONAL(CDTYPE_WIN32, test "$CDTYPE" = "WIN32") AM_CONDITIONAL(CDTYPE_NULL, test "$CDTYPE" != "LINUX" -a "$CDTYPE" != "WIN32") dnl ================================================================== dnl Checks for networking dnl ================================================================== if test "x$ac_cv_func_connect" != "xyes"; then AC_CHECK_LIB(socket,connect, NET_LIBS="$NET_LIBS -lsocket" ac_cv_func_connect=yes) fi if test "x$ac_cv_func_gethostbyname" != "xyes"; then AC_CHECK_LIB(nsl,gethostbyname, NET_LIBS="$NET_LIBS -lnsl" ac_cv_func_gethostbyname=yes) fi AC_MSG_CHECKING([for connect in -lwsock32]) SAVELIBS="$LIBS" LIBS="$LIBS -lwsock32" AC_TRY_LINK([ #include ],[ connect(0, NULL, 42); ], NET_LIBS="$NET_LIBS -lwsock32 -lwinmm" ac_cv_func_connect=yes ac_cv_func_gethostbyname=yes HAVE_WSOCK=yes AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) LIBS="$SAVELIBS" AC_MSG_CHECKING(for UDP support) if test "x$ac_cv_func_connect" = "xyes" -a \ "x$ac_cv_func_gethostbyname" = "xyes"; then HAVE_UDP=yes AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi if test "x$ac_cv_func_connect" != "xyes"; then AC_MSG_CHECKING([for connect in -lwsock32]) SAVELIBS="$LIBS" LIBS="$LIBS -lwsock32" AC_TRY_LINK([ #include ],[ connect(0, NULL, 42); ], NET_LIBS="$NET_LIBS -lwsock32 -lwinmm" AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) LIBS="$SAVELIBS" fi AC_SUBST(NET_LIBS) dnl ================================================================== dnl Misc checks dnl ================================================================== dnl Set $prefix and $exec_prefix to $ac_default_prefix if they are not set test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' AC_ARG_WITH(newstyle, [ --with-newstyle compile with defaults a bit different than those used by Id Software (does not affect gameplay)], newstyle=$withval, newstyle=auto ) AC_MSG_CHECKING([configuration style]) if test "x$newstyle" = xyes -o "x$newstyle" = "x"; then AC_MSG_RESULT([new style]) AC_DEFINE(NEWSTYLE) AC_DEFINE(BASEGAME, "base") default_globalconf="/etc/$PACKAGE.conf" eval foo="$datadir" default_sharepath="$foo/games/$PACKAGE" default_userpath="~/.$PACKAGE" else AC_MSG_RESULT([old style (id Software defaults)]) AC_DEFINE(BASEGAME, "id1") if test "x$SYSTYPE" = xWIN32; then default_globalconf="%WINDIR%/$PACKAGE.conf" else default_globalconf="/etc/$PACKAGE.conf" fi default_sharepath="." default_userpath="." fi AC_ARG_WITH(global-cfg, [ --with-global-cfg=FILE If set will change the name and location of the global config file used by QuakeForge. Defaults to /etc/quakeforge.conf.], globalconf="$withval", globalconf="auto") if test "x$globalconf" = "xauto" || test "x$globalconf" = "xyes" || \ test "x$globalconf" = "xno"; then dnl yes/no sanity checks globalconf="$default_globalconf" fi AC_DEFINE_UNQUOTED(FS_GLOBALCFG, "$globalconf") AC_ARG_WITH(sharepath, [ --with-sharepath=DIR Use DIR for shared game data, defaults to '.' or \${datadir}/games/quakeforge (if new style)], sharepath=$withval, sharepath="auto") if test "x$sharepath" = "xauto" -o "x$sharepath" = "xyes" -o "x$sharepath" = "x"; then sharepath="$default_sharepath" elif test "x$sharepath" = xno; then sharepath="." fi AC_DEFINE_UNQUOTED(FS_SHAREPATH, "$sharepath") AC_ARG_WITH(userpath, [ --with-userpath=DIR Use DIR for unshared game data, defaults to '.' or ~/.quakeforge (if new style)], userpath=$withval, userpath="auto") if test "x$userpath" = "xauto" -o "x$userpath" = "xyes" -o "x$userpath" = "x"; then userpath="$default_userpath" elif test "x$userpath" = xno; then userpath="." fi AC_DEFINE_UNQUOTED(FS_USERPATH, "$userpath") dnl CFLAGS for release and devel versions CFLAGS="" AC_ARG_ENABLE(debug, [ --enable-debug compile with debugging (for development)], debug=$enable_debug ) AC_MSG_CHECKING(for debugging) if test "x$debug" = xyes; then AC_MSG_RESULT(yes) BUILD_TYPE="$BUILD_TYPE Debug" CFLAGS="$CFLAGS -g" else AC_MSG_RESULT(no) fi AC_ARG_ENABLE(optimize, [ --disable-optimize compile without optimizations (for development)], optimize=$disable_optimize, optimize=yes ) AC_MSG_CHECKING(for optimization) if test "x$optimize" = xyes; then AC_MSG_RESULT(yes) BUILD_TYPE="$BUILD_TYPE Optimize" if test "x$GCC" = xyes; then CFLAGS="$CFLAGS -O6 -ffast-math -funroll-loops -fomit-frame-pointer -fexpensive-optimizations" AC_MSG_CHECKING(for special compiler settings) case "${host}" in i386-*-*) MORE_CFLAGS="-malign-loops=2 -malign-jumps=2 -malign-functions=2" ;; i486-*-*) MORE_CFLAGS="-m486 -malign-loops=2 -malign-jumps=2 -malign-functions=2" ;; i586-*-*) MORE_CFLAGS="-march=pentium -malign-loops=2 -malign-jumps=2 -malign-functions=2" ;; i686-*-*) MORE_CFLAGS="-march=pentiumpro -malign-loops=2 -malign-jumps=2 -malign-functions=2" ;; *) MORE_CFLAGS="" ;; esac if test "x$MORE_CFLAGS" = x; then AC_MSG_RESULT(no) else AC_MSG_RESULT(yes) CFLAGS="$CFLAGS $MORE_CFLAGS" fi else CFLAGS=-O2 fi else AC_MSG_RESULT(no) CFLAGS="$CFLAGS -O" fi dnl CFLAGS for release and devel versions AC_ARG_ENABLE(profile, [ --enable-profile compile with profiling (for development)], profile=$enable_profile ) if test "x$profile" = xyes; then BUILD_TYPE="$BUILD_TYPE Profile" if test "x$GCC" = xyes; then CFLAGS="`echo $CFLAGS | sed -e 's/-fomit-frame-pointer//g'` -pg" LDFLAGS="$LDFLAGS -pg" else CFLAGS="$CFLAGS -p" fi fi if test "x$GCC" = xyes; then dnl Check for -pipe vs -save-temps. AC_MSG_CHECKING(for -pipe vs -save-temps) AC_ARG_ENABLE(save-temps, [ --enable-save-temps save temporay files], AC_MSG_RESULT(-save-temps); CFLAGS="$CFLAGS -save-temps"; BUILD_TYPE="$BUILD_TYPE Save-temps", AC_MSG_RESULT(-pipe); CFLAGS="$CFLAGS -pipe") fi dnl QuakeForge uses lots of BCPL-style (//) comments, which can cause problems dnl with many compilers that don't support the latest ISO standards. Well, dnl that is our cover story -- the reality is that we like them and don't want dnl to give them up. :) dnl Make the compiler swallow its pride... if test "x$GCC" != xyes; then AC_MSG_CHECKING(for how to deal with BCPL-style comments) case "${host}" in *-aix*) CFLAGS="$CFLAGS -qcpluscmt" AC_MSG_RESULT([-qcpluscmt]) ;; *-irix6*) CFLAGS="$CFLAGS -Xcpluscomm" AC_MSG_RESULT([-Xcpluscomm]) ;; *-solaris*) CFLAGS="$CFLAGS -xCC" AC_MSG_RESULT([-xCC]) ;; *) AC_MSG_RESULT(nothing needed or no switch known) ;; esac fi dnl We want warnings, lots of warnings... if test "x$GCC" = xyes; then CFLAGS="$CFLAGS -Wall -Werror" # CFLAGS="$CFLAGS -Wall -pedantic" fi dnl ================================================================== dnl Make sure we link against a working zlib dnl ================================================================== AC_MSG_CHECKING(for libz.a in X11) need_abs_libz=no for d in `echo $X_LIBS | sed -e 's/-L//'`; do if test -f $d/libz.a; then need_abs_libz=yes break fi done AC_MSG_RESULT($need_abs_libz) AC_ARG_WITH(libz, [ --with-libz= specify directories to search for zlib], zlib_paths="$withval", zlib_paths="") if test "x$need_abs_libz" = "xyes"; then AC_MSG_CHECKING(for location of libz.a or libz.so) zlib_location="unknown" for d in $zlib_paths /usr/local/lib /usr/lib; do for f in libz.so libz.a; do if test -f $d/$f; then zlib_location=$d/$f break fi done done AC_MSG_RESULT($zlib_location) if test "$zlib_location" = unknown; then echo need to specify zlib location with --with-zlib exit 1 fi Z_LIBS="$zlib_location" fi AC_SUBST(Z_LIBS) dnl ================================================================== dnl Find out what to build and finish dnl ================================================================== AC_ARG_WITH(clients, [ --with-clients= compile clients in ; mgl ggi sdl sgl svga x11 glx 3dfx], clients="$withval", clients="all") if test "$clients" = "all"; then ENABLE_MGL=yes ENABLE_GGI=yes ENABLE_SDL=yes ENABLE_SGL=yes ENABLE_SVGA=yes ENABLE_X11=yes ENABLE_GLX=yes ENABLE_3DFX=yes else ENABLE_MGL=no ENABLE_GGI=no ENABLE_SDL=no ENABLE_SGL=no ENABLE_SVGA=no ENABLE_X11=no ENABLE_GLX=no ENABLE_3DFX=no for client in $clients; do case "$client" in mgl) ENABLE_MGL=yes ;; ggi) ENABLE_GGI=yes ;; sdl) ENABLE_SDL=yes ;; sgl) ENABLE_SGL=yes ;; svga) ENABLE_SVGA=yes ;; x11) ENABLE_X11=yes ;; glx) ENABLE_GLX=yes ;; 3dfx) ENABLE_3DFX=yes ;; esac done fi AC_ARG_WITH(server, [ --with-server compile dedicated server], SV_TARGETS="$withval", SV_TARGETS=yes) CL_TARGETS="" TARGETS="" if test "x$HAVE_MGL" = xyes -a "x$ENABLE_MGL" = xyes; then TARGETS="$TARGETS qf-client-mgl\$(EXEEXT)" CL_TARGETS="$CL_TARGETS MGL" fi if test "x$HAVE_GGI" = xyes -a "x$ENABLE_GGI" = xyes; then TARGETS="$TARGETS qf-client-ggi\$(EXEEXT)" CL_TARGETS="$CL_TARGETS GGI" fi if test "x$HAVE_SDL" = xyes -a "x$ENABLE_SDL" = xyes; then TARGETS="$TARGETS qf-client-sdl\$(EXEEXT)" CL_TARGETS="$CL_TARGETS SDL" fi if test "x$HAVE_SVGA" = xyes -a "x$ENABLE_SVGA" = xyes; then TARGETS="$TARGETS qf-client-svga\$(EXEEXT)" CL_TARGETS="$CL_TARGETS SVGAlib" fi if test "x$HAVE_X" = xyes -a "x$ENABLE_X11" = xyes; then TARGETS="$TARGETS qf-client-x11\$(EXEEXT)" CL_TARGETS="$CL_TARGETS X11" fi if test "x$HAVE_X" = xyes; then if test "x$HAVE_GLX" = xyes -a "x$ENABLE_GLX" = xyes; then TARGETS="$TARGETS qf-client-glx\$(EXEEXT)" CL_TARGETS="$CL_TARGETS GLX" fi fi if test "x$HAVE_SGL" = xyes; then if test "x$HAVE_GLX" = xyes -a "x$ENABLE_SGL" = xyes; then TARGETS="$TARGETS qf-client-sgl\$(EXEEXT)" CL_TARGETS="$CL_TARGETS SDL-GL" fi fi if test "x$HAVE_TDFXGL" = xyes -a "x$ENABLE_3DFX" = xyes; then TARGETS="$TARGETS qf-client-3dfx\$(EXEEXT)" CL_TARGETS="$CL_TARGETS 3dfx" fi if test "x$SV_TARGETS" = xyes; then TARGETS="qf-server\$(EXEEXT) $TARGETS" fi AC_SUBST(TARGETS) dnl Output files AC_OUTPUT( RPM/quakeforge.spec RPM/build_rpm doc/Makefile doc/texinfo/Makefile doc/man/Makefile include/Makefile include/win32/version.h source/Makefile Makefile quakeforge.lsm, chmod +x RPM/build_rpm ) AC_MSG_RESULT([ QuakeForge has been configured successfully. Build type:$BUILD_TYPE Server support: $SV_TARGETS Client support:$CL_TARGETS System game data directory: $sharepath Per-user game data directory: $userpath Global configuration file: $globalconf Sound sytem: $SNDTYPE ])