From 62af384112fc36b1d035931f9231e9c1f5a6f448 Mon Sep 17 00:00:00 2001
From: Leonie Franken <lfranken@uni-koblenz.de>
Date: Mon, 30 Aug 2021 12:13:47 +0200
Subject: [PATCH] [#91] added NNEF-Tools Library in Submodule

---
 modules/CMakeLists.txt                  |  1 +
 modules/compute/CMakeLists.txt          | 33 +++++++++++++++++++++++++
 modules/compute/config/NNEF-Tools.cmake | 10 ++++++++
 modules/compute/src/compute.cpp         |  3 +++
 projects/neural_network/CMakeLists.txt  |  4 +--
 5 files changed, 49 insertions(+), 2 deletions(-)
 create mode 100644 modules/compute/CMakeLists.txt
 create mode 100644 modules/compute/config/NNEF-Tools.cmake
 create mode 100644 modules/compute/src/compute.cpp

diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt
index 4b576e71..5c131025 100644
--- a/modules/CMakeLists.txt
+++ b/modules/CMakeLists.txt
@@ -9,3 +9,4 @@ add_subdirectory(scene)
 add_subdirectory(shader_compiler)
 add_subdirectory(testing)
 add_subdirectory(upscaling)
+add_subdirectory(compute)
diff --git a/modules/compute/CMakeLists.txt b/modules/compute/CMakeLists.txt
new file mode 100644
index 00000000..41693447
--- /dev/null
+++ b/modules/compute/CMakeLists.txt
@@ -0,0 +1,33 @@
+cmake_minimum_required(VERSION 3.16)
+project(vkcv_compute)
+
+# setting c++ standard for the module
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+set(vkcv_compute_source ${PROJECT_SOURCE_DIR}/src)
+set(vkcv_compute_include ${PROJECT_SOURCE_DIR}/include)
+
+# Add source and header files to the module
+set(vkcv_compute_sources
+        src/compute.cpp
+)
+
+# adding source files to the module
+add_library(vkcv_compute STATIC ${vkcv_compute_sources})
+
+# Setup some path variables to load libraries
+set(vkcv_compute_lib lib)
+set(vkcv_compute_lib_path ${PROJECT_SOURCE_DIR}/${vkcv_compute_lib})
+
+# Check and load GLSLANG
+include(config/NNEF-Tools.cmake)
+
+# link the required libraries to the module
+target_link_libraries(vkcv_compute ${vkcv_compute_libraries} vkcv)
+
+# including headers of dependencies and the VkCV framework
+target_include_directories(vkcv_compute SYSTEM BEFORE PRIVATE ${vkcv_compute_includes} ${vkcv_include})
+
+# add the own include directory for public headers
+target_include_directories(vkcv_compute BEFORE PUBLIC ${vkcv_compute_include})
diff --git a/modules/compute/config/NNEF-Tools.cmake b/modules/compute/config/NNEF-Tools.cmake
new file mode 100644
index 00000000..2525c943
--- /dev/null
+++ b/modules/compute/config/NNEF-Tools.cmake
@@ -0,0 +1,10 @@
+
+if (EXISTS "${vkcv_compute_lib_path}/NNEF-Tools")
+
+	add_subdirectory(${vkcv_compute_lib}/NNEF-Tools/parser/cpp)
+	
+	list(APPEND vkcv_compute_libraries nnef)
+	list(APPEND vkcv_compute_includes ${vkcv_compute_lib}/NNEF-Tools/parser/cpp/include)
+else()
+	message(WARNING "NNEF-Tools is required..! Update the submodules!")
+endif ()
diff --git a/modules/compute/src/compute.cpp b/modules/compute/src/compute.cpp
new file mode 100644
index 00000000..9a5849b0
--- /dev/null
+++ b/modules/compute/src/compute.cpp
@@ -0,0 +1,3 @@
+//
+// Created by Charlotte on 30.08.2021.
+//
\ No newline at end of file
diff --git a/projects/neural_network/CMakeLists.txt b/projects/neural_network/CMakeLists.txt
index cd0a140a..a0ddf6b9 100644
--- a/projects/neural_network/CMakeLists.txt
+++ b/projects/neural_network/CMakeLists.txt
@@ -22,7 +22,7 @@ if(MSVC)
 endif()
 
 # including headers of dependencies and the VkCV framework
-target_include_directories(neural_network SYSTEM BEFORE PRIVATE ${vkcv_include} ${vkcv_includes} ${vkcv_asset_loader_include} ${vkcv_camera_include} ${vkcv_scene_include} ${vkcv_shader_compiler_include})
+target_include_directories(neural_network SYSTEM BEFORE PRIVATE ${vkcv_include} ${vkcv_includes} ${vkcv_asset_loader_include} ${vkcv_camera_include} ${vkcv_scene_include} ${vkcv_shader_compiler_include} ${vkcv_compute_include})
 
 # linking with libraries from all dependencies and the VkCV framework
-target_link_libraries(neural_network vkcv ${vkcv_libraries} vkcv_asset_loader ${vkcv_asset_loader_libraries} vkcv_camera vkcv_scene vkcv_shader_compiler)
+target_link_libraries(neural_network vkcv ${vkcv_libraries} vkcv_asset_loader ${vkcv_asset_loader_libraries} vkcv_camera vkcv_scene vkcv_shader_compiler vkcv_compute ${vkcv_compute_libraries})
-- 
GitLab