X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=configure.ac;h=ec1bb8288efc1731f829fc439b28fe57be865de3;hb=a2c1aad27d2f9c88ba384f9861143c42c3c3eee7;hp=00e008af3c3c53910967115739f87ce5dc851bba;hpb=79ad458ec66c5001479dd4b1e0f8f83e1713270f;p=mesa.git diff --git a/configure.ac b/configure.ac index 00e008af3c3..ec1bb8288ef 100644 --- a/configure.ac +++ b/configure.ac @@ -9,7 +9,8 @@ m4_define(mesa_minor, 1) m4_define(mesa_tiny, 0) m4_define(mesa_version, [mesa_major().mesa_minor().mesa_tiny()]) -AC_INIT(Mesa, mesa_version(), mesa3d@sourceforge.net) +AC_INIT([Mesa],[mesa_version()], + [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa]) AC_CONFIG_AUX_DIR(bin) AC_CANONICAL_HOST @@ -28,6 +29,21 @@ AC_PROG_CXX AC_PATH_PROG(MAKE, make) AC_PATH_PROG(MKDEP, makedepend) AC_PATH_PROG(SED, sed) + +dnl Ask gcc where it's keeping its secret headers +if test "x$GCC" = xyes; then + GCC_PATH=$(gcc -print-search-dirs | sed -ne 's/install: //p') + MKDEP_OPTIONS="-fdepend -I${GCC_PATH}include" +else + MKDEP_OPTIONS=-fdepend +fi +AC_SUBST(MKDEP_OPTIONS) + +dnl Make sure the pkg-config macros are defined +m4_ifdef([PKG_PROG_PKG_CONFIG],,[ + AC_MSG_ERROR([The pkg-config autoconf macros are not defined. + Did you run 'make configure'?])] +) PKG_PROG_PKG_CONFIG() dnl LIB_DIR - library basename @@ -59,9 +75,15 @@ esac dnl Add flags for gcc and g++ if test "x$GCC" = xyes; then CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math" + + # Work around aliasing bugs - developers should comment this out + CFLAGS="$CFLAGS -fno-strict-aliasing" fi if test "x$GXX" = xyes; then CXXFLAGS="$CXXFLAGS -Wall" + + # Work around aliasing bugs - developers should comment this out + CXXFLAGS="$CXXFLAGS -fno-strict-aliasing" fi dnl These should be unnecessary, but let the user set them if they want @@ -72,6 +94,38 @@ AC_ARG_VAR(ARCH_FLAGS, [Additional architecture specific flags for the AC_SUBST(OPT_FLAGS) AC_SUBST(ARCH_FLAGS) +dnl +dnl Hacks to enable 32 or 64 bit build +dnl +AC_ARG_ENABLE(32-bit, + [AS_HELP_STRING([--enable-32-bit], + [build 32-bit libraries @<:@default=auto@:>@])], + enable_32bit="$enableval", + enable_32bit=auto +) +if test "x$enable_32bit" = xyes; then + if test "x$GCC" = xyes; then + CFLAGS="$CFLAGS -m32" + fi + if test "x$GXX" = xyes; then + CXXFLAGS="$CXXFLAGS -m32" + fi +fi +AC_ARG_ENABLE(64-bit, + [AS_HELP_STRING([--enable-64-bit], + [build 64-bit libraries @<:@default=auto@:>@])], + enable_64bit="$enableval", + enable_64bit=auto +) +if test "x$enable_64bit" = xyes; then + if test "x$GCC" = xyes; then + CFLAGS="$CFLAGS -m64" + fi + if test "x$GXX" = xyes; then + CXXFLAGS="$CXXFLAGS -m64" + fi +fi + dnl dnl shared/static libraries, mimic libtool options dnl @@ -125,6 +179,31 @@ if test "$enable_static" = yes; then fi AC_SUBST(MKLIB_OPTIONS) +dnl +dnl other compiler options +dnl +AC_ARG_ENABLE(debug, + [AS_HELP_STRING([--enable-debug], + [use debug compiler flags and macros @<:@default=disabled@:>@])], + enable_debug="$enableval", + enable_debug=no +) +if test "x$enable_debug" = xyes; then + DEFINES="$DEFINES -DDEBUG" + if test "x$GCC" = xyes; then + CFLAGS="$CFLAGS -g" + fi + if test "x$GXX" = xyes; then + CXXFLAGS="$CXXFLAGS -g" + fi +fi +dnl These will be used near the end in the arch specific options +AC_ARG_ENABLE(asm, + [AS_HELP_STRING([--disable-asm], + [disable assembly usage @<:@default=enabled on supported plaforms@:>@])], + enable_asm="$enableval", + enable_asm=yes +) dnl dnl library names @@ -149,17 +228,17 @@ AC_SUBST(GLW_LIB_NAME) AC_SUBST(OSMESA_LIB_NAME) dnl -dnl Driver configuration. Options are x11 (Xlib), dri and osmesa right now. +dnl Driver configuration. Options are xlib, dri and osmesa right now. dnl More later: directfb, fbdev, ... dnl AC_ARG_WITH(driver, [AS_HELP_STRING([--with-driver=DRIVER], - [driver for Mesa: x11,dri,osmesa @<:@default=x11@:>@])], + [driver for Mesa: xlib,dri,osmesa @<:@default=xlib@:>@])], mesa_driver="$withval", - mesa_driver="x11") + mesa_driver="xlib") dnl Check for valid option case "x$mesa_driver" in -xx11|xdri|xosmesa) +xxlib|xdri|xosmesa) ;; *) AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option]) @@ -173,7 +252,7 @@ SRC_DIRS="mesa" GLU_DIRS="sgi" WINDOW_SYSTEM="" case "$mesa_driver" in -x11) +xlib) DRIVER_DIRS="x11" ;; dri) @@ -201,7 +280,7 @@ fi AC_ARG_WITH(demos, [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@], [optional comma delimited demo directories to build - @<:@default=yes if source available@:>@])], + @<:@default=auto if source available@:>@])], with_demos="$withval", with_demos="$default_demos") if test "x$with_demos" = x; then @@ -248,28 +327,39 @@ fi dnl We need X for xlib and dri, so bomb now if it's not found case "$mesa_driver" in -x11|dri) +xlib|dri) if test "$no_x" = yes; then AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver]) fi ;; esac +# 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 case "$mesa_driver" in -x11) +xlib) if test "$x11_pkgconfig" = yes; then - PKG_CHECK_MODULES(X11GL, x11 xext) - X11_INCLUDES="$X11_INCLUDES $X11GL_CFLAGS" - GL_LIB_DEPS="$X11GL_LIBS" + PKG_CHECK_MODULES(XLIBGL, 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" fi - GL_LIB_DEPS="$GL_LIB_DEPS -lm -lpthread" + GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread" # if static, move the external libraries to the programs # and empty the libraries for libGL @@ -311,7 +401,7 @@ AC_SUBST(GL_LIB_DEPS) dnl dnl More X11 setup dnl -if test "$mesa_driver" = x11; then +if test "$mesa_driver" = xlib; then DEFINES="$DEFINES -DUSE_XSHM" fi @@ -340,7 +430,7 @@ AC_ARG_ENABLE(driglx-direct, 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 to build @<:@default=auto by platform@:>@])], + [comma delimited DRI drivers, e.g. "i965,radeon,nouveau" @<:@default=auto@:>@])], with_dri_drivers="$withval", with_dri_drivers=yes) if test "x$with_dri_drivers" = x; then @@ -378,12 +468,6 @@ if test "$mesa_driver" = dri; then PROGRAM_DIRS="egl" fi - # default drivers - if test "x$DRI_DIRS" = x; then - DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon s3v \ - savage sis tdfx trident unichrome ffb" - fi - # Platform specific settings and drivers to build case "$host_os" in linux*) @@ -432,6 +516,13 @@ if test "$mesa_driver" = dri; then fi ;; esac + + # default drivers + if test "x$DRI_DIRS" = x; then + DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon s3v \ + savage sis tdfx trident unichrome ffb" + fi + DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'` # Check for expat @@ -449,7 +540,7 @@ if test "$mesa_driver" = dri; then AC_MSG_ERROR([Expat required for DRI.])) # put all the necessary libs together - DRI_LIB_DEPS="$LIBDRM_LIBS $EXPAT_LIB -lm -lpthread -ldl" + DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread -ldl" fi AC_SUBST(DRI_DIRS) AC_SUBST(EXPAT_INCLUDES) @@ -458,21 +549,21 @@ AC_SUBST(DRI_LIB_DEPS) dnl dnl OSMesa configuration dnl -if test "$mesa_driver" = x11; then - default_x11_osmesa=yes +if test "$mesa_driver" = xlib; then + default_gl_osmesa=yes else - default_x11_osmesa=no -fi -AC_ARG_ENABLE(x11-osmesa, - [AS_HELP_STRING([--disable-x11-osmesa], - [enable OSMesa on X11 libGL @<:@default=enabled for x11 driver@:>@])], - x11_osmesa="$enableval", - x11_osmesa="$default_x11_osmesa") -if test "x$x11_osmesa" = xyes; then - if test "$mesa_driver" = x11; then - DRIVER_DIRS="$DRIVER_DIRS osmesa" + default_gl_osmesa=no +fi +AC_ARG_ENABLE(gl-osmesa, + [AS_HELP_STRING([--enable-gl-osmesa], + [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])], + gl_osmesa="$enableval", + gl_osmesa="$default_gl_osmesa") +if test "x$gl_osmesa" = xyes; then + if test "$mesa_driver" = osmesa; then + AC_MSG_ERROR([libGL is not available for OSMesa driver]) else - AC_MSG_ERROR([Can only enable OSMesa on libGL for X11]) + DRIVER_DIRS="$DRIVER_DIRS osmesa" fi fi @@ -504,7 +595,7 @@ case "$mesa_driver" in osmesa) # only link librararies with osmesa if shared if test "$enable_static" = no; then - OSMESA_LIB_DEPS="-lm -lpthread" + OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS" else OSMESA_LIB_DEPS="" fi @@ -690,34 +781,44 @@ linux*) PIC_FLAGS="-fPIC" case "$host_cpu" in i*86) - ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM" - ASM_SOURCES='$(X86_SOURCES)' - ASM_API='$(X86_API)' + if test "x$enable_asm" = xyes; then + ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM" + ASM_SOURCES='$(X86_SOURCES)' + ASM_API='$(X86_API)' + fi ;; x86_64) - ASM_FLAGS="-DUSE_X86_64_ASM" - ASM_SOURCES='$(X86-64_SOURCES)' - ASM_API='$(X86-64_API)' + if test "x$enable_asm" = xyes; then + ASM_FLAGS="-DUSE_X86_64_ASM" + ASM_SOURCES='$(X86-64_SOURCES)' + ASM_API='$(X86-64_API)' + fi ;; powerpc) - ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM" - ASM_SOURCES='$(PPC_SOURCES)' + if test "x$enable_asm" = xyes; then + ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM" + ASM_SOURCES='$(PPC_SOURCES)' + fi ;; esac ;; freebsd*) PIC_FLAGS="-fPIC" - case "$host_os" in + case "$host_cpu" in i*86) PIC_FLAGS="" - ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM" - ASM_SOURCES='$(X86_SOURCES)' - ASM_API='$(X86_API)' + if test "x$enable_asm" = xyes; then + ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM" + ASM_SOURCES='$(X86_SOURCES)' + ASM_API='$(X86_API)' + fi ;; x86_64) - ASM_FLAGS="-DUSE_X86_64_ASM" - ASM_SOURCES='$(X86-64_SOURCES)' - ASM_API='$(X86-64_API)' + if test "x$enable_asm" = xyes; then + ASM_FLAGS="-DUSE_X86_64_ASM" + ASM_SOURCES='$(X86-64_SOURCES)' + ASM_API='$(X86-64_API)' + fi ;; esac ;; @@ -728,7 +829,14 @@ LDFLAGS="$_SAVE_LDFLAGS" CPPFLAGS="$_SAVE_CPPFLAGS" dnl Substitute the config -AC_OUTPUT([configs/autoconf]) +AC_CONFIG_FILES([configs/autoconf]) +AC_OUTPUT + +dnl Replace the configs/current symlink +if test -f configs/current || test -L configs/current; then + rm -f configs/current +fi +ln -s autoconf configs/current dnl dnl Output some configuration info for the user @@ -741,21 +849,17 @@ echo " libdir: $libdir" dnl Driver info echo "" echo " Driver: $mesa_driver" -case "$mesa_driver" in -x11|osmesa) - if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then - echo " OSMesa: lib$OSMESA_LIB" - else - echo " OSMesa: no" - fi - ;; -dri) +if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then + echo " OSMesa: lib$OSMESA_LIB" +else + echo " OSMesa: no" +fi +if test "$mesa_driver" = dri; then # cleanup the drivers var dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'` echo " DRI drivers: $dri_dirs" echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR" - ;; -esac +fi dnl Libraries echo "" @@ -774,6 +878,18 @@ else echo " Demos: $program_dirs" fi +dnl Compiler options +# cleanup the CFLAGS/CXXFLAGS/DEFINES vars +cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \ + $SED 's/^ *//;s/ */ /;s/ *$//'` +cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \ + $SED 's/^ *//;s/ */ /;s/ *$//'` +defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'` +echo "" +echo " CFLAGS: $cflags" +echo " CXXFLAGS: $cxxflags" +echo " Macros: $defines" + echo "" -echo " Run 'make autoconf' to build Mesa" +echo " Run 'make' to build Mesa" echo ""