about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorJoachim F <joachifm@users.noreply.github.com>2017-12-29 20:03:43 +0000
committerGitHub <noreply@github.com>2017-12-29 20:03:43 +0000
commit56518ff5ac232b41a96f3c191103e309309cbe9e (patch)
tree9e4bd7c9afddcadf3c4b61b0d637e8ef476f81e3 /pkgs
parenteaf2877cd86ad5a7afabe949f0763da03f3fa8b6 (diff)
parent039cb6291de0358fe89fb455c219a0ab891060be (diff)
downloadnixlib-56518ff5ac232b41a96f3c191103e309309cbe9e.tar
nixlib-56518ff5ac232b41a96f3c191103e309309cbe9e.tar.gz
nixlib-56518ff5ac232b41a96f3c191103e309309cbe9e.tar.bz2
nixlib-56518ff5ac232b41a96f3c191103e309309cbe9e.tar.lz
nixlib-56518ff5ac232b41a96f3c191103e309309cbe9e.tar.xz
nixlib-56518ff5ac232b41a96f3c191103e309309cbe9e.tar.zst
nixlib-56518ff5ac232b41a96f3c191103e309309cbe9e.zip
Merge pull request #32230 from bkchr/renderdoc
renderdoc: Fixes build with missing SWIG_PACKAGE
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/graphics/renderdoc/custom_swig.patch32
-rw-r--r--pkgs/applications/graphics/renderdoc/default.nix30
2 files changed, 60 insertions, 2 deletions
diff --git a/pkgs/applications/graphics/renderdoc/custom_swig.patch b/pkgs/applications/graphics/renderdoc/custom_swig.patch
new file mode 100644
index 000000000000..e6ed05ea97a5
--- /dev/null
+++ b/pkgs/applications/graphics/renderdoc/custom_swig.patch
@@ -0,0 +1,32 @@
+diff --git a/qrenderdoc/CMakeLists.txt b/qrenderdoc/CMakeLists.txt
+index 2df9ffa5..66bafaba 100644
+--- a/qrenderdoc/CMakeLists.txt
++++ b/qrenderdoc/CMakeLists.txt
+@@ -65,16 +65,6 @@ include(ExternalProject)
+ # Need bison for swig
+ find_package(BISON)
+ 
+-# Compile our custom SWIG that will do scoped/strong enum classes
+-ExternalProject_Add(custom_swig
+-    # using an URL to a zip directly so we don't clone the history etc
+-    URL ${RENDERDOC_SWIG_PACKAGE}
+-    BUILD_IN_SOURCE 1
+-    CONFIGURE_COMMAND ./autogen.sh > /dev/null 2>&1
+-    COMMAND CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} ./configure --with-pcre=yes --prefix=${CMAKE_BINARY_DIR} > /dev/null
+-    BUILD_COMMAND $(MAKE) > /dev/null 2>&1
+-    INSTALL_COMMAND $(MAKE) install > /dev/null 2>&1)
+-
+ # Lastly find PySide 2, optionally, for Qt5 Python bindings
+ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
+ 
+@@ -186,9 +176,8 @@ foreach(in ${swig_interfaces})
+     get_filename_component(swig_file ${in} NAME_WE)
+ 
+     add_custom_command(OUTPUT ${swig_file}_python.cxx ${swig_file}.py
+-            COMMAND ${CMAKE_BINARY_DIR}/bin/swig -v -Wextra -Werror -O -c++ -python -modern -modernargs -enumclass -fastunpack -py3 -builtin -I${CMAKE_CURRENT_SOURCE_DIR} -I${CMAKE_SOURCE_DIR}/renderdoc/api/replay -outdir ${CMAKE_CURRENT_BINARY_DIR} -o ${CMAKE_CURRENT_BINARY_DIR}/${swig_file}_python.cxx ${CMAKE_CURRENT_SOURCE_DIR}/${in}
++	    COMMAND $ENV{NIXOS_CUSTOM_SWIG} -v -Wextra -Werror -O -c++ -python -modern -modernargs -enumclass -fastunpack -py3 -builtin -I${CMAKE_CURRENT_SOURCE_DIR} -I${CMAKE_SOURCE_DIR}/renderdoc/api/replay -outdir ${CMAKE_CURRENT_BINARY_DIR} -o ${CMAKE_CURRENT_BINARY_DIR}/${swig_file}_python.cxx ${CMAKE_CURRENT_SOURCE_DIR}/${in}
+             DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${in}
+-            DEPENDS custom_swig
+             DEPENDS ${RDOC_REPLAY_FILES}
+             DEPENDS ${QRD_INTERFACE_FILES})
+ 
diff --git a/pkgs/applications/graphics/renderdoc/default.nix b/pkgs/applications/graphics/renderdoc/default.nix
index 2a5bbb9401a4..2bd3ab89161f 100644
--- a/pkgs/applications/graphics/renderdoc/default.nix
+++ b/pkgs/applications/graphics/renderdoc/default.nix
@@ -1,8 +1,26 @@
 { stdenv, fetchFromGitHub, cmake, pkgconfig
 , qtbase, qtx11extras, qtsvg, makeWrapper, python3, bison
-, autoconf, automake, pcre, vulkan-loader, xorg
+, pcre, vulkan-loader, xorg, autoreconfHook
 }:
 
+let
+  custom_swig = stdenv.mkDerivation {
+    name = "renderdoc-custom-swig";
+    src = fetchFromGitHub {
+      owner = "baldurk";
+      repo = "swig";
+      rev = "renderdoc-modified-1";
+      sha256 = "1whymd3vamwnp4jqfc9asls3dw9wsdi21xhm1d2a4vx9nql8if1x";
+    };
+
+    nativeBuildInputs = [ autoreconfHook pcre ];
+
+    autoreconfPhase = ''
+      patchShebangs autogen.sh
+      ./autogen.sh
+    '';
+  };
+in
 stdenv.mkDerivation rec {
   name = "renderdoc-${version}";
   version = "0.91";
@@ -17,7 +35,8 @@ stdenv.mkDerivation rec {
   buildInputs = [
     qtbase qtsvg xorg.libpthreadstubs xorg.libXdmcp qtx11extras vulkan-loader
   ];
-  nativeBuildInputs = [ cmake makeWrapper pkgconfig python3 bison autoconf automake pcre ];
+
+  nativeBuildInputs = [ cmake makeWrapper pkgconfig python3 bison ];
 
   cmakeFlags = [
     "-DBUILD_VERSION_HASH=${src.rev}"
@@ -28,6 +47,7 @@ stdenv.mkDerivation rec {
     # TODO: use this instead of preConfigure once placeholders land
     #"-DVULKAN_LAYER_FOLDER=${placeholder out}/share/vulkan/implicit_layer.d/"
   ];
+
   preConfigure = ''
     cmakeFlags+=" -DVULKAN_LAYER_FOLDER=$out/share/vulkan/implicit_layer.d/"
   '';
@@ -41,8 +61,14 @@ stdenv.mkDerivation rec {
     ln -s $out/bin/.bin/renderdoccmd $out/bin/renderdoccmd
     wrapProgram $out/bin/renderdoccmd --suffix LD_LIBRARY_PATH : $out/lib --suffix LD_LIBRARY_PATH : ${vulkan-loader}/lib
   '';
+
+  # Set path to custom swig binary
+  NIXOS_CUSTOM_SWIG = "${custom_swig}/bin/swig";
+
   enableParallelBuilding = true;
 
+  patches = [ ./custom_swig.patch ];
+
   meta = with stdenv.lib; {
     description = "A single-frame graphics debugger";
     homepage = https://renderdoc.org/;