char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
13e673863
char/aliceai-t5-moe
1file ( TO_CMAKE_PATH " ${ HEXAGON_SDK_ROOT } " HEXAGON_SDK_ROOT ) 2file ( TO_CMAKE_PATH " ${ HEXAGON_TOOLS_ROOT } " HEXAGON_TOOLS_ROOT ) 3 4if ( NOT IS_DIRECTORY " ${ HEXAGON_SDK_ROOT } " ) 5message ( FATAL_ERROR "Make sure HEXAGON_SDK_ROOT point to the correct Hexagon SDK installation." ) 6endif () 7 8if ( NOT IS_DIRECTORY " ${ HEXAGON_TOOLS_ROOT } " ) 9message ( "Try to read HEXAGON_TOOLS_ROOT from hexagon_sdk.json" ) 10file ( READ " ${ HEXAGON_SDK_ROOT } /hexagon_sdk.json" HEXAGON_SDK_CONFIG_PATH ) 11string ( JSON HEXAGON_TOOLS_PATH GET ${ HEXAGON_SDK_CONFIG_PATH } "root" "tools" "info" 0 "path" ) 12message ( "Found HEXAGON_TOOLS_PATH: ${ HEXAGON_TOOLS_PATH } " ) 13set ( HEXAGON_TOOLS_ROOT " ${ HEXAGON_SDK_ROOT } / ${ HEXAGON_TOOLS_PATH } " ) 14file ( TO_CMAKE_PATH " ${ HEXAGON_TOOLS_ROOT } " HEXAGON_TOOLS_ROOT ) 15if ( NOT IS_DIRECTORY " ${ HEXAGON_TOOLS_ROOT } " ) 16message ( FATAL_ERROR "Make sure HEXAGON_TOOLS_ROOT point to the correct Hexagon SDK installation." ) 17endif () 18endif () 19 20message ( STATUS "hexagon: using ${ HEXAGON_SDK_ROOT } and ${ HEXAGON_TOOLS_ROOT } for building libggml-htp skels" ) 21 22include ( $ { HEXAGON_SDK_ROOT } /build/cmake/hexagon_fun.cmake ) 23include ( ExternalProject ) 24 25option ( GGML_HEXAGON_HTP_DEBUG "ggml-hexagon: enable HTP debug output" OFF ) 26set ( GGML_HEXAGON_HTP_CERT " $ ENV { HEXAGON_HTP_CERT } " CACHE PATH "ggml-hexagon: enable HTP library signing using certificate" ) 27 28add_library ( htp_iface OBJECT 29${ CMAKE_CURRENT_BINARY_DIR } /htp_iface_stub.c ) 30 31set_target_properties ( htp_iface PROPERTIES POSITION_INDEPENDENT_CODE ON ) 32target_include_directories ( htp_iface PUBLIC 33${ HEXAGON_SDK_ROOT } /incs 34${ HEXAGON_SDK_ROOT } /incs/stddef 35${ HEXAGON_SDK_ROOT } /utils/examples 36${ CMAKE_CURRENT_SOURCE_DIR } /htp 37${ CMAKE_CURRENT_BINARY_DIR }) 38 39build_idl ( htp/htp_iface.idl htp_iface ) 40 41if ( CMAKE_SYSTEM_NAMEMATCHES Android) 42target_link_options ( htp_iface PUBLIC -llog -ldl ) 43elseif ( CMAKE_SYSTEM_NAMEMATCHES Windows) 44target_precompile_headers ( htp_iface PUBLIC <sal.h> ) 45else () 46target_link_options ( htp_iface PUBLIC -ldl ) 47endif () 48 49set ( TARGET_NAME ggml-hexagon ) 50ggml_add_backend_library ( $ { TARGET_NAME } 51ggml-hexagon.cpp 52htp-drv.cpp 53htp-drv.h 54libdl.h 55../../include/ggml-hexagon.h ) 56 57target_link_libraries ( $ { TARGET_NAME } PRIVATE htp_iface ) 58target_include_directories ( $ { TARGET_NAME } PRIVATE ${ CMAKE_CURRENT_SOURCE_DIR } /htp ${ CMAKE_CURRENT_BINARY_DIR }) 59 60# Build HTP skels 61set ( HTP_SKELS ) 62function ( build_htp_skel V ) 63ExternalProject_Add ( htp- ${ V } 64SOURCE_DIR ${ CMAKE_CURRENT_SOURCE_DIR } /htp BUILD_ALWAYS ON 65BUILD_BYPRODUCTS ${ CMAKE_CURRENT_BINARY_DIR } /libggml-htp- ${ V } .so 66CMAKE_ARGS 67-DCMAKE_BUILD_TYPE=Release 68-DCMAKE_TOOLCHAIN_FILE= ${ CMAKE_CURRENT_SOURCE_DIR } /htp/cmake-toolchain.cmake 69-DCMAKE_INSTALL_LIBDIR= ${ CMAKE_CURRENT_BINARY_DIR } 70-DHEXAGON_SDK_ROOT= ${ HEXAGON_SDK_ROOT } 71-DHEXAGON_TOOLS_ROOT= ${ HEXAGON_TOOLS_ROOT } 72-DHEXAGON_HTP_DEBUG= ${ GGML_HEXAGON_HTP_DEBUG } 73-DDSP_VERSION= ${ V } 74-DPREBUILT_LIB_DIR= "toolv19_ ${ V } " ) 75list ( APPEND HTP_SKELS ${ CMAKE_CURRENT_BINARY_DIR } /libggml-htp- ${ V } .so ) 76set ( HTP_SKELS ${ HTP_SKELS } PARENT_SCOPE ) 77endfunction () 78 79build_htp_skel ( v73 ) 80build_htp_skel ( v75 ) 81build_htp_skel ( v79 ) 82build_htp_skel ( v81 ) 83 84# Install Hexagon skels required at runtime 85install ( FILES ${ HTP_SKELS } TYPE LIB ) 86 87if ( CMAKE_SYSTEM_NAMEMATCHES WindowsAND GGML_HEXAGON_HTP_CERT) 88file ( TO_CMAKE_PATH " $ ENV { WINDOWS_SDK_BIN } /arm64" WINSDK_BIN0_ARM64 ) 89file ( TO_CMAKE_PATH " $ ENV { WINDOWS_SDK_BIN } /x86" WINSDK_BIN0_X86 ) 90file ( TO_CMAKE_PATH " $ ENV { WindowsSdkVerBinPath } /arm64" WINSDK_BIN1_ARM64 ) 91file ( TO_CMAKE_PATH " $ ENV { WindowsSdkVerBinPath } /x86" WINSDK_BIN1_X86 ) 92 93set ( WINSDK_PATHS ${ WINSDK_BIN0_ARM64 } ${ WINSDK_BIN0_X86 } ${ WINSDK_BIN1_ARM64 } ${ WINSDK_BIN1_X86 }) 94 95find_program ( INF2CAT NAMES inf2cat.exe PATHS ${ WINSDK_PATHS } REQUIRED ) 96find_program ( SIGNTOOL NAMES signtool.exe PATHS ${ WINSDK_PATHS } REQUIRED ) 97 98message ( STATUS "hexagon: using ${ GGML_HEXAGON_HTP_CERT } to sign libggml-htp skels" ) 99 100set ( LIBGGML_HTP_CAT ${ CMAKE_CURRENT_BINARY_DIR } /libggml-htp.cat ) 101add_custom_target ( libggml-htp-cat 102BYPRODUCTS ${ LIBGGML_HTP_CAT } 103DEPENDS libggml-htp.inf ${ HTP_SKELS } 104COMMAND ${ CMAKE_COMMAND } -E copy ${ CMAKE_CURRENT_SOURCE_DIR } /libggml-htp.inf ${ CMAKE_CURRENT_BINARY_DIR } 105COMMAND ${ INF2CAT } /driver: ${ CMAKE_CURRENT_BINARY_DIR } /os:10_25H2_ARM64 106COMMAND ${ SIGNTOOL } sign /fd sha256 /f ${ GGML_HEXAGON_HTP_CERT } ${ LIBGGML_HTP_CAT } 107COMMENT "generating and signing libggml-htp.cat file" 108VERBATIM 109) 110 111add_dependencies ( $ { TARGET_NAME } libggml-htp-cat ) 112install ( FILES ${ LIBGGML_HTP_CAT } TYPE LIB ) 113endif ()