about summary refs log tree commit diff
path: root/pkgs/development/libraries/ncnn
diff options
context:
space:
mode:
authortilcreator <tilcreator@tc-j.de>2021-12-28 17:49:40 +0100
committertilcreator <tilcreator@tc-j.de>2022-01-24 01:14:39 +0100
commit7d8a22436c3af77843729d0552ac6f245e2944f8 (patch)
tree580de506681c7cccbb98dbedf91aac236c74144d /pkgs/development/libraries/ncnn
parentf6f0e1eb553317200174a94f900bb427aca7b0be (diff)
ncnn: init at 20211208
ncnn: Enable vulkan support
Diffstat (limited to 'pkgs/development/libraries/ncnn')
-rw-r--r--pkgs/development/libraries/ncnn/cmakelists.patch13
-rw-r--r--pkgs/development/libraries/ncnn/default.nix50
-rw-r--r--pkgs/development/libraries/ncnn/gpu-include.patch13
3 files changed, 76 insertions, 0 deletions
diff --git a/pkgs/development/libraries/ncnn/cmakelists.patch b/pkgs/development/libraries/ncnn/cmakelists.patch
new file mode 100644
index 0000000000000..23499a1b99225
--- /dev/null
+++ b/pkgs/development/libraries/ncnn/cmakelists.patch
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 98611276..989350bb 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -260,6 +260,8 @@ if(NCNN_VULKAN)
+                 include("${GLSLANG_TARGET_DIR}/HLSLTargets.cmake")
+             endif()
+             include("${GLSLANG_TARGET_DIR}/glslangTargets.cmake")
++            include("${GLSLANG_TARGET_DIR}/SPIRV-Tools/SPIRV-ToolsTarget.cmake")
++            include("${GLSLANG_TARGET_DIR}/SPIRV-Tools-opt/SPIRV-Tools-optTargets.cmake")
+             include("${GLSLANG_TARGET_DIR}/SPIRVTargets.cmake")
+ 
+             if (NOT TARGET glslang OR NOT TARGET SPIRV)
diff --git a/pkgs/development/libraries/ncnn/default.nix b/pkgs/development/libraries/ncnn/default.nix
new file mode 100644
index 0000000000000..d53e0d9b42ea8
--- /dev/null
+++ b/pkgs/development/libraries/ncnn/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, vulkan-headers
+, vulkan-loader
+, glslang
+, opencv
+, protobuf
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ncnn";
+  version = "20211208";
+
+  src = fetchFromGitHub {
+    owner = "Tencent";
+    repo = pname;
+    rev = version;
+    sha256 = "1c9axrnafksnks7v5fmi6nzs0qim9n6j5kh5d0vfl3b4r22irhqr";
+  };
+
+  patches = [
+    ./cmakelists.patch
+    ./gpu-include.patch
+  ];
+
+  cmakeFlags = [
+    "-DNCNN_CMAKE_VERBOSE=1" # Only for debugging the build
+    "-DNCNN_SHARED_LIB=1"
+    "-DNCNN_ENABLE_LTO=1"
+    "-DNCNN_VULKAN=1"
+    "-DNCNN_BUILD_EXAMPLES=0"
+    "-DNCNN_BUILD_TOOLS=0"
+    "-DNCNN_SYSTEM_GLSLANG=1"
+    "-DNCNN_PYTHON=0" # Should be an attribute
+
+    "-DGLSLANG_TARGET_DIR=${glslang}/lib/cmake"
+  ];
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ vulkan-headers vulkan-loader glslang opencv protobuf ];
+
+  meta = with lib; {
+    description = "ncnn is a high-performance neural network inference framework optimized for the mobile platform";
+    homepage = "https://github.com/Tencent/ncnn";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ tilcreator ];
+  };
+}
diff --git a/pkgs/development/libraries/ncnn/gpu-include.patch b/pkgs/development/libraries/ncnn/gpu-include.patch
new file mode 100644
index 0000000000000..8f751c7699470
--- /dev/null
+++ b/pkgs/development/libraries/ncnn/gpu-include.patch
@@ -0,0 +1,13 @@
+diff --git a/src/gpu.cpp b/src/gpu.cpp
+index 51cd7f95..bf7ed828 100644
+--- a/src/gpu.cpp
++++ b/src/gpu.cpp
+@@ -21,7 +21,7 @@
+ #include <vulkan/vulkan.h>
+ 
+ #include "glslang/SPIRV/GlslangToSpv.h"
+-#include "glslang/glslang/Public/ShaderLang.h"
++#include "glslang/Public/ShaderLang.h"
+ 
+ #include "command.h"
+ #include "layer.h"