Skip to content

Commit 0be38c7

Browse files
committed
build: use prebuilt mpv
1 parent cfa1d14 commit 0be38c7

File tree

5 files changed

+52
-23
lines changed

5 files changed

+52
-23
lines changed

gradle/libs.versions.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ kotlinx-datetime = { group = "org.jetbrains.kotlinx", name = "kotlinx-datetime",
3535
compose-gl = { group = "dev.silenium.compose.gl", name = "compose-gl", version.ref = "compose-gl" }
3636
compose-gl-natives = { group = "dev.silenium.compose.gl", name = "compose-gl-natives-linux-x86_64", version.ref = "compose-gl" }
3737
ffmpeg-natives = { group = "dev.silenium.libs", name = "ffmpeg-natives", version = "7.1+0.2.0" }
38+
mpv-natives = { group = "dev.silenium.libs", name = "ffmpeg-natives", version = "0.39.0+0.1.0" }
3839
jni-utils = { group = "dev.silenium.libs.jni", name = "jni-utils", version.ref = "jni-utils" }
3940
jna = { group = "net.java.dev.jna", name = "jna", version.ref = "jna" }
4041

native/CMakeLists.txt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,21 @@ cmake_minimum_required(VERSION 3.16)
22
if (NOT DEFINED PROJECT_NAME)
33
set(PROJECT_NAME "compose-av")
44
endif ()
5-
if (NOT DEFINED FFMPEG_PLATFORM)
6-
message(FATAL_ERROR "FFMPEG_PLATFORM must be defined")
5+
if (NOT DEFINED NATIVE_PLATFORM)
6+
message(FATAL_ERROR "NATIVE_PLATFORM must be defined")
77
else ()
8-
message(STATUS "FFMPEG_PLATFORM: ${FFMPEG_PLATFORM}")
8+
message(STATUS "NATIVE_PLATFORM: ${NATIVE_PLATFORM}")
99
endif ()
1010
if (NOT DEFINED FFMPEG_VERSION)
1111
message(FATAL_ERROR "FFMPEG_VERSION must be defined")
1212
else ()
1313
message(STATUS "FFMPEG_VERSION: ${FFMPEG_VERSION}")
1414
endif ()
15+
if (NOT DEFINED MPV_VERSION)
16+
message(FATAL_ERROR "MPV_VERSION must be defined")
17+
else ()
18+
message(STATUS "MPV_VERSION: ${MPV_VERSION}")
19+
endif ()
1520
if (NOT DEFINED JAVA_HOME)
1621
message(FATAL_ERROR "JAVA_HOME must be defined")
1722
else ()

native/build.gradle.kts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,10 @@ val generateMakefile = tasks.register<Exec>("generateMakefile") {
3232
val additionalFlags = mutableListOf(
3333
"-DJAVA_HOME=${System.getProperty("java.home")}",
3434
"-DPROJECT_NAME=${libName}",
35-
"-DFFMPEG_PLATFORM=${platform.osArch}",
35+
"-DNATIVE_PLATFORM=${platform.osArch}",
3636
"-DFFMPEG_PLATFORM_EXTENSION=${platform.extension}",
3737
"-DFFMPEG_VERSION=${libs.ffmpeg.natives.get().version}",
38+
"-DMPV_VERSION=${libs.mpv.natives.get().version}",
3839
)
3940
commandLine(
4041
cmakeExe,
@@ -46,9 +47,10 @@ val generateMakefile = tasks.register<Exec>("generateMakefile") {
4647
inputs.properties(
4748
"JAVA_HOME" to System.getProperty("java.home"),
4849
"PROJECT_NAME" to libName,
49-
"FFMPEG_PLATFORM" to platform.osArch,
50+
"NATIVE_PLATFORM" to platform.osArch,
5051
"FFMPEG_PLATFORM_EXTENSION" to platform.extension,
5152
"FFMPEG_VERSION" to libs.ffmpeg.natives.get().version,
53+
"MPV_VERSION" to libs.mpv.natives.get().version,
5254
)
5355
outputs.dir(workingDir)
5456
standardOutput = System.out

native/thirdparty/ffmpeg.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
set(FFMPEG_URL "https://reposilite.silenium.dev/releases/dev/silenium/libs/ffmpeg/ffmpeg-natives-${FFMPEG_PLATFORM}${FFMPEG_PLATFORM_EXTENSION}/${FFMPEG_VERSION}/ffmpeg-natives-${FFMPEG_PLATFORM}${FFMPEG_PLATFORM_EXTENSION}-${FFMPEG_VERSION}.zip")
2-
set(FFMPEG_URL_SHA256 "https://reposilite.silenium.dev/releases/dev/silenium/libs/ffmpeg/ffmpeg-natives-${FFMPEG_PLATFORM}${FFMPEG_PLATFORM_EXTENSION}/${FFMPEG_VERSION}/ffmpeg-natives-${FFMPEG_PLATFORM}${FFMPEG_PLATFORM_EXTENSION}-${FFMPEG_VERSION}.zip.sha256")
1+
set(FFMPEG_URL "https://reposilite.silenium.dev/releases/dev/silenium/libs/ffmpeg/ffmpeg-natives-${NATIVE_PLATFORM}${FFMPEG_PLATFORM_EXTENSION}/${FFMPEG_VERSION}/ffmpeg-natives-${NATIVE_PLATFORM}${FFMPEG_PLATFORM_EXTENSION}-${FFMPEG_VERSION}.zip")
2+
set(FFMPEG_URL_SHA256 "https://reposilite.silenium.dev/releases/dev/silenium/libs/ffmpeg/ffmpeg-natives-${NATIVE_PLATFORM}${FFMPEG_PLATFORM_EXTENSION}/${FFMPEG_VERSION}/ffmpeg-natives-${NATIVE_PLATFORM}${FFMPEG_PLATFORM_EXTENSION}-${FFMPEG_VERSION}.zip.sha256")
33
set(FFMPEG_PREFIX "${CMAKE_BINARY_DIR}/ffmpeg")
44
message(STATUS "Downloading ffmpeg from ${FFMPEG_URL}")
55

native/thirdparty/mpv.cmake

Lines changed: 37 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,42 @@
1+
set(MPV_URL "https://reposilite.silenium.dev/releases/dev/silenium/libs/mpv/mpv-natives-${NATIVE_PLATFORM}/${MPV_VERSION}/mpv-natives-${NATIVE_PLATFORM}-${MPV_VERSION}.zip")
2+
set(MPV_URL_SHA256 "https://reposilite.silenium.dev/releases/dev/silenium/libs/mpv/mpv-natives-${NATIVE_PLATFORM}/${MPV_VERSION}/mpv-natives-${NATIVE_PLATFORM}-${MPV_VERSION}.zip.sha256")
3+
set(MPV_PREFIX "${CMAKE_BINARY_DIR}/mpv")
4+
message(STATUS "Downloading mpv from ${MPV_URL}")
5+
6+
file(DOWNLOAD "${MPV_URL_SHA256}" "${CMAKE_BINARY_DIR}/mpv.zip.sha256")
7+
file(READ "${CMAKE_BINARY_DIR}/mpv.zip.sha256" MPV_SHA256)
8+
file(DOWNLOAD "${MPV_URL}" "${CMAKE_BINARY_DIR}/mpv.zip" EXPECTED_HASH SHA256=${MPV_SHA256} SHOW_PROGRESS)
9+
file(ARCHIVE_EXTRACT INPUT "${CMAKE_BINARY_DIR}/mpv.zip" DESTINATION "${MPV_PREFIX}")
10+
11+
set(MPV_INCLUDE_DIR "${MPV_PREFIX}/include")
12+
set(MPV_LIB_DIR "${MPV_PREFIX}/lib")
13+
set(MPV_LIBRARIES
14+
mpv
15+
ass
16+
placebo)
117
add_library(mpv STATIC IMPORTED)
2-
if (NOT DEFINED MPV_A_LOCATION)
3-
set(MPV_URL "https://reposilite.silenium.dev/releases/dev/silenium/libs/mpv/mpv-natives-${MPV_PLATFORM}${MPV_PLATFORM_EXTENSION}/${MPV_VERSION}/mpv-natives-${MPV_PLATFORM}${MPV_PLATFORM_EXTENSION}-${MPV_VERSION}.zip")
4-
set(MPV_URL_SHA256 "https://reposilite.silenium.dev/releases/dev/silenium/libs/mpv/mpv-natives-${MPV_PLATFORM}${MPV_PLATFORM_EXTENSION}/${MPV_VERSION}/mpv-natives-${MPV_PLATFORM}${MPV_PLATFORM_EXTENSION}-${MPV_VERSION}.zip.sha256")
5-
set(MPV_PREFIX "${CMAKE_BINARY_DIR}/mpv")
6-
message(STATUS "Downloading mpv from ${MPV_URL}")
718

8-
file(DOWNLOAD "${MPV_URL_SHA256}" "${CMAKE_BINARY_DIR}/mpv.zip.sha256")
9-
file(READ "${CMAKE_BINARY_DIR}/mpv.zip.sha256" MPV_SHA256)
10-
file(DOWNLOAD "${MPV_URL}" "${CMAKE_BINARY_DIR}/mpv.zip" EXPECTED_HASH SHA256=${MPV_SHA256} SHOW_PROGRESS)
11-
file(ARCHIVE_EXTRACT INPUT "${CMAKE_BINARY_DIR}/mpv.zip" DESTINATION "${MPV_PREFIX}")
19+
set(MPV_MRI "${CMAKE_CURRENT_BINARY_DIR}/mpv.mri")
20+
file(WRITE "${MPV_MRI}" "CREATE libmpv.a\n")
21+
message(STATUS "Checking for mpv libraries")
22+
foreach (MPV_LIBRARY ${MPV_LIBRARIES})
23+
set(LIB_PATH "${MPV_LIB_DIR}/lib${MPV_LIBRARY}.a")
24+
if (NOT EXISTS ${LIB_PATH})
25+
message(STATUS " ${MPV_LIBRARY} not found")
26+
continue()
27+
endif ()
28+
message(STATUS " Found ${MPV_LIBRARY}")
29+
file(APPEND "${MPV_MRI}" "ADDLIB ${LIB_PATH}\n")
30+
endforeach ()
31+
file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/mpv.mri" "SAVE\nEND\n")
1232

13-
set(MPV_INCLUDE_DIR "${MPV_PREFIX}/include")
14-
set(MPV_LIB_DIR "${MPV_PREFIX}/lib")
15-
set_target_properties(mpv PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/libmpv.a")
16-
target_include_directories(mpv INTERFACE "${MPV_INCLUDE_DIR}")
17-
else ()
18-
set_target_properties(mpv PROPERTIES IMPORTED_LOCATION "${MPV_A_LOCATION}")
19-
endif ()
33+
add_custom_target(mpv_custom
34+
COMMAND ar -M < "${CMAKE_CURRENT_BINARY_DIR}/mpv.mri"
35+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
36+
BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/libmpv.a
37+
)
38+
add_dependencies(mpv mpv_custom)
39+
set_target_properties(mpv PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/libmpv.a")
2040

41+
target_include_directories(mpv INTERFACE "${MPV_INCLUDE_DIR}")
2142
target_link_options(mpv INTERFACE "-Wl,-Bsymbolic")

0 commit comments

Comments
 (0)