m4_exit([1])
])
+dnl Tell the user about autoconf.html in the --help output
+m4_divert_once([HELP_END], [
+See docs/autoconf.html for more details on the options for Mesa.])
+
AC_INIT([Mesa],[mesa_version],
[https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
AC_CONFIG_AUX_DIR([bin])
dnl Versions for external dependencies
LIBDRM_REQUIRED=2.3.1
-DRI2PROTO_REQUIRED=1.1
+DRI2PROTO_REQUIRED=1.99.1
dnl Check for progs
AC_PROG_CPP
AC_PATH_PROG([MKDEP], [makedepend])
AC_PATH_PROG([SED], [sed])
+dnl We need a POSIX shell for parts of the build. Assume we have one
+dnl in most cases.
+case "$host_os" in
+solaris*)
+ # Solaris /bin/sh is too old/non-POSIX compliant
+ AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
+ SHELL="$POSIX_SHELL"
+ ;;
+esac
+
MKDEP_OPTIONS=-fdepend
dnl Ask gcc where it's keeping its secret headers
if test "x$GCC" = xyes; then
DEFINES=""
AC_SUBST([DEFINES])
case "$host_os" in
-linux*)
+*-gnu)
if test "x$GCC" = xyes; then
DEFINES="$DEFINES -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE"
fi
- DEFINES="$DEFINES -D_SVID_SOURCE -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN"
+ DEFINES="$DEFINES -D_SVID_SOURCE -D_GNU_SOURCE -DPTHREADS"
+ ;;
+solaris*)
+ DEFINES="$DEFINES -DPTHREADS -DSVR4"
;;
esac
case "$host_cpu" in
i?86)
case "$host_os" in
- linux* | freebsd* | dragonfly*)
+ linux* | *freebsd* | dragonfly*)
test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
;;
esac
;;
x86_64)
case "$host_os" in
- linux* | freebsd* | dragonfly*)
+ linux* | *freebsd* | dragonfly*)
test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
;;
esac
AC_CHECK_FUNC([dlopen], [],
[AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
+dnl See if posix_memalign is available
+AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
+
dnl SELinux awareness.
AC_ARG_ENABLE([selinux],
[AS_HELP_STRING([--enable-selinux],
DEFINES="$DEFINES -DMESA_SELINUX"
fi
+dnl OS-specific libraries
+OS_LIBS=""
+case "$host_os" in
+solaris*)
+ OS_LIBS="-lc"
+ if test "x$GXX" != xyes; then
+ OS_CPLUSPLUS_LIBS="-lCrun $OS_LIBS"
+ fi
+ ;;
+esac
dnl
dnl Driver configuration. Options are xlib, dri and osmesa right now.
i*86|x86_64|powerpc*) default_driver="dri";;
esac
;;
-freebsd* | dragonfly*)
+*freebsd* | dragonfly*)
case "$host_cpu" in
i*86|x86_64) default_driver="dri";;
esac
dnl
dnl Find out if X is available. The variable have_x is set if libX11 is
-dnl to mimic AC_PATH_XTRA.
+dnl found to mimic AC_PATH_XTRA.
dnl
if test -n "$PKG_CONFIG"; then
AC_MSG_CHECKING([pkg-config files for X11 are available])
AC_PATH_XTRA
fi
+dnl Try to tell the user that the --x-* options are only used when
+dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
+m4_divert_once([HELP_BEGIN],
+[These options are only used when the X libraries cannot be found by the
+pkg-config utility.])
+
dnl We need X for xlib and dri, so bomb now if it's not found
case "$mesa_driver" in
xlib|dri)
X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
fi
- GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
+ GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $OS_LIBS"
# if static, move the external libraries to the programs
# and empty the libraries for libGL
fi
# need DRM libs, -lpthread, etc.
- GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
+ GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS $OS_LIBS"
;;
osmesa)
# No libGL for osmesa
- GL_LIB_DEPS=""
+ GL_LIB_DEPS="$OS_LIBS"
;;
esac
AC_SUBST([GL_LIB_DEPS])
[enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
[driglx_direct="$enableval"],
[driglx_direct="yes"])
-dnl ttm support
-AC_ARG_ENABLE([ttm-api],
- [AS_HELP_STRING([--enable-ttm-api],
- [enable TTM API users @<:@default=disabled@:>@])],
- [ttmapi="$enableval"],
- [ttmapi="no"])
-
-if test "x$ttmapi" = "xyes"; then
- save_CFLAGS=$CFLAGS
- CFLAGS=$LIBDRM_CFLAGS
- AC_CHECK_HEADERS([xf86mm.h],[],[AC_MSG_ERROR([xf86mm.h required for TTM.])],[#include "stdint.h"\n#include "drm.h"])
- CFLAGS=$save_CFLAGS
-fi
-
dnl Which drivers to build - default is chosen by platform
AC_ARG_WITH([dri-drivers],
[AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
- [comma delimited DRI drivers, e.g. "i965,radeon,nouveau" @<:@default=auto@:>@])],
+ [comma delimited DRI drivers list, e.g.
+ "swrast,i965,radeon,nouveau" @<:@default=auto@:>@])],
[with_dri_drivers="$withval"],
[with_dri_drivers=yes])
if test "x$with_dri_drivers" = x; then
dnl platform checks
DRI_DIRS=""
case "$with_dri_drivers" in
-no|yes) ;;
+no) ;;
+yes)
+ DRI_DIRS="yes"
+ ;;
*)
# verify the requested driver directories exist
- dri_drivers=`IFS=,; echo $with_dri_drivers`
+ dri_drivers=`IFS=', '; echo $with_dri_drivers`
for driver in $dri_drivers; do
test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
fi
- if test "x$ttmapi" = xyes; then
- DEFINES="$DEFINES -DTTM_API"
- fi
-
if test "x$USING_EGL" = x1; then
PROGRAM_DIRS="egl"
fi
# converted to use the new interface. i810 are missing
# because there is no x86-64 system where they could *ever*
# be used.
- if test "x$DRI_DIRS" = x; then
+ if test "x$DRI_DIRS" = "xyes"; then
DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 radeon \
savage tdfx unichrome swrast"
fi
powerpc*)
# Build only the drivers for cards that exist on PowerPC.
# At some point MGA will be added, but not yet.
- if test "x$DRI_DIRS" = x; then
+ if test "x$DRI_DIRS" = "xyes"; then
DRI_DIRS="mach64 r128 r200 r300 radeon tdfx swrast"
fi
;;
+ sparc*)
+ # Build only the drivers for cards that exist on sparc`
+ if test "x$DRI_DIRS" = "xyes"; then
+ DRI_DIRS="mach64 r128 r200 r300 radeon ffb swrast"
+ fi
+ ;;
esac
;;
freebsd* | dragonfly*)
# ffb and gamma are missing because they have not been converted
# to use the new interface.
- if test "x$DRI_DIRS" = x; then
+ if test "x$DRI_DIRS" = "xyes"; then
DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon tdfx \
unichrome savage sis swrast"
fi
;;
+ solaris*)
+ DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
+ DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
+ if test "x$driglx_direct" = xyes; then
+ DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
+ fi
+ ;;
esac
# default drivers
- if test "x$DRI_DIRS" = x; then
+ if test "x$DRI_DIRS" = "xyes"; then
DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon s3v \
savage sis tdfx trident unichrome ffb swrast"
fi
case "$mesa_driver" in
osmesa)
- # only link librararies with osmesa if shared
+ # only link libraries with osmesa if shared
if test "$enable_static" = no; then
OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS"
else
*)
# Link OSMesa to libGL otherwise
OSMESA_LIB_DEPS=""
- # only link librararies with osmesa if shared
+ # only link libraries with osmesa if shared
if test "$enable_static" = no; then
OSMESA_MESA_DEPS='-l$(GL_LIB)'
else
fi
;;
esac
+if test "$enable_static" = no; then
+ OSMESA_LIB_DEPS="$OSMESA_LIB_DEPS $OS_LIBS"
+fi
AC_SUBST([OSMESA_LIB_DEPS])
AC_SUBST([OSMESA_MESA_DEPS])
;;
esac
fi
+if test "$enable_static" = no; then
+ GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
+fi
AC_SUBST([GLU_LIB_DEPS])
AC_SUBST([GLU_MESA_DEPS])
AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
enable_glw=no
fi
+AC_ARG_ENABLE([motif],
+ [AS_HELP_STRING([--enable-motif],
+ [use Motif widgets in GLw @<:@default=disabled@:>@])],
+ [enable_motif="$enableval"],
+ [enable_motif=no])
+
if test "x$enable_glw" = xyes; then
SRC_DIRS="$SRC_DIRS glw"
if test "$x11_pkgconfig" = yes; then
GLW_LIB_DEPS="$GLW_LIBS"
else
# should check these...
- GLW_LIB_DEPS="$X_LIBS -lX11 -lXt"
+ GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
+ fi
+
+ GLW_SOURCES="GLwDrawA.c"
+ MOTIF_CFLAGS=
+ if test "x$enable_motif" = xyes; then
+ GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
+ AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
+ if test "x$MOTIF_CONFIG" != xno; then
+ MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
+ MOTIF_LIBS=`$MOTIF_CONFIG --libs`
+ else
+ AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
+ [AC_MSG_ERROR([Can't locate Motif headers])])
+ AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
+ [AC_MSG_ERROR([Can't locate Motif Xm library])])
+ fi
+ # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
+ GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
fi
# If static, empty GLW_LIB_DEPS and add libs for programs to link
if test "$enable_static" = no; then
GLW_MESA_DEPS='-l$(GL_LIB)'
+ GLW_LIB_DEPS="$GLW_LIB_DEPS $OS_LIBS"
else
APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
GLW_LIB_DEPS=""
fi
AC_SUBST([GLW_LIB_DEPS])
AC_SUBST([GLW_MESA_DEPS])
+AC_SUBST([GLW_SOURCES])
+AC_SUBST([MOTIF_CFLAGS])
dnl
dnl GLUT configuration
# should check these...
GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
fi
- GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
+ GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm $OS_LIBS"
# If glut is available, we can build most programs
if test "$with_demos" = yes; then
dnl be pulled in by the linker
dnl
if test "x$APP_LIB_DEPS" = x; then
- APP_LIB_DEPS="-lm"
+ case "$host_os" in
+ solaris*)
+ APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
+ ;;
+ *)
+ APP_LIB_DEPS="-lm"
+ ;;
+ esac
fi
AC_SUBST([APP_LIB_DEPS])
AC_SUBST([PROGRAM_DIRS])
echo " prefix: $prefix"
echo " exec_prefix: $exec_prefix"
echo " libdir: $libdir"
+echo " includedir: $includedir"
dnl Driver info
echo ""
if test "$mesa_driver" = dri; then
# cleanup the drivers var
dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
+if test "x$DRI_DIRS" = x; then
+ echo " DRI drivers: no"
+else
echo " DRI drivers: $dri_dirs"
+fi
echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
- echo " TTM API support: $ttmapi"
fi
+echo " Use XCB: $enable_xcb"
dnl Libraries
echo ""
echo " Shared libs: $enable_shared"
echo " Static libs: $enable_static"
echo " GLU: $enable_glu"
-echo " GLw: $enable_glw"
+echo " GLw: $enable_glw (Motif: $enable_motif)"
echo " glut: $enable_glut"
dnl Programs