llama-cpp-turboquant/src/CMakeLists.txt

125 lines
3.3 KiB
CMake

if(KOMPUTE_OPT_ENABLE_SPDLOG)
if(KOMPUTE_OPT_REPO_SUBMODULE_BUILD)
set(SPDLOG_INSTALL ON)
add_subdirectory(${PROJECT_SOURCE_DIR}/external/spdlog ${CMAKE_CURRENT_BINARY_DIR}/kompute_spdlog)
else()
find_package(spdlog REQUIRED)
endif()
endif()
if(KOMPUTE_OPT_ANDOID_BUILD)
find_library(android android)
endif()
# We don't import Vulkan library if Android build as its build dynamically
# Otherwise it is expected that the Vulkan SDK and dependencies are installed
if(NOT KOMPUTE_OPT_ANDOID_BUILD)
find_package(Vulkan REQUIRED)
endif()
if(KOMPUTE_OPT_BUILD_SHADERS)
# all shaders are compiled into cpp files
kompute_make(build_shaders
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/include)
endif()
if(KOMPUTE_OPT_BUILD_SINGLE_HEADER)
# all headers are compiled into a single header
kompute_make(build_single_header
OUTPUT ${PROJECT_SOURCE_DIR}/single_include)
endif()
file(GLOB kompute_CPP
"${CMAKE_CURRENT_SOURCE_DIR}/*.cpp"
)
if(KOMPUTE_OPT_ANDOID_BUILD)
set(VK_ANDROID_COMMON_DIR ${ANDROID_NDK}/sources/third_party/vulkan/src/common)
set(VK_ANDROID_PATCH_DIR ${PROJECT_SOURCE_DIR}/vk_ndk_wrapper_include/)
set(VK_ANDROID_INCLUDE_DIR ${ANDROID_NDK}/sources/third_party/vulkan/src/include)
include_directories(
${VK_ANDROID_COMMON_DIR}
${VK_ANDROID_PATCH_DIR}
${VK_ANDROID_INCLUDE_DIR})
add_library(kompute_vk_ndk_wrapper STATIC
${PROJECT_SOURCE_DIR}/vk_ndk_wrapper_include/kompute_vk_ndk_wrapper.cpp)
endif()
add_library(kompute
${kompute_CPP})
target_include_directories(
kompute PUBLIC
$<INSTALL_INTERFACE:include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
)
if(NOT KOMPUTE_OPT_ANDOID_BUILD)
target_link_libraries(
kompute
Vulkan::Vulkan
)
else()
target_link_libraries(
kompute
)
endif()
if(KOMPUTE_OPT_REPO_SUBMODULE_BUILD)
# Override the default Vulkan::Vulkan headers
# In this case we only use the build interface due to https://github.com/KhronosGroup/Vulkan-Headers/issues/157
add_subdirectory(${PROJECT_SOURCE_DIR}/external/Vulkan-Headers ${CMAKE_CURRENT_BINARY_DIR}/kompute_vulkan_headers)
get_target_property(VULKAN_HEADERS_INCLUDES Vulkan-Headers INTERFACE_INCLUDE_DIRECTORIES)
target_include_directories(
kompute PUBLIC
$<BUILD_INTERFACE:${VULKAN_HEADERS_INCLUDES}>)
endif()
if(KOMPUTE_OPT_ENABLE_SPDLOG)
target_link_libraries(
kompute
spdlog::spdlog
)
endif()
if(KOMPUTE_OPT_ANDOID_BUILD)
target_link_libraries(
kompute
kompute_vk_ndk_wrapper
log
android
)
endif()
if(KOMPUTE_OPT_BUILD_SHADERS)
add_dependencies(kompute
build_shaders)
endif()
if(KOMPUTE_OPT_BUILD_SINGLE_HEADER)
add_dependencies(kompute
build_single_header)
endif()
add_library(kompute::kompute ALIAS kompute)
if(KOMPUTE_OPT_INSTALL)
install(TARGETS kompute EXPORT KomputeTargets
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
INCLUDES DESTINATION include)
install(DIRECTORY include/ DESTINATION include)
install(DIRECTORY ${PROJECT_SOURCE_DIR}/single_include/
DESTINATION include)
install(EXPORT KomputeTargets
FILE komputeConfig.cmake
NAMESPACE kompute::
DESTINATION lib/cmake/kompute)
endif()