X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=configure.ac;h=b55473ffec98a6b9a08d0081894df62f0de9da48;hb=7c0e6d9bbc11f7802c81df048eb721b5e15e8ece;hp=bd817753050d7c12313ca3808093e40df364e6a7;hpb=7da704ee72bcbe656afd5c4f07702687a53a8d47;p=mesa.git diff --git a/configure.ac b/configure.ac index bd817753050..b55473ffec9 100644 --- a/configure.ac +++ b/configure.ac @@ -18,11 +18,12 @@ AC_CONFIG_AUX_DIR([bin]) AC_CANONICAL_HOST dnl Versions for external dependencies -LIBDRM_REQUIRED=2.4.15 -LIBDRM_RADEON_REQUIRED=2.4.17 +LIBDRM_REQUIRED=2.4.24 +LIBDRM_RADEON_REQUIRED=2.4.24 +LIBDRM_INTEL_REQUIRED=2.4.24 DRI2PROTO_REQUIRED=2.1 GLPROTO_REQUIRED=1.4.11 -LIBDRM_XORG_REQUIRED=2.4.17 +LIBDRM_XORG_REQUIRED=2.4.24 LIBKMS_XORG_REQUIRED=1.0.0 dnl Check for progs @@ -38,6 +39,12 @@ if test "x$MKDEP" = "x"; then AC_MSG_ERROR([makedepend is required to build Mesa]) fi +AC_PATH_PROG([FLEX], [flex]) +test "x$FLEX" = "x" && AC_MSG_ERROR([flex is needed to build Mesa]) + +AC_PATH_PROG([BISON], [bison]) +test "x$BISON" = "x" && AC_MSG_ERROR([bison is needed to build Mesa]) + dnl Our fallback install-sh is a symlink to minstall. Use the existing dnl configuration in that case. AC_PROG_INSTALL @@ -150,9 +157,13 @@ if test "x$GCC" = xyes; then # Enable -fvisibility=hidden if using a gcc that supports it save_CFLAGS="$CFLAGS" AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden]) - CFLAGS="$CFLAGS -fvisibility=hidden" + VISIBILITY_CFLAGS="-fvisibility=hidden" + CFLAGS="$CFLAGS $VISIBILITY_CFLAGS" AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]), - [CFLAGS="$save_CFLAGS" ; AC_MSG_RESULT([no])]); + [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]); + + # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed. + CFLAGS=$save_CFLAGS # Work around aliasing bugs - developers should comment this out CFLAGS="$CFLAGS -fno-strict-aliasing" @@ -163,14 +174,21 @@ if test "x$GXX" = xyes; then # Enable -fvisibility=hidden if using a gcc that supports it save_CXXFLAGS="$CXXFLAGS" AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden]) - CXXFLAGS="$CXXFLAGS -fvisibility=hidden" + VISIBILITY_CXXFLAGS="-fvisibility=hidden" + CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS" AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]), - [CXXFLAGS="$save_CXXFLAGS" ; AC_MSG_RESULT([no])]); + [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]); + + # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed. + CXXFLAGS=$save_CXXFLAGS # Work around aliasing bugs - developers should comment this out CXXFLAGS="$CXXFLAGS -fno-strict-aliasing" fi +AC_SUBST([VISIBILITY_CFLAGS]) +AC_SUBST([VISIBILITY_CXXFLAGS]) + dnl These should be unnecessary, but let the user set them if they want AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler. Default is to use CFLAGS.]) @@ -307,6 +325,21 @@ else esac fi +dnl +dnl potentially-infringing-but-nobody-knows-for-sure stuff +dnl +AC_ARG_ENABLE([texture-float], + [AS_HELP_STRING([--enable-texture-float], + [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])], + [enable_texture_float="$enableval"], + [enable_texture_float=no] +) +if test "x$enable_texture_float" = xyes; then + AC_MSG_WARN([Floating-point textures enabled.]) + AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.]) + DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED" +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} @@ -316,6 +349,8 @@ EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION} GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION} GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION} VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION} +GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION} +WAYLAND_EGL_LIB_NAME='lib$(WAYLAND_EGL_LIB).'${LIB_EXTENSION} GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' @@ -327,6 +362,8 @@ EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTE GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' +GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' +WAYLAND_EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(WAYLAND_EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' AC_SUBST([GL_LIB_NAME]) AC_SUBST([GLU_LIB_NAME]) @@ -337,6 +374,8 @@ AC_SUBST([EGL_LIB_NAME]) AC_SUBST([GLESv1_CM_LIB_NAME]) AC_SUBST([GLESv2_LIB_NAME]) AC_SUBST([VG_LIB_NAME]) +AC_SUBST([GLAPI_LIB_NAME]) +AC_SUBST([WAYLAND_EGL_LIB_NAME]) AC_SUBST([GL_LIB_GLOB]) AC_SUBST([GLU_LIB_GLOB]) @@ -347,6 +386,8 @@ AC_SUBST([EGL_LIB_GLOB]) AC_SUBST([GLESv1_CM_LIB_GLOB]) AC_SUBST([GLESv2_LIB_GLOB]) AC_SUBST([VG_LIB_GLOB]) +AC_SUBST([GLAPI_LIB_GLOB]) +AC_SUBST([WAYLAND_EGL_LIB_GLOB]) dnl dnl Arch/platform-specific settings @@ -377,14 +418,14 @@ if test "x$enable_asm" = xyes; then case "$host_cpu" in i?86) case "$host_os" in - linux* | *freebsd* | dragonfly*) + linux* | *freebsd* | dragonfly* | *netbsd*) 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* | *netbsd*) test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64 ;; esac @@ -483,9 +524,9 @@ AC_ARG_ENABLE([gles2], [enable_gles2=no]) AC_ARG_ENABLE([gles-overlay], [AS_HELP_STRING([--enable-gles-overlay], - [build separate OpenGL ES only libraries @<:@default=no@:>@])], - [enable_gles_overlay="$enableval"], - [enable_gles_overlay=no]) + [DEPRECATED. Same as --enable-gles1 and --enable-gles2])], + [enable_gles1="$enableval"; enable_gles2="$enableval"], + []) AC_ARG_ENABLE([openvg], [AS_HELP_STRING([--enable-openvg], @@ -506,13 +547,11 @@ fi if test "x$enable_opengl" = xno -a \ "x$enable_gles1" = xno -a \ "x$enable_gles2" = xno -a \ - "x$enable_gles_overlay" = xno -a \ "x$enable_openvg" = xno; then AC_MSG_ERROR([at least one API should be enabled]) fi API_DEFINES="" -GLES_OVERLAY=0 if test "x$enable_opengl" = xno; then API_DEFINES="$API_DEFINES -DFEATURE_GL=0" else @@ -524,11 +563,19 @@ fi if test "x$enable_gles2" = xyes; then API_DEFINES="$API_DEFINES -DFEATURE_ES2=1" fi -if test "x$enable_gles_overlay" = xyes; then - GLES_OVERLAY=1 -fi AC_SUBST([API_DEFINES]) -AC_SUBST([GLES_OVERLAY]) + +AC_ARG_ENABLE([shared-glapi], + [AS_HELP_STRING([--enable-shared-glapi], + [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])], + [enable_shared_glapi="$enableval"], + [enable_shared_glapi=no]) + +SHARED_GLAPI="0" +if test "x$enable_shared_glapi" = xyes; then + SHARED_GLAPI="1" +fi +AC_SUBST([SHARED_GLAPI]) dnl dnl Driver configuration. Options are xlib, dri and osmesa right now. @@ -542,7 +589,7 @@ linux*) i*86|x86_64|powerpc*|sparc*) default_driver="dri";; esac ;; -*freebsd* | dragonfly*) +*freebsd* | dragonfly* | *netbsd*) case "$host_cpu" in i*86|x86_64|powerpc*|sparc*) default_driver="dri";; esac @@ -572,10 +619,6 @@ xno) ;; esac -PKG_CHECK_MODULES([TALLOC], [talloc]) -AC_SUBST([TALLOC_LIBS]) -AC_SUBST([TALLOC_CFLAGS]) - dnl dnl Driver specific build directories dnl @@ -588,20 +631,30 @@ GLU_DIRS="sgi" GALLIUM_DIRS="auxiliary drivers state_trackers" GALLIUM_TARGET_DIRS="" GALLIUM_WINSYS_DIRS="sw" -GALLIUM_DRIVERS_DIRS="softpipe failover galahad trace rbug identity" +GALLIUM_DRIVERS_DIRS="softpipe failover galahad trace rbug noop identity" GALLIUM_STATE_TRACKERS_DIRS="" +# build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled +case "x$enable_shared_glapi$enable_gles1$enable_gles2" in +x*yes*) + CORE_DIRS="$CORE_DIRS mapi/shared-glapi" + ;; +esac + # build glapi if OpenGL is enabled if test "x$enable_opengl" = xyes; then CORE_DIRS="$CORE_DIRS mapi/glapi" fi -# build es1api and es2api if OpenGL ES is enabled -case "x$enable_gles1$enable_gles2$enable_gles_overlay" in -x*yes*) - CORE_DIRS="$CORE_DIRS mapi/es1api mapi/es2api" - ;; -esac +# build es1api if OpenGL ES 1.x is enabled +if test "x$enable_gles1" = xyes; then + CORE_DIRS="$CORE_DIRS mapi/es1api" +fi + +# build es2api if OpenGL ES 2.x is enabled +if test "x$enable_gles2" = xyes; then + CORE_DIRS="$CORE_DIRS mapi/es2api" +fi # build vgapi if OpenVG is enabled if test "x$enable_openvg" = xyes; then @@ -609,7 +662,7 @@ if test "x$enable_openvg" = xyes; then fi # build glsl and mesa if OpenGL or OpenGL ES is enabled -case "x$enable_opengl$enable_gles1$enable_gles2$enable_gles_overlay" in +case "x$enable_opengl$enable_gles1$enable_gles2" in x*yes*) CORE_DIRS="$CORE_DIRS glsl mesa" ;; @@ -697,6 +750,27 @@ else enable_xcb=no fi +dnl Direct rendering or just indirect rendering +case "$host_os" in +gnu*) + dnl Disable by default on GNU/Hurd + driglx_direct_default="no" + ;; +cygwin*) + dnl Disable by default on cygwin + driglx_direct_default="no" + ;; +*) + driglx_direct_default="yes" + ;; +esac +AC_ARG_ENABLE([driglx-direct], + [AS_HELP_STRING([--disable-driglx-direct], + [enable direct rendering in GLX and EGL for DRI \ + @<:@default=auto@:>@])], + [driglx_direct="$enableval"], + [driglx_direct="$driglx_direct_default"]) + dnl dnl libGL configuration per driver dnl @@ -714,8 +788,8 @@ xlib) GL_PC_LIB_PRIV="$GL_LIB_DEPS" GL_PC_CFLAGS="$X11_INCLUDES" fi - GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $TALLOC_LIBS" - GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread $TALLOC_LIBS" + 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 @@ -730,12 +804,17 @@ dri|no) # these checks are still desired when there is no mesa_driver AC_MSG_ERROR([Can't use static libraries for DRI drivers]) fi - # Check for libdrm - PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED]) - PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED]) PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED]) - GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED glproto >= $GLPROTO_REQUIRED" - DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED" + GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED" + DRI_PC_REQ_PRIV="" + + if test x"$driglx_direct" = xyes; then + # Check for libdrm + PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED]) + PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED]) + GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED" + DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED" + fi # find the DRI deps for libGL if test "$x11_pkgconfig" = yes; then @@ -795,11 +874,48 @@ AC_SUBST([GLESv1_CM_PC_LIB_PRIV]) AC_SUBST([GLESv2_LIB_DEPS]) AC_SUBST([GLESv2_PC_LIB_PRIV]) +GLAPI_LIB_DEPS="-lpthread" +AC_SUBST([GLAPI_LIB_DEPS]) + + +dnl Setup default DRI CFLAGS +DRI_CFLAGS='$(CFLAGS)' +DRI_CXXFLAGS='$(CXXFLAGS)' +DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a' +MESA_MODULES='$(TOP)/src/mesa/libmesa.a' + +AC_ARG_ENABLE([shared-dricore], + [AS_HELP_STRING([--enable-shared-dricore], + [link DRI modules with shared core DRI routines @<:@default=disabled@:>@])], + [enable_dricore="$enableval"], + [enable_dricore=no]) +if test "$mesa_driver" = dri ; then + if test "$enable_dricore" = yes ; then + if test "$GCC$GXX" != yesyes ; then + AC_MSG_WARN([Shared dricore requires GCC-compatible rpath handling. Disabling shared dricore]) + enable_dricore=no + else + DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so' + DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so' + DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl' + DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl' + DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE' + DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE' + MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)' + fi + fi +fi +AC_SUBST([DRICORE_LIBS]) +AC_SUBST([DRICORE_GLSL_LIBS]) +AC_SUBST([DRICORE_LIB_DEPS]) +AC_SUBST([DRI_CXXFLAGS]) +AC_SUBST([DRI_CFLAGS]) +AC_SUBST([MESA_MODULES]) AC_SUBST([HAVE_XF86VIDMODE]) PKG_CHECK_MODULES([LIBDRM_RADEON], - [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED], + [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED], HAVE_LIBDRM_RADEON=yes, HAVE_LIBDRM_RADEON=no) @@ -811,13 +927,22 @@ if test "$mesa_driver" = xlib; then fi dnl -dnl More DRI setup +dnl TLS detection dnl + AC_ARG_ENABLE([glx-tls], [AS_HELP_STRING([--enable-glx-tls], [enable TLS support in GLX @<:@default=disabled@:>@])], [GLX_USE_TLS="$enableval"], [GLX_USE_TLS=no]) +AC_SUBST(GLX_TLS, ${GLX_USE_TLS}) + +AS_IF([test "x$GLX_USE_TLS" = xyes], + [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"]) + +dnl +dnl More DRI setup +dnl dnl Directory for DRI drivers AC_ARG_WITH([dri-driverdir], [AS_HELP_STRING([--with-dri-driverdir=DIR], @@ -832,12 +957,6 @@ AC_ARG_WITH([dri-searchpath], [DRI_DRIVER_SEARCH_DIR="$withval"], [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}']) AC_SUBST([DRI_DRIVER_SEARCH_DIR]) -dnl Direct rendering or just indirect rendering -AC_ARG_ENABLE([driglx-direct], - [AS_HELP_STRING([--disable-driglx-direct], - [enable direct rendering in GLX and EGL 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...@:>@], @@ -870,11 +989,6 @@ esac dnl Set DRI_DIRS, DEFINES and LIB_DEPS if test "$mesa_driver" = dri -o "$mesa_driver" = no; then - # Use TLS in GLX? - if test "x$GLX_USE_TLS" = xyes; then - DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS" - fi - # Platform specific settings and drivers to build case "$host_os" in linux*) @@ -909,16 +1023,13 @@ if test "$mesa_driver" = dri -o "$mesa_driver" = no; then ;; esac ;; - freebsd* | dragonfly*) + freebsd* | dragonfly* | *netbsd*) DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1" DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS" DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING" if test "x$driglx_direct" = xyes; then DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" fi - if test "x$GXX" = xyes; then - CXXFLAGS="$CXXFLAGS -ansi -pedantic" - fi if test "x$DRI_DIRS" = "xyes"; then DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \ @@ -936,6 +1047,16 @@ if test "$mesa_driver" = dri -o "$mesa_driver" = no; then DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" fi ;; + cygwin*) + 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 + if test "x$DRI_DIRS" = "xyes"; then + DRI_DIRS="swrast" + fi + ;; esac # default drivers @@ -963,8 +1084,8 @@ if test "$mesa_driver" = dri -o "$mesa_driver" = no; then [AC_MSG_ERROR([Expat required for DRI.])]) fi - # put all the necessary libs together - DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS $TALLOC_LIBS" + # put all the necessary libs together, including possibly libdricore + DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS" fi AC_SUBST([DRI_DIRS]) AC_SUBST([EXPAT_INCLUDES]) @@ -972,7 +1093,7 @@ AC_SUBST([DRI_LIB_DEPS]) case $DRI_DIRS in *i915*|*i965*) - PKG_CHECK_MODULES([INTEL], [libdrm_intel >= 2.4.21]) + PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) ;; esac @@ -1040,12 +1161,12 @@ case "$DRIVER_DIRS" in *osmesa*) # only link libraries with osmesa if shared if test "$enable_static" = no; then - OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS" + OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS" else OSMESA_LIB_DEPS="" fi OSMESA_MESA_DEPS="" - OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS" + OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS" ;; esac AC_SUBST([OSMESA_LIB_DEPS]) @@ -1071,7 +1192,7 @@ if test "x$enable_egl" = xno; then fi if test "x$enable_egl" = xyes; then SRC_DIRS="$SRC_DIRS egl" - EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread" + EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread" EGL_DRIVERS_DIRS="" if test "$enable_static" != yes; then # build egl_glx when libGL is built @@ -1079,12 +1200,12 @@ if test "x$enable_egl" = xyes; then EGL_DRIVERS_DIRS="glx" fi + PKG_CHECK_MODULES([LIBUDEV], [libudev > 150], + [have_libudev=yes],[have_libudev=no]) if test "$mesa_driver" = dri; then # build egl_dri2 when xcb-dri2 is available PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes], [have_xcb_dri2=yes],[have_xcb_dri2=no]) - PKG_CHECK_MODULES([LIBUDEV], [libudev > 150], - [have_libudev=yes],[have_libudev=no]) if test "$have_xcb_dri2" = yes; then EGL_DRIVER_DRI2=dri2 @@ -1092,6 +1213,9 @@ if test "x$enable_egl" = xyes; then if test "$have_libudev" = yes; then DEFINES="$DEFINES -DHAVE_LIBUDEV" fi + # workaround a bug in xcb-dri2 generated by xcb-proto 1.6 + AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [], + [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"]) fi fi @@ -1327,8 +1451,6 @@ if test "x$enable_gallium" = xno -a "x$enable_openvg" = xyes; then fi if test "x$enable_gallium" = xyes; then SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets" - AC_CHECK_HEADER([udis86.h], [HAS_UDIS86="yes"], - [HAS_UDIS86="no"]) AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no]) fi @@ -1352,7 +1474,7 @@ if test "x$enable_gallium_egl" = xauto; then enable_gallium_egl=$enable_egl ;; *) - enable_gallium_egl=no + enable_gallium_egl=$enable_openvg ;; esac fi @@ -1428,6 +1550,7 @@ yes) if test "x$enable_openvg" != xyes; then AC_MSG_ERROR([cannot build vega state tracker without --enable-openvg]) fi + have_st_vega="yes" ;; esac @@ -1442,6 +1565,14 @@ yes) fi done GALLIUM_STATE_TRACKERS_DIRS="$state_trackers" + + # append --enable-openvg/--enable-gallium-egl to --with-state-trackers + if test "x$have_st_vega" != xyes -a "x$enable_openvg" = xyes; then + AC_MSG_ERROR([--with-state-trackers specified but vega is missing]) + fi + if test "x$HAVE_ST_EGL" != xyes -a "x$enable_gallium_egl" = xyes; then + AC_MSG_ERROR([--with-state-trackers specified but egl is missing]) + fi ;; esac @@ -1454,12 +1585,9 @@ x*yes*) EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)' ;; esac -if test "x$enable_gles_overlay" = xyes; then - EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GLESv1_CM_LIB) $(GLESv2_LIB)' -fi if test "x$enable_openvg" = xyes; then EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)' - VG_LIB_DEPS="$VG_LIB_DEPS -lpthread" + VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread" fi AC_SUBST([VG_LIB_DEPS]) @@ -1467,10 +1595,6 @@ AC_SUBST([EGL_CLIENT_APIS]) if test "x$HAVE_ST_EGL" = xyes; then GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl" - # define GLX_DIRECT_RENDERING even when the driver is not dri - if test "x$mesa_driver" != xdri -a "x$driglx_direct" = xyes; then - DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" - fi fi if test "x$HAVE_ST_XORG" = xyes; then @@ -1491,6 +1615,8 @@ AC_ARG_WITH([egl-displays], [with_egl_platforms="$withval"]) EGL_PLATFORMS="" +WAYLAND_EGL_LIB_DEPS="" + case "$with_egl_platforms" in yes) if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then @@ -1508,16 +1634,32 @@ yes) egl_platforms=`IFS=', '; echo $with_egl_platforms` for plat in $egl_platforms; do test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \ - AC_MSG_ERROR([EGL platform '$plat' does't exist]) + AC_MSG_ERROR([EGL platform '$plat' doesn't exist]) if test "$plat" = "fbdev"; then GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev" fi + if test "$plat" = "wayland"; then + PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \ + [AC_MSG_ERROR([cannot find libwayland-client])]) + WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS" + GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland" + fi done EGL_PLATFORMS="$egl_platforms" ;; esac AC_SUBST([EGL_PLATFORMS]) +AC_SUBST([WAYLAND_EGL_LIB_DEPS]) +WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm" +WAYLAND_EGL_PC_LIB_PRIV= +WAYLAND_EGL_PC_CFLAGS= + +AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV]) +AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV]) +AC_SUBST([WAYLAND_EGL_PC_CFLAGS]) + + AC_ARG_WITH([egl-driver-dir], [AS_HELP_STRING([--with-egl-driver-dir=DIR], [directory for EGL drivers [[default=${libdir}/egl]]])], @@ -1552,19 +1694,20 @@ dnl Gallium LLVM dnl AC_ARG_ENABLE([gallium-llvm], [AS_HELP_STRING([--enable-gallium-llvm], - [build gallium LLVM support @<:@default=disabled@:>@])], + [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])], [enable_gallium_llvm="$enableval"], [enable_gallium_llvm=auto]) +if test "x$enable_gallium_llvm" = xauto; then + case "$host_cpu" in + i*86|x86_64) enable_gallium_llvm=yes;; + esac +fi if test "x$enable_gallium_llvm" = xyes; then if test "x$LLVM_CONFIG" != xno; then LLVM_VERSION=`$LLVM_CONFIG --version` LLVM_CFLAGS=`$LLVM_CONFIG --cppflags` - LLVM_LIBS="`$LLVM_CONFIG --libs jit interpreter nativecodegen bitwriter` -lstdc++" + LLVM_LIBS="`$LLVM_CONFIG --libs` -lstdc++" - if test "x$HAS_UDIS86" != xno; then - LLVM_LIBS="$LLVM_LIBS -ludis86" - DEFINES="$DEFINES -DHAVE_UDIS86" - fi LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags` GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe" DEFINES="$DEFINES -DGALLIUM_LLVMPIPE -D__STDC_CONSTANT_MACROS" @@ -1642,43 +1785,44 @@ fi dnl dnl Gallium Radeon r300g 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=auto]) -if test "x$enable_gallium_radeon" = xauto; then - if test "x$HAVE_LIBDRM_RADEON" = xyes; then - GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300" - gallium_check_st "radeon/drm" "dri-r300" - else - AC_MSG_WARN([libdrm_radeon is missing, not building gallium-radeon (r300)]) +AC_ARG_ENABLE([gallium-r300], + [AS_HELP_STRING([--enable-gallium-r300], + [build gallium r300 @<:@default=build DRI driver only@:>@])], + [enable_gallium_r300="$enableval"], + [enable_gallium_r300=auto]) + +if test "$mesa_driver" != dri ; then + if test "x$enable_gallium_r300" = xauto; then + enable_gallium_r300=no fi fi -if test "x$enable_gallium_radeon" = xyes; then - if test "x$HAVE_LIBDRM_RADEON" = xyes; then - GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300" - gallium_check_st "radeon/drm" "dri-r300" "xorg-radeon" - else - AC_MSG_ERROR([libdrm_radeon is missing, cannot build gallium-radeon (r300)]) + +if test "x$enable_gallium_r300" != xno; then + if test "x$MESA_LLVM" = x0; then + case "$host_cpu" in + i*86|x86_64) AC_MSG_ERROR([LLVM is required to build Gallium R300 on x86 and x86_64]);; + esac fi fi +if test "x$enable_gallium_r300" = xauto; then + GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300" + gallium_check_st "radeon/drm" "dri-r300" +elif test "x$enable_gallium_r300" = xyes; then + GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300" + gallium_check_st "radeon/drm" "dri-r300" "xorg-radeon" +fi dnl dnl Gallium Radeon r600g configuration dnl AC_ARG_ENABLE([gallium-r600], [AS_HELP_STRING([--enable-gallium-r600], - [build gallium radeon @<:@default=disabled@:>@])], + [build gallium r600 @<:@default=disabled@:>@])], [enable_gallium_r600="$enableval"], [enable_gallium_r600=auto]) if test "x$enable_gallium_r600" = xyes; then - if test "x$HAVE_LIBDRM_RADEON" = xyes; then - GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600" - gallium_check_st "r600/drm" "dri-r600" - else - AC_MSG_ERROR([libdrm_radeon is missing, cannot build gallium-r600]) - fi + GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600" + gallium_check_st "r600/drm" "dri-r600" fi dnl @@ -1690,7 +1834,7 @@ AC_ARG_ENABLE([gallium-nouveau], [enable_gallium_nouveau="$enableval"], [enable_gallium_nouveau=no]) if test "x$enable_gallium_nouveau" = xyes; then - GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50" + GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0" gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" fi @@ -1708,19 +1852,6 @@ if test "x$enable_gallium_swrast" = xyes || test "x$enable_gallium_swrast" = xau fi fi -dnl -dnl Gallium noop configuration -dnl -AC_ARG_ENABLE([gallium-noop], - [AS_HELP_STRING([--enable-gallium-noop], - [build gallium radeon @<:@default=disabled@:>@])], - [enable_gallium_noop="$enableval"], - [enable_gallium_noop=auto]) -if test "x$enable_gallium_noop" = xyes; then - GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS noop" - GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-noop" -fi - dnl prepend CORE_DIRS to SRC_DIRS SRC_DIRS="$CORE_DIRS $SRC_DIRS" @@ -1753,7 +1884,6 @@ echo " includedir: $includedir" dnl API info echo "" echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)" -echo " GLES overlay: $enable_gles_overlay" echo " OpenVG: $enable_openvg" dnl Driver info @@ -1775,6 +1905,7 @@ if test "$mesa_driver" != no; then fi echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR" echo " Use XCB: $enable_xcb" + echo " Shared dricore: $enable_dricore" fi fi echo "" @@ -1790,7 +1921,7 @@ if test "$enable_egl" = yes; then egl_drivers="" for d in $EGL_DRIVERS_DIRS; do - egl_drivers="$egl_drivers egl_$d" + egl_drivers="$egl_drivers builtin:egl_$d" done if test "$enable_gallium" = yes -a "$HAVE_ST_EGL" = yes; then