eSpeak NG is an open source speech synthesizer that supports more than hundred languages and accents.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

build.gradle 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. buildscript {
  2. repositories {
  3. google()
  4. mavenCentral()
  5. }
  6. dependencies {
  7. classpath 'com.android.tools.build:gradle:8.2.2'
  8. }
  9. }
  10. plugins {
  11. id 'org.gradle.crypto.checksum' version '1.4.0'
  12. }
  13. import org.gradle.crypto.checksum.Checksum
  14. apply plugin: 'com.android.application'
  15. repositories {
  16. google()
  17. mavenCentral()
  18. }
  19. dependencies {
  20. testImplementation 'junit:junit:4.13.2'
  21. androidTestImplementation 'org.hamcrest:hamcrest-all:1.3'
  22. }
  23. android {
  24. compileSdk 34
  25. buildToolsVersion "34.0.0"
  26. ndkVersion "26.1.10909125"
  27. namespace "com.reecedunn.espeak"
  28. buildFeatures {
  29. buildConfig = true
  30. }
  31. defaultConfig {
  32. minSdk 21
  33. targetSdk 33
  34. versionCode 22
  35. versionName "1.52.0"
  36. externalNativeBuild {
  37. cmake {
  38. arguments "-DUSE_ASYNC:BOOL=OFF", "-DUSE_MBROLA:BOOL=OFF"
  39. targets "ttsespeak", "espeak-data"
  40. }
  41. }
  42. }
  43. externalNativeBuild {
  44. cmake {
  45. path "jni/CMakeLists.txt"
  46. version "3.22.1"
  47. }
  48. }
  49. sourceSets {
  50. main {
  51. manifest.srcFile 'AndroidManifest.xml'
  52. java.srcDirs = ['src']
  53. res.srcDirs = ['res']
  54. }
  55. androidTest.setRoot('eSpeakTests')
  56. androidTest {
  57. java.srcDirs = ['eSpeakTests/src']
  58. }
  59. }
  60. lint {
  61. abortOnError false
  62. }
  63. }
  64. tasks.register('checkData') {
  65. doFirst {
  66. assert file("../espeak-ng-data/en_dict").exists()
  67. assert file("../espeak-ng-data/intonations").exists()
  68. assert file("../espeak-ng-data/phondata").exists()
  69. assert file("../espeak-ng-data/phondata-manifest").exists()
  70. assert file("../espeak-ng-data/phonindex").exists()
  71. assert file("../espeak-ng-data/phontab").exists()
  72. }
  73. }
  74. tasks.register('createDataArchive', Zip) {
  75. preserveFileTimestamps = false
  76. reproducibleFileOrder = true
  77. archiveFileName = "espeakdata.zip"
  78. destinationDirectory = file("res/raw")
  79. from("build/generated/espeak-ng-data/") {
  80. into "espeak-ng-data"
  81. }
  82. }
  83. tasks.register('createDataHash', Checksum) {
  84. dependsOn tasks.createDataArchive
  85. checksumAlgorithm.set(Checksum.Algorithm.SHA256)
  86. inputFiles.setFrom(file("./res/raw/espeakdata.zip"))
  87. outputDirectory.set(layout.buildDirectory.dir('intermediates/datahash'))
  88. }
  89. tasks.register('createDataVersion', Copy) {
  90. dependsOn tasks.createDataHash
  91. from layout.buildDirectory.file('intermediates/datahash/espeakdata.zip.sha256')
  92. rename { return 'espeakdata_version' }
  93. into file("./res/raw")
  94. }
  95. tasks.whenTaskAdded { task ->
  96. if (task.name == 'assembleDebug' || task.name == 'assembleRelease') {
  97. task.dependsOn createDataVersion
  98. }
  99. }
  100. createDataVersion.mustRunAfter 'externalNativeBuildDebug'
  101. createDataVersion.mustRunAfter 'externalNativeBuildRelease'
  102. project.afterEvaluate {
  103. tasks.checkData.dependsOn(externalNativeBuildDebug)
  104. tasks.createDataArchive.dependsOn(externalNativeBuildDebug)
  105. tasks.named('mapDebugSourceSetPaths') {
  106. dependsOn ':createDataVersion', ':createDataArchive'
  107. }
  108. tasks.named('mergeDebugResources') {
  109. dependsOn ':createDataVersion', ':createDataArchive'
  110. }
  111. tasks.named('packageDebugResources') {
  112. dependsOn ':createDataVersion', ':createDataArchive'
  113. }
  114. tasks.named('mapReleaseSourceSetPaths') {
  115. dependsOn ':createDataVersion', ':createDataArchive'
  116. }
  117. tasks.named('mergeReleaseResources') {
  118. dependsOn ':createDataVersion', ':createDataArchive'
  119. }
  120. tasks.named('packageReleaseResources') {
  121. dependsOn ':createDataVersion', ':createDataArchive'
  122. }
  123. }