mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-07 22:03:40 +00:00
With a change introduce in 385dda5c3785ed8d6a35868bc169f07e40e889087fd2edc66, flatc was not able to emit code for Kotlin if a namespace is specified and the folders do not exist. The fix create folders if neded. Additional changes are introduced in gradle files to bring more visibility to the error messages. Co-authored-by: Derek Bailey <derekbailey@google.com>
138 lines
3.5 KiB
Groovy
138 lines
3.5 KiB
Groovy
apply plugin: 'com.android.application'
|
|
apply plugin: 'kotlin-android'
|
|
apply plugin: 'kotlin-android-extensions'
|
|
|
|
android {
|
|
compileSdkVersion 30
|
|
buildToolsVersion "30.0.2"
|
|
|
|
defaultConfig {
|
|
applicationId "com.flatbuffers.app"
|
|
minSdkVersion 16
|
|
targetSdkVersion 30
|
|
versionCode 1
|
|
versionName "1.0"
|
|
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
targetCompatibility JavaVersion.VERSION_1_8
|
|
}
|
|
|
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
externalNativeBuild {
|
|
cmake {
|
|
arguments "-DFLATBUFFERS_SRC=${rootProject.projectDir}/.."
|
|
}
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled false
|
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
|
}
|
|
}
|
|
|
|
externalNativeBuild {
|
|
cmake {
|
|
path "src/main/cpp/CMakeLists.txt"
|
|
}
|
|
}
|
|
|
|
task generateFbsCpp(type: Exec) {
|
|
def inputDir = file("$projectDir/src/main/fbs")
|
|
def outputCppDir = file("$projectDir/src/main/cpp/generated/")
|
|
def fbsFiles = layout.files { file(inputDir).listFiles() }.filter { File f -> f.name.endsWith(".fbs") }.toList()
|
|
ignoreExitValue(true)
|
|
|
|
standardOutput = new ByteArrayOutputStream()
|
|
errorOutput = new ByteArrayOutputStream()
|
|
def commandLineArgs = ['flatc', '-o', outputCppDir, '--cpp']
|
|
fbsFiles.forEach{
|
|
commandLineArgs.add(it.path)
|
|
}
|
|
|
|
commandLine commandLineArgs
|
|
|
|
doFirst {
|
|
delete "$outputCppDir/"
|
|
mkdir "$outputCppDir/"
|
|
}
|
|
|
|
doLast {
|
|
if (executionResult.get().exitValue != 0) {
|
|
throw new GradleException("flatc failed with: ${executionResult.get().toString()}")
|
|
}
|
|
}
|
|
}
|
|
|
|
task generateFbsKotlin(type: Exec) {
|
|
def inputDir = file("$projectDir/src/main/fbs")
|
|
def outputKotlinDir = file("$projectDir/src/main/java/generated/")
|
|
def fbsFiles = layout.files { file(inputDir).listFiles() }.filter { File f -> f.name.endsWith(".fbs") }.toList()
|
|
ignoreExitValue(true)
|
|
|
|
standardOutput = new ByteArrayOutputStream()
|
|
errorOutput = new ByteArrayOutputStream()
|
|
|
|
setErrorOutput(errorOutput)
|
|
setStandardOutput(standardOutput)
|
|
|
|
def commandLineArgs = ['flatc', '-o', outputKotlinDir, '--kotlin']
|
|
fbsFiles.forEach{
|
|
commandLineArgs.add(it.path)
|
|
}
|
|
commandLine commandLineArgs
|
|
|
|
doFirst {
|
|
delete "$outputKotlinDir/"
|
|
mkdir "$outputKotlinDir/"
|
|
}
|
|
doLast {
|
|
if (executionResult.get().exitValue != 0) {
|
|
throw new GradleException("flatc failed with: ${executionResult.get().toString()}")
|
|
}
|
|
}
|
|
}
|
|
|
|
afterEvaluate {
|
|
tasks.named("preBuild") {
|
|
dependsOn(generateFbsKotlin)
|
|
dependsOn(generateFbsCpp)
|
|
}
|
|
}
|
|
|
|
flavorDimensions "stl-variant"
|
|
productFlavors {
|
|
gnustl {
|
|
dimension "stl-variant"
|
|
applicationIdSuffix ".gnustl"
|
|
versionNameSuffix "-gnustl"
|
|
externalNativeBuild {
|
|
ndkBuild {
|
|
arguments "APP_STL=gnustl_static"
|
|
}
|
|
}
|
|
}
|
|
libcpp {
|
|
dimension "stl-variant"
|
|
applicationIdSuffix ".libcpp"
|
|
versionNameSuffix "-libcpp"
|
|
externalNativeBuild {
|
|
ndkBuild {
|
|
arguments "APP_STL=c++_static"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation fileTree(dir: "libs", include: ["*.jar"])
|
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
implementation 'androidx.core:core-ktx:1.3.2'
|
|
implementation 'androidx.appcompat:appcompat:1.2.0'
|
|
implementation 'com.google.flatbuffers:flatbuffers-java:2.0.0'
|
|
|
|
}
|