71 lines
2.6 KiB
CMake
71 lines
2.6 KiB
CMake
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()
|