Skip to content

Commit bd76fe0

Browse files
committed
[CI] Get rid of 64 at the end of native binaries names; prepare for Win ARM testing
1 parent 07e1ac5 commit bd76fe0

16 files changed

Lines changed: 131 additions & 52 deletions

File tree

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,28 @@
11
name: 'Copy Native Libraries Near csproj'
22
description: 'Downloads and copies native libraries near csproj files'
33

4+
inputs:
5+
win-arch:
6+
description: 'Windows dll architecture'
7+
type: string
8+
default: 'x64'
9+
macos-arch:
10+
description: 'macOS dylib architecture'
11+
type: string
12+
default: 'x64_arm64'
13+
414
runs:
515
using: 'composite'
616
steps:
717
- name: Download native libraries
818
uses: actions/download-artifact@v4
919
with:
20+
pattern: Native_*
1021
path: ${{ runner.temp }}/NativeLibraries
22+
merge-multiple: false
1123

1224
- name: Copy native libraries near csproj
1325
shell: pwsh
1426
run: |
15-
Copy-Item -Path "${{ runner.temp }}/NativeLibraries/**/*.dll" -Destination "DryWetMidi" -ErrorAction SilentlyContinue
16-
Copy-Item -Path "${{ runner.temp }}/NativeLibraries/**/*.dylib" -Destination "DryWetMidi" -ErrorAction SilentlyContinue
27+
Copy-Item -Path "${{ runner.temp }}/NativeLibraries/Native_Win_${{ inputs.win-arch }}/*.dll" -Destination "DryWetMidi" -Verbose
28+
Copy-Item -Path "${{ runner.temp }}/NativeLibraries/Native_macOS_${{ inputs.macos-arch }}/*.dylib" -Destination "DryWetMidi" -Verbose

.github/actions/create-ports-windows/action.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ inputs:
1010
description: 'Comma-separated list of port names'
1111
required: false
1212
default: 'MIDI A,MIDI B,MIDI C'
13+
arch:
14+
description: 'Utility architecture'
15+
required: false
16+
default: 'x64'
1317

1418
runs:
1519
using: 'composite'
@@ -32,4 +36,4 @@ runs:
3236
if: inputs.enabled == 'true' && runner.os == 'Windows'
3337
shell: pwsh
3438
run: |
35-
& "${{ github.workspace }}/Resources/Scripts/Setup MIDI ports.ps1" -portsNames "${{ inputs.ports-names }}"
39+
& "${{ github.workspace }}/Resources/Scripts/Setup MIDI ports.ps1" -portsNames "${{ inputs.ports-names }}" -arch "${{ inputs.arch }}"

.github/workflows/build-native-libs.yml

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,6 @@ name: Build Native Libraries
22

33
on:
44
workflow_call:
5-
outputs:
6-
dll-artifact-name:
7-
description: "Name of the Windows DLL artifact"
8-
value: Melanchall_DryWetMidi_Native64.dll
9-
dylib-artifact-name:
10-
description: "Name of the macOS dylib artifact"
11-
value: Melanchall_DryWetMidi_Native64.dylib
125

136
jobs:
147
build-dll-x64:
@@ -32,8 +25,33 @@ jobs:
3225
- name: Upload dll artifact
3326
uses: actions/upload-artifact@v4
3427
with:
35-
name: Melanchall_DryWetMidi_Native64.dll
36-
path: Resources/Native/Windows/Melanchall_DryWetMidi_Native64.dll
28+
name: Native_Win_x64
29+
path: Resources/Native/Windows/Melanchall_DryWetMidi_Native.dll
30+
if-no-files-found: error
31+
32+
build-dll-arm64:
33+
name: Build arm64 dll
34+
runs-on: windows-latest
35+
steps:
36+
- name: Checkout
37+
uses: actions/checkout@v4
38+
39+
- name: Setup MSBuild
40+
uses: microsoft/setup-msbuild@v2
41+
42+
- name: Build dll
43+
run: |
44+
msbuild Resources/Native/Windows/Melanchall.DryWetMidi.Native.Windows/Melanchall.DryWetMidi.Native.Windows/Melanchall.DryWetMidi.Native.Windows.vcxproj `
45+
/p:Configuration=Release `
46+
/p:Platform=ARM64EC `
47+
/p:SolutionDir="${{ github.workspace }}\Resources\Native\Windows\Melanchall.DryWetMidi.Native.Windows\"
48+
shell: pwsh
49+
50+
- name: Upload dll artifact
51+
uses: actions/upload-artifact@v4
52+
with:
53+
name: Native_Win_arm64
54+
path: Resources/Native/Windows/Melanchall_DryWetMidi_Native.dll
3755
if-no-files-found: error
3856

3957
build-dylib-x64-arm64:
@@ -48,17 +66,17 @@ jobs:
4866
run: |
4967
cd Resources/Native/macOS
5068
Write-Host "Building arm64 dylib..."
51-
clang -shared -undefined dynamic_lookup -o Melanchall_DryWetMidi_Native64_arm64.dylib NativeApi-macOS.cpp -framework CoreServices -framework CoreFoundation -framework CoreMIDI -arch arm64
69+
clang -shared -undefined dynamic_lookup -o Melanchall_DryWetMidi_Native_arm64.dylib NativeApi-macOS.cpp -framework CoreServices -framework CoreFoundation -framework CoreMIDI -arch arm64
5270
Write-Host "Building x64 dylib..."
53-
clang -shared -undefined dynamic_lookup -o Melanchall_DryWetMidi_Native64_x86_64.dylib NativeApi-macOS.cpp -framework CoreServices -framework CoreFoundation -framework CoreMIDI -arch x86_64
71+
clang -shared -undefined dynamic_lookup -o Melanchall_DryWetMidi_Native_x86_64.dylib NativeApi-macOS.cpp -framework CoreServices -framework CoreFoundation -framework CoreMIDI -arch x86_64
5472
Write-Host "Merging dylibs..."
55-
lipo Melanchall_DryWetMidi_Native64_x86_64.dylib Melanchall_DryWetMidi_Native64_arm64.dylib -output Melanchall_DryWetMidi_Native64.dylib -create
73+
lipo Melanchall_DryWetMidi_Native_x86_64.dylib Melanchall_DryWetMidi_Native_arm64.dylib -output Melanchall_DryWetMidi_Native.dylib -create
5674
Write-Host "Printing architectures..."
57-
lipo -info Melanchall_DryWetMidi_Native64.dylib
75+
lipo -info Melanchall_DryWetMidi_Native.dylib
5876
5977
- name: Upload dylib artifact
6078
uses: actions/upload-artifact@v4
6179
with:
62-
name: Melanchall_DryWetMidi_Native64.dylib
63-
path: Resources/Native/macOS/Melanchall_DryWetMidi_Native64.dylib
64-
if-no-files-found: error
80+
name: Native_macOS_x64_arm64
81+
path: Resources/Native/macOS/Melanchall_DryWetMidi_Native.dylib
82+
if-no-files-found: error

.github/workflows/build-package.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ jobs:
8585
if: inputs.package-type == 'Full'
8686
shell: pwsh
8787
run: |
88-
Copy-Item -Path "${{ runner.temp }}/NativeLibraries/**/*.dll" -Destination "DryWetMidi" -ErrorAction SilentlyContinue
89-
Copy-Item -Path "${{ runner.temp }}/NativeLibraries/**/*.dylib" -Destination "DryWetMidi" -ErrorAction SilentlyContinue
88+
Copy-Item -Path "${{ runner.temp }}/NativeLibraries/Native_Win_x64/*.dll" -Destination "DryWetMidi" -Verbose
89+
Copy-Item -Path "${{ runner.temp }}/NativeLibraries/Native_macOS_x64_arm64/*.dylib" -Destination "DryWetMidi" -Verbose
9090
9191
- name: Build project
9292
run: dotnet build DryWetMidi/Melanchall.DryWetMidi.csproj --configuration ${{ vars.BUILD_CONFIGURATION || 'Release' }}

.github/workflows/run-check-dwm-api-tool.yml

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,37 +26,45 @@ jobs:
2626
uses: ./.github/workflows/build-native-libs.yml
2727

2828
run-check-dwm-api-tool:
29-
name: Run CheckDwmApi tool (${{ matrix.os }})
29+
name: Run CheckDwmApi tool (${{ matrix.os }}, ${{ matrix.framework }})
3030
needs: build-native-libs
3131
runs-on: ${{ matrix.os }}
3232
timeout-minutes: 60
3333
strategy:
3434
fail-fast: false
3535
matrix:
3636
include:
37+
# Waiting for MIDI Services rollout in Win 11
38+
# and ability to install midi-console
3739
#- os: windows-11-arm
3840
# framework: Net
41+
# win-arch: 'arm64'
3942
#- os: windows-11-arm
4043
# framework: NetFramework
44+
# win-arch: 'arm64'
4145
- os: macos-latest
4246
framework: Net
47+
win-arch: 'x64'
4348
- os: ubuntu-24.04-arm
4449
framework: Net
50+
win-arch: 'x64'
4551

46-
steps:
52+
steps:
4753
- name: Checkout
4854
uses: actions/checkout@v4
4955

5056
- name: Copy native libraries
5157
uses: ./.github/actions/copy-native-libraries
58+
with:
59+
win-arch: ${{ matrix.win-arch }}
5260

5361
- name: Setup framework
5462
id: framework
5563
uses: ./.github/actions/setup-framework
5664
with:
57-
framework: ${{ matrix.framework }}
65+
framework: ${{ matrix.framework }}
5866
net-tfm: ${{ vars.BUILD_FRAMEWORK_NET_TFM || 'net8.0' }}
59-
net-sdk-version: ${{ vars.BUILD_FRAMEWORK_NET_SDK_VERSION }}
67+
net-sdk-version: ${{ vars.BUILD_FRAMEWORK_NET_SDK_VERSION }}
6068
netframework-tfm: ${{ vars.BUILD_FRAMEWORK_NETFRAMEWORK_TFM }}
6169
netframework-sdk-version: ${{ vars.BUILD_FRAMEWORK_NETFRAMEWORK_SDK_VERSION }}
6270

@@ -66,6 +74,7 @@ jobs:
6674
with:
6775
enabled: 'true'
6876
ports-names: 'TestVirtualMidiDevice'
77+
arch: '${{ matrix.win-arch }}'
6978

7079
- name: Run CheckDwmApi tool
7180
continue-on-error: false

DryWetMidi/Melanchall.DryWetMidi.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@
6363
</PropertyGroup>
6464

6565
<ItemGroup Label="Native">
66-
<None Include="Melanchall_DryWetMidi_Native64.dll">
66+
<None Include="Melanchall_DryWetMidi_Native.dll">
6767
<PackagePath>build\</PackagePath>
6868
<Pack>true</Pack>
6969
</None>
70-
<None Include="Melanchall_DryWetMidi_Native64.dylib">
70+
<None Include="Melanchall_DryWetMidi_Native.dylib">
7171
<PackagePath>build\</PackagePath>
7272
<Pack>true</Pack>
7373
</None>

DryWetMidi/Melanchall.DryWetMidi.targets

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<ItemGroup>
4-
<None Include="$(MSBuildThisFileDirectory)Melanchall_DryWetMidi_Native64.dll">
4+
<None Include="$(MSBuildThisFileDirectory)Melanchall_DryWetMidi_Native.dll">
55
<Visible>false</Visible>
6-
<Link>Melanchall_DryWetMidi_Native64.dll</Link>
6+
<Link>Melanchall_DryWetMidi_Native.dll</Link>
77
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
88
</None>
9-
<None Include="$(MSBuildThisFileDirectory)Melanchall_DryWetMidi_Native64.dylib">
9+
<None Include="$(MSBuildThisFileDirectory)Melanchall_DryWetMidi_Native.dylib">
1010
<Visible>false</Visible>
11-
<Link>Melanchall_DryWetMidi_Native64.dylib</Link>
11+
<Link>Melanchall_DryWetMidi_Native.dylib</Link>
1212
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
1313
</None>
1414
</ItemGroup>

DryWetMidi/Multimedia/Native/NativeApi.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public enum MidiMessage
6262

6363
#region Constants
6464

65-
public const string LibraryName = "Melanchall_DryWetMidi_Native64";
65+
public const string LibraryName = "Melanchall_DryWetMidi_Native";
6666

6767
private static readonly Dictionary<NativeErrorType, string> ErrorsDescriptions = new Dictionary<NativeErrorType, string>
6868
{

Melanchall.DryWetMidi.Native.targets

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<ItemGroup Label="Native">
4-
<None Include="$(SolutionDir)DryWetMidi\Melanchall_DryWetMidi_Native64.dll">
4+
<None Include="$(SolutionDir)DryWetMidi\Melanchall_DryWetMidi_Native.dll">
55
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
66
</None>
7-
<None Include="$(SolutionDir)DryWetMidi\Melanchall_DryWetMidi_Native64.dylib">
7+
<None Include="$(SolutionDir)DryWetMidi\Melanchall_DryWetMidi_Native.dylib">
88
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
99
</None>
1010
</ItemGroup>

Resources/CI/Templates/job-build-package.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,9 @@ jobs:
8787
inputs:
8888
targetType: 'inline'
8989
script: |
90-
Copy-Item -Path "$(Pipeline.Workspace)\NativeLibraries\**\*.dll" -Destination "DryWetMidi"
91-
Copy-Item -Path "$(Pipeline.Workspace)\NativeLibraries\**\*.dylib" -Destination "DryWetMidi"
90+
Copy-Item -Path "$(Pipeline.Workspace)/NativeLibraries/Native_Win_x64/*.dll" -Destination "DryWetMidi" -Verbose
91+
# think about win arm64
92+
Copy-Item -Path "$(Pipeline.Workspace)/NativeLibraries/Native_macOS_x64_arm64/*.dylib" -Destination "DryWetMidi" -Verbose
9293
9394
- task: DotNetCoreCLI@2
9495
displayName: Build project

0 commit comments

Comments
 (0)