From http://www.jwz.org/xscreensaver/xscreensaver-5.40.tar.gz
[xscreensaver] / android / xscreensaver / build.gradle
1 apply plugin: 'android'
2
3 dependencies {
4     compile fileTree(include: '*.jar', dir: 'libs')
5     compile "com.android.support:support-v4:27.1.1"
6 }
7
8 android {
9     compileSdkVersion 27
10     buildToolsVersion "27.0.3"
11     compileOptions {
12         sourceCompatibility JavaVersion.VERSION_1_7
13         targetCompatibility JavaVersion.VERSION_1_7
14     }
15     sourceSets {
16         main {
17             manifest.srcFile 'AndroidManifest.xml'
18             java.srcDirs = ['src']
19             resources.srcDirs = ['src']
20             aidl.srcDirs = ['src']
21             renderscript.srcDirs = ['src']
22             res.srcDirs = ['res']
23             assets.srcDirs = ['assets']
24             // jniLibs.srcDirs = ['jni']
25             jniLibs.srcDirs = ['libs']
26             jni.srcDirs = [] // disable automatic ndk-build call
27         }
28
29         // Move the tests to tests/java, tests/res, etc...
30         androidTest.setRoot('tests')
31
32         // Move the build types to build-types/<type>
33         // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
34         // This moves them out of them default location under src/<type>/... which would
35         // conflict with src/ being used by the main source set.
36         // Adding new build types or product flavors should be accompanied
37         // by a similar customization.
38         debug.setRoot('build-types/debug')
39         release.setRoot('build-types/release')
40     }
41     project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, 'mips': 5, 'mips64': 6, 'x86': 8, 'x86_64': 9]
42     //versionCode digit for each supported ABI, with 64bit>32bit and x86>armeabi-*
43
44
45     // put ndk-build in build's path, or replace below with its full path
46     task ndkBuild(type: Exec) {
47        Properties properties = new Properties()
48          properties.load(project.rootProject.file('local.properties').newDataInputStream())
49        def ndkDir = properties.getProperty('ndk.dir')
50        commandLine "$ndkDir/ndk-build", '-C', file('jni').absolutePath,
51           '-j' + Runtime.getRuntime().availableProcessors().toString()
52     }
53
54     // generate files early in the process
55     task perlBuild(type: Exec) {
56         commandLine 'sh', '-c',
57           'cd ..; ../hacks/check-configs.pl --build-android $ANDROID_HACKS'
58     }
59   
60     task perlClean(type: Delete) {
61         delete('../gen')
62         delete('res/values')
63         delete('res/xml')
64         delete('src/org/jwz/xscreensaver/gen')
65         delete('AndroidManifest.xml')
66     }
67
68     task objlibClean(type: Delete) {
69         delete('./build')
70         delete('./libs')
71         delete('./obj')
72     }
73
74     task downloadNeededDrawables(type: Exec) {
75         commandLine 'sh', '-c',
76           'cd ../ ; \
77            for f in $ANDROID_HACKS; do \
78              f=`echo "$f" | sed s/rd-bomb/rdbomb/` ; \
79              make -s xscreensaver/res/drawable/$f.png ; \
80            done'
81     }
82     preBuild.dependsOn downloadNeededDrawables
83
84     preBuild.dependsOn perlBuild
85
86     clean.dependsOn perlClean
87     clean.dependsOn objlibClean
88
89     tasks.withType(JavaCompile) {
90         options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
91     }
92
93     tasks.withType(JavaCompile) {
94         compileTask -> compileTask.dependsOn ndkBuild
95     }
96
97
98     defaultConfig {
99         minSdkVersion 15
100         targetSdkVersion 27
101     }
102     productFlavors {
103     }
104     buildTypes {
105         debug {
106             jniDebuggable true
107         }
108     }
109 }