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(src/main.c) AM_CONFIG_HEADER(config.h) dnl get the build and target hosts AC_CANONICAL_SYSTEM AC_DEFINE_UNQUOTED(BUILDHOST, "${target_cpu}-${target_os}", [Set to the canonical name of the target machine]) dnl set the program and version AM_INIT_AUTOMAKE(quake2, 0.1) AC_SUBST(PROGRAM) AC_SUBST(VERSION) dnl configure --enable-maintainer-mode gets some extra targets AM_MAINTAINER_MODE dnl ------------------- dnl Checks for programs dnl ------------------- AC_PROG_CC dnl libtool is evil AC_LIBTOOL_DLOPEN AC_LIBLTDL_CONVENIENCE AC_PROG_LIBTOOL AC_CONFIG_SUBDIRS(libltdl) AC_SUBST(INCLTDL) AC_SUBST(LIBLTDL) 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 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 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", HAVE_X=no, [$X_LIBS $XTRA_LIBS $X_EXTRA_LIBS] ), HAVE_X=no, [#include ] ) 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", HAVE_X=no, [$X_LIBS $XTRA_LIBS $X_EXTRA_LIBS] ), HAVE_X=no, [#include ] ) CPPFLAGS="$save_CPPFLAGS" fi if test "x$HAVE_X" != xyes; then XTRA_LIBS="" fi fi AC_SUBST(HAVE_X) AC_SUBST(XTRA_LIBS) dnl Check for OpenGL AC_ARG_WITH(gl, [ --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, HAVE_OPENGL=no, [$OPENGL_LIBS] ) 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 ----------------------- #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 #ifdef AFMT_S16_NE QF_maGiC_VALUE #endif ], HAVE_AFMT_S16_NE=yes AC_MSG_RESULT(yes) , AC_MSG_RESULT(no) ) fi AC_SUBST(HAVE_AFMT_S16_NE) dnl ----------------------------- dnl Checks for library functions. dnl ----------------------------- #AC_FUNC_ERROR_AT_LINE #AC_PROG_GCC_TRADITIONAL #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 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(optimisations disabled), AC_MSG_RESULT(optimisations enabled) 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-*-*) 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 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 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/games/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 Dump it out dnl ----------- AC_CONFIG_FILES([ Makefile src/Makefile src/baseq2/Makefile src/ctf/Makefile src/xatrix/Makefile src/rogue/Makefile ]) AC_OUTPUT VID_REFS=`echo $VID_REFS | sed -e 's/ref_//g' -e 's/\.la//g'` AC_MSG_RESULT([ Video refreshers: ${VID_REFS- none} ])