From ecb76f9af73ef15f61da20a778abb427356a4c2a Mon Sep 17 00:00:00 2001
From: Emux <devemux86@gmail.com>
Date: Thu, 21 Jul 2016 10:38:34 +0300
Subject: [PATCH] Desktop native libraries split per platform, closes #86

---
 vtm-android-gdx/build.gradle                  |  36 +++++++++---------
 vtm-android/build.gradle                      |  30 +++++++--------
 vtm-desktop/build.gradle                      |  22 ++++++++---
 vtm-desktop/natives/{ => linux}/libvtm-jni.so | Bin
 .../natives/{ => linux}/libvtm-jni64.so       | Bin
 .../natives/{ => osx}/libvtm-jni.dylib        | Bin
 .../natives/{ => osx}/libvtm-jni64.dylib      | Bin
 vtm-desktop/natives/{ => windows}/vtm-jni.dll | Bin
 .../natives/{ => windows}/vtm-jni64.dll       | Bin
 9 files changed, 49 insertions(+), 39 deletions(-)
 rename vtm-desktop/natives/{ => linux}/libvtm-jni.so (100%)
 rename vtm-desktop/natives/{ => linux}/libvtm-jni64.so (100%)
 rename vtm-desktop/natives/{ => osx}/libvtm-jni.dylib (100%)
 rename vtm-desktop/natives/{ => osx}/libvtm-jni64.dylib (100%)
 rename vtm-desktop/natives/{ => windows}/vtm-jni.dll (100%)
 rename vtm-desktop/natives/{ => windows}/vtm-jni64.dll (100%)

diff --git a/vtm-android-gdx/build.gradle b/vtm-android-gdx/build.gradle
index 4437d478..88d2b5b6 100644
--- a/vtm-android-gdx/build.gradle
+++ b/vtm-android-gdx/build.gradle
@@ -51,30 +51,30 @@ android.applicationVariants.all { variant ->
         return; // Skip debug builds.
     }
 
-    def taskJar = project.tasks.create "jar${name.capitalize()}", Jar
-    taskJar.dependsOn variant.javaCompile
-    taskJar.from variant.javaCompile.destinationDir
-    taskJar.exclude 'android-logger.properties'
-    artifacts.add('archives', taskJar);
+    def jar = project.tasks.create "jar${name.capitalize()}", Jar
+    jar.dependsOn variant.javaCompile
+    jar.from variant.javaCompile.destinationDir
+    jar.exclude 'android-logger.properties'
+    artifacts.add('archives', jar);
 
     file('natives').eachDir() { dir ->
-        def taskNatives = project.tasks.create "natives_${dir.name}_Jar${name.capitalize()}", Jar
-        taskNatives.classifier = "natives-${dir.name}"
-        taskNatives.from(dir.path)
-        artifacts.add('archives', taskNatives);
+        def nativesJar = project.tasks.create "nativesJar${name.capitalize()}-${dir.name}", Jar
+        nativesJar.classifier = "natives-${dir.name}"
+        nativesJar.from(dir.path)
+        artifacts.add('archives', nativesJar);
     }
 
-    def taskFat = project.tasks.create "fatJar${name.capitalize()}", Jar
-    taskFat.classifier = 'jar-with-dependencies'
-    taskFat.dependsOn variant.javaCompile
-    taskFat.from variant.javaCompile.destinationDir
-    taskFat.from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
+    def fatJar = project.tasks.create "fatJar${name.capitalize()}", Jar
+    fatJar.classifier = 'jar-with-dependencies'
+    fatJar.dependsOn variant.javaCompile
+    fatJar.from variant.javaCompile.destinationDir
+    fatJar.from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
     file('natives').eachDir() { dir ->
-        taskFat.from(dir.path)
-        taskFat.from("${rootProject.projectDir}/vtm-android/natives/${dir.name}")
+        fatJar.from(dir.path)
+        fatJar.from("${rootProject.projectDir}/vtm-android/natives/${dir.name}")
     }
-    taskFat.exclude 'android-logger.properties'
-    artifacts.add('archives', taskFat);
+    fatJar.exclude 'android-logger.properties'
+    artifacts.add('archives', fatJar);
 }
 
 afterEvaluate {
diff --git a/vtm-android/build.gradle b/vtm-android/build.gradle
index 599eae5f..f39e5cc3 100644
--- a/vtm-android/build.gradle
+++ b/vtm-android/build.gradle
@@ -43,27 +43,27 @@ android.libraryVariants.all { variant ->
         return; // Skip debug builds.
     }
 
-    def taskJar = project.tasks.create "jar${name.capitalize()}", Jar
-    taskJar.dependsOn variant.javaCompile
-    taskJar.from variant.javaCompile.destinationDir
-    artifacts.add('archives', taskJar);
+    def jar = project.tasks.create "jar${name.capitalize()}", Jar
+    jar.dependsOn variant.javaCompile
+    jar.from variant.javaCompile.destinationDir
+    artifacts.add('archives', jar);
 
     file('natives').eachDir() { dir ->
-        def taskNatives = project.tasks.create "natives_${dir.name}_Jar${name.capitalize()}", Jar
-        taskNatives.classifier = "natives-${dir.name}"
-        taskNatives.from(dir.path)
-        artifacts.add('archives', taskNatives);
+        def nativesJar = project.tasks.create "nativesJar${name.capitalize()}-${dir.name}", Jar
+        nativesJar.classifier = "natives-${dir.name}"
+        nativesJar.from(dir.path)
+        artifacts.add('archives', nativesJar);
     }
 
-    def taskFat = project.tasks.create "fatJar${name.capitalize()}", Jar
-    taskFat.classifier = 'jar-with-dependencies'
-    taskFat.dependsOn variant.javaCompile
-    taskFat.from variant.javaCompile.destinationDir
-    taskFat.from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
+    def fatJar = project.tasks.create "fatJar${name.capitalize()}", Jar
+    fatJar.classifier = 'jar-with-dependencies'
+    fatJar.dependsOn variant.javaCompile
+    fatJar.from variant.javaCompile.destinationDir
+    fatJar.from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
     file('natives').eachDir() { dir ->
-        taskFat.from(dir.path)
+        fatJar.from(dir.path)
     }
-    artifacts.add('archives', taskFat);
+    artifacts.add('archives', fatJar);
 }
 
 // Automated Gradle project deployment to Sonatype OSSRH
diff --git a/vtm-desktop/build.gradle b/vtm-desktop/build.gradle
index ec35f04e..350f8876 100644
--- a/vtm-desktop/build.gradle
+++ b/vtm-desktop/build.gradle
@@ -4,7 +4,9 @@ apply plugin: 'application'
 
 dependencies {
     compile project(':vtm-gdx')
-    compile files('natives')
+    file('natives').eachDir() { dir ->
+        compile files(dir.path)
+    }
     compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
     compile "com.badlogicgames.gdx:gdx-backend-jglfw:$gdxVersion"
     compile 'com.kitfox.svg:svg-salamander:1.0'
@@ -16,21 +18,29 @@ sourceSets {
     }
 }
 
-task nativesJar(type: Jar) {
-    classifier = 'natives'
-    from('natives')
+file('natives').eachDir() { dir ->
+    task("nativesJar-${dir.name}", type: Jar) {
+        classifier = "natives-${dir.name}"
+        from(dir.path)
+    }
+
+    artifacts {
+        archives tasks["nativesJar-${dir.name}"]
+    }
 }
 
 task fatJar(type: Jar, dependsOn: classes) {
     classifier = 'jar-with-dependencies'
     from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
-    from('natives')
+    // Natives come from compile configuration
+    /*file('natives').eachDir() { dir ->
+        fatJar.from(dir.path)
+    }*/
     exclude 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/*.SF'
     with jar
 }
 
 artifacts {
-    archives nativesJar
     archives fatJar
 }
 
diff --git a/vtm-desktop/natives/libvtm-jni.so b/vtm-desktop/natives/linux/libvtm-jni.so
similarity index 100%
rename from vtm-desktop/natives/libvtm-jni.so
rename to vtm-desktop/natives/linux/libvtm-jni.so
diff --git a/vtm-desktop/natives/libvtm-jni64.so b/vtm-desktop/natives/linux/libvtm-jni64.so
similarity index 100%
rename from vtm-desktop/natives/libvtm-jni64.so
rename to vtm-desktop/natives/linux/libvtm-jni64.so
diff --git a/vtm-desktop/natives/libvtm-jni.dylib b/vtm-desktop/natives/osx/libvtm-jni.dylib
similarity index 100%
rename from vtm-desktop/natives/libvtm-jni.dylib
rename to vtm-desktop/natives/osx/libvtm-jni.dylib
diff --git a/vtm-desktop/natives/libvtm-jni64.dylib b/vtm-desktop/natives/osx/libvtm-jni64.dylib
similarity index 100%
rename from vtm-desktop/natives/libvtm-jni64.dylib
rename to vtm-desktop/natives/osx/libvtm-jni64.dylib
diff --git a/vtm-desktop/natives/vtm-jni.dll b/vtm-desktop/natives/windows/vtm-jni.dll
similarity index 100%
rename from vtm-desktop/natives/vtm-jni.dll
rename to vtm-desktop/natives/windows/vtm-jni.dll
diff --git a/vtm-desktop/natives/vtm-jni64.dll b/vtm-desktop/natives/windows/vtm-jni64.dll
similarity index 100%
rename from vtm-desktop/natives/vtm-jni64.dll
rename to vtm-desktop/natives/windows/vtm-jni64.dll