blob: 5575002fc1a6847bef7f730827161f53da4ee452 [file] [log] [blame]
/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the LICENSE file.
*/
import org.jetbrains.kotlin.PlatformInfo
import org.jetbrains.kotlin.getCompileOnlyBenchmarksOpts
import org.jetbrains.kotlin.getNativeProgramExtension
import org.jetbrains.kotlin.mingwPath
plugins {
id("compile-benchmarking")
}
val dist = file(findProperty("kotlin.native.home") ?: "dist")
val toolSuffix = if (System.getProperty("os.name").startsWith("Windows")) ".bat" else ""
val binarySuffix = getNativeProgramExtension()
val videoplayerDir = "$projectDir/../../backend.native/tests/samples/videoplayer"
val linkerOpts = when {
PlatformInfo.isMac() -> listOf("-linker-options", "-L/opt/local/lib", "-linker-options", "-L/usr/local/lib", "-linker-options", "-L/opt/homebrew/lib", "-linker-options", "-L/opt/homebrew/opt/ffmpeg@4/lib")
PlatformInfo.isLinux() -> listOf("-linker-options", "-L/usr/lib/x86_64-linux-gnu", "-linker-options", "-L/usr/lib64")
PlatformInfo.isWindows() -> listOf("-linker-options", "-L$mingwPath/lib")
else -> error("Unsupported platform")
}
var includeDirsFfmpeg = emptyList<String>()
var filterDirsFfmpeg = emptyList<String>()
when {
PlatformInfo.isMac() -> filterDirsFfmpeg = listOf(
"-headerFilterAdditionalSearchPrefix", "/opt/local/include",
"-headerFilterAdditionalSearchPrefix", "/usr/local/include",
"-headerFilterAdditionalSearchPrefix", "/opt/homebrew/opt/ffmpeg@4/include"
)
PlatformInfo.isLinux() -> filterDirsFfmpeg = listOf(
"-headerFilterAdditionalSearchPrefix", "/usr/include",
"-headerFilterAdditionalSearchPrefix", "/usr/include/x86_64-linux-gnu",
"-headerFilterAdditionalSearchPrefix", "/usr/include/ffmpeg"
)
PlatformInfo.isWindows() -> includeDirsFfmpeg = listOf("-compiler-option", "-I$mingwPath/include")
}
var includeDirsSdl = when {
PlatformInfo.isMac() -> listOf(
"-compiler-option", "-I/opt/local/include/SDL2",
"-compiler-option", "-I/usr/local/include/SDL2",
"-compiler-option", "-I/opt/homebrew/include/SDL2"
)
PlatformInfo.isLinux() -> listOf("-compiler-option", "-I/usr/include/SDL2")
PlatformInfo.isWindows() -> listOf("-compiler-option", "-I$mingwPath/include/SDL2")
else -> error("Unsupported platform")
}
val defaultCompilerOpts = listOf("-g")
val buildOpts = getCompileOnlyBenchmarksOpts(project, defaultCompilerOpts)
compileBenchmark {
applicationName = "Videoplayer"
repeatNumber = 10
compilerOpts = buildOpts
buildSteps {
step("runCinteropFfmpeg") {
command = listOf(
"$dist/bin/cinterop$toolSuffix",
"-o", "$videoplayerDir/build/classes/kotlin/videoPlayer/main/videoplayer-cinterop-ffmpeg.klib",
"-def", "$videoplayerDir/src/nativeInterop/cinterop/ffmpeg.def"
) + filterDirsFfmpeg + includeDirsFfmpeg
}
step("runCinteropSdl") {
command = listOf(
"$dist/bin/cinterop$toolSuffix",
"-o", "$videoplayerDir/build/classes/kotlin/videoPlayer/main/videoplayer-cinterop-sdl.klib",
"-def", "$videoplayerDir/src/nativeInterop/cinterop/sdl.def"
) + includeDirsSdl
}
step("runKonanProgram") {
command = listOf(
"$dist/bin/konanc$toolSuffix",
"-ea", "-p", "program",
"-o", "${buildDir.absolutePath}/program$binarySuffix",
"-l", "$videoplayerDir/build/classes/kotlin/videoPlayer/main/videoplayer-cinterop-ffmpeg.klib",
"-l", "$videoplayerDir/build/classes/kotlin/videoPlayer/main/videoplayer-cinterop-sdl.klib",
"-Xmulti-platform", "$videoplayerDir/src/videoPlayerMain/kotlin",
"-entry", "sample.videoplayer.main"
) + buildOpts + linkerOpts
}
}
}