dnl configuure.in file for "partiview"
dnl == Process this file with autoconf to produce a configure script ==
dnl ---------------------------------------------------------------------------------

AC_MSG_CHECKING([partiview])

AC_INIT(partibrains.c)

AC_CONFIG_HEADER(config.h)

dnl -- checks for programs
dnl -- checks for libraries
dnl -- checks for header files
dnl -- checks for typedefs
dnl -- checks for structures
dnl -- checks for compiler characteristics
dnl -- checks for library functions
dnl -- checks for system services


AC_HEADER_STDC
AC_CHECK_FUNCS(strchr memcpy)

AC_PROG_CPP
AC_PROG_CC
AC_PROG_CXX
AC_PROG_INSTALL
AC_PROG_MAKE_SET
AC_PROG_RANLIB

AC_ARG_PROGRAM



AC_ARG_ENABLE(debug, [  --enable-debug          compile for debugging], ok=$enableval, ok=no)
if test "$ok" = "yes"; then
        CFLAGS="-g"
        LDFLAGS="-g"
        # should we define DEBUG too?
fi


AC_ARG_WITH(mesa, [  --with-mesa        force the use of Mesa instead of other graphics libs], with_mesa=$withval, with_mesa=maybe)

AC_ARG_WITH(cave, [  --enable-cave      compile for CAVE], with_cave=$enableval, with_cave=no)

dnl ---------------------------------------------------------------------
dnl             Check for basic X windows stuff
AC_PATH_X
AC_PATH_XTRA
CFLAGS="$CFLAGS $X_CFLAGS"
XLIBS="$X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS"
AC_SUBST(XLIBS)


dnl ---------------------------------------------------------------------
dnl             Check for FLTK
AC_ARG_WITH(fltk, [ --with-fltk=<d>    find FLTK in -I<d>/include/FL -L<d>/lib ], with_fltk=$withval, with_fltk=/usr/local)

if test -n "$with_fltk" -a -d "$with_fltk"; then
	# maybe should test both $with_fltk and the include directory therein??
	if test -f "$with_fltk/include/FL/Fl.H"; then
	   FLTK_INC=-I$with_fltk/include
 	elif test -f "$with_fltk/FL/Fl.H"; then
	   FLTK_INC=-I$with_fltk
	else
	   AC_MSG_ERROR("Could not find FL/Fl.H for the fltk library")
	fi
	FLTK_LIB="-L$with_fltk/lib -lfltk"
else
	# assume the compile does -L/usr/local/lib (they don't do all....)
	FLTK_INC=-I/usr/local/include
	FLTK_LIB=-lfltk
	AC_CHECK_LIB(fltk, fl_display,
                :, AC_MSG_ERROR([couldn't find fltk library]))
fi

AC_SUBST(FLTK_INC)
AC_SUBST(FLTK_LIB)

dnl ---------------------------------------------------------------------
dnl 3D Graphics Libraries (see also vis5d's configure.in)

GLLIBS=""

# First, look for OpenGL or Mesa:
if test "$with_mesa" != "yes"; then
        AC_CHECK_LIB(GL, glBegin,
            AC_CHECK_LIB(GLU, gluProject, GLLIBS="-lGLU -lGL",
                         :, -lGL $XLIBS), :, $XLIBS)
fi
if test -z "$GLLIBS" -a "$with_mesa" != "no"; then
        AC_CHECK_LIB(MesaGL, glBegin,
            AC_CHECK_LIB(MesaGLU, gluProject, GLLIBS="-lMesaGLU -lMesaGL",
                         :, -lMesaGL $XLIBS), :, $XLIBS)
fi
if test "$with_mesa" = "yes"; then
        AC_CHECK_LIB(GL, glBegin,
            AC_CHECK_LIB(GLU, gluProject, GLLIBS="-lGLU -lGL",
                         :, -lGL $XLIBS), :, $XLIBS)
fi
if test -n "$GLLIBS"; then
        AC_DEFINE(HAVE_OPENGL)
else
        echo "couldn't find OpenGL libraries!"
        if test "$with_mesa" = "yes"; then
                AC_MSG_ERROR([couldn't find Mesa library])
        fi
fi

# Next, look for SGI IrisGL:
if test -z "$GLLIBS"; then
        AC_CHECK_LIB(gl_s, bgnqstrip, ok=yes,ok=no, $XLIBS)
        if test "$ok" = "yes"; then
                AC_CHECK_LIB(fm, fminit, GLLIBS="-lfm -lgl_s",:,-lgl_s $XLIBS)
                if test -z "$GLLIBS"; then
                        AC_CHECK_LIB(fm_s, fminit, 
                                GLLIBS="-lfm_s -lgl_s",:,-lgl_s $XLIBS)
                fi
        fi
        if test -n "$GLLIBS"; then
                AC_DEFINE(HAVE_SGI_GL)
                OPT_UTILS="$OPT_UTILS listfonts"
        fi
fi
# Finally, look for PEX (crufty old 3d extensions for X):
# (do these even work in Vis5d anymore?)
if test -z "$GLLIBS"; then
        # first, check for possible include & lib directory locations:
        if test -d /usr/lib/PEX5/utilities; then
                CPPFLAGS="$CPPFLAGS -I/usr/lib/PEX5/utilities"
        elif test -d /opt/graphics/PEX5/include/X11R6; then
                CPPFLAGS="$CPPFLAGS -I/opt/graphics/PEX5/include/X11R6"
        fi
        if test -d /opt/graphics/PEX5/lib; then
                LDFLAGS="$LDFLAGS -L/opt/graphics/PEX5/lib"
        fi

        # now, check for the actual library:
        save_LDFLAGS="$LDFLAGS"; LDFLAGS="$LDFLAGS $X_LIBS"
        AC_CHECK_LIB(PEX5, PEXInitialize, GLLIBS="$X_LIBS -lPEX5", :, $XLIBS)
        LDFLAGS="$save_LDFLAGS"

        if test -n "$GLLIBS"; then
                # finally, look for the pexut.a library
                AC_MSG_CHECKING([for pexut.a library])
                if test -z "$PEXUT_LIB"; then
                        if test -r /usr/lib/PEX5/utilities/pexut.a; then
                                PEXUT_LIB="/usr/lib/PEX5/utilities/pexut.a"
                        elif test -r /var/opt/PEX5/pexut.a; then
                                PEXUT_LIB="/var/opt/PEX5/pexut.a"
                        fi
                fi
                AC_MSG_RESULT(${PEXUT_LIB-no})
                if test -z "$PEXUT_LIB"; then
                        AC_MSG_WARN([pexut.a is required when using PEX])
                        GLLIBS=""
                elif test -r "$PEXUT_LIB"; then
                        GLLIBS="$PEXUT_LIB $GLLIBS"
                else
                        # this could happen if the user specified a bogus
                        # PEXUT_LIB environment variable:
                        AC_MSG_ERROR($PEXUT_LIB is not readable)
                fi
        fi

        if test -n "$GLLIBS"; then
                AC_DEFINE(HAVE_PEX)
        fi
fi

if test -z "$GLLIBS"; then
        echo "****************************************************"
        echo "You need to install a 3D graphics library, preferably"
        echo "the free OpenGL replacement, Mesa.  You can download"
        echo "Mesa from the Mesa home page:"
        echo "              http://www.mesa3d.org/"
        echo "and install it by running:"
        echo "       ./configure && make && su -c 'make install'"
        echo "in the Mesa directory."

        if test -r /sbin/ldconfig; then
                echo "You may also need to run /sbin/ldconfig as root"
                echo "to update the system after installing Mesa."
                if test -r /etc/ld.so.conf; then
                if test -z "`grep /usr/local/lib /etc/ld.so.conf`"; then
                echo "(First, add '/usr/local/lib' to /etc/ld.so.conf if"
                echo "you installed Mesa under /usr/local, the default.)"
                fi
                fi
        fi
        echo "****************************************************"
dnl        AC_MSG_ERROR([couldn't find 3D graphics library])
fi
AC_SUBST(GLLIBS)

dnl -- Check for any particular functions in the GL libs:
save_LIBS="$LIBS"
LIBS="$GLLIBS $XLIBS $LIBS"
AC_CHECK_FUNCS(XMesaGetBackBuffer)
LIBS="$save_LIBS"
  

dnl AC_CHECK_FUNC(vprintf, AC_DEFINE(HAVE_VPRINTF))
dnl if test "$ac_cv_func_vprintf" != yes; then


dnl AC_CHECK_FUNC(_doprnt, AC_DEFINE(HAVE_DOPRNT))
dnl fi
dnl ---------------------------------------------------------------------


dnl Checks for libraries.

dnl Checks for header files.


AC_HEADER_DIRENT
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sgtty.h strings.h sys/file.h sys/ioctl.h sys/time.h unistd.h)

dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_TYPE_OFF_T
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM

dnl Checks for library functions.
AC_TYPE_GETGROUPS
AC_PROG_GCC_TRADITIONAL
AC_FUNC_MEMCMP
AC_FUNC_MMAP
AC_TYPE_SIGNAL
AC_FUNC_VFORK
AC_FUNC_VPRINTF
AC_CHECK_FUNCS(ftime gethostname gettimeofday getwd mkdir select strdup strtod strtol strtoul)

AC_C_BIGENDIAN


dnl -- starlab stuff

AC_ARG_WITH(kira, [  --with-kira   force the use of KIRA], with_kira=$withval, with_kira=maybe)

AC_SUBST(KIRA_INC)
AC_SUBST(KIRA_LIB)
AC_SUBST(PV_FLAGS)

AC_SUBST(CC)
AC_SUBST(CXX)

starlab_path="$with_kira"
if test "$with_kira" = "maybe" -o "$with_kira" = "yes"; then
   if test -d "$STARLAB_PATH"; then
      starlab_path="$STARLAB_PATH"
   else
      echo No STARLAB_PATH found, KIRA support not selected
   fi
fi

if test -n "$starlab_path" -a -d "$starlab_path"; then
      echo "Configuring with starlab=$starlab_path" 
      KIRA_INC=-I$starlab_path/src/node/dyn/tdyn
      KIRA_LIB="-L$starlab_path/lib -ltdyn -ldyn -lnode -lstd"
      PV_FLAGS="$PV_FLAGS -DUSE_KIRA"
	# darn, we can't check in non-standard PATH's???? - next line won't work
dnl      AC_CHECK_LIB(tdyn, open_parti,:, AC_MSG_ERROR([could not find StarLab's tdyn library]))
else
   echo NOTE: No Starlab selected
fi

dnl -- test for NEMO

if test "$NEMOBIN"; then
  echo Warning, NEMO present, NEMOBIN/cc will probably conflict
fi


AC_OUTPUT(Makefile)