diff --git a/.travis.yml b/.travis.yml index 600520c3..359cc59a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,6 +35,14 @@ matrix: env: RID=alpine.3.9-x64 - os: osx env: RID=osx + - os: linux + dist: trusty + sudo: required + env: RID=ubuntu.16.04-arm64 + - os: linux + dist: trusty + sudo: required + env: RID=debian-arm64 branches: only: diff --git a/CMakeLists.arm64.txt b/CMakeLists.arm64.txt new file mode 100644 index 00000000..304ef973 --- /dev/null +++ b/CMakeLists.arm64.txt @@ -0,0 +1,6 @@ +SET(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR aarch64) +set(TARGET_ABI "linux-gnu") + +SET(CMAKE_C_COMPILER ${CMAKE_SYSTEM_PROCESSOR}-${TARGET_ABI}-gcc) +SET(CMAKE_CXX_COMPILER ${CMAKE_SYSTEM_PROCESSOR}-${TARGET_ABI}-g++) diff --git a/Dockerfile.debian-arm64 b/Dockerfile.debian-arm64 new file mode 100644 index 00000000..32c8ab1a --- /dev/null +++ b/Dockerfile.debian-arm64 @@ -0,0 +1,12 @@ +FROM debian:9 +WORKDIR /nativebinaries +COPY . /nativebinaries/ + +RUN dpkg --add-architecture arm64 + +RUN apt update \ +&& apt -y install cmake pkg-config \ + crossbuild-essential-arm64 \ + libssl-dev:arm64 + +CMD ["/bin/bash", "-c", "./build.libgit2.sh"] diff --git a/Dockerfile.ubuntu.16.04-arm64 b/Dockerfile.ubuntu.16.04-arm64 new file mode 100644 index 00000000..c9c21af6 --- /dev/null +++ b/Dockerfile.ubuntu.16.04-arm64 @@ -0,0 +1,17 @@ +FROM ubuntu:16.04 + +WORKDIR /nativebinaries +COPY . /nativebinaries/ + +RUN dpkg --add-architecture arm64 \ +&& sed -i 's/deb/deb [arch=amd64]/g' /etc/apt/sources.list \ +&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports xenial main universe" > /etc/apt/sources.list.d/arm64.list \ +&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports xenial-updates main universe" > /etc/apt/sources.list.d/arm64-updates.list + +RUN apt update \ +&& apt -y install cmake pkg-config \ + crossbuild-essential-arm64 \ + pkg-config-aarch64-linux-gnu \ + libssl-dev:arm64 + +CMD ["/bin/bash", "-c", "./build.libgit2.sh"] diff --git a/build.libgit2.sh b/build.libgit2.sh index 861eeb3c..85f4c65c 100755 --- a/build.libgit2.sh +++ b/build.libgit2.sh @@ -9,6 +9,10 @@ pushd libgit2/build export _BINPATH=`pwd` +if [[ $RID == *arm64 ]]; then + export TOOLCHAIN_FILE=/nativebinaries/CMakeLists.arm64.txt +fi + cmake -DCMAKE_BUILD_TYPE:STRING=Release \ -DBUILD_CLAR:BOOL=OFF \ -DUSE_SSH=OFF \ @@ -16,6 +20,7 @@ cmake -DCMAKE_BUILD_TYPE:STRING=Release \ -DLIBGIT2_FILENAME=git2-$SHORTSHA \ -DCMAKE_OSX_ARCHITECTURES="i386;x86_64" \ -DUSE_BUNDLED_ZLIB=ON \ + -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ .. cmake --build .