diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix index 68333892fd4..1018a0e31f3 100644 --- a/pkgs/development/libraries/mesa/default.nix +++ b/pkgs/development/libraries/mesa/default.nix @@ -23,8 +23,8 @@ else */ let - version = "9.2.5"; - # this is the default search path for DRI drivers (note: X server no longer introduces an overriding env var) + version = "10.0.4"; + # this is the default search path for DRI drivers driverLink = "/run/opengl-driver" + stdenv.lib.optionalString stdenv.isi686 "-32"; in with { inherit (stdenv.lib) optional optionals optionalString; }; @@ -34,21 +34,23 @@ stdenv.mkDerivation { src = fetchurl { url = "ftp://ftp.freedesktop.org/pub/mesa/${version}/MesaLib-${version}.tar.bz2"; - sha256 = "1w3bxclgwl2hwyxk3za7dbdakb8jsya7afck35cz0v8pxppvjsml"; + sha256 = "0h2sq8h0l7415vsqfkb7mn1rxm62m2anpi9swlca69fbpr9bavpz"; }; prePatch = "patchShebangs ."; patches = [ ./static-gallium.patch - ./dricore-gallium.patch - ./werror-wundef.patch + # TODO: revive ./dricore-gallium.patch when it gets ported (from Ubuntu), + # as it saved ~35 MB in $drivers; watch https://launchpad.net/ubuntu/+source/mesa/+changelog ]; # Change the search path for EGL drivers from $drivers/* to driverLink postPatch = '' sed '/D_EGL_DRIVER_SEARCH_DIR=/s,EGL_DRIVER_INSTALL_DIR,${driverLink}/lib/egl,' \ -i src/egl/main/Makefile.am + '' + /* work around RTTI LLVM problems */ '' + patch -R -p1 < ${./rtti.patch} ''; outputs = ["out" "drivers" "osmesa"]; @@ -70,7 +72,7 @@ stdenv.mkDerivation { "--with-dri-drivers=i965,r200,radeon" "--with-gallium-drivers=i915,nouveau,r300,r600,svga,swrast,radeonsi" - "--with-egl-platforms=x11,wayland,drm" "--enable-gbm" "--enable-shared-glapi" + "--with-egl-platforms=x11,wayland,drm" "--enable-gbm" ] ++ optional enableTextureFloats "--enable-texture-float" ++ optionals enableExtraFeatures [ @@ -94,7 +96,7 @@ stdenv.mkDerivation { enableParallelBuilding = true; #doCheck = true; # https://bugs.freedesktop.org/show_bug.cgi?id=67672, - # also, 10.* links bad due to some RTTI problem + #tests for 10.* fail to link due to some RTTI problem # move gallium-related stuff to $drivers, so $out doesn't depend on LLVM; # also move libOSMesa to $osmesa, as it's relatively big diff --git a/pkgs/development/libraries/mesa/dricore-gallium.patch b/pkgs/development/libraries/mesa/dricore-gallium.patch deleted file mode 100644 index 9a8b6768277..00000000000 --- a/pkgs/development/libraries/mesa/dricore-gallium.patch +++ /dev/null @@ -1,216 +0,0 @@ -commit 5208f187c7dade2c33385a56c1a5f1c3cedc8377 (HEAD, nix-patches) -Author: Vladimír Čunát -Date: Mon May 13 11:34:59 2013 +0200 - - 118-dricore-gallium.patch - -diff --git a/configure.ac b/configure.ac -index be89843..08f6761 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -928,6 +928,8 @@ AC_SUBST([GLESv2_LIB_DEPS]) - AC_SUBST([GLESv2_PC_LIB_PRIV]) - - DRI_LIB_DEPS="\$(top_builddir)/src/mesa/libdricore/libdricore${VERSION}.la" -+MESAGALLIUM_LIBS="${DRI_LIB_DEPS}" -+AC_SUBST([MESAGALLIUM_LIBS], ${MESAGALLIUM_LIBS}) - - AC_SUBST([HAVE_XF86VIDMODE]) - -diff --git a/src/gallium/auxiliary/Makefile.am b/src/gallium/auxiliary/Makefile.am -index 3cdec83..53ff69b 100644 ---- a/src/gallium/auxiliary/Makefile.am -+++ b/src/gallium/auxiliary/Makefile.am -@@ -34,14 +34,14 @@ if LLVM_NEEDS_FNORTTI - - AM_CXXFLAGS += -fno-rtti - --libgallium_la_LIBADD = $(LLVM_LIBS) -- - endif - - libgallium_la_SOURCES += \ - $(GALLIVM_SOURCES) \ - $(GALLIVM_CPP_SOURCES) - -+libgallium_la_LIBADD = ../../mesa/libdricore/libmesagallium.la $(LLVM_LIBS) $(GALLIUM_DRI_LIB_DEPS) -+ - endif - - indices/u_indices_gen.c: $(srcdir)/indices/u_indices_gen.py -diff --git a/src/gallium/targets/dri-i915/Makefile.am b/src/gallium/targets/dri-i915/Makefile.am -index f4f9030..e9b9462 100644 ---- a/src/gallium/targets/dri-i915/Makefile.am -+++ b/src/gallium/targets/dri-i915/Makefile.am -@@ -49,7 +49,7 @@ i915_dri_la_SOURCES = \ - i915_dri_la_LDFLAGS = -module -avoid-version -shared -no-undefined - - i915_dri_la_LIBADD = \ -- $(top_builddir)/src/mesa/libmesagallium.la \ -+ @MESAGALLIUM_LIBS@ \ - $(top_builddir)/src/gallium/auxiliary/libgallium.la \ - $(top_builddir)/src/gallium/state_trackers/dri/drm/libdridrm.la \ - $(top_builddir)/src/gallium/winsys/i915/drm/libi915drm.la \ -diff --git a/src/gallium/targets/dri-nouveau/Makefile.am b/src/gallium/targets/dri-nouveau/Makefile.am -index 69ccf32..fef4c63 100644 ---- a/src/gallium/targets/dri-nouveau/Makefile.am -+++ b/src/gallium/targets/dri-nouveau/Makefile.am -@@ -48,7 +48,7 @@ nouveau_dri_la_SOURCES = \ - nouveau_dri_la_LDFLAGS = -module -avoid-version -shared -no-undefined - - nouveau_dri_la_LIBADD = \ -- $(top_builddir)/src/mesa/libmesagallium.la \ -+ @MESAGALLIUM_LIBS@ \ - $(top_builddir)/src/gallium/auxiliary/libgallium.la \ - $(top_builddir)/src/gallium/state_trackers/dri/drm/libdridrm.la \ - $(top_builddir)/src/gallium/winsys/nouveau/drm/libnouveaudrm.la \ -diff --git a/src/gallium/targets/dri-r300/Makefile.am b/src/gallium/targets/dri-r300/Makefile.am -index 8c0215d..6beb536 100644 ---- a/src/gallium/targets/dri-r300/Makefile.am -+++ b/src/gallium/targets/dri-r300/Makefile.am -@@ -49,7 +49,7 @@ r300_dri_la_SOURCES = \ - r300_dri_la_LDFLAGS = -module -avoid-version -shared -no-undefined - - r300_dri_la_LIBADD = \ -- $(top_builddir)/src/mesa/libmesagallium.la \ -+ @MESAGALLIUM_LIBS@ \ - $(top_builddir)/src/gallium/auxiliary/libgallium.la \ - $(top_builddir)/src/gallium/state_trackers/dri/drm/libdridrm.la \ - $(top_builddir)/src/gallium/winsys/radeon/drm/libradeonwinsys.la \ -diff --git a/src/gallium/targets/dri-r600/Makefile.am b/src/gallium/targets/dri-r600/Makefile.am -index 2b3524b..d40fb89 100644 ---- a/src/gallium/targets/dri-r600/Makefile.am -+++ b/src/gallium/targets/dri-r600/Makefile.am -@@ -48,7 +48,7 @@ r600_dri_la_SOURCES = \ - r600_dri_la_LDFLAGS = -module -avoid-version -shared -no-undefined - - r600_dri_la_LIBADD = \ -- $(top_builddir)/src/mesa/libmesagallium.la \ -+ @MESAGALLIUM_LIBS@ \ - $(top_builddir)/src/gallium/auxiliary/libgallium.la \ - $(top_builddir)/src/gallium/drivers/r600/libr600.la \ - $(top_builddir)/src/gallium/state_trackers/dri/drm/libdridrm.la \ -diff --git a/src/gallium/targets/dri-radeonsi/Makefile.am b/src/gallium/targets/dri-radeonsi/Makefile.am -index f7d87a6..87ab2aa 100644 ---- a/src/gallium/targets/dri-radeonsi/Makefile.am -+++ b/src/gallium/targets/dri-radeonsi/Makefile.am -@@ -49,7 +49,7 @@ radeonsi_dri_la_SOURCES = \ - radeonsi_dri_la_LDFLAGS = -module -avoid-version -shared -no-undefined - - radeonsi_dri_la_LIBADD = \ -- $(top_builddir)/src/mesa/libmesagallium.la \ -+ @MESAGALLIUM_LIBS@ \ - $(top_builddir)/src/gallium/auxiliary/libgallium.la \ - $(top_builddir)/src/gallium/drivers/radeonsi/libradeonsi.la \ - $(top_builddir)/src/gallium/state_trackers/dri/drm/libdridrm.la \ -diff --git a/src/gallium/targets/dri-swrast/Makefile.am b/src/gallium/targets/dri-swrast/Makefile.am -index 1104379..72d2401 100644 ---- a/src/gallium/targets/dri-swrast/Makefile.am -+++ b/src/gallium/targets/dri-swrast/Makefile.am -@@ -49,7 +49,7 @@ swrast_dri_la_SOURCES = \ - swrast_dri_la_LDFLAGS = -module -avoid-version -shared -no-undefined - - swrast_dri_la_LIBADD = \ -- $(top_builddir)/src/mesa/libmesagallium.la \ -+ @MESAGALLIUM_LIBS@ \ - $(top_builddir)/src/gallium/auxiliary/libgallium.la \ - $(top_builddir)/src/gallium/state_trackers/dri/sw/libdrisw.la \ - $(top_builddir)/src/gallium/winsys/sw/dri/libswdri.la \ -diff --git a/src/gallium/targets/dri-vmwgfx/Makefile.am b/src/gallium/targets/dri-vmwgfx/Makefile.am -index ca7df65..4384976 100644 ---- a/src/gallium/targets/dri-vmwgfx/Makefile.am -+++ b/src/gallium/targets/dri-vmwgfx/Makefile.am -@@ -48,7 +48,7 @@ vmwgfx_dri_la_SOURCES = \ - vmwgfx_dri_la_LDFLAGS = -module -avoid-version -shared -no-undefined - - vmwgfx_dri_la_LIBADD = \ -- $(top_builddir)/src/mesa/libmesagallium.la \ -+ @MESAGALLIUM_LIBS@ \ - $(top_builddir)/src/gallium/auxiliary/libgallium.la \ - $(top_builddir)/src/gallium/state_trackers/dri/drm/libdridrm.la \ - $(top_builddir)/src/gallium/winsys/svga/drm/libsvgadrm.la \ -diff --git a/src/gallium/targets/egl-static/Makefile.am b/src/gallium/targets/egl-static/Makefile.am -index 5c40ae8..6922ab2 100644 ---- a/src/gallium/targets/egl-static/Makefile.am -+++ b/src/gallium/targets/egl-static/Makefile.am -@@ -104,7 +104,7 @@ AM_CPPFLAGS += \ - $(API_DEFINES) - - egl_gallium_la_LIBADD += \ -- $(top_builddir)/src/mesa/libmesagallium.la -+ @MESAGALLIUM_LIBS@ - # make st/mesa built-in when there is a single glapi provider - if HAVE_SHARED_GLAPI - egl_gallium_la_LIBADD += \ -diff --git a/src/mesa/Makefile.am b/src/mesa/Makefile.am -index 41483dd..0045a673 100644 ---- a/src/mesa/Makefile.am -+++ b/src/mesa/Makefile.am -@@ -75,9 +75,6 @@ noinst_LTLIBRARIES += libmesa.la - else - check_LTLIBRARIES = libmesa.la - endif --if HAVE_GALLIUM --noinst_LTLIBRARIES += libmesagallium.la --endif - - SRCDIR = $(top_srcdir)/src/mesa/ - BUILDDIR = $(top_builddir)/src/mesa/ -@@ -119,15 +116,6 @@ libmesa_la_LIBADD = \ - $() - libmesa_la_LDFLAGS = - --libmesagallium_la_SOURCES = \ -- $(MESA_GALLIUM_FILES) \ -- $(MESA_ASM_FILES_FOR_ARCH) -- --libmesagallium_la_LIBADD = \ -- $(top_builddir)/src/glsl/libglsl.la \ -- $(top_builddir)/src/mesa/program/libprogram.la \ -- $() -- - pkgconfigdir = $(libdir)/pkgconfig - pkgconfig_DATA = gl.pc - -diff --git a/src/mesa/libdricore/Makefile.am b/src/mesa/libdricore/Makefile.am -index 753548e..8761418 100644 ---- a/src/mesa/libdricore/Makefile.am -+++ b/src/mesa/libdricore/Makefile.am -@@ -42,6 +42,7 @@ libdricore@VERSION@_la_SOURCES = \ - libdricore@VERSION@_la_LDFLAGS = -version-number 1:0 - libdricore@VERSION@_la_LIBADD = \ - ../program/libdricore_program.la \ -+ $(top_builddir)/src/mapi/shared-glapi/libglapi.la - $() - - if HAVE_X86_ASM -@@ -65,8 +66,10 @@ AM_CPPFLAGS += \ - -I$(top_srcdir)/src/mesa/sparc - endif - -+lib_LTLIBRARIES = -+ - if HAVE_DRI --lib_LTLIBRARIES = libdricore@VERSION@.la -+lib_LTLIBRARIES += libdricore@VERSION@.la - - # Provide compatibility with scripts for the old Mesa build system for - # a while by putting a link to the driver into /lib of the build tree. -@@ -76,6 +79,17 @@ all-local: libdricore@VERSION@.la - ln -sf libdricore@VERSION@.so.1 $(top_builddir)/$(LIB_DIR)/libdricore@VERSION@.so - endif - -+libmesagallium_la_SOURCES = \ -+ $(STATETRACKER_FILES) -+libmesagallium_la_CFLAGS = @LLVM_CFLAGS@ -+libmesagallium_la_CXXFLAGS = @LLVM_CXXFLAGS@ -+libmesagallium_la_LIBADD = libdricore@VERSION@.la $(LLVM_LIBS) -+ -+if HAVE_GALLIUM -+noinst_LTLIBRARIES = libmesagallium.la -+endif -+ -+ - CLEANFILES = \ - $(top_builddir)/$(LIB_DIR)/libdricore@VERSION@.so.1 \ - $(top_builddir)/$(LIB_DIR)/libdricore@VERSION@.so diff --git a/pkgs/development/libraries/mesa/rtti.patch b/pkgs/development/libraries/mesa/rtti.patch new file mode 100644 index 00000000000..6b123139013 --- /dev/null +++ b/pkgs/development/libraries/mesa/rtti.patch @@ -0,0 +1,72 @@ +http://lists.freedesktop.org/archives/mesa-dev/2013-October/046311.html + +* As discussed on the mailing list, + forced no-rtti breaks C++ public + API's such as the Haiku C++ libGL.so +* -fno-rtti *can* be still set however + instead of blindly forcing -fno-rtti, + we can rely on the llvm-config + --cppflags output. + If the system llvm is built without + rtti (default), the no-rtti flag will be + present in llvm-config --cppflags + (which we pick up on) + If llvm is built with rtti + (REQUIRES_RTTI=1), then -fno-rtti is + removed from llvm-config --cppflags. +* We could selectively add / remove rtti + from various components, however mixing + rtti and non-rtti code is tricky and + could introduce bugs. +* This needs impact tested. +--- + configure.ac | 1 - + scons/llvm.py | 3 --- + src/gallium/auxiliary/Makefile.am | 6 ------ + 3 files changed, 10 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 0d082d2..3335575 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1943,7 +1943,6 @@ AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes) + AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes) + AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes) + AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1) +-AM_CONDITIONAL(LLVM_NEEDS_FNORTTI, test $LLVM_VERSION_INT -ge 302) + + AC_SUBST([ELF_LIB]) + +diff --git a/scons/llvm.py b/scons/llvm.py +index 7cd609c..c1c3736 100644 +--- a/scons/llvm.py ++++ b/scons/llvm.py +@@ -195,9 +195,6 @@ def generate(env): + if llvm_version >= distutils.version.LooseVersion('3.1'): + components.append('mcjit') + +- if llvm_version >= distutils.version.LooseVersion('3.2'): +- env.Append(CXXFLAGS = ('-fno-rtti',)) +- + env.ParseConfig('llvm-config --libs ' + ' '.join(components)) + env.ParseConfig('llvm-config --ldflags') + except OSError: +diff --git a/src/gallium/auxiliary/Makefile.am b/src/gallium/auxiliary/Makefile.am +index 670e124..2d2d8d4 100644 +--- a/src/gallium/auxiliary/Makefile.am ++++ b/src/gallium/auxiliary/Makefile.am +@@ -25,12 +25,6 @@ AM_CXXFLAGS += \ + $(GALLIUM_CFLAGS) \ + $(LLVM_CXXFLAGS) + +-if LLVM_NEEDS_FNORTTI +- +-AM_CXXFLAGS += -fno-rtti +- +-endif +- + libgallium_la_SOURCES += \ + $(GALLIVM_SOURCES) \ + $(GALLIVM_CPP_SOURCES) +-- +1.8.4 diff --git a/pkgs/development/libraries/mesa/static-gallium.patch b/pkgs/development/libraries/mesa/static-gallium.patch index 755682d9f1e..bb3f60eaf88 100644 --- a/pkgs/development/libraries/mesa/static-gallium.patch +++ b/pkgs/development/libraries/mesa/static-gallium.patch @@ -1,11 +1,4 @@ -commit 2c910b6f186616cac8134e2a2cbe239c8351ed99 -Author: Vladimír Čunát -Date: Mon May 13 11:34:34 2013 +0200 - - 117-static-gallium.patch - - Conflicts (moving of VISIBILITY_ confused the merge): - src/gallium/auxiliary/Makefile.am +117-static-gallium.patch from Ubuntu Trusty diff --git a/configure.ac b/configure.ac index b9fcb0b..be89843 100644 diff --git a/pkgs/development/libraries/mesa/werror-wundef.patch b/pkgs/development/libraries/mesa/werror-wundef.patch deleted file mode 100644 index 4663f68bd7d..00000000000 --- a/pkgs/development/libraries/mesa/werror-wundef.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -rupN Mesa-9.2.0-orig/include/GL/gl.h Mesa-9.2.0/include/GL/gl.h ---- Mesa-9.2.0-orig/include/GL/gl.h 2013-08-14 03:34:42.000000000 +0200 -+++ Mesa-9.2.0/include/GL/gl.h 2013-09-24 19:34:58.319140812 +0200 -@@ -2088,7 +2088,7 @@ typedef void (APIENTRYP PFNGLMULTITEXCOO - - - --#if GL_ARB_shader_objects -+#if defined(GL_ARB_shaders_objects) && GL_ARB_shader_objects - - #ifndef GL_MESA_shader_debug - #define GL_MESA_shader_debug 1 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f0ba9b3c29e..10faa642844 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5252,7 +5252,7 @@ let mesaSupported = lib.elem system lib.platforms.mesaPlatforms; - mesa_original = callPackage ../development/libraries/mesa { llvm = llvm_33; }; + mesa_original = callPackage ../development/libraries/mesa { }; mesa_noglu = if stdenv.isDarwin then darwinX11AndOpenGL // { driverLink = mesa_noglu; } else mesa_original;