All of lore.kernel.org
 help / color / mirror / Atom feed
From: Adrian Ratiu <adrian.ratiu@collabora.com>
To: Khem Raj <raj.khem@gmail.com>,
	openembeded-devel <openembedded-devel@lists.openembedded.org>
Subject: [meta-oe][PATCH v3] renderdoc: add new recipe
Date: Fri, 27 Sep 2019 19:56:05 +0300	[thread overview]
Message-ID: <20190927165605.1900768-1-adrian.ratiu@collabora.com> (raw)

RenderDoc is a MIT licensed stand-alone multi-platform graphics
debugger that allows easy frame by frame capture and detailed
introspection of any applications using Vulkan, OpenGL, OpenGL ES,
and others.

Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
---

Changes since v2:
    - Replace the multiple COMPATIBLE_MACHINE assignments with a single
    COMPATIBLE_HOST regexp

Changes since v1:
    - Add COMPATIBLE_MACHINE assignemnts to avoid CI failures on
    unsupported architectures
    - Add libc test because recipe is only buildable with glibc,
    tested against musl
    - Minor whitespace fixes

 ...d-instead-of-cross-compiling-shim-bi.patch | 57 +++++++++++++++++++
 ...eLists.txt-remove-flag-unsupported-b.patch | 48 ++++++++++++++++
 .../renderdoc/renderdoc_1.4.bb                | 37 ++++++++++++
 3 files changed, 142 insertions(+)
 create mode 100644 meta-oe/recipes-graphics/renderdoc/renderdoc/0001-renderdoc-use-xxd-instead-of-cross-compiling-shim-bi.patch
 create mode 100644 meta-oe/recipes-graphics/renderdoc/renderdoc/0002-q-renderdoc-CMakeLists.txt-remove-flag-unsupported-b.patch
 create mode 100644 meta-oe/recipes-graphics/renderdoc/renderdoc_1.4.bb

diff --git a/meta-oe/recipes-graphics/renderdoc/renderdoc/0001-renderdoc-use-xxd-instead-of-cross-compiling-shim-bi.patch b/meta-oe/recipes-graphics/renderdoc/renderdoc/0001-renderdoc-use-xxd-instead-of-cross-compiling-shim-bi.patch
new file mode 100644
index 000000000..e96dedfc3
--- /dev/null
+++ b/meta-oe/recipes-graphics/renderdoc/renderdoc/0001-renderdoc-use-xxd-instead-of-cross-compiling-shim-bi.patch
@@ -0,0 +1,57 @@
+From 41a8c9b5ac13066770baee476ebf9828371f4dad Mon Sep 17 00:00:00 2001
+From: Adrian Ratiu <adrian.ratiu@collabora.com>
+Date: Tue, 24 Sep 2019 16:07:18 +0300
+Subject: [PATCH] renderdoc: use xxd instead of cross-compiling shim binary
+
+Renderdoc's attempt to cross compile an xxd replacement by directly
+calling a host cross-compiler breaks under OE's recipe specific
+sysroots protection because this is not a native recipe, so we just
+use xxd-native instead.
+
+Upstream-Status: Inappropriate [embedded-specific]
+
+---
+ renderdoc/CMakeLists.txt | 23 +----------------------
+ 1 file changed, 1 insertion(+), 22 deletions(-)
+
+diff --git a/renderdoc/CMakeLists.txt b/renderdoc/CMakeLists.txt
+index 5cb7440a4..453a034ba 100644
+--- a/renderdoc/CMakeLists.txt
++++ b/renderdoc/CMakeLists.txt
+@@ -370,26 +370,6 @@ set(data
+ set(data_objects)
+ 
+ if(UNIX)
+-    # If we're cross-compiling, include-bin will get built for the target and we
+-    # then can't execute it. Instead, we force calling c++ (which we can safely
+-    # assume is present) directly to build the binary
+-
+-    if(CMAKE_CROSSCOMPILING)
+-        set(HOST_NATIVE_CPP_COMPILER c++ CACHE STRING "Command to run to compile a .cpp into an executable. Default is just c++")
+-
+-        add_custom_command(OUTPUT ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/include-bin
+-            WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+-            COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
+-            COMMAND ${HOST_NATIVE_CPP_COMPILER} 3rdparty/include-bin/main.cpp -o ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/include-bin
+-            DEPENDS 3rdparty/include-bin/main.cpp)
+-        set(INCLUDE_BIN_EXE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/include-bin")
+-        set(INCLUDE_BIN_DEP "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/include-bin")
+-    else()
+-        add_executable(include-bin 3rdparty/include-bin/main.cpp)
+-        set(INCLUDE_BIN_EXE $<TARGET_FILE:include-bin>)
+-        set(INCLUDE_BIN_DEP include-bin)
+-    endif()
+-
+     foreach(res ${data})
+         set(in ${res})
+         set(working_dir ${CMAKE_CURRENT_SOURCE_DIR})
+@@ -399,8 +379,7 @@ if(UNIX)
+         add_custom_command(OUTPUT ${out_src}
+             WORKING_DIRECTORY ${working_dir}
+             COMMAND ${CMAKE_COMMAND} -E make_directory ${out_src_dir}
+-            COMMAND ${INCLUDE_BIN_EXE} ${in} ${out_src}
+-            DEPENDS ${INCLUDE_BIN_DEP}
++            COMMAND xxd -i ${in} ${out_src}
+             DEPENDS ${res})
+ 
+         list(APPEND data_objects ${out_src})
diff --git a/meta-oe/recipes-graphics/renderdoc/renderdoc/0002-q-renderdoc-CMakeLists.txt-remove-flag-unsupported-b.patch b/meta-oe/recipes-graphics/renderdoc/renderdoc/0002-q-renderdoc-CMakeLists.txt-remove-flag-unsupported-b.patch
new file mode 100644
index 000000000..8cfac3b0e
--- /dev/null
+++ b/meta-oe/recipes-graphics/renderdoc/renderdoc/0002-q-renderdoc-CMakeLists.txt-remove-flag-unsupported-b.patch
@@ -0,0 +1,48 @@
+From 40511a6f4dc6311c8cf7f2954d1202ede55881ff Mon Sep 17 00:00:00 2001
+From: Adrian Ratiu <adrian.ratiu@collabora.com>
+Date: Wed, 25 Sep 2019 19:31:14 +0300
+Subject: [PATCH] (q)renderdoc/CMakeLists.txt: remove flag unsupported by GCC
+
+-Wno-unknown-warning is not supported by GCC, only by Clang so we
+remove it because newer GCC versions like 9.2.0 will complain, older
+versions would just ignore it.
+
+Upstream-Status: Pending [https://github.com/baldurk/renderdoc/pull/1530]
+
+Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
+
+---
+ qrenderdoc/CMakeLists.txt | 2 +-
+ renderdoc/CMakeLists.txt  | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/qrenderdoc/CMakeLists.txt b/qrenderdoc/CMakeLists.txt
+index 9fd65b2d3..d52dd274e 100644
+--- a/qrenderdoc/CMakeLists.txt
++++ b/qrenderdoc/CMakeLists.txt
+@@ -149,7 +149,7 @@ file(WRITE
+ if(CMAKE_COMPILER_IS_GNUCXX)
+     file(APPEND
+         ${CMAKE_BINARY_DIR}/qrenderdoc/qrenderdoc_cmake.pri
+-        "QMAKE_CXXFLAGS+=-Wno-unknown-warning -Wno-implicit-fallthrough -Wno-cast-function-type -Wno-stringop-truncation\n")
++        "QMAKE_CXXFLAGS+=-Wno-implicit-fallthrough -Wno-cast-function-type -Wno-stringop-truncation\n")
+ endif()
+ 
+ # propagate build version info. Lots of escaping needed here to pass ""s into the define value
+diff --git a/renderdoc/CMakeLists.txt b/renderdoc/CMakeLists.txt
+index 453a034ba..abe7e1302 100644
+--- a/renderdoc/CMakeLists.txt
++++ b/renderdoc/CMakeLists.txt
+@@ -320,10 +320,10 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR APPLE)
+ 
+     if(CMAKE_COMPILER_IS_GNUCXX)
+         set_property(SOURCE 3rdparty/jpeg-compressor/jpgd.cpp
+-            APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-unknown-warning -Wno-implicit-fallthrough")
++            APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-implicit-fallthrough")
+ 
+         set_property(SOURCE strings/utf8printf.cpp
+-            APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-unknown-warning -Wno-format-truncation")
++            APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-format-truncation")
+     endif()
+ 
+     # Need to add -Wno-unknown-warning-option since only newer clang versions have
diff --git a/meta-oe/recipes-graphics/renderdoc/renderdoc_1.4.bb b/meta-oe/recipes-graphics/renderdoc/renderdoc_1.4.bb
new file mode 100644
index 000000000..1bd0c71b4
--- /dev/null
+++ b/meta-oe/recipes-graphics/renderdoc/renderdoc_1.4.bb
@@ -0,0 +1,37 @@
+SUMMARY = "RenderDoc recipe providing renderdoccmd"
+DESCRIPTION = "RenderDoc is a frame-capture based graphics debugger"
+HOMEPAGE = "https://github.com/baldurk/renderdoc"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=9753b1b4fba3261c27d1ce5c1acef667"
+
+SRCREV = "214d85228538e71cc63a0d7fa11dd75b1d56cc81"
+SRC_URI = "git://github.com/baldurk/${BPN}.git;protocol=http;branch=v1.x \
+	   file://0001-renderdoc-use-xxd-instead-of-cross-compiling-shim-bi.patch \
+	   file://0002-q-renderdoc-CMakeLists.txt-remove-flag-unsupported-b.patch \
+"
+S = "${WORKDIR}/git"
+
+DEPENDS += "virtual/libx11 virtual/libgl libxcb xcb-util-keysyms vim-native"
+
+RDEPENDS_${PN} = "libxcb xcb-util-keysyms"
+
+inherit cmake python3native
+
+python __anonymous () {
+    # only works on glibc systems
+    if d.getVar('TCLIBC') != "glibc":
+        raise bb.parse.SkipRecipe("incompatible with %s C library" % d.getVar('TCLIBC'))
+}
+
+COMPATIBLE_HOST = "(x86_64|i.86|arm|aarch64).*-linux"
+
+EXTRA_OECMAKE += "\
+    -DENABLE_QRENDERDOC=OFF \
+    -DENABLE_PYRENDERDOC=OFF \
+    -DENABLE_RENDERDOCCMD=ON \
+"
+
+TARGET_CFLAGS += "-Wno-error=deprecated-copy"
+
+FILES_${PN} += "${libdir}"
+FILES_${PN}-dev = "${includedir}"
-- 
2.23.0



             reply	other threads:[~2019-09-27 16:56 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-27 16:56 Adrian Ratiu [this message]
2019-09-28 19:48 ` [meta-oe][PATCH v3] renderdoc: add new recipe Khem Raj
2019-09-29 12:40   ` Adrian Bunk
2019-09-29 17:46     ` Adrian Ratiu
2019-10-03 23:37       ` Martin Jansa
2019-10-04  9:53         ` Adrian Ratiu
2019-10-04 16:31           ` Khem Raj
2019-09-29 17:41   ` Adrian Ratiu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190927165605.1900768-1-adrian.ratiu@collabora.com \
    --to=adrian.ratiu@collabora.com \
    --cc=openembedded-devel@lists.openembedded.org \
    --cc=raj.khem@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.