From cfb114f92f720ab13966eef71f11644ba9dfa5d3 Mon Sep 17 00:00:00 2001 From: "Santiago M. Mola" Date: Mon, 7 Mar 2016 21:03:54 +0100 Subject: [PATCH] Add Linux aarch64 support. --- Makefile.common | 9 ++++++++- README.md | 3 ++- src/main/java/org/xerial/snappy/OSInfo.java | 4 ++++ .../native/Linux/aarch64/libsnappyjava.so | Bin 0 -> 59680 bytes 4 files changed, 14 insertions(+), 2 deletions(-) create mode 100755 src/main/resources/org/xerial/snappy/native/Linux/aarch64/libsnappyjava.so diff --git a/Makefile.common b/Makefile.common index e152b68..d198b1f 100755 --- a/Makefile.common +++ b/Makefile.common @@ -42,7 +42,7 @@ endif # os=Default is meant to be generic unix/linux -known_os_archs := Linux-x86 Linux-x86_64 Linux-arm Linux-armhf Linux-ppc Linux-ppc64 Linux-s390 Linux-s390x Mac-x86 Mac-x86_64 FreeBSD-x86_64 Windows-x86 Windows-x86_64 SunOS-x86 SunOS-sparc SunOS-x86_64 AIX-ppc AIX-ppc64 +known_os_archs := Linux-x86 Linux-x86_64 Linux-arm Linux-armhf Linux-aarch64 Linux-ppc Linux-ppc64 Linux-s390 Linux-s390x Mac-x86 Mac-x86_64 FreeBSD-x86_64 Windows-x86 Windows-x86_64 SunOS-x86 SunOS-sparc SunOS-x86_64 AIX-ppc AIX-ppc64 os_arch := $(OS_NAME)-$(OS_ARCH) IBM_JDK_7 := $(findstring IBM, $(shell $(JAVA) -version 2>&1 | grep IBM | grep "JRE 1.7")) @@ -200,6 +200,13 @@ Linux-armhf_LINKFLAGS := -shared -static-libgcc Linux-armhf_LIBNAME := libsnappyjava.so Linux-armhf_SNAPPY_FLAGS:= +Linux-aarch64_CXX := $(CROSS_PREFIX)g++ +Linux-aarch64_STRIP := $(CROSS_PREFIX)strip +Linux-aarch64_CXXFLAGS := -include lib/inc_linux/jni_md.h -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden +Linux-aarch64_LINKFLAGS := -shared -static-libgcc +Linux-aarch64_LIBNAME := libsnappyjava.so +Linux-aarch64_SNAPPY_FLAGS:= + Mac-x86_CXX := g++ -arch i386 Mac-x86_STRIP := strip -x Mac-x86_CXXFLAGS := -Ilib/inc_mac -I$(JAVA_HOME)/include -O2 -fPIC -mmacosx-version-min=10.4 -fvisibility=hidden diff --git a/README.md b/README.md index 89b40ec..977af0d 100755 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ Older snapshots of snappy contain a buggy config.h.in that does not work properl ## Cross-compiling for other platforms The Makefile contains rules for cross-compiling the native library for other platforms so that the snappy-java JAR can support multiple platforms. For example, to build the native libraries for x86 Linux, x86 and x86-64 Windows, and soft- and hard-float ARM: - $ make linux32 win32 win64 linux-arm linux-armhf + $ make linux32 win32 win64 linux-arm linux-armhf linux-aarch64 If you append `snappy` to the line above, it will also build the native library for the current platform and then build the snappy-java JAR (containing all native libraries built so far). @@ -157,6 +157,7 @@ Of course, you must first have the necessary cross-compilers and development lib * win64: `sudo apt-get install g++-mingw-w64-x86-64` * arm: `sudo apt-get install g++-arm-linux-gnueabi` * armhf: `sudo apt-get install g++-arm-linux-gnueabihf` + * aarch64: `sudo apt-get install g++-aarch64-linux` Unfortunately, cross-compiling for Mac OS X is not currently possible; you must compile within OS X. diff --git a/src/main/java/org/xerial/snappy/OSInfo.java b/src/main/java/org/xerial/snappy/OSInfo.java index ff366fa..cf6b0bc 100755 --- a/src/main/java/org/xerial/snappy/OSInfo.java +++ b/src/main/java/org/xerial/snappy/OSInfo.java @@ -45,6 +45,7 @@ public class OSInfo public static final String PPC64 = "ppc64"; public static final String IBMZ = "s390"; public static final String IBMZ_64 = "s390x"; + public static final String AARCH_64 = "aarch64"; static { // x86 mappings @@ -88,6 +89,9 @@ public class OSInfo // IBM z 64-bit mappings archMapping.put(IBMZ_64, IBMZ_64); + + // Aarch64 mappings + archMapping.put(AARCH_64, AARCH_64); } public static void main(String[] args) diff --git a/src/main/resources/org/xerial/snappy/native/Linux/aarch64/libsnappyjava.so b/src/main/resources/org/xerial/snappy/native/Linux/aarch64/libsnappyjava.so new file mode 100755 index 0000000000000000000000000000000000000000..8696ada296bfccb2ceb1404cac1e11330ab2359f GIT binary patch literal 59680 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

u+ZqZ52$~I~)czp-^QQ8x^ld<~Mq>#{l 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 V)RISu<)D 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 Iq^wi+zYNajv;Y7A literal 0 HcmV?d00001