Browse Source

Build Bullet for Linux ARM (Raspberry Pi)

MeFisto94 6 years ago
parent
commit
88385ba647
2 changed files with 56 additions and 10 deletions
  1. 12 10
      .travis.yml
  2. 44 0
      jme3-bullet-native/build.gradle

+ 12 - 10
.travis.yml

@@ -6,20 +6,26 @@ branches:
   - /^v3.3.*$/
   - v3.2
   - /^v3.2.*$/
+  - feature/bullet-arm
 
 matrix:
   include:
   - os: linux
-    dist: trusty
     jdk: oraclejdk8
+    dist: precise
     env: UPLOAD=true
   - os: linux
     jdk: openjdk11
-    dist: xenial
-  - os: linux
-    dist: xenial
-    jdk: openjdk8
-    env: UPLOAD_NATIVE=true
+    dist: bionic
+    env: UPLOAD=true UPLOAD_NATIVE=true
+    sudo: true
+    addons:
+        apt:
+            packages:
+                - gcc-multilib
+                - g++-multilib
+    before_install:
+        - sudo apt update && sudo apt install -fy gcc-7-arm-linux-gnueabihf gcc-7-arm-linux-gnueabi gcc-8-aarch64-linux-gnu g++-7-arm-linux-gnueabihf g++-7-arm-linux-gnueabi g++-8-aarch64-linux-gnu
   - os: osx
     osx_image: xcode9.3
     env: UPLOAD_NATIVE=true
@@ -42,10 +48,6 @@ addons:
   hosts:
     - travisci
   hostname: travisci
-  apt:
-    packages:
-    - gcc-multilib
-    - g++-multilib
 
 before_install:
   - '[ -n "$UPLOAD" ] && git fetch --unshallow || :'

+ 44 - 0
jme3-bullet-native/build.gradle

@@ -35,6 +35,9 @@ model {
             targetPlatform 'Mac32'
             targetPlatform 'Linux64'
             targetPlatform 'Linux32'
+            targetPlatform 'LinuxArm'
+            targetPlatform 'LinuxArmHF'
+            targetPlatform 'LinuxArm64'
 
             sources {
                 cpp {
@@ -62,6 +65,35 @@ model {
             }
         }
     }
+    
+    toolChains {
+        gccArm(Gcc) {
+            // Fun Fact: Gradle uses gcc as linker frontend, so we don't specify ld directly here
+            target("LinuxArm"){
+                path "/usr/bin"
+                cCompiler.executable = "arm-linux-gnueabi-gcc-7"
+                cppCompiler.executable = "arm-linux-gnueabi-g++-7"
+                linker.executable = "arm-linux-gnueabi-gcc-7"
+                assembler.executable = "arm-linux-gnueabi-as"
+            }
+            
+            target("LinuxArmHF"){
+                path "/usr/bin"
+                cCompiler.executable = "arm-linux-gnueabihf-gcc-7"
+                cppCompiler.executable = "arm-linux-gnueabihf-g++-7"
+                linker.executable = "arm-linux-gnueabihf-gcc-7"
+                assembler.executable = "arm-linux-gnueabihf-as"
+            }
+            
+            target("LinuxArm64"){
+                path "/usr/bin"
+                cCompiler.executable = "aarch64-linux-gnu-gcc-8"
+                cppCompiler.executable = "aarch64-linux-gnu-g++-8"
+                linker.executable = "aarch64-linux-gnu-gcc-8"
+                assembler.executable = "aarch64-linux-gnu-as"
+            }
+        }
+    }
 
     binaries {
         withType(SharedLibraryBinarySpec) {
@@ -188,6 +220,18 @@ model {
             architecture "x86_64"
             operatingSystem "linux"
         }
+        LinuxArm {
+            architecture "arm"
+            operatingSystem "linux"
+        }
+        LinuxArmHF {
+            architecture "armhf"
+            operatingSystem "linux"        
+        }
+        LinuxArm64 {
+            architecture "aarch64"
+            operatingSystem "linux"
+        }
     }
 }