Skip to content

Commit 2ef2f9e

Browse files
qmfrederikbording
authored andcommitted
Support cross-building for ARM64 (#91)
* Support cross-building for Ubuntu 18.04 arm64 (bionic) * Add linux-arm64 * Update CI script * Add Debian 9 - arm64 * Add Ubuntu 16.04, 18.10 Dockerfiles * Reduce dependency graph
1 parent 4cf3d04 commit 2ef2f9e

5 files changed

+48
-0
lines changed

.travis.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@ matrix:
3535
env: RID=alpine.3.9-x64
3636
- os: osx
3737
env: RID=osx
38+
- os: linux
39+
dist: trusty
40+
sudo: required
41+
env: RID=ubuntu.16.04-arm64
42+
- os: linux
43+
dist: trusty
44+
sudo: required
45+
env: RID=debian-arm64
3846

3947
branches:
4048
only:

CMakeLists.arm64.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
SET(CMAKE_SYSTEM_NAME Linux)
2+
set(CMAKE_SYSTEM_PROCESSOR aarch64)
3+
set(TARGET_ABI "linux-gnu")
4+
5+
SET(CMAKE_C_COMPILER ${CMAKE_SYSTEM_PROCESSOR}-${TARGET_ABI}-gcc)
6+
SET(CMAKE_CXX_COMPILER ${CMAKE_SYSTEM_PROCESSOR}-${TARGET_ABI}-g++)

Dockerfile.debian-arm64

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
FROM debian:9
2+
WORKDIR /nativebinaries
3+
COPY . /nativebinaries/
4+
5+
RUN dpkg --add-architecture arm64
6+
7+
RUN apt update \
8+
&& apt -y install cmake pkg-config \
9+
crossbuild-essential-arm64 \
10+
libssl-dev:arm64
11+
12+
CMD ["/bin/bash", "-c", "./build.libgit2.sh"]

Dockerfile.ubuntu.16.04-arm64

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
FROM ubuntu:16.04
2+
3+
WORKDIR /nativebinaries
4+
COPY . /nativebinaries/
5+
6+
RUN dpkg --add-architecture arm64 \
7+
&& sed -i 's/deb/deb [arch=amd64]/g' /etc/apt/sources.list \
8+
&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports xenial main universe" > /etc/apt/sources.list.d/arm64.list \
9+
&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports xenial-updates main universe" > /etc/apt/sources.list.d/arm64-updates.list
10+
11+
RUN apt update \
12+
&& apt -y install cmake pkg-config \
13+
crossbuild-essential-arm64 \
14+
pkg-config-aarch64-linux-gnu \
15+
libssl-dev:arm64
16+
17+
CMD ["/bin/bash", "-c", "./build.libgit2.sh"]

build.libgit2.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,18 @@ pushd libgit2/build
99

1010
export _BINPATH=`pwd`
1111

12+
if [[ $RID == *arm64 ]]; then
13+
export TOOLCHAIN_FILE=/nativebinaries/CMakeLists.arm64.txt
14+
fi
15+
1216
cmake -DCMAKE_BUILD_TYPE:STRING=Release \
1317
-DBUILD_CLAR:BOOL=OFF \
1418
-DUSE_SSH=OFF \
1519
-DENABLE_TRACE=ON \
1620
-DLIBGIT2_FILENAME=git2-$SHORTSHA \
1721
-DCMAKE_OSX_ARCHITECTURES="i386;x86_64" \
1822
-DUSE_BUNDLED_ZLIB=ON \
23+
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \
1924
..
2025
cmake --build .
2126

0 commit comments

Comments
 (0)