Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions .github/workflows/build-natives.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Build Native Libraries

on:
workflow_call:

jobs:
windows:
runs-on: windows-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4

- name: Build Windows native DLLs
shell: cmd
working-directory: mediaplayer/src/jvmMain/native/windows
run: call build.bat

- name: Verify Windows natives
shell: bash
run: |
for f in \
mediaplayer/src/jvmMain/resources/win32-x86-64/NativeVideoPlayer.dll \
mediaplayer/src/jvmMain/resources/win32-arm64/NativeVideoPlayer.dll; do
if [ ! -f "$f" ]; then echo "MISSING: $f" >&2; exit 1; fi
echo "OK: $f ($(wc -c < "$f") bytes)"
done

- name: Upload Windows DLLs
uses: actions/upload-artifact@v4
with:
name: windows-natives
path: |
mediaplayer/src/jvmMain/resources/win32-x86-64/
mediaplayer/src/jvmMain/resources/win32-arm64/
retention-days: 1

macos:
runs-on: macos-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4

- name: Build macOS native dylibs
run: bash mediaplayer/src/jvmMain/native/macos/build.sh

- name: Verify macOS natives
run: |
for f in \
mediaplayer/src/jvmMain/resources/darwin-aarch64/libNativeVideoPlayer.dylib \
mediaplayer/src/jvmMain/resources/darwin-x86-64/libNativeVideoPlayer.dylib; do
if [ ! -f "$f" ]; then echo "MISSING: $f" >&2; exit 1; fi
echo "OK: $f ($(wc -c < "$f") bytes)"
done

- name: Upload macOS dylibs
uses: actions/upload-artifact@v4
with:
name: macos-natives
path: |
mediaplayer/src/jvmMain/resources/darwin-aarch64/
mediaplayer/src/jvmMain/resources/darwin-x86-64/
retention-days: 1
42 changes: 38 additions & 4 deletions .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ on:
branches: [ master ]

jobs:
build-natives:
uses: ./.github/workflows/build-natives.yml

build-and-test:
needs: build-natives
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
Expand All @@ -17,6 +21,40 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4

- name: Download Windows natives
uses: actions/download-artifact@v4
with:
name: windows-natives
path: mediaplayer/src/jvmMain/resources/
merge-multiple: true

- name: Download macOS natives
uses: actions/download-artifact@v4
with:
name: macos-natives
path: mediaplayer/src/jvmMain/resources/
merge-multiple: true

- name: Verify all natives present
shell: bash
run: |
EXPECTED=(
"mediaplayer/src/jvmMain/resources/win32-x86-64/NativeVideoPlayer.dll"
"mediaplayer/src/jvmMain/resources/win32-arm64/NativeVideoPlayer.dll"
"mediaplayer/src/jvmMain/resources/darwin-aarch64/libNativeVideoPlayer.dylib"
"mediaplayer/src/jvmMain/resources/darwin-x86-64/libNativeVideoPlayer.dylib"
)
MISSING=0
for f in "${EXPECTED[@]}"; do
if [ -f "$f" ]; then
echo "OK: $f ($(wc -c < "$f") bytes)"
else
echo "MISSING: $f" >&2
MISSING=1
fi
done
if [ "$MISSING" = "1" ]; then exit 1; fi

- name: Set up JDK
uses: actions/setup-java@v4
with:
Expand All @@ -28,10 +66,6 @@ jobs:
run: chmod +x gradlew
if: runner.os != 'Windows'

- name: Grant execute permission for gradlew (Windows)
run: git update-index --chmod=+x gradlew
if: runner.os == 'Windows'

- name: Build and test with Gradle
run: ./gradlew build test --no-daemon
shell: bash
Expand Down
44 changes: 40 additions & 4 deletions .github/workflows/publish-on-maven-central.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,61 @@ on:
- 'v*'

jobs:
build-natives:
uses: ./.github/workflows/build-natives.yml

publish:
needs: build-natives
runs-on: macos-latest

steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Download Windows natives
uses: actions/download-artifact@v4
with:
name: windows-natives
path: mediaplayer/src/jvmMain/resources/
merge-multiple: true

- name: Download macOS natives
uses: actions/download-artifact@v4
with:
name: macos-natives
path: mediaplayer/src/jvmMain/resources/
merge-multiple: true

- name: Verify all natives present
run: |
EXPECTED=(
"mediaplayer/src/jvmMain/resources/win32-x86-64/NativeVideoPlayer.dll"
"mediaplayer/src/jvmMain/resources/win32-arm64/NativeVideoPlayer.dll"
"mediaplayer/src/jvmMain/resources/darwin-aarch64/libNativeVideoPlayer.dylib"
"mediaplayer/src/jvmMain/resources/darwin-x86-64/libNativeVideoPlayer.dylib"
)
MISSING=0
for f in "${EXPECTED[@]}"; do
if [ -f "$f" ]; then
echo "OK: $f ($(wc -c < "$f") bytes)"
else
echo "MISSING: $f" >&2
MISSING=1
fi
done
if [ "$MISSING" = "1" ]; then exit 1; fi

- name: Set up JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Set up Publish to Maven Central
- name: Publish to Maven Central
run: ./gradlew publishAndReleaseToMavenCentral --no-configuration-cache
env:
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVENCENTRALUSERNAME }}
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVENCENTRALPASSWORD }}
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNINGINMEMORYKEY }}
ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.SIGNINGKEYID }}
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNINGPASSWORD }}

20 changes: 9 additions & 11 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,14 @@ Pods/
*.jks
*.gpg
*yarn.lock
/winlib/cmake-build-arm64
/winlib/cmake-build-x64
/winlib/.idea
/mediaplayer/src/jvmMain/resources/darwin-x86-64/NativeVideoPlayer.abi.json
/mediaplayer/src/jvmMain/resources/darwin-x86-64/NativeVideoPlayer.swiftdoc
/mediaplayer/src/jvmMain/resources/darwin-x86-64/NativeVideoPlayer.swiftmodule
/mediaplayer/src/jvmMain/resources/darwin-x86-64/NativeVideoPlayer.swiftsourceinfo
/mediaplayer/src/jvmMain/resources/darwin-aarch64/NativeVideoPlayer.abi.json
/mediaplayer/src/jvmMain/resources/darwin-aarch64/NativeVideoPlayer.swiftdoc
/mediaplayer/src/jvmMain/resources/darwin-aarch64/NativeVideoPlayer.swiftmodule
/mediaplayer/src/jvmMain/resources/darwin-aarch64/NativeVideoPlayer.swiftsourceinfo
# Native compiled binaries (built in CI)
/mediaplayer/src/jvmMain/resources/win32-x86-64/
/mediaplayer/src/jvmMain/resources/win32-arm64/
/mediaplayer/src/jvmMain/resources/darwin-aarch64/
/mediaplayer/src/jvmMain/resources/darwin-x86-64/

# Native build artifacts
/mediaplayer/src/jvmMain/native/windows/build-x64/
/mediaplayer/src/jvmMain/native/windows/build-arm64/
*.log
/sample/composeApp/debug/
3 changes: 0 additions & 3 deletions .gitmodules

This file was deleted.

39 changes: 23 additions & 16 deletions .run/BuildNativeAndRunDemo.run.xml
Original file line number Diff line number Diff line change
@@ -1,20 +1,27 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="BuildNativeAndRunDemo" type="ShConfigurationType">
<option name="SCRIPT_TEXT" value="" />
<option name="INDEPENDENT_SCRIPT_PATH" value="false" />
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/buildNativeLibsAndRunSampleApp.bat" />
<option name="SCRIPT_OPTIONS" value="" />
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
<option name="INTERPRETER_PATH" value="" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="EXECUTE_IN_TERMINAL" value="true" />
<option name="EXECUTE_SCRIPT_FILE" value="false" />
<envs />
<configuration default="false" name="BuildNativeAndRunDemo" type="GradleRunConfiguration" factoryName="Gradle">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$/mediaplayer" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" value="" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="buildNativeMacOs" />
<option value="buildNativeWindows" />
</list>
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
<DebugAllEnabled>false</DebugAllEnabled>
<RunAsTest>false</RunAsTest>
<method v="2">
<option name="Gradle.BeforeRunTask" enabled="true" tasks="buildNativeLibraries" externalProjectPath="$PROJECT_DIR$/mediaplayer" vmOptions="" scriptParameters="" />
<option name="Gradle.BeforeRunTask" enabled="true" tasks="run" externalProjectPath="$PROJECT_DIR$/sample" vmOptions="" scriptParameters="" />
<option name="Gradle.BeforeRunTask" enabled="true" tasks="run" externalProjectPath="$PROJECT_DIR$/sample/composeApp" vmOptions="" scriptParameters="" />
</method>
</configuration>
</component>
</component>
4 changes: 2 additions & 2 deletions .run/CompileSwiftLib.run.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="CompileSwiftLib" type="ShConfigurationType">
<option name="SCRIPT_TEXT" value="swiftc -emit-library -emit-module -module-name NativeVideoPlayer -target arm64-apple-macosx14.0 -o mediaplayer/src/jvmMain/resources/darwin-aarch64/libNativeVideoPlayer.dylib mediaplayer/src/jvmMain/kotlin/io/github/kdroidfilter/composemediaplayer/mac/native/NativeVideoPlayer.swift -O -whole-module-optimization &amp;&amp; swiftc -emit-library -emit-module -module-name NativeVideoPlayer -target x86_64-apple-macosx14.0 -o mediaplayer/src/jvmMain/resources/darwin-x86-64/libNativeVideoPlayer.dylib mediaplayer/src/jvmMain/kotlin/io/github/kdroidfilter/composemediaplayer/mac/native/NativeVideoPlayer.swift -O -whole-module-optimization" />
<option name="SCRIPT_TEXT" value="bash mediaplayer/src/jvmMain/native/macos/build.sh" />
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
<option name="SCRIPT_PATH" value="" />
<option name="SCRIPT_OPTIONS" value="" />
Expand All @@ -14,4 +14,4 @@
<envs />
<method v="2" />
</configuration>
</component>
</component>
6 changes: 3 additions & 3 deletions .run/CompileWinLib.run.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
<configuration default="false" name="CompileWinLib" type="ShConfigurationType">
<option name="SCRIPT_TEXT" value="" />
<option name="INDEPENDENT_SCRIPT_PATH" value="false" />
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/winlib/build.bat" />
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/mediaplayer/src/jvmMain/native/windows/build.bat" />
<option name="SCRIPT_OPTIONS" value="" />
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$/winlib" />
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$/mediaplayer/src/jvmMain/native/windows" />
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
<option name="INTERPRETER_PATH" value="" />
<option name="INTERPRETER_OPTIONS" value="" />
Expand All @@ -14,4 +14,4 @@
<envs />
<method v="2" />
</configuration>
</component>
</component>
Loading
Loading