Skip to content

Commit c7b6980

Browse files
committed
add logic to auto load library
1 parent 8b2c686 commit c7b6980

File tree

4 files changed

+49
-131
lines changed

4 files changed

+49
-131
lines changed

LLama/LLamaSharp.Runtime.targets

+10-126
Original file line numberDiff line numberDiff line change
@@ -2,133 +2,17 @@
22
<PropertyGroup>
33
<IncludeBuiltInRuntimes Condition="'$(IncludeBuiltInRuntimes)' == ''">true</IncludeBuiltInRuntimes>
44
</PropertyGroup>
5-
<ItemGroup Condition="'$(IncludeBuiltInRuntimes)' == 'true'">
65

7-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/llama.dll">
8-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
9-
<Link>runtimes/win-x64/native/noavx/llama.dll</Link>
10-
</None>
11-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/avx/llama.dll">
12-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
13-
<Link>runtimes/win-x64/native/avx/llama.dll</Link>
14-
</None>
15-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/avx2/llama.dll">
16-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
17-
<Link>runtimes/win-x64/native/avx2/llama.dll</Link>
18-
</None>
19-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/avx512/llama.dll">
20-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
21-
<Link>runtimes/win-x64/native/avx512/llama.dll</Link>
22-
</None>
23-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/cu11.7.1/llama.dll">
24-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
25-
<Link>runtimes/win-x64/native/cuda11/llama.dll</Link>
26-
</None>
27-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/cu12.1.0/llama.dll">
28-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
29-
<Link>runtimes/win-x64/native/cuda12/llama.dll</Link>
30-
</None>
6+
<ItemGroup Condition="$(AndroidSupportedAbis.Contains('arm64-v8a')) or $(RuntimeIdentifiers.Contains('android-arm64'))">
7+
<AndroidNativeLibrary Visible="false" Include="$(MSBuildThisFileDirectory)../runtimes/android-arm64-v8a/native/libllama.so">
8+
<Link>libllama.so</Link>
9+
<Abi>arm64-v8a</Abi>
10+
</AndroidNativeLibrary>
3111

32-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/libllama.so">
33-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
34-
<Link>runtimes/linux-x64/native/noavx/libllama.so</Link>
35-
</None>
36-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/avx/libllama.so">
37-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
38-
<Link>runtimes/linux-x64/native/avx/libllama.so</Link>
39-
</None>
40-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/avx2/libllama.so">
41-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
42-
<Link>runtimes/linux-x64/native/avx2/libllama.so</Link>
43-
</None>
44-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/avx512/libllama.so">
45-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
46-
<Link>runtimes/linux-x64/native/avx512/libllama.so</Link>
47-
</None>
48-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/cu11.7.1/libllama.so">
49-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
50-
<Link>runtimes/linux-x64/native/cuda11/libllama.so</Link>
51-
</None>
52-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/cu12.1.0/libllama.so">
53-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
54-
<Link>runtimes/linux-x64/native/cuda12/libllama.so</Link>
55-
</None>
56-
57-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/osx-arm64/libllama.dylib">
58-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
59-
<Link>runtimes/osx-arm64/native/libllama.dylib</Link>
60-
</None>
61-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/osx-arm64/ggml-metal.metal">
62-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
63-
<Link>runtimes/osx-arm64/native/ggml-metal.metal</Link>
64-
</None>
65-
66-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/osx-x64/libllama.dylib">
67-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
68-
<Link>runtimes/osx-x64/native/libllama.dylib</Link>
69-
</None>
70-
71-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/llava_shared.dll">
72-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
73-
<Link>runtimes/win-x64/native/noavx/llava_shared.dll</Link>
74-
</None>
75-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/avx/llava_shared.dll">
76-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
77-
<Link>runtimes/win-x64/native/avx/llava_shared.dll</Link>
78-
</None>
79-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/avx2/llava_shared.dll">
80-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
81-
<Link>runtimes/win-x64/native/avx2/llava_shared.dll</Link>
82-
</None>
83-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/avx512/llava_shared.dll">
84-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
85-
<Link>runtimes/win-x64/native/avx512/llava_shared.dll</Link>
86-
</None>
87-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/cu11.7.1/llava_shared.dll">
88-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
89-
<Link>runtimes/win-x64/native/cuda11/llava_shared.dll</Link>
90-
</None>
91-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/cu12.1.0/llava_shared.dll">
92-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
93-
<Link>runtimes/win-x64/native/cuda12/llava_shared.dll</Link>
94-
</None>
95-
96-
97-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/libllava_shared.so">
98-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
99-
<Link>runtimes/linux-x64/native/noavx/libllava_shared.so</Link>
100-
</None>
101-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/avx/libllava_shared.so">
102-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
103-
<Link>runtimes/linux-x64/native/avx/libllava_shared.so</Link>
104-
</None>
105-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/avx2/libllava_shared.so">
106-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
107-
<Link>runtimes/linux-x64/native/avx2/libllava_shared.so</Link>
108-
</None>
109-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/avx512/libllava_shared.so">
110-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
111-
<Link>runtimes/linux-x64/native/avx512/libllava_shared.so</Link>
112-
</None>
113-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/cu11.7.1/libllava_shared.so">
114-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
115-
<Link>runtimes/linux-x64/native/cuda11/libllava_shared.so</Link>
116-
</None>
117-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/cu12.1.0/libllava_shared.so">
118-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
119-
<Link>runtimes/linux-x64/native/cuda12/libllava_shared.so</Link>
120-
</None>
121-
122-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/osx-arm64/libllava_shared.dylib">
123-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
124-
<Link>runtimes/osx-arm64/native/libllava_shared.dylib</Link>
125-
</None>
126-
127-
<None Include="$(MSBuildThisFileDirectory)runtimes/deps/osx-x64/libllava_shared.dylib">
128-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
129-
<Link>runtimes/osx-x64/native/libllava_shared.dylib</Link>
130-
</None>
131-
132-
12+
<AndroidNativeLibrary Visible="false" Include="$(MSBuildThisFileDirectory)../runtimes/android-arm64-v8a/native/libllava_shared.so">
13+
<Link>libllava_shared.so</Link>
14+
<Abi>arm64-v8a</Abi>
15+
</AndroidNativeLibrary>
13316
</ItemGroup>
17+
13418
</Project>

LLama/Native/NativeApi.Load.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using LLama.Exceptions;
1+
using LLama.Exceptions;
22
using System;
33
using System.IO;
44
using System.Runtime.InteropServices;
@@ -57,6 +57,11 @@ private static void SetDllImportResolver()
5757
// NativeLibrary is not available on older runtimes. We'll have to depend on
5858
// the normal runtime dll resolution there.
5959
#if NET5_0_OR_GREATER
60+
61+
// We don't need special dll resolution on Android
62+
if (OperatingSystem.IsAndroid())
63+
return;
64+
6065
NativeLibrary.SetDllImportResolver(typeof(NativeApi).Assembly, (name, _, _) =>
6166
{
6267
if (name == "llama")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<package >
3+
<metadata>
4+
<id>LLamaSharp.Backend.Android</id>
5+
<version>$version$</version>
6+
<title>LLamaSharp.Backend.Android - Android Backend for LLamaSharp</title>
7+
<authors>llama.cpp Authors</authors>
8+
<requireLicenseAcceptance>false</requireLicenseAcceptance>
9+
<license type="expression">MIT</license>
10+
<icon>icon512.png</icon>
11+
<projectUrl>https://github.com/SciSharp/LLamaSharp</projectUrl>
12+
<description>LLamaSharp.Backend.Android is a backend for LLamaSharp to use with Android.</description>
13+
<releaseNotes></releaseNotes>
14+
<copyright>Copyright 2023 The llama.cpp Authors. All rights reserved.</copyright>
15+
<tags>LLamaSharp LLama LLM GPT AI ChatBot SciSharp</tags>
16+
</metadata>
17+
18+
<files>
19+
<file src="../../LLamaSharp.Runtime.targets" target="build/LLamaSharp.Backend.Android.targets" />
20+
21+
<file src="../deps/android-x86/libllama.so" target="runtimes/android-x86/native/libllama.so" />
22+
<file src="../deps/android-x86/libllava_shared.so" target="runtimes/android-x86/native/libllava_shared.so" />
23+
24+
<file src="../deps/android-x86_64/libllama.so" target="runtimes/android-x86_64/native/libllama.so" />
25+
<file src="../deps/android-x86_64/libllava_shared.so" target="runtimes/android-x86_64/native/libllava_shared.so" />
26+
27+
<file src="../deps/android-arm64-v8a/libllama.so" target="runtimes/android-arm64-v8a/native/libllama.so" />
28+
<file src="../deps/android-arm64-v8a/libllava_shared.so" target="runtimes/android-arm64-v8a/native/libllava_shared.so" />
29+
30+
<file src="icon512.png" target="icon512.png" />
31+
</files>
32+
</package>

LLama/runtimes/build/LLamaSharp.Backend.Cpu.nuspec

+1-4
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,7 @@
4444

4545
<file src="runtimes/deps/osx-x64/libllava_shared.dylib" target="runtimes\osx-x64\native\libllava_shared.dylib" />
4646
<file src="runtimes/deps/osx-arm64/libllava_shared.dylib" target="runtimes\osx-arm64\native\libllava_shared.dylib" />
47-
48-
<file src="runtimes/deps/android-arm64/libllama.so" target="runtimes\android-arm64\native\libllama.so" />
49-
<file src="runtimes/deps/android-arm64/libllava_shared.so" target="runtimes\android-arm64\native\libllava_shared.so" />
50-
47+
5148
<file src="icon512.png" target="icon512.png" />
5249
</files>
5350
</package>

0 commit comments

Comments
 (0)