blob: d21fc8e2ede2c77573a22326322ceff053c2ed5c [file] [log] [blame]
/*
* Copyright 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* This file was created using the `create_project.py` script located in the
* `<AndroidX root>/development/project-creator` directory.
*
* Please use that script when creating a new project, rather than copying an existing project and
* modifying its settings.
*/
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.mpp.BitcodeEmbeddingMode
import org.jetbrains.kotlin.gradle.plugin.mpp.apple.XCFrameworkConfig
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile
import org.jetbrains.kotlin.konan.target.Family
plugins {
id("AndroidXPlugin")
id("com.android.library")
id("androidx.benchmark")
id("androidx.benchmark.darwin")
}
androidXMultiplatform {
android()
// XCFrameworkConfig must always be called AndroidXDarwinBenchmarks
def xcf = new XCFrameworkConfig(project, "AndroidXDarwinBenchmarks")
ios {
binaries.framework {
// The module name must be AndroidXDarwinBenchmarks for the discovery to work.
baseName = "AndroidXDarwinBenchmarks"
// https://youtrack.jetbrains.com/issue/KT-48552
embedBitcode = BitcodeEmbeddingMode.DISABLE
export(project(":benchmark:benchmark-darwin"))
xcf.add(it)
}
}
sourceSets {
commonMain {
dependencies {
implementation(project(":collection:collection"))
implementation(libs.kotlinStdlib)
}
}
commonTest {
dependencies {
implementation(project(":collection:collection"))
implementation(libs.kotlinStdlib)
}
}
androidInstrumentedTest {
dependsOn(commonTest)
dependencies {
implementation(projectOrArtifact(":benchmark:benchmark-junit4"))
implementation(libs.junit)
implementation(libs.testExtJunit)
implementation(libs.testCore)
implementation(libs.testRunner)
implementation(libs.testRules)
}
}
darwinMain {
dependsOn(commonMain)
dependencies {
api(project(":benchmark:benchmark-darwin"))
}
}
targets.configureEach { target ->
if (target.platformType == KotlinPlatformType.native) {
target.compilations["main"].defaultSourceSet {
def konanTargetFamily = target.konanTarget.family
if (konanTargetFamily == Family.OSX || konanTargetFamily == Family.IOS) {
dependsOn(darwinMain)
} else {
throw new GradleException("unknown native target ${target}")
}
}
target.compilations.configureEach {
compilerOptions.options.optIn.add("kotlinx.cinterop.ExperimentalForeignApi")
}
}
}
// Workaround for https://youtrack.jetbrains.com/issue/KT-51763
// Make sure commonization runs before any compilation task.
tasks.withType(KotlinNativeCompile).configureEach {
it.dependsOn(tasks.named("commonize"))
}
}
}
androidx {
name = "Collections Benchmarks (Android / iOS)"
inceptionYear = "2022"
description = "AndroidX Collections Benchmarks (Android / iOS)"
}
darwinBenchmark {
xcodeGenConfigFile = project.rootProject.file(
"benchmark/benchmark-darwin-xcode/projects/collection-benchmark-ios.yml"
)
xcodeProjectName = "collection-benchmark-ios"
scheme = "testapp-ios"
// To run locally switch to iOS 17.0 simulators
destination = "platform=iOS Simulator,name=iPhone 13,OS=15.2"
referenceSha.set(androidx.getReferenceSha())
}
android {
namespace "androidx.collection.benchmark"
defaultConfig {
minSdkVersion 22 // b/294570164
}
}