char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
8be759e6f
char/aliceai-t5-moe
1if ( HEXAGON_TOOLCHAIN_INCLUDED) 2return () 3endif () 4set ( HEXAGON_TOOLCHAIN_INCLUDED true ) 5 6# Cross Compiling for Hexagon 7set ( HEXAGON TRUE ) 8set ( CMAKE_SYSTEM_NAME QURT ) 9set ( CMAKE_SYSTEM_PROCESSOR Hexagon ) 10set ( CMAKE_SYSTEM_VERSION "1" ) #${HEXAGON_PLATFORM_LEVEL}) 11set ( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER ) 12set ( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) 13set ( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) 14set ( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY ) 15set ( CUSTOM_RUNELF_PATH "" ) 16 17if ( NOT HEXAGON_SDK_ROOT) 18set ( HEXAGON_SDK_ROOT $ ENV { HEXAGON_SDK_ROOT }) 19endif () 20 21if ( NOT HEXAGON_TOOLS_ROOT) 22if ( DEFINED ENV{HEXAGON_TOOLS_ROOT}) 23set ( HEXAGON_TOOLS_ROOT $ ENV { HEXAGON_TOOLS_ROOT }) 24endif () 25if ( NOT HEXAGON_TOOLS_ROOT) 26set ( HEXAGON_TOOLS_ROOT $ ENV { DEFAULT_HEXAGON_TOOLS_ROOT }) 27endif () 28endif () 29 30file ( TO_CMAKE_PATH " ${ HEXAGON_TOOLS_ROOT } " HEXAGON_TOOLS_ROOT ) 31file ( TO_CMAKE_PATH " ${ HEXAGON_SDK_ROOT } " HEXAGON_SDK_ROOT ) 32 33if ( CMAKE_HOST_SYSTEM_NAMESTREQUAL Windows) 34set ( HEXAGON_TOOLCHAIN_SUFFIX .exe ) 35endif () 36message ( DEBUG "CMAKE_HOST_SYSTEM_NAME: ${ CMAKE_HOST_SYSTEM_NAME } " ) 37 38include ( $ { HEXAGON_SDK_ROOT } /build/cmake/hexagon_arch.cmake ) 39 40set ( HEXAGON_TOOLCHAIN ${ HEXAGON_TOOLS_ROOT }) 41set ( HEXAGON_LIB_DIR " ${ HEXAGON_TOOLCHAIN } /Tools/target/hexagon/lib" ) 42set ( HEXAGON_ISS_DIR ${ HEXAGON_TOOLCHAIN } /Tools/lib/iss ) 43 44set ( CMAKE_TRY_COMPILE_PLATFORM_VARIABLES 45HEXAGON_SDK_ROOT 46HEXAGON_TOOLS_ROOT 47) 48 49# QURT Related includes and linker flags 50set ( V_ARCH ${ HEXAGON_ARCH }) 51set ( _QURT_INSTALL_DIR " ${ HEXAGON_SDK_ROOT } /rtos/qurt/ADSP ${ V_ARCH } MP ${ V_ARCH_EXTN } " ) 52set ( _QURT_INSTALL_DIR " ${ HEXAGON_SDK_ROOT } /rtos/qurt/compute ${ V_ARCH }${ V_ARCH_EXTN } " ) 53 54if (${ TREE } MATCHES PAKMAN) 55set ( _QURT_INSTALL_DIR " ${ QURT_IMAGE_DIR } /compute ${ V_ARCH }${ V_ARCH_EXTN } " ) 56endif () 57message ( DEBUG "_QURT_INSTALL_DIR: ${ _QURT_INSTALL_DIR } " ) 58set ( RTOS_DIR ${ _QURT_INSTALL_DIR }) 59set ( QCC_DIR " ${ HEXAGON_QCC_DIR } / ${ V_ARCH } /G0" ) 60set ( TARGET_DIR " ${ HEXAGON_LIB_DIR } / ${ V_ARCH } /G0" ) 61 62include_directories ( 63${ _QURT_INSTALL_DIR } /include 64${ _QURT_INSTALL_DIR } /include/qurt 65${ _QURT_INSTALL_DIR } /include/posix 66) 67 68set ( QURT_START_LINK_LIBS ) 69set ( QURT_START_LINK_LIBS 70" ${ TARGET_DIR } /init.o" 71" ${ RTOS_DIR } /lib/crt1.o" 72" ${ RTOS_DIR } /lib/debugmon.o" 73" ${ RTOS_DIR } /lib/libqurt.a" 74" ${ TARGET_DIR } /libc.a" 75" ${ TARGET_DIR } /libqcc.a" 76" ${ TARGET_DIR } /libhexagon.a" 77" ${ RTOS_DIR } /lib/libqurtcfs.a" 78" ${ RTOS_DIR } /lib/libtimer_island.a" 79" ${ RTOS_DIR } /lib/libtimer_main.a" 80" ${ RTOS_DIR } /lib/libposix.a" 81) 82STRING ( REPLACE ";" " " QURT_START_LINK_LIBS " ${ QURT_START_LINK_LIBS } " ) 83 84set ( QURT_END_LINK_LIBS ${ TARGET_DIR } /fini.o ) 85 86# Non QURT related includes and linker flags 87 88set ( TARGET_DIR_NOOS " ${ HEXAGON_TOOLCHAIN } /Tools/target/hexagon/lib/ ${ HEXAGON_ARCH } " ) 89 90if ( NOT NO_WRAP_MEM_API) 91set ( WRAP_MALLOC -Wl,--wrap=malloc ) 92set ( WRAP_CALLOC -Wl,--wrap=calloc ) 93set ( WRAP_FREE -Wl,--wrap=free ) 94set ( WRAP_REALLOC -Wl,--wrap=realloc ) 95set ( WRAP_MEMALIGN -Wl,--wrap=memalign ) 96endif () 97 98set ( ARCH_FLAGS "-mcpu= ${ V_ARCH } -m ${ V_ARCH } -mhvx= ${ V_ARCH } -mhmx" ) 99 100set ( PIC_SHARED_LD_FLAGS 101${ ARCH_FLAGS } 102-G0 103-fpic 104-Wl,-Bsymbolic 105-Wl,-L ${ TARGET_DIR_NOOS } /G0/pic 106-Wl,-L ${ HEXAGON_TOOLCHAIN } /Tools/target/hexagon/lib/ 107-Wl,--no-threads ${ WRAP_MALLOC } ${ WRAP_CALLOC } ${ WRAP_FREE } ${ WRAP_REALLOC } ${ WRAP_MEMALIGN } 108-shared 109"-o <TARGET> <SONAME_FLAG><TARGET_SONAME>" 110"<LINK_FLAGS>" 111-Wl,--start-group 112"<OBJECTS>" 113"<LINK_LIBRARIES>" 114-Wl,--end-group 115-lc 116) 117STRING ( REPLACE ";" " " PIC_SHARED_LD_FLAGS " ${ PIC_SHARED_LD_FLAGS } " ) 118 119set ( HEXAGON_PIC_SHARED_LINK_OPTIONS " ${ PIC_SHARED_LD_FLAGS } " ) 120 121# System include paths 122include_directories ( SYSTEM ${ HEXAGON_SDK_ROOT } /incs ) 123include_directories ( SYSTEM ${ HEXAGON_SDK_ROOT } /incs/stddef ) 124include_directories ( SYSTEM ${ HEXAGON_SDK_ROOT } /ipc/fastrpc/incs ) 125 126# LLVM toolchain setup 127# Compiler paths, options and architecture 128set ( CMAKE_C_COMPILER ${ HEXAGON_TOOLCHAIN } /Tools/bin/hexagon-clang ${ HEXAGON_TOOLCHAIN_SUFFIX }) 129set ( CMAKE_CXX_COMPILER ${ HEXAGON_TOOLCHAIN } /Tools/bin/hexagon-clang++ ${ HEXAGON_TOOLCHAIN_SUFFIX }) 130set ( CMAKE_AR ${ HEXAGON_TOOLCHAIN } /Tools/bin/hexagon-ar ${ HEXAGON_TOOLCHAIN_SUFFIX }) 131set ( CMAKE_ASM_COMPILER ${ HEXAGON_TOOLCHAIN } /Tools/bin/hexagon-clang++ ${ HEXAGON_TOOLCHAIN_SUFFIX }) 132set ( HEXAGON_LINKER ${ CMAKE_C_COMPILER }) 133set ( CMAKE_PREFIX_PATH ${ HEXAGON_TOOLCHAIN } /Tools/target/hexagon ) 134 135set ( CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname," ) 136set ( CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-Wl,-soname," ) 137 138# Compiler Options 139set ( COMMON_FLAGS " ${ ARCH_FLAGS } -fvectorize -flto -Wall -Werror -fno-zero-initialized-in-bss -G0 -fdata-sections -fpic ${ XQF_ARGS } " ) 140 141set ( CMAKE_CXX_FLAGS_DEBUG " ${ COMMON_FLAGS } -O0 -D_DEBUG -g" ) 142set ( CMAKE_CXX_FLAGS_RELWITHDEBINFO " ${ COMMON_FLAGS } -O2 -g" ) 143set ( CMAKE_CXX_FLAGS_RELEASE " ${ COMMON_FLAGS } -O2" ) 144 145set ( CMAKE_C_FLAGS_DEBUG " ${ COMMON_FLAGS } -O0 -D_DEBUG -g" ) 146set ( CMAKE_C_FLAGS_RELWITHDEBINFO " ${ COMMON_FLAGS } -O2 -g" ) 147set ( CMAKE_C_FLAGS_RELEASE " ${ COMMON_FLAGS } -O2" ) 148 149set ( CMAKE_ASM_FLAGS_DEBUG " ${ COMMON_FLAGS } ${ CMAKE_CXX_FLAGS_DEBUG } " ) 150set ( CMAKE_ASM_FLAGS_RELEASE " ${ COMMON_FLAGS } ${ CMAKE_CXX_FLAGS_RELEASE } " ) 151set ( CMAKE_ASM_FLAGS_RELWITHDEBINFO " ${ COMMON_FLAGS } ${ CMAKE_CXX_FLAGS_RELWITHDEBINFO } " ) 152 153#Linker Options 154set ( CMAKE_C_CREATE_SHARED_LIBRARY " ${ HEXAGON_LINKER } ${ HEXAGON_PIC_SHARED_LINK_OPTIONS } " ) 155set ( CMAKE_CXX_CREATE_SHARED_LIBRARY " ${ HEXAGON_LINKER } ${ HEXAGON_PIC_SHARED_LINK_OPTIONS } " )