X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=configure.ac;h=8412cdce7ff427947292d816aa1d77edc6d5b997;hb=49ba80dff335226a54dae60477b256384005b393;hp=a250f75ea5257edf29ff47196ca53b26be03ae79;hpb=d4510e53d8dd18ac397ca0d4df74d4de682e0a38;p=mesa.git diff --git a/configure.ac b/configure.ac index a250f75ea52..8412cdce7ff 100644 --- a/configure.ac +++ b/configure.ac @@ -12,14 +12,18 @@ m4_ifval(mesa_version,[],[ 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]) AC_CANONICAL_HOST dnl Versions for external dependencies -LIBDRM_REQUIRED=2.3.1 -DRI2PROTO_REQUIRED=1.1 +LIBDRM_REQUIRED=2.4.3 +DRI2PROTO_REQUIRED=1.99.3 dnl Check for progs AC_PROG_CPP @@ -29,21 +33,30 @@ AC_CHECK_PROGS([MAKE], [gmake make]) 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 - GCC_INCLUDES=`$CC -print-file-name=include` - if test "x$GCC_INCLUDES" != x; then - MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES" - fi + for dir in include include-fixed; do + GCC_INCLUDES=`$CC -print-file-name=$dir` + if test "x$GCC_INCLUDES" != x && \ + test "$GCC_INCLUDES" != "$dir" && \ + test -d "$GCC_INCLUDES"; then + MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES" + fi + done fi AC_SUBST([MKDEP_OPTIONS]) -dnl Check to see if dlopen is in default libraries (like Solaris, which -dnl has it in libc), or if libdl is needed to get it. -AC_CHECK_FUNC([dlopen], [], - [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])]) - dnl Make sure the pkg-config macros are defined m4_ifdef([PKG_PROG_PKG_CONFIG],[],[ m4_errprint([Error: Could not locate the pkg-config autoconf macros. @@ -74,11 +87,11 @@ dnl Compiler macros DEFINES="" AC_SUBST([DEFINES]) case "$host_os" in -linux*) -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" +linux*|*-gnu*) + DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS" + ;; +solaris*) + DEFINES="$DEFINES -DPTHREADS -DSVR4" ;; esac @@ -212,24 +225,156 @@ dnl dnl library names dnl if test "$enable_static" = yes; then - GL_LIB_NAME='lib$(GL_LIB).a' - GLU_LIB_NAME='lib$(GLU_LIB).a' - GLUT_LIB_NAME='lib$(GLUT_LIB).a' - GLW_LIB_NAME='lib$(GLW_LIB).a' - OSMESA_LIB_NAME='lib$(OSMESA_LIB).a' + LIB_EXTENSION='a' else - GL_LIB_NAME='lib$(GL_LIB).so' - GLU_LIB_NAME='lib$(GLU_LIB).so' - GLUT_LIB_NAME='lib$(GLUT_LIB).so' - GLW_LIB_NAME='lib$(GLW_LIB).so' - OSMESA_LIB_NAME='lib$(OSMESA_LIB).so' + case "$host_os" in + darwin* ) + LIB_EXTENSION='dylib' ;; + * ) + LIB_EXTENSION='so' ;; + esac fi + +GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION} +GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION} +GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION} +GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION} +OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION} + +GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*' +GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*' +GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*' +GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*' +OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*' + AC_SUBST([GL_LIB_NAME]) AC_SUBST([GLU_LIB_NAME]) AC_SUBST([GLUT_LIB_NAME]) AC_SUBST([GLW_LIB_NAME]) AC_SUBST([OSMESA_LIB_NAME]) +AC_SUBST([GL_LIB_GLOB]) +AC_SUBST([GLU_LIB_GLOB]) +AC_SUBST([GLUT_LIB_GLOB]) +AC_SUBST([GLW_LIB_GLOB]) +AC_SUBST([OSMESA_LIB_GLOB]) + +dnl +dnl Arch/platform-specific settings +dnl +AC_ARG_ENABLE([asm], + [AS_HELP_STRING([--disable-asm], + [disable assembly usage @<:@default=enabled on supported plaforms@:>@])], + [enable_asm="$enableval"], + [enable_asm=yes] +) +asm_arch="" +ASM_FLAGS="" +MESA_ASM_SOURCES="" +GLAPI_ASM_SOURCES="" +AC_MSG_CHECKING([whether to enable assembly]) +test "x$enable_asm" = xno && AC_MSG_RESULT([no]) +# disable if cross compiling on x86/x86_64 since we must run gen_matypes +if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then + case "$host_cpu" in + i?86 | x86_64) + enable_asm=no + AC_MSG_RESULT([no, cross compiling]) + ;; + esac +fi +# check for supported arches +if test "x$enable_asm" = xyes; then + case "$host_cpu" in + i?86) + case "$host_os" in + 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*) + test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64 + ;; + esac + ;; + powerpc) + case "$host_os" in + linux*) + asm_arch=ppc + ;; + esac + ;; + sparc*) + case "$host_os" in + linux*) + asm_arch=sparc + ;; + esac + ;; + esac + + case "$asm_arch" in + x86) + ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM" + MESA_ASM_SOURCES='$(X86_SOURCES)' + GLAPI_ASM_SOURCES='$(X86_API)' + AC_MSG_RESULT([yes, x86]) + ;; + x86_64) + ASM_FLAGS="-DUSE_X86_64_ASM" + MESA_ASM_SOURCES='$(X86-64_SOURCES)' + GLAPI_ASM_SOURCES='$(X86-64_API)' + AC_MSG_RESULT([yes, x86_64]) + ;; + ppc) + ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM" + MESA_ASM_SOURCES='$(PPC_SOURCES)' + AC_MSG_RESULT([yes, ppc]) + ;; + sparc) + ASM_FLAGS="-DUSE_SPARC_ASM" + MESA_ASM_SOURCES='$(SPARC_SOURCES)' + GLAPI_ASM_SOURCES='$(SPARC_API)' + AC_MSG_RESULT([yes, sparc]) + ;; + *) + AC_MSG_RESULT([no, platform not supported]) + ;; + esac +fi +AC_SUBST([ASM_FLAGS]) +AC_SUBST([MESA_ASM_SOURCES]) +AC_SUBST([GLAPI_ASM_SOURCES]) + +dnl PIC code macro +MESA_PIC_FLAGS + +dnl Check to see if dlopen is in default libraries (like Solaris, which +dnl has it in libc), or if libdl is needed to get it. +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], + [Build SELinux-aware Mesa @<:@default=disabled@:>@])], + [MESA_SELINUX="$enableval"], + [MESA_SELINUX=no]) +if test "x$enable_selinux" = "xyes"; then + AC_CHECK_HEADER([selinux/selinux.h],[], + [AC_MSG_ERROR([SELinux headers not found])]) + AC_CHECK_LIB([selinux],[is_selinux_enabled],[], + [AC_MSG_ERROR([SELinux library not found])]) + SELINUX_LIBS="-lselinux" + DEFINES="$DEFINES -DMESA_SELINUX" +fi + dnl dnl Driver configuration. Options are xlib, dri and osmesa right now. dnl More later: directfb, fbdev, ... @@ -239,12 +384,12 @@ default_driver="xlib" case "$host_os" in linux*) case "$host_cpu" in - i*86|x86_64|powerpc*) default_driver="dri";; + i*86|x86_64|powerpc*|sparc*) default_driver="dri";; esac ;; -freebsd* | dragonfly*) +*freebsd* | dragonfly*) case "$host_cpu" in - i*86|x86_64) default_driver="dri";; + i*86|x86_64|powerpc*|sparc*) default_driver="dri";; esac ;; esac @@ -266,17 +411,26 @@ esac dnl dnl Driver specific build directories dnl -SRC_DIRS="mesa" +SRC_DIRS="mesa egl glew" GLU_DIRS="sgi" WINDOW_SYSTEM="" +GALLIUM_DIRS="auxiliary drivers state_trackers" +GALLIUM_WINSYS_DIRS="" +GALLIUM_WINSYS_DRM_DIRS="" +GALLIUM_AUXILIARY_DIRS="draw translate cso_cache pipebuffer tgsi sct rtasm util indices" +GALLIUM_DRIVERS_DIRS="softpipe failover trace" +GALLIUM_STATE_TRACKERS_DIRS="" + case "$mesa_driver" in xlib) DRIVER_DIRS="x11" + GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib" ;; dri) SRC_DIRS="glx/x11 $SRC_DIRS" DRIVER_DIRS="dri" WINDOW_SYSTEM="dri" + GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS drm" ;; osmesa) DRIVER_DIRS="osmesa" @@ -286,6 +440,12 @@ AC_SUBST([SRC_DIRS]) AC_SUBST([GLU_DIRS]) AC_SUBST([DRIVER_DIRS]) AC_SUBST([WINDOW_SYSTEM]) +AC_SUBST([GALLIUM_DIRS]) +AC_SUBST([GALLIUM_WINSYS_DIRS]) +AC_SUBST([GALLIUM_WINSYS_DRM_DIRS]) +AC_SUBST([GALLIUM_DRIVERS_DIRS]) +AC_SUBST([GALLIUM_AUXILIARY_DIRS]) +AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS]) dnl dnl User supplied program configuration @@ -328,7 +488,7 @@ 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]) @@ -347,6 +507,12 @@ if test "$x11_pkgconfig" = no; then 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) @@ -368,21 +534,6 @@ else enable_xcb=no fi -# SELinux awareness. -AC_ARG_ENABLE([selinux], - [AS_HELP_STRING([--enable-selinux], - [Build SELinux-aware Mesa (default: disabled)])], - [MESA_SELINUX="$enableval"], - [MESA_SELINUX=no]) -if test "x$enable_selinux" = "xyes"; then - AC_CHECK_HEADER([selinux/selinux.h],[], - [AC_MSG_ERROR([SELinux headers not found])]) - AC_CHECK_LIB([selinux],[is_selinux_enabled],[], - [AC_MSG_ERROR([SELinux library not found])]) - SELINUX_LIBS="-lselinux" - DEFINES="$DEFINES -DMESA_SELINUX" -fi - dnl dnl libGL configuration per driver dnl @@ -390,14 +541,18 @@ case "$mesa_driver" in xlib) if test "$x11_pkgconfig" = yes; then PKG_CHECK_MODULES([XLIBGL], [x11 xext]) + GL_PC_REQ_PRIV="x11 xext" X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS" GL_LIB_DEPS="$XLIBGL_LIBS" else # should check these... X11_INCLUDES="$X11_INCLUDES $X_CFLAGS" GL_LIB_DEPS="$X_LIBS -lX11 -lXext" + GL_PC_LIB_PRIV="$GL_LIB_DEPS" + GL_PC_CFLAGS="$X11_INCLUDES" fi GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread" + GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread" # if static, move the external libraries to the programs # and empty the libraries for libGL @@ -415,6 +570,8 @@ dri) # Check for libdrm PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED]) PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED]) + GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED" + DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED" # find the DRI deps for libGL if test "$x11_pkgconfig" = yes; then @@ -425,16 +582,20 @@ dri) fi PKG_CHECK_MODULES([DRIGL], [$dri_modules]) + GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules" X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS" GL_LIB_DEPS="$DRIGL_LIBS" else # should check these... X11_INCLUDES="$X11_INCLUDES $X_CFLAGS" GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes" + GL_PC_LIB_PRIV="$GL_LIB_DEPS" + GL_PC_CFLAGS="$X11_INCLUDES" # XCB can only be used from pkg-config if test "$enable_xcb" = yes; then PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx]) + GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx" X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS" GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS" fi @@ -442,6 +603,7 @@ dri) # need DRM libs, -lpthread, etc. GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS" + GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS" ;; osmesa) # No libGL for osmesa @@ -449,6 +611,10 @@ osmesa) ;; esac AC_SUBST([GL_LIB_DEPS]) +AC_SUBST([GL_PC_REQ_PRIV]) +AC_SUBST([GL_PC_LIB_PRIV]) +AC_SUBST([GL_PC_CFLAGS]) +AC_SUBST([DRI_PC_REQ_PRIV]) dnl dnl More X11 setup @@ -478,11 +644,11 @@ AC_ARG_ENABLE([driglx-direct], [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])], [driglx_direct="$enableval"], [driglx_direct="yes"]) - 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 @@ -493,10 +659,13 @@ dnl If $with_dri_drivers is yes, directories will be added through 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]) @@ -524,10 +693,10 @@ if test "$mesa_driver" = dri; then case "$host_os" in linux*) DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" - DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS" if test "x$driglx_direct" = xyes; then DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" fi + DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS" case "$host_cpu" in x86_64) @@ -535,7 +704,7 @@ if test "$mesa_driver" = dri; then # 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 @@ -543,10 +712,16 @@ if test "$mesa_driver" = dri; then 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*) @@ -562,15 +737,22 @@ if test "$mesa_driver" = dri; then # 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 @@ -646,27 +828,48 @@ AC_SUBST([OSMESA_LIB]) 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 OSMESA_LIB_DEPS="" fi OSMESA_MESA_DEPS="" + OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS" ;; *) # 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 OSMESA_MESA_DEPS="" fi + OSMESA_PC_REQ="gl" ;; esac +if test "$enable_static" = no; then + OSMESA_LIB_DEPS="$OSMESA_LIB_DEPS" +fi +OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV" AC_SUBST([OSMESA_LIB_DEPS]) AC_SUBST([OSMESA_MESA_DEPS]) +AC_SUBST([OSMESA_PC_REQ]) +AC_SUBST([OSMESA_PC_LIB_PRIV]) + +dnl +dnl EGL configuration +dnl +if test "$x11_pkgconfig" = yes; then + PKG_CHECK_MODULES([EGL],[x11]) + EGL_LIB_DEPS="$EGL_LIBS" +else + # should check these... + EGL_LIB_DEPS="$X_LIBS -lX11" +fi +EGL_LIB_DEPS="$EGL_LIB_DEPS $DLOPEN_LIBS" +AC_SUBST([EGL_LIB_DEPS]) dnl dnl GLU configuration @@ -689,6 +892,7 @@ if test "x$enable_glu" = xyes; then # Link libGLU to libOSMesa instead of libGL GLU_LIB_DEPS="" + GLU_PC_REQ="osmesa" if test "$enable_static" = no; then GLU_MESA_DEPS='-l$(OSMESA_LIB)' else @@ -697,6 +901,8 @@ if test "x$enable_glu" = xyes; then ;; *) # If static, empty GLU_LIB_DEPS and add libs for programs to link + GLU_PC_REQ="gl" + GLU_PC_LIB_PRIV="-lm" if test "$enable_static" = no; then GLU_LIB_DEPS="-lm" GLU_MESA_DEPS='-l$(GL_LIB)' @@ -708,8 +914,16 @@ if test "x$enable_glu" = xyes; then ;; esac fi +if test "$enable_static" = no; then + GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS" +fi +GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS" AC_SUBST([GLU_LIB_DEPS]) AC_SUBST([GLU_MESA_DEPS]) +AC_SUBST([GLU_PC_REQ]) +AC_SUBST([GLU_PC_REQ_PRIV]) +AC_SUBST([GLU_PC_LIB_PRIV]) +AC_SUBST([GLU_PC_CFLAGS]) dnl dnl GLw configuration @@ -724,19 +938,50 @@ if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then 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 PKG_CHECK_MODULES([GLW],[x11 xt]) + GLW_PC_REQ_PRIV="x11 xt" GLW_LIB_DEPS="$GLW_LIBS" else # should check these... - GLW_LIB_DEPS="$X_LIBS -lX11 -lXt" + GLW_LIB_DEPS="$X_LIBS -lXt -lX11" + GLW_PC_LIB_PRIV="$GLW_LIB_DEPS" + GLW_PC_CFLAGS="$X11_INCLUDES" + 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" + GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV" + GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS" fi # If static, empty GLW_LIB_DEPS and add libs for programs to link + GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV" if test "$enable_static" = no; then GLW_MESA_DEPS='-l$(GL_LIB)' + GLW_LIB_DEPS="$GLW_LIB_DEPS" else APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS" GLW_LIB_DEPS="" @@ -745,6 +990,11 @@ if test "x$enable_glw" = xyes; then fi AC_SUBST([GLW_LIB_DEPS]) AC_SUBST([GLW_MESA_DEPS]) +AC_SUBST([GLW_SOURCES]) +AC_SUBST([MOTIF_CFLAGS]) +AC_SUBST([GLW_PC_REQ_PRIV]) +AC_SUBST([GLW_PC_LIB_PRIV]) +AC_SUBST([GLW_PC_CFLAGS]) dnl dnl GLUT configuration @@ -779,12 +1029,16 @@ if test "x$enable_glut" = xyes; then fi if test "$x11_pkgconfig" = yes; then PKG_CHECK_MODULES([GLUT],[x11 xmu xi]) + GLUT_PC_REQ_PRIV="x11 xmu xi" GLUT_LIB_DEPS="$GLUT_LIBS" else # should check these... GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi" + GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS" + GLUT_PC_CFLAGS="$X11_INCLUDES" fi GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm" + GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm" # If glut is available, we can build most programs if test "$with_demos" = yes; then @@ -803,6 +1057,9 @@ fi AC_SUBST([GLUT_LIB_DEPS]) AC_SUBST([GLUT_MESA_DEPS]) AC_SUBST([GLUT_CFLAGS]) +AC_SUBST([GLUT_PC_REQ_PRIV]) +AC_SUBST([GLUT_PC_LIB_PRIV]) +AC_SUBST([GLUT_PC_CFLAGS]) dnl dnl Program library dependencies @@ -810,90 +1067,111 @@ dnl Only libm is added here if necessary as the libraries should 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]) dnl -dnl Arch/platform-specific settings +dnl Gallium configuration dnl -AC_ARG_ENABLE([asm], - [AS_HELP_STRING([--disable-asm], - [disable assembly usage @<:@default=enabled on supported plaforms@:>@])], - [enable_asm="$enableval"], - [enable_asm=yes] -) -asm_arch="" -ASM_FLAGS="" -ASM_SOURCES="" -ASM_API="" -AC_MSG_CHECKING([whether to enable assembly]) -test "x$enable_asm" = xno && AC_MSG_RESULT([no]) -# disable if cross compiling on x86/x86_64 since we must run gen_matypes -if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then - case "$host_cpu" in - i?86 | x86_64) - enable_asm=no - AC_MSG_RESULT([no, cross compiling]) - ;; - esac +AC_ARG_ENABLE([gallium], + [AS_HELP_STRING([--disable-gallium], + [build gallium @<:@default=enabled@:>@])], + [enable_gallium="$enableval"], + [enable_gallium=yes]) +if test "x$enable_gallium" = xyes; then + SRC_DIRS="$SRC_DIRS gallium gallium/winsys" fi -# check for supported arches -if test "x$enable_asm" = xyes; then - case "$host_cpu" in - i?86) - case "$host_os" in - 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*) - test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64 - ;; - esac - ;; - powerpc) - case "$host_os" in - linux*) - asm_arch=ppc - ;; - esac - ;; - esac - case "$asm_arch" in - x86) - ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM" - ASM_SOURCES='$(X86_SOURCES)' - ASM_API='$(X86_API)' - AC_MSG_RESULT([yes, x86]) - ;; - x86_64) - ASM_FLAGS="-DUSE_X86_64_ASM" - ASM_SOURCES='$(X86-64_SOURCES)' - ASM_API='$(X86-64_API)' - AC_MSG_RESULT([yes, x86_64]) - ;; - ppc) - ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM" - ASM_SOURCES='$(PPC_SOURCES)' - AC_MSG_RESULT([yes, ppc]) +dnl +dnl Gallium state trackers configuration +dnl +AC_ARG_WITH([state-trackers], + [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@], + [comma delimited state_trackers list, e.g. + "egl,glx" @<:@default=auto@:>@])], + [with_state_trackers="$withval"], + [with_state_trackers=yes]) + +case "$with_state_trackers" in +no) + GALLIUM_STATE_TRACKERS_DIRS="" + ;; +yes) + # look at what else is built + case "$mesa_driver" in + xlib) + GALLIUM_STATE_TRACKERS_DIRS=glx ;; - *) - AC_MSG_RESULT([no, platform not supported]) + dri) + GALLIUM_STATE_TRACKERS_DIRS=egl ;; esac + ;; +*) + # verify the requested state tracker exist + state_trackers=`IFS=', '; echo $with_state_trackers` + for tracker in $state_trackers; do + test -d "$srcdir/src/gallium/state_trackers/$tracker" || \ + AC_MSG_ERROR([state tracker '$tracker' doesn't exist]) + done + GALLIUM_STATE_TRACKERS_DIRS="$state_trackers" + ;; +esac + +AC_ARG_WITH([xorg-driver-dir], + [AS_HELP_STRING([--with-xorg-driver-dir=DIR], + [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])], + [XORG_DRIVER_INSTALL_DIR="$withval"], + [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"]) +AC_SUBST([XORG_DRIVER_INSTALL_DIR]) + +dnl +dnl Gallium Intel configuration +dnl +AC_ARG_ENABLE([gallium-intel], + [AS_HELP_STRING([--disable-gallium-intel], + [build gallium intel @<:@default=enabled@:>@])], + [enable_gallium_intel="$enableval"], + [enable_gallium_intel=yes]) +if test "x$enable_gallium_intel" = xyes; then + GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel" + GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915simple" fi -AC_SUBST([ASM_FLAGS]) -AC_SUBST([ASM_SOURCES]) -AC_SUBST([ASM_API]) -dnl PIC code macro -MESA_PIC_FLAGS +dnl +dnl Gallium Radeon configuration +dnl +AC_ARG_ENABLE([gallium-radeon], + [AS_HELP_STRING([--enable-gallium-radeon], + [build gallium radeon @<:@default=disabled@:>@])], + [enable_gallium_radeon="$enableval"], + [enable_gallium_radeon=no]) +if test "x$enable_gallium_radeon" = xyes; then + GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon" + GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300" +fi + +dnl +dnl Gallium Radeon configuration +dnl +AC_ARG_ENABLE([gallium-nouveau], + [AS_HELP_STRING([--enable-gallium-nouveau], + [build gallium nouveau @<:@default=disabled@:>@])], + [enable_gallium_nouveau="$enableval"], + [enable_gallium_nouveau=no]) +if test "x$enable_gallium_nouveau" = xyes; then + GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau" + GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nv04 nv10 nv20 nv30 nv40 nv50" +fi dnl Restore LDFLAGS and CPPFLAGS @@ -920,6 +1198,7 @@ echo "" echo " prefix: $prefix" echo " exec_prefix: $exec_prefix" echo " libdir: $libdir" +echo " includedir: $includedir" dnl Driver info echo "" @@ -932,16 +1211,34 @@ fi 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" fi +echo " Use XCB: $enable_xcb" + +echo "" +if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then + echo " Gallium: yes" + echo " Gallium dirs: $GALLIUM_DIRS" + echo " Winsys dirs: $GALLIUM_WINSYS_DIRS" + echo " Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS" + echo " Auxiliary dirs: $GALLIUM_AUXILIARY_DIRS" + echo " Driver dirs: $GALLIUM_DRIVERS_DIRS" + echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS" +else + echo " Gallium: no" +fi 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