summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /dev-util/apitrace/files
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'dev-util/apitrace/files')
-rw-r--r--dev-util/apitrace/files/apitrace-4.0-disable-multiarch.patch32
-rw-r--r--dev-util/apitrace/files/apitrace-4.0-glext-texture-storage.patch73
-rw-r--r--dev-util/apitrace/files/apitrace-4.0-glxcopysubbuffermesa.patch80
-rw-r--r--dev-util/apitrace/files/apitrace-4.0-glxtrace-only.patch49
-rw-r--r--dev-util/apitrace/files/apitrace-4.0-memcpy.patch13
-rw-r--r--dev-util/apitrace/files/apitrace-4.0-multilib.patch59
-rw-r--r--dev-util/apitrace/files/apitrace-4.0-system-libs.patch72
-rw-r--r--dev-util/apitrace/files/apitrace-5.0-disable-multiarch.patch34
-rw-r--r--dev-util/apitrace/files/apitrace-5.0-glxtrace-only.patch53
-rw-r--r--dev-util/apitrace/files/apitrace-6.0-disable-multiarch.patch35
10 files changed, 500 insertions, 0 deletions
diff --git a/dev-util/apitrace/files/apitrace-4.0-disable-multiarch.patch b/dev-util/apitrace/files/apitrace-4.0-disable-multiarch.patch
new file mode 100644
index 000000000000..0ced4d84cbf6
--- /dev/null
+++ b/dev-util/apitrace/files/apitrace-4.0-disable-multiarch.patch
@@ -0,0 +1,32 @@
+respect the libdir cmake already set up for us instead of using the multiarch crap
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -184,12 +184,6 @@ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
+ # Installation directories
+
+ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+- # Debian multiarch support
+- execute_process(COMMAND dpkg-architecture -qDEB_HOST_MULTIARCH
+- OUTPUT_VARIABLE ARCH_SUBDIR
+- ERROR_QUIET
+- OUTPUT_STRIP_TRAILING_WHITESPACE
+- )
+ CHECK_INCLUDE_FILES(proc/readproc.h READPROC_H_FOUND)
+ if (READPROC_H_FOUND)
+ add_definitions (-DHAVE_READPROC_H)
+@@ -205,11 +205,11 @@ if (WIN32 OR APPLE)
+ set (LIB_ARCH_INSTALL_DIR lib)
+ else ()
+ set (DOC_INSTALL_DIR share/doc/${CMAKE_PROJECT_NAME})
+- set (LIB_INSTALL_DIR lib/${CMAKE_PROJECT_NAME})
++ set (LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/${CMAKE_PROJECT_NAME})
+ if (ARCH_SUBDIR)
+- set (LIB_ARCH_INSTALL_DIR lib/${ARCH_SUBDIR}/${CMAKE_PROJECT_NAME})
++ set (LIB_ARCH_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/${ARCH_SUBDIR}/${CMAKE_PROJECT_NAME})
+ else ()
+- set (LIB_ARCH_INSTALL_DIR lib/${CMAKE_PROJECT_NAME})
++ set (LIB_ARCH_INSTALL_DIR ${LIB_INSTALL_DIR})
+ endif ()
+ endif ()
+
diff --git a/dev-util/apitrace/files/apitrace-4.0-glext-texture-storage.patch b/dev-util/apitrace/files/apitrace-4.0-glext-texture-storage.patch
new file mode 100644
index 000000000000..2d04db408693
--- /dev/null
+++ b/dev-util/apitrace/files/apitrace-4.0-glext-texture-storage.patch
@@ -0,0 +1,73 @@
+Upstream commit to support GL_EXT_texture_storage.
+
+commit 0436cc01329b6be60801dd7bfe641be7d8be5bc7
+Author: José Fonseca <jfonseca@vmware.com>
+Date: Wed Nov 13 13:57:43 2013 +0000
+
+ egltrace: Add GL_EXT_texture_storage entrypoints
+
+ Prototypes obtained through:
+
+ specs/scripts/gltxt.py http://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt
+
+ Issue #184.
+
+commit 0bacf23eacd15c8f15413b85bdcb6ccc4d288f37
+Author: José Fonseca <jfonseca@vmware.com>
+Date: Wed Nov 13 13:59:51 2013 +0000
+
+ glxtrace: Add GLES prototypes too.
+
+ Some applications seem to fail to distinguish GLES and GL entrypoints
+ apart. To have complete traces in that situation, generate wrappers
+ for both GLES and GL prototypes.
+
+ Issue #184.
+
+--- apitrace/specs/glesapi.py
++++ apitrace/specs/glesapi.py
+@@ -255,4 +255,16 @@ glesapi.addFunctions([
+ #GlFunction(Void, "glProgramUniformMatrix4fvEXT", [(GLprogram, "program"), (GLlocation, "location"), (GLsizei, "count"), (GLboolean, "transpose"), (Array(Const(GLfloat), "count*4*4"), "value")]),
+ GlFunction(Void, "glValidateProgramPipelineEXT", [(GLpipeline, "pipeline")]),
+ GlFunction(Void, "glGetProgramPipelineInfoLogEXT", [(GLpipeline, "pipeline"), (GLsizei, "bufSize"), Out(Pointer(GLsizei), "length"), Out(GLstring, "infoLog")], sideeffects=False),
++
++ # GL_EXT_multisampled_render_to_texture
++ #GlFunction(Void, "glRenderbufferStorageMultisampleEXT", [(GLenum, "target"), (GLsizei, "samples"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
++ GlFunction(Void, "glFramebufferTexture2DMultisampleEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLtexture, "texture"), (GLint, "level"), (GLsizei, "samples")]),
++
++ # GL_EXT_texture_storage
++ GlFunction(Void, "glTexStorage1DEXT", [(GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width")]),
++ GlFunction(Void, "glTexStorage2DEXT", [(GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
++ GlFunction(Void, "glTexStorage3DEXT", [(GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth")]),
++ #GlFunction(Void, "glTextureStorage1DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width")]),
++ #GlFunction(Void, "glTextureStorage2DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
++ #GlFunction(Void, "glTextureStorage3DEXT", [(GLtexture, "texture"), (GLenum, "target"), (GLsizei, "levels"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height"), (GLsizei, "depth")]),
+ ])
+--- apitrace/wrappers/CMakeLists.txt
++++ apitrace/wrappers/CMakeLists.txt
+@@ -393,6 +393,7 @@ elseif (X11_FOUND)
+ gltrace.py
+ trace.py
+ ${CMAKE_SOURCE_DIR}/specs/glxapi.py
++ ${CMAKE_SOURCE_DIR}/specs/glesapi.py
+ ${CMAKE_SOURCE_DIR}/specs/glapi.py
+ ${CMAKE_SOURCE_DIR}/specs/glparams.py
+ ${CMAKE_SOURCE_DIR}/specs/gltypes.py
+--- apitrace/wrappers/glxtrace.py
++++ apitrace/wrappers/glxtrace.py
+@@ -32,6 +32,7 @@ from gltrace import GlTracer
+ from specs.stdapi import Module, API
+ from specs.glapi import glapi
+ from specs.glxapi import glxapi
++from specs.glesapi import glesapi
+
+
+ class GlxTracer(GlTracer):
+@@ -104,6 +105,7 @@ if __name__ == '__main__':
+ module = Module()
+ module.mergeModule(glxapi)
+ module.mergeModule(glapi)
++ module.mergeModule(glesapi)
+ api = API()
+ api.addModule(module)
+ tracer = GlxTracer()
diff --git a/dev-util/apitrace/files/apitrace-4.0-glxcopysubbuffermesa.patch b/dev-util/apitrace/files/apitrace-4.0-glxcopysubbuffermesa.patch
new file mode 100644
index 000000000000..4dd3cdc6be3a
--- /dev/null
+++ b/dev-util/apitrace/files/apitrace-4.0-glxcopysubbuffermesa.patch
@@ -0,0 +1,80 @@
+Upstream commit to support glxCopySubBufferMESA. Modified to fix compile error with egl.
+
+commit 4dc3f3bdc3611ca1b3dec402f9242a036db8c8e4
+Author: Carl Worth <cworth@cworth.org>
+Date: Thu Oct 17 14:52:21 2013 -0700
+
+ retrace: Implement glxCopySubBufferMESA
+
+ This enables replay of a trace captured on ChromeOS.
+
+ Note: Replaying on EGL is not supported, (will trigger a warning),
+ since, as far as I know, EGL does not provide an equivalent function.
+
+--- apitrace/retrace/glretrace_glx.cpp
++++ apitrace/retrace/glretrace_glx.cpp
+@@ -111,6 +111,16 @@ static void retrace_glXDestroyContext(trace::Call &call) {
+ delete context;
+ }
+
++static void retrace_glXCopySubBufferMESA(trace::Call &call) {
++ glws::Drawable *drawable = getDrawable(call.arg(1).toUInt());
++ int x = call.arg(2).toSInt();
++ int y = call.arg(3).toSInt();
++ int width = call.arg(4).toSInt();
++ int height = call.arg(5).toSInt();
++
++ drawable->copySubBuffer(x, y, width, height);
++}
++
+ static void retrace_glXSwapBuffers(trace::Call &call) {
+ glws::Drawable *drawable = getDrawable(call.arg(1).toUInt());
+
+@@ -173,7 +183,7 @@ const retrace::Entry glretrace::glx_callbacks[] = {
+ {"glXChooseVisual", &retrace::ignore},
+ //{"glXCopyContext", &retrace_glXCopyContext},
+ //{"glXCopyImageSubDataNV", &retrace_glXCopyImageSubDataNV},
+- //{"glXCopySubBufferMESA", &retrace_glXCopySubBufferMESA},
++ {"glXCopySubBufferMESA", &retrace_glXCopySubBufferMESA},
+ {"glXCreateContextAttribsARB", &retrace_glXCreateContextAttribsARB},
+ {"glXCreateContext", &retrace_glXCreateContext},
+ //{"glXCreateContextWithConfigSGIX", &retrace_glXCreateContextWithConfigSGIX},
+--- apitrace/retrace/glws.hpp
++++ apitrace/retrace/glws.hpp
+@@ -127,6 +127,8 @@ public:
+ visible = true;
+ }
+
++ virtual void copySubBuffer(int x, int y, int width, int height) = 0;
++
+ virtual void swapBuffers(void) = 0;
+ };
+
+--- apitrace/retrace/glws_egl_xlib.cpp
++++ apitrace/retrace/glws_egl_xlib.cpp
+@@ -244,6 +244,10 @@ public:
+ Drawable::show();
+ }
+
++ void copySubBuffer(int x, int y, int width, int height) {
++ std::cerr << "glws_egl_xlib: Warning: copySubBuffer Not yet implemented\n";
++ }
++
+ void swapBuffers(void) {
+ eglBindAPI(api);
+ eglSwapBuffers(eglDisplay, surface);
+--- apitrace/retrace/glws_glx.cpp
++++ apitrace/retrace/glws_glx.cpp
+@@ -213,6 +213,12 @@ public:
+ Drawable::show();
+ }
+
++ void copySubBuffer(int x, int y, int width, int height) {
++ glXCopySubBufferMESA(display, window, x, y, width, height);
++
++ processKeys();
++ }
++
+ void swapBuffers(void) {
+ glXSwapBuffers(display, window);
+
diff --git a/dev-util/apitrace/files/apitrace-4.0-glxtrace-only.patch b/dev-util/apitrace/files/apitrace-4.0-glxtrace-only.patch
new file mode 100644
index 000000000000..08ce65e2fc0a
--- /dev/null
+++ b/dev-util/apitrace/files/apitrace-4.0-glxtrace-only.patch
@@ -0,0 +1,49 @@
+Allow building of just glxtrace library for ebuilds without GUI tools.
+
+Updated from 3.0 version of patch to apply against 4.0.
+
+--- apitrace/CMakeLists.txt
++++ apitrace/CMakeLists.txt
+@@ -30,6 +30,7 @@ set (ENABLE_CLI true CACHE BOOL "Enable command Line interface.")
+
+ set (ENABLE_EGL true CACHE BOOL "Enable EGL support.")
+
++option (BUILD_LIB_ONLY "Build the glxtrace library only" OFF)
+
+ ##############################################################################
+ # Find dependencies
+@@ -248,6 +255,8 @@ endif ()
+ # - The packaged versions QJson are very old, and do not support NaN/Infinity.
+ # - To make it easier to build the GUI on Windows and MacOSX, as there are no
+ # binaries at all.
++if (NOT BUILD_LIB_ONLY)
++
+ if (QT4_FOUND)
+ add_definitions (-DQJSON_EXPORT=)
+ add_subdirectory (thirdparty/qjson)
+@@ -257,6 +266,8 @@ if (QT4_FOUND)
+ set (QJSON_FOUND TRUE)
+ endif ()
+
++endif (NOT BUILD_LIB_ONLY)
++
+ # We use bundled headers for all Khronos APIs, to guarantee support for both
+ # OpenGL and OpenGL ES at build time, because the OpenGL and OpenGL ES 1 APIs
+ # are so intertwined that conditional compilation extremely difficult. This
+--- apitrace/retrace/CMakeLists.txt
++++ apitrace/retrace/CMakeLists.txt
+@@ -11,6 +11,8 @@ include_directories (
+
+ add_definitions (-DRETRACE)
+
++if (NOT BUILD_LIB_ONLY)
++
+ add_custom_command (
+ OUTPUT glretrace_gl.cpp
+ COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glretrace.py > ${CMAKE_CURRENT_BINARY_DIR}/glretrace_gl.cpp
+@@ -259,3 +261,5 @@ if (WIN32)
+
+ install (TARGETS d3dretrace RUNTIME DESTINATION bin)
+ endif ()
++
++endif (NOT BUILD_LIB_ONLY)
diff --git a/dev-util/apitrace/files/apitrace-4.0-memcpy.patch b/dev-util/apitrace/files/apitrace-4.0-memcpy.patch
new file mode 100644
index 000000000000..5b49808ada9b
--- /dev/null
+++ b/dev-util/apitrace/files/apitrace-4.0-memcpy.patch
@@ -0,0 +1,13 @@
+http://bugs.gentoo.org/465504
+http://github.com/apitrace/apitrace/issues/118
+
+--- a/image/image_png.cpp
++++ b/image/image_png.cpp
+@@ -31,6 +31,7 @@
+ #include <assert.h>
+ #include <stdint.h>
+ #include <stdlib.h>
++#include <string.h>
+
+ #include <fstream>
+
diff --git a/dev-util/apitrace/files/apitrace-4.0-multilib.patch b/dev-util/apitrace/files/apitrace-4.0-multilib.patch
new file mode 100644
index 000000000000..6ad78c7cde08
--- /dev/null
+++ b/dev-util/apitrace/files/apitrace-4.0-multilib.patch
@@ -0,0 +1,59 @@
+Upstream commit to find wrappers in lib64 directory.
+
+commit 3f9c2ecf18d8fa37fad5a7062f80952692eaa8e7
+Author: Alexander Monakov <amonakov@ispras.ru>
+Date: Wed Oct 16 20:51:47 2013 +0400
+
+ cli: use $LIB to handle multilib automagically on glibc
+
+--- apitrace/cli/CMakeLists.txt
++++ apitrace/cli/CMakeLists.txt
+@@ -31,6 +31,7 @@ target_link_libraries (apitrace
+ ${ZLIB_LIBRARIES}
+ ${SNAPPY_LIBRARIES}
+ ${GETOPT_LIBRARIES}
++ dl
+ )
+
+ if (NOT CMAKE_CROSSCOMPILING)
+--- apitrace/cli/cli_resources.cpp
++++ apitrace/cli/cli_resources.cpp
+@@ -32,6 +32,20 @@
+
+ #include "cli_resources.hpp"
+
++#ifdef __GLIBC__
++
++#include <dlfcn.h>
++
++static bool
++tryLib(const os::String &path)
++{
++ void *handle = dlopen(path.str(), RTLD_LAZY);
++ bool exists = (handle != NULL);
++ if (exists)
++ dlclose(handle);
++ return exists;
++}
++#endif
+
+ os::String
+ findProgram(const char*programFilename)
+@@ -76,6 +90,17 @@ findWrapper(const char *wrapperFilename)
+ return wrapperPath;
+ }
+
++#ifdef __GLIBC__
++ // We want to take advantage of $LIB dynamic string token expansion in
++ // glibc dynamic linker to handle multilib layout for us
++ wrapperPath = processDir;
++ wrapperPath.join("../$LIB/apitrace/wrappers");
++ wrapperPath.join(wrapperFilename);
++ if (tryLib(wrapperPath)) {
++ return wrapperPath;
++ }
++#endif
++
+ // Try relative install directory
+ wrapperPath = processDir;
+ #if defined(_WIN32)
diff --git a/dev-util/apitrace/files/apitrace-4.0-system-libs.patch b/dev-util/apitrace/files/apitrace-4.0-system-libs.patch
new file mode 100644
index 000000000000..68468a30bde1
--- /dev/null
+++ b/dev-util/apitrace/files/apitrace-4.0-system-libs.patch
@@ -0,0 +1,72 @@
+Find external system libraries for ebuild.
+
+Updated from 3.0 version of patch to apply against 4.0.
+
+--- apitrace/CMakeLists.txt
++++ apitrace/CMakeLists.txt
+@@ -224,23 +224,14 @@ set (WRAPPER_INSTALL_DIR ${LIB_ARCH_INSTALL_DIR}/wrappers)
+ # - on unices to prevent symbol collisions when tracing applications that link
+ # against other versions of these libraries
+
+-set (ZLIB_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/zlib)
+-set (ZLIB_LIBRARIES z_bundled)
+-add_subdirectory (thirdparty/zlib)
+-
+-include_directories (${ZLIB_INCLUDE_DIRS})
+-
+-set (SNAPPY_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/snappy)
+-set (SNAPPY_LIBRARIES snappy_bundled)
+-add_subdirectory (thirdparty/snappy)
++find_package (ZLIB REQUIRED)
++include_directories (${ZLIB_INCLUDE_DIRS})
+
++find_package (SNAPPY REQUIRED)
+ include_directories (${SNAPPY_INCLUDE_DIRS})
+
+-set (PNG_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libpng)
+-set (PNG_DEFINITIONS "")
+-set (PNG_LIBRARIES png_bundled)
+-
+-add_subdirectory (thirdparty/libpng)
++find_package (PNG REQUIRED)
++include_directories (${PNG_INCLUDE_DIRS})
+
+ if (MSVC)
+ add_subdirectory (thirdparty/getopt)
+diff --git a/cmake/FindSNAPPY.cmake b/cmake/FindSNAPPY.cmake
+new file mode 100644
+index 0000000..5cd64c3
+--- /dev/null
++++ apitrace/cmake/FindSNAPPY.cmake
+@@ -0,0 +1,31 @@
++# Find SNAPPY - A fast compressor/decompressor
++#
++# This module defines
++# SNAPPY_FOUND - whether the qsjon library was found
++# SNAPPY_LIBRARIES - the snappy library
++# SNAPPY_INCLUDE_DIR - the include path of the snappy library
++#
++
++if (SNAPPY_INCLUDE_DIR AND SNAPPY_LIBRARIES)
++
++ # Already in cache
++ set (SNAPPY_FOUND TRUE)
++
++else (SNAPPY_INCLUDE_DIR AND SNAPPY_LIBRARIES)
++
++ find_library (SNAPPY_LIBRARIES
++ NAMES
++ snappy
++ PATHS
++ )
++
++ find_path (SNAPPY_INCLUDE_DIR
++ NAMES
++ snappy.h
++ PATHS
++ )
++
++ include(FindPackageHandleStandardArgs)
++ find_package_handle_standard_args(SNAPPY DEFAULT_MSG SNAPPY_LIBRARIES SNAPPY_INCLUDE_DIR)
++
++endif (SNAPPY_INCLUDE_DIR AND SNAPPY_LIBRARIES)
diff --git a/dev-util/apitrace/files/apitrace-5.0-disable-multiarch.patch b/dev-util/apitrace/files/apitrace-5.0-disable-multiarch.patch
new file mode 100644
index 000000000000..aac018e65817
--- /dev/null
+++ b/dev-util/apitrace/files/apitrace-5.0-disable-multiarch.patch
@@ -0,0 +1,34 @@
+respect the libdir cmake already set up for us instead of using the multiarch crap
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 17f3dce..c3fe52e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -216,12 +216,6 @@ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
+ # Installation directories
+
+ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+- # Debian multiarch support
+- execute_process(COMMAND dpkg-architecture -qDEB_HOST_MULTIARCH
+- OUTPUT_VARIABLE ARCH_SUBDIR
+- ERROR_QUIET
+- OUTPUT_STRIP_TRAILING_WHITESPACE
+- )
+ CHECK_INCLUDE_FILES(proc/readproc.h READPROC_H_FOUND)
+ if (READPROC_H_FOUND)
+ add_definitions (-DHAVE_READPROC_H)
+@@ -237,11 +231,11 @@ if (WIN32 OR APPLE)
+ set (LIB_ARCH_INSTALL_DIR lib)
+ else ()
+ set (DOC_INSTALL_DIR share/doc/${CMAKE_PROJECT_NAME})
+- set (LIB_INSTALL_DIR lib${LIB_SUFFIX}/${CMAKE_PROJECT_NAME})
++ set (LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/${CMAKE_PROJECT_NAME})
+ if (ARCH_SUBDIR)
+- set (LIB_ARCH_INSTALL_DIR lib/${ARCH_SUBDIR}/${CMAKE_PROJECT_NAME})
++ set (LIB_ARCH_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/${ARCH_SUBDIR}/${CMAKE_PROJECT_NAME})
+ else ()
+- set (LIB_ARCH_INSTALL_DIR lib${LIB_SUFFIX}/${CMAKE_PROJECT_NAME})
++ set (LIB_ARCH_INSTALL_DIR ${LIB_INSTALL_DIR})
+ endif ()
+ endif ()
+
diff --git a/dev-util/apitrace/files/apitrace-5.0-glxtrace-only.patch b/dev-util/apitrace/files/apitrace-5.0-glxtrace-only.patch
new file mode 100644
index 000000000000..03e6143afff0
--- /dev/null
+++ b/dev-util/apitrace/files/apitrace-5.0-glxtrace-only.patch
@@ -0,0 +1,53 @@
+Allow building of just glxtrace library for ebuilds without GUI tools.
+
+Updated from 4.0 version of patch to apply against 5.0.
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 17f3dce..3bba2a9 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -33,6 +33,7 @@ set (ENABLE_EGL true CACHE BOOL "Enable EGL support.")
+
+ set (ENABLE_WAFFLE false CACHE BOOL "Enable WAFFLE support.")
+
++option (BUILD_LIB_ONLY "Build the glxtrace library only" OFF)
+
+ ##############################################################################
+ # Find dependencies
+@@ -301,6 +302,8 @@ set (MD5_LIBRARIES md5_bundled)
+ # - The packaged versions QJson are very old, and do not support NaN/Infinity.
+ # - To make it easier to build the GUI on Windows and MacOSX, as there are no
+ # binaries at all.
++if (NOT BUILD_LIB_ONLY)
++
+ if (QT4_FOUND)
+ add_definitions (-DQJSON_EXPORT=)
+ add_subdirectory (thirdparty/qjson)
+@@ -310,6 +313,8 @@ if (QT4_FOUND)
+ set (QJSON_FOUND TRUE)
+ endif ()
+
++endif (NOT BUILD_LIB_ONLY)
++
+ # We use bundled headers for all Khronos APIs, to guarantee support for both
+ # OpenGL and OpenGL ES at build time, because the OpenGL and OpenGL ES 1 APIs
+ # are so intertwined that conditional compilation extremely difficult. This
+diff --git a/retrace/CMakeLists.txt b/retrace/CMakeLists.txt
+index 4e37979..2607ddf 100644
+--- a/retrace/CMakeLists.txt
++++ b/retrace/CMakeLists.txt
+@@ -11,6 +11,8 @@ include_directories (
+
+ add_definitions (-DRETRACE)
+
++if (NOT BUILD_LIB_ONLY)
++
+ add_custom_command (
+ OUTPUT glretrace_gl.cpp
+ COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glretrace.py > ${CMAKE_CURRENT_BINARY_DIR}/glretrace_gl.cpp
+@@ -282,3 +284,5 @@ if (WIN32)
+
+ install (TARGETS d3dretrace RUNTIME DESTINATION bin)
+ endif ()
++
++endif (NOT BUILD_LIB_ONLY)
diff --git a/dev-util/apitrace/files/apitrace-6.0-disable-multiarch.patch b/dev-util/apitrace/files/apitrace-6.0-disable-multiarch.patch
new file mode 100644
index 000000000000..bc6ba03060a4
--- /dev/null
+++ b/dev-util/apitrace/files/apitrace-6.0-disable-multiarch.patch
@@ -0,0 +1,35 @@
+respect the libdir cmake already set up for us instead of using debian-specific multiarch paths
+
+--- apitrace-6.0/CMakeLists.txt
++++ apitrace-6.0/CMakeLists.txt
+@@ -280,15 +280,6 @@
+ ##############################################################################
+ # Installation directories
+
+-if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+- # Debian multiarch support
+- execute_process(COMMAND dpkg-architecture -qDEB_HOST_MULTIARCH
+- OUTPUT_VARIABLE ARCH_SUBDIR
+- ERROR_QUIET
+- OUTPUT_STRIP_TRAILING_WHITESPACE
+- )
+-endif()
+-
+ if (WIN32 OR APPLE)
+ # On Windows/MacOSX, applications are usually installed on a directory of
+ # their own
+@@ -297,12 +288,8 @@
+ set (LIB_ARCH_INSTALL_DIR lib)
+ else ()
+ set (DOC_INSTALL_DIR share/doc/${CMAKE_PROJECT_NAME})
+- set (LIB_INSTALL_DIR lib${LIB_SUFFIX}/${CMAKE_PROJECT_NAME})
+- if (ARCH_SUBDIR)
+- set (LIB_ARCH_INSTALL_DIR lib/${ARCH_SUBDIR}/${CMAKE_PROJECT_NAME})
+- else ()
+- set (LIB_ARCH_INSTALL_DIR lib${LIB_SUFFIX}/${CMAKE_PROJECT_NAME})
+- endif ()
++ set (LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/${CMAKE_PROJECT_NAME})
++ set (LIB_ARCH_INSTALL_DIR ${LIB_INSTALL_DIR})
+ endif ()
+
+ set (SCRIPTS_INSTALL_DIR ${LIB_INSTALL_DIR}/scripts)