summaryrefslogtreecommitdiff
path: root/llama.cpp/ggml/src/ggml-virtgpu/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'llama.cpp/ggml/src/ggml-virtgpu/CMakeLists.txt')
-rw-r--r--llama.cpp/ggml/src/ggml-virtgpu/CMakeLists.txt70
1 files changed, 70 insertions, 0 deletions
diff --git a/llama.cpp/ggml/src/ggml-virtgpu/CMakeLists.txt b/llama.cpp/ggml/src/ggml-virtgpu/CMakeLists.txt
new file mode 100644
index 0000000..e6b020b
--- /dev/null
+++ b/llama.cpp/ggml/src/ggml-virtgpu/CMakeLists.txt
@@ -0,0 +1,70 @@
+cmake_minimum_required(VERSION 3.19)
+cmake_policy(SET CMP0114 NEW)
+
+include(ExternalProject)
+
+message(STATUS "Including the VirtGPU/Virglrenderer API Remoting")
+
+# Download venus_hw.h from virglrenderer repository
+ExternalProject_Add(
+ venus_hw_header
+ URL https://gitlab.freedesktop.org/virgl/virglrenderer/-/raw/virglrenderer-1.2.0/src/venus_hw.h
+ DOWNLOAD_NO_EXTRACT YES
+ DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include
+ DOWNLOAD_NAME venus_hw.h
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ""
+ INSTALL_COMMAND ""
+ LOG_DOWNLOAD ON
+)
+
+if (NOT GGML_VIRTGPU_BACKEND STREQUAL "ONLY")
+ message(STATUS "Enable the VirtGPU/Virglrenderer API Remoting frontend library")
+
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(DRM REQUIRED libdrm)
+ if (NOT GGML_BACKEND_DL)
+ # cannot simply use USE_VIRTGPU, as in the 'else()' case the
+ # frontend isn't compiled
+ target_compile_definitions(ggml PUBLIC "GGML_USE_VIRTGPU_FRONTEND")
+ endif()
+
+ ggml_add_backend_library(ggml-virtgpu
+ ggml-backend-buffer.cpp
+ ggml-backend.cpp
+ ggml-backend-device.cpp
+ ggml-backend-reg.cpp
+ ggml-backend-buffer-type.cpp
+ virtgpu-apir.h
+ virtgpu-forward.gen.h
+ virtgpu.cpp
+ virtgpu-shm.cpp
+ virtgpu-utils.cpp
+ virtgpu-forward-device.cpp
+ virtgpu-forward-buffer-type.cpp
+ virtgpu-forward-buffer.cpp
+ virtgpu-forward-backend.cpp
+ virtgpu-forward-impl.h
+ apir_cs_ggml-rpc-front.cpp
+ ../../include/ggml-virtgpu.h)
+
+ target_include_directories(ggml-virtgpu PUBLIC /usr/include/libdrm/)
+
+ target_link_libraries(ggml-virtgpu PUBLIC ${DRM_LIBRARIES})
+ target_include_directories(ggml-virtgpu PUBLIC ${DRM_INCLUDE_DIRS})
+ target_compile_options(ggml-virtgpu PUBLIC ${DRM_CFLAGS_OTHER})
+
+ target_include_directories(ggml-virtgpu PUBLIC ./include)
+ target_include_directories(ggml-virtgpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
+
+ # Ensure venus_hw.h is downloaded before building ggml-virtgpu
+ add_dependencies(ggml-virtgpu venus_hw_header)
+
+ target_compile_options(ggml-virtgpu PRIVATE -std=c++20)
+else()
+ message(STATUS "Not building the VirtGPU/Virglrenderer API Remoting frontend library")
+endif()
+
+if (NOT GGML_VIRTGPU_BACKEND STREQUAL "OFF")
+ add_subdirectory("backend")
+endif()