Skip to content

Commit 32ea730

Browse files
committed
libs
1 parent ccd84e9 commit 32ea730

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

.github/workflows/ci.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ jobs:
7878
run: |
7979
mkdir -p artifacts/native/osx-arm64
8080
cp native/build/macos/libmlxsharp.dylib artifacts/native/osx-arm64/
81+
cp native/build/macos/extern/mlx/mlx/backend/metal/kernels/mlx.metallib artifacts/native/osx-arm64/
8182
8283
- name: Upload native artifact
8384
uses: actions/upload-artifact@v4
@@ -141,6 +142,7 @@ jobs:
141142
run: |
142143
mkdir -p src/MLXSharp/runtimes/osx-arm64/native
143144
cp artifacts/native/osx-arm64/libmlxsharp.dylib src/MLXSharp/runtimes/osx-arm64/native/
145+
cp artifacts/native/osx-arm64/mlx.metallib src/MLXSharp/runtimes/osx-arm64/native/
144146
mkdir -p src/MLXSharp/runtimes/linux-x64/native
145147
cp artifacts/native/linux-x64/libmlxsharp.so src/MLXSharp/runtimes/linux-x64/native/
146148
@@ -152,6 +154,7 @@ jobs:
152154
TEST_OUTPUT="src/MLXSharp.Tests/bin/Release/net9.0"
153155
mkdir -p "$TEST_OUTPUT/runtimes/osx-arm64/native"
154156
cp src/MLXSharp/runtimes/osx-arm64/native/libmlxsharp.dylib "$TEST_OUTPUT/runtimes/osx-arm64/native/"
157+
cp src/MLXSharp/runtimes/osx-arm64/native/mlx.metallib "$TEST_OUTPUT/runtimes/osx-arm64/native/"
155158
ls -la "$TEST_OUTPUT/runtimes/osx-arm64/native/"
156159
157160
- name: Run tests
@@ -171,13 +174,14 @@ jobs:
171174
mkdir -p artifacts/packages
172175
mkdir -p artifacts/native
173176
cp artifacts/native/osx-arm64/libmlxsharp.dylib artifacts/native/
177+
cp artifacts/native/osx-arm64/mlx.metallib artifacts/native/
174178
cp artifacts/native/linux-x64/libmlxsharp.so artifacts/native/
175179
176180
- name: Pack MLXSharp library
177-
run: dotnet pack src/MLXSharp/MLXSharp.csproj --configuration Release --output artifacts/packages -p:MLXSharpMacNativeBinary=$GITHUB_WORKSPACE/artifacts/native/osx-arm64/libmlxsharp.dylib -p:MLXSharpLinuxNativeBinary=$GITHUB_WORKSPACE/artifacts/native/linux-x64/libmlxsharp.so
181+
run: dotnet pack src/MLXSharp/MLXSharp.csproj --configuration Release --output artifacts/packages -p:MLXSharpMacNativeBinary=$GITHUB_WORKSPACE/artifacts/native/osx-arm64/libmlxsharp.dylib -p:MLXSharpMacMetallibBinary=$GITHUB_WORKSPACE/artifacts/native/osx-arm64/mlx.metallib -p:MLXSharpLinuxNativeBinary=$GITHUB_WORKSPACE/artifacts/native/linux-x64/libmlxsharp.so
178182

179183
- name: Pack MLXSharp.SemanticKernel library
180-
run: dotnet pack src/MLXSharp.SemanticKernel/MLXSharp.SemanticKernel.csproj --configuration Release --output artifacts/packages -p:MLXSharpMacNativeBinary=$GITHUB_WORKSPACE/artifacts/native/osx-arm64/libmlxsharp.dylib -p:MLXSharpLinuxNativeBinary=$GITHUB_WORKSPACE/artifacts/native/linux-x64/libmlxsharp.so -p:MLXSharpSkipLinuxNativeValidation=true
184+
run: dotnet pack src/MLXSharp.SemanticKernel/MLXSharp.SemanticKernel.csproj --configuration Release --output artifacts/packages -p:MLXSharpMacNativeBinary=$GITHUB_WORKSPACE/artifacts/native/osx-arm64/libmlxsharp.dylib -p:MLXSharpMacMetallibBinary=$GITHUB_WORKSPACE/artifacts/native/osx-arm64/mlx.metallib -p:MLXSharpLinuxNativeBinary=$GITHUB_WORKSPACE/artifacts/native/linux-x64/libmlxsharp.so -p:MLXSharpSkipLinuxNativeValidation=true
181185

182186
- name: Verify package contains native libraries
183187
run: |
@@ -205,6 +209,12 @@ jobs:
205209
echo " ✗ macOS library missing"
206210
package_missing=1
207211
fi
212+
if unzip -l "${package}" | grep -q "runtimes/osx-arm64/native/mlx.metallib"; then
213+
echo " ✓ macOS metallib present"
214+
else
215+
echo " ✗ macOS metallib missing"
216+
package_missing=1
217+
fi
208218
if unzip -l "${package}" | grep -q "runtimes/linux-x64/native/libmlxsharp.so"; then
209219
echo " ✓ Linux library present"
210220
else

src/MLXSharp/MLXSharp.csproj

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
<MLXSharpMacNativeDestination>$([System.IO.Path]::Combine('$(MSBuildProjectDirectory)','runtimes','osx-arm64','native','libmlxsharp.dylib'))</MLXSharpMacNativeDestination>
2121
<MLXSharpSkipMacNativeValidation Condition="'$(MLXSharpSkipMacNativeValidation)' == ''">false</MLXSharpSkipMacNativeValidation>
2222
<MLXSharpMacNativeDestinationDir>$([System.IO.Path]::GetDirectoryName('$(MLXSharpMacNativeDestination)'))</MLXSharpMacNativeDestinationDir>
23+
<MLXSharpMacMetallibBinary Condition="'$(MLXSharpMacMetallibBinary)' == ''">$([System.IO.Path]::Combine('$(MSBuildProjectDirectory)','..','..','native','build','macos','extern','mlx','mlx','backend','metal','kernels','mlx.metallib'))</MLXSharpMacMetallibBinary>
24+
<MLXSharpMacMetallibDestination Condition="'$(MLXSharpMacMetallibDestination)' == ''">$([System.IO.Path]::Combine('$(MLXSharpMacNativeDestinationDir)','mlx.metallib'))</MLXSharpMacMetallibDestination>
2325

2426
<MLXSharpLinuxNativeBinary Condition="'$(MLXSharpLinuxNativeBinary)' == ''">$([System.IO.Path]::Combine('$(MSBuildProjectDirectory)','..','..','native','build','linux','libmlxsharp.so'))</MLXSharpLinuxNativeBinary>
2527
<MLXSharpLinuxNativeDestination>$([System.IO.Path]::Combine('$(MSBuildProjectDirectory)','runtimes','linux-x64','native','libmlxsharp.so'))</MLXSharpLinuxNativeDestination>
@@ -33,6 +35,8 @@
3335
<ItemGroup>
3436
<_MacNativeSource Include="$(MLXSharpMacNativeBinary)"
3537
Condition="Exists('$(MLXSharpMacNativeBinary)')" />
38+
<_MacMetallibSource Include="$(MLXSharpMacMetallibBinary)"
39+
Condition="Exists('$(MLXSharpMacMetallibBinary)')" />
3640
</ItemGroup>
3741

3842
<MakeDir Directories="$(MLXSharpMacNativeDestinationDir)"
@@ -42,6 +46,10 @@
4246
DestinationFiles="$(MLXSharpMacNativeDestination)"
4347
SkipUnchangedFiles="true"
4448
Condition="'@(_MacNativeSource)' != ''" />
49+
<Copy SourceFiles="@(_MacMetallibSource)"
50+
DestinationFiles="$(MLXSharpMacMetallibDestination)"
51+
SkipUnchangedFiles="true"
52+
Condition="'@(_MacMetallibSource)' != ''" />
4553

4654
<ItemGroup>
4755
<None Include="$(MLXSharpMacNativeDestination)"
@@ -51,10 +59,19 @@
5159
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
5260
<Link>runtimes\osx-arm64\native\%(Filename)%(Extension)</Link>
5361
</None>
62+
<None Include="$(MLXSharpMacMetallibDestination)"
63+
Condition="Exists('$(MLXSharpMacMetallibDestination)')">
64+
<Pack>true</Pack>
65+
<PackagePath>runtimes/osx-arm64/native/%(Filename)%(Extension)</PackagePath>
66+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
67+
<Link>runtimes\osx-arm64\native\%(Filename)%(Extension)</Link>
68+
</None>
5469
</ItemGroup>
5570

5671
<Error Condition="'$(MLXSharpSkipMacNativeValidation)' != 'true' and !Exists('$(MLXSharpMacNativeDestination)')"
5772
Text="libmlxsharp.dylib is missing. Build the native library or supply MLXSharpMacNativeBinary before packing." />
73+
<Error Condition="'$(MLXSharpSkipMacNativeValidation)' != 'true' and !Exists('$(MLXSharpMacMetallibDestination)')"
74+
Text="mlx.metallib is missing. Build the native library or supply MLXSharpMacMetallibBinary before packing." />
5875
</Target>
5976

6077
<Target Name="EnsureLinuxNativeBinary"

0 commit comments

Comments
 (0)