2011-03-29 15:19:23 +02:00
|
|
|
TARGET:=target
|
|
|
|
SRC:=src/main/java
|
2015-05-12 02:57:03 +02:00
|
|
|
include src/main/resources/org/xerial/snappy/VERSION
|
2011-03-29 11:17:07 +02:00
|
|
|
|
|
|
|
ifndef JAVA_HOME
|
|
|
|
$(error Set JAVA_HOME environment variable)
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
JAVA := "$$JAVA_HOME/bin/java"
|
|
|
|
JAVAC := "$$JAVA_HOME/bin/javac"
|
|
|
|
JAVAH := "$$JAVA_HOME/bin/javah"
|
|
|
|
|
2011-03-29 15:19:23 +02:00
|
|
|
OSINFO_CLASS := org.xerial.snappy.OSInfo
|
|
|
|
OSINFO_PROG := lib/org/xerial/snappy/OSInfo.class
|
2011-03-29 11:17:07 +02:00
|
|
|
|
|
|
|
## building OSInfo.java
|
|
|
|
#$(info compiling OSInfo.java)
|
|
|
|
#$(shell mkdir -p lib)
|
2012-06-29 05:58:21 +02:00
|
|
|
#$(shell $(JAVAC) src/main/java/org/xerial/snappy/OSInfo.java -d lib)
|
2011-03-29 11:17:07 +02:00
|
|
|
|
|
|
|
OS_NAME := $(shell $(JAVA) -cp lib $(OSINFO_CLASS) --os)
|
|
|
|
OS_ARCH := $(shell $(JAVA) -cp lib $(OSINFO_CLASS) --arch)
|
|
|
|
LIB_FOLDER := $(shell $(JAVA) -cp lib $(OSINFO_CLASS))
|
2014-06-18 03:19:23 +02:00
|
|
|
IBM_JDK_LIB := lib/inc_ibm
|
2011-03-29 11:17:07 +02:00
|
|
|
|
2011-06-24 02:06:20 +02:00
|
|
|
# Windows uses different path separators
|
2011-03-29 11:17:07 +02:00
|
|
|
ifeq ($(OS_NAME),Windows)
|
|
|
|
sep := ;
|
|
|
|
else
|
|
|
|
sep := :
|
|
|
|
endif
|
|
|
|
|
2011-03-29 15:19:23 +02:00
|
|
|
snappy := snappy-$(VERSION)
|
2011-03-31 05:23:57 +02:00
|
|
|
|
2011-03-29 11:17:07 +02:00
|
|
|
|
2013-08-13 10:45:03 +02:00
|
|
|
jni_md := $(shell find -L "$(JAVA_HOME)" -name jni_md.h | head -1)
|
2011-03-29 11:17:07 +02:00
|
|
|
ifneq ($(jni_md),)
|
|
|
|
jni_include := $(shell dirname "$(jni_md)")
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
# os=Default is meant to be generic unix/linux
|
|
|
|
|
2015-03-15 01:00:39 +01:00
|
|
|
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-ppc64
|
2011-03-29 15:19:23 +02:00
|
|
|
os_arch := $(OS_NAME)-$(OS_ARCH)
|
2014-06-20 01:17:03 +02:00
|
|
|
IBM_JDK_7 := $(findstring IBM, $(shell $(JAVA) -version 2>&1 | grep IBM | grep "JRE 1.7"))
|
2011-03-29 11:17:07 +02:00
|
|
|
|
2011-03-29 15:19:23 +02:00
|
|
|
ifeq (,$(findstring $(strip $(os_arch)),$(known_os_archs)))
|
|
|
|
os_arch := Default
|
2011-03-29 11:17:07 +02:00
|
|
|
endif
|
|
|
|
|
2014-07-09 23:33:22 +02:00
|
|
|
os_folder := $(shell echo $(OS_NAME) | tr A-Z a-z)
|
|
|
|
|
2014-06-20 01:17:03 +02:00
|
|
|
ifneq ($(IBM_JDK_7),)
|
2014-06-18 03:19:23 +02:00
|
|
|
$(shell mkdir -p $(IBM_JDK_LIB))
|
|
|
|
$(shell cp $(JAVA_HOME)/include/jniport.h $(IBM_JDK_LIB))
|
|
|
|
$(shell sed -i "s|#define JNIEXPORT *$$|#define JNIEXPORT __attribute__((__visibility__(\"default\")))|" $(IBM_JDK_LIB)/jniport.h)
|
|
|
|
$(shell sed -i "s|typedef long long jlong;.*|/*typedef long long jlong;*/|" $(IBM_JDK_LIB)/jniport.h)
|
2014-07-09 23:33:22 +02:00
|
|
|
$(shell cp $(JAVA_HOME)/include/$(os_folder)/jni_md.h $(IBM_JDK_LIB))
|
2014-06-18 03:19:23 +02:00
|
|
|
$(shell sed -i "s|#define JNIEXPORT|#define JNIEXPORT __attribute__((__visibility__(\"default\")))|" $(IBM_JDK_LIB)/jni_md.h)
|
|
|
|
$(shell sed -i "s|typedef long long jlong;.*|/*typedef long long jlong;*/|" $(IBM_JDK_LIB)/jni_md.h)
|
|
|
|
endif
|
|
|
|
|
2012-06-29 05:58:21 +02:00
|
|
|
# cross-compilation toolchain prefix (e.g. "arm-linux-gnueabi-")
|
|
|
|
CROSS_PREFIX :=
|
|
|
|
|
|
|
|
Default_CXX := $(CROSS_PREFIX)g++
|
|
|
|
Default_STRIP := $(CROSS_PREFIX)strip
|
2011-06-24 02:06:20 +02:00
|
|
|
Default_CXXFLAGS := -I$(JAVA_HOME)/include -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden
|
2014-07-09 23:33:22 +02:00
|
|
|
Default_LINKFLAGS := -shared -static
|
2011-06-02 04:13:47 +02:00
|
|
|
Default_LIBNAME := libsnappyjava.so
|
2011-03-29 15:19:23 +02:00
|
|
|
Default_SNAPPY_FLAGS :=
|
2011-03-29 11:17:07 +02:00
|
|
|
|
2013-08-13 10:45:03 +02:00
|
|
|
Linux-x86_CXX := $(CROSS_PREFIX)g++
|
|
|
|
Linux-x86_STRIP := $(CROSS_PREFIX)strip
|
2014-06-20 01:17:03 +02:00
|
|
|
ifeq ($(IBM_JDK_7),)
|
2014-06-18 03:19:23 +02:00
|
|
|
Linux-x86_CXXFLAGS := -include lib/inc_linux/jni_md.h -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden -m32
|
|
|
|
else
|
|
|
|
Linux-x86_CXXFLAGS := -include $(IBM_JDK_LIB)/jni_md.h -include $(IBM_JDK_LIB)/jniport.h -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden -m32
|
|
|
|
endif
|
2013-08-13 10:45:03 +02:00
|
|
|
Linux-x86_LINKFLAGS := -shared -static-libgcc -static-libstdc++
|
|
|
|
Linux-x86_LIBNAME := libsnappyjava.so
|
|
|
|
Linux-x86_SNAPPY_FLAGS:=
|
2011-03-29 11:17:07 +02:00
|
|
|
|
2013-08-13 10:45:03 +02:00
|
|
|
Linux-x86_64_CXX := $(CROSS_PREFIX)g++
|
|
|
|
Linux-x86_64_STRIP := $(CROSS_PREFIX)strip
|
2014-06-20 01:17:03 +02:00
|
|
|
ifeq ($(IBM_JDK_7),)
|
2014-06-18 03:19:23 +02:00
|
|
|
Linux-x86_64_CXXFLAGS := -Ilib/inc_linux -I$(JAVA_HOME)/include -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -m64
|
|
|
|
else
|
|
|
|
Linux-x86_64_CXXFLAGS := -include $(IBM_JDK_LIB)/jni_md.h -include $(IBM_JDK_LIB)/jniport.h -I$(JAVA_HOME)/include -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -m64
|
|
|
|
endif
|
2013-08-13 10:45:03 +02:00
|
|
|
Linux-x86_64_LINKFLAGS := -shared -static-libgcc -static-libstdc++
|
|
|
|
Linux-x86_64_LIBNAME := libsnappyjava.so
|
|
|
|
Linux-x86_64_SNAPPY_FLAGS :=
|
2011-03-29 11:17:07 +02:00
|
|
|
|
2015-02-15 12:52:23 +01:00
|
|
|
Linux-ppc_CXX := g++
|
|
|
|
Linux-ppc_STRIP := strip
|
|
|
|
ifeq ($(IBM_JDK_7),)
|
|
|
|
Linux-ppc_CXXFLAGS := -DHAVE_CONFIG_H -Ilib/inc_linux -I$(JAVA_HOME)/include -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -m32
|
|
|
|
else
|
|
|
|
Linux-ppc_CXXFLAGS := -DHAVE_CONFIG_H -include lib/inc_linux/jni_md.h -include $(IBM_JDK_LIB)/jniport.h -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -O2 -fPIC -m32
|
|
|
|
endif
|
|
|
|
Linux-ppc_LINKFLAGS := -shared -static-libgcc -static-libstdc++
|
|
|
|
Linux-ppc_LIBNAME := libsnappyjava.so
|
|
|
|
Linux-ppc_SNAPPY_FLAGS :=
|
|
|
|
|
2014-06-18 03:05:32 +02:00
|
|
|
Linux-ppc64_CXX := g++
|
|
|
|
Linux-ppc64_STRIP := strip
|
2014-06-20 01:17:03 +02:00
|
|
|
ifeq ($(IBM_JDK_7),)
|
2014-06-18 03:19:23 +02:00
|
|
|
Linux-ppc64_CXXFLAGS := -DHAVE_CONFIG_H -Ilib/inc_linux -I$(JAVA_HOME)/include -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -m64
|
|
|
|
else
|
2015-02-15 12:52:23 +01:00
|
|
|
Linux-ppc64_CXXFLAGS := -DHAVE_CONFIG_H -include $(IBM_JDK_LIB)/jni_md.h -include $(IBM_JDK_LIB)/jniport.h -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -O2 -fPIC -m64
|
2014-06-18 03:19:23 +02:00
|
|
|
endif
|
2014-06-18 03:05:32 +02:00
|
|
|
Linux-ppc64_LINKFLAGS := -shared -static-libgcc -static-libstdc++
|
|
|
|
Linux-ppc64_LIBNAME := libsnappyjava.so
|
|
|
|
Linux-ppc64_SNAPPY_FLAGS :=
|
|
|
|
|
2015-09-19 21:21:08 +02:00
|
|
|
AIX-ppc_CXX := g++
|
|
|
|
AIX-ppc_STRIP := strip
|
|
|
|
AIX-ppc_LIBNAME := libsnappyjava.a
|
|
|
|
ifeq ($(IBM_JDK_7),)
|
|
|
|
AIX-ppc_CXXFLAGS := -DHAVE_CONFIG_H -Ilib/inc_linux -I$(JAVA_HOME)/include -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden
|
|
|
|
else
|
|
|
|
AIX-ppc_CXXFLAGS := -DHAVE_CONFIG_H -I$(JAVA_HOME)/include/aix -Ilib/inc_ibm -I$(JAVA_HOME)/include -Ilib/inc_mac -O2 -fPIC
|
|
|
|
endif
|
|
|
|
AIX-ppc_LINKFLAGS := -shared -static-libgcc -static-libstdc++ -lcrypt
|
|
|
|
AIX-ppc_SNAPPY_FLAGS :=
|
|
|
|
|
2014-07-09 23:33:22 +02:00
|
|
|
AIX-ppc64_CXX := g++
|
|
|
|
AIX-ppc64_STRIP := strip -X64
|
2014-07-10 17:01:50 +02:00
|
|
|
AIX-ppc64_LIBNAME := libsnappyjava.a
|
2014-07-09 23:33:22 +02:00
|
|
|
ifeq ($(IBM_JDK_7),)
|
|
|
|
AIX-ppc64_CXXFLAGS := -DHAVE_CONFIG_H -Ilib/inc_linux -I$(JAVA_HOME)/include -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -m64
|
|
|
|
else
|
2014-07-10 17:01:50 +02:00
|
|
|
AIX-ppc64_CXXFLAGS := -DHAVE_CONFIG_H -I$(JAVA_HOME)/include/aix -Ilib/inc_ibm -I$(JAVA_HOME)/include -Ilib/inc_mac -O2 -fPIC -maix64
|
2014-07-09 23:33:22 +02:00
|
|
|
endif
|
|
|
|
AIX-ppc64_LINKFLAGS := -shared -static-libgcc -static-libstdc++ -lcrypt
|
|
|
|
AIX-ppc64_SNAPPY_FLAGS :=
|
|
|
|
|
2015-03-15 01:00:39 +01:00
|
|
|
Linux-s390_CXX := g++
|
|
|
|
Linux-s390_STRIP := strip
|
|
|
|
ifeq ($(IBM_JDK_7),)
|
|
|
|
Linux-s390_CXXFLAGS := -DHAVE_CONFIG_H -Ilib/inc_linux -I$(JAVA_HOME)/include -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -m31
|
|
|
|
else
|
|
|
|
Linux-s390_CXXFLAGS := -DHAVE_CONFIG_H -I$(JAVA_HOME)/include/linux -Ilib/inc_ibm -I$(JAVA_HOME)/include -Ilib/inc_mac -O2 -fPIC -m31
|
|
|
|
endif
|
|
|
|
Linux-s390_LINKFLAGS := -shared -static-libgcc -static-libstdc++
|
|
|
|
Linux-s390_LIBNAME := libsnappyjava.so
|
|
|
|
Linux-s390_SNAPPY_FLAGS :=
|
|
|
|
|
|
|
|
Linux-s390x_CXX := g++
|
|
|
|
Linux-s390x_STRIP := strip
|
|
|
|
ifeq ($(IBM_JDK_7),)
|
|
|
|
Linux-s390x_CXXFLAGS := -DHAVE_CONFIG_H -Ilib/inc_linux -I$(JAVA_HOME)/include -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -m64
|
|
|
|
else
|
|
|
|
Linux-s390x_CXXFLAGS := -DHAVE_CONFIG_H -I$(JAVA_HOME)/include/linux -Ilib/inc_ibm -I$(JAVA_HOME)/include -Ilib/inc_mac -O2 -fPIC -m64
|
|
|
|
endif
|
|
|
|
Linux-s390x_LINKFLAGS := -shared -static-libgcc -static-libstdc++
|
|
|
|
Linux-s390x_LIBNAME := libsnappyjava.so
|
|
|
|
Linux-s390x_SNAPPY_FLAGS :=
|
|
|
|
|
2013-08-13 16:49:22 +02:00
|
|
|
SunOS-x86_CXX := g++
|
|
|
|
SunOS-x86_STRIP := strip
|
|
|
|
SunOS-x86_CXXFLAGS := -include lib/inc_linux/jni_md.h -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden
|
|
|
|
SunOS-x86_LINKFLAGS := -shared -static-libgcc -static-libstdc++
|
|
|
|
SunOS-x86_LIBNAME := libsnappyjava.so
|
|
|
|
SunOS-x86_SNAPPY_FLAGS :=
|
|
|
|
|
|
|
|
SunOS-sparc_CXX := g++
|
|
|
|
SunOS-sparc_STRIP := strip
|
|
|
|
SunOS-sparc_CXXFLAGS := -include lib/inc_linux/jni_md.h -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden
|
|
|
|
SunOS-sparc_LINKFLAGS := -shared -static-libgcc -static-libstdc++
|
|
|
|
SunOS-sparc_LIBNAME := libsnappyjava.so
|
|
|
|
SunOS-sparc_SNAPPY_FLAGS :=
|
|
|
|
|
2013-11-07 01:24:39 +01:00
|
|
|
SunOS-x86_64_CXX := g++
|
|
|
|
SunOS-x86_64_STRIP := strip
|
|
|
|
SunOS-x86_64_CXXFLAGS := -include lib/inc_linux/jni_md.h -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden -m64
|
|
|
|
SunOS-x86_64_LINKFLAGS := -shared -static-libgcc -static-libstdc++
|
|
|
|
SunOS-x86_64_LIBNAME := libsnappyjava.so
|
|
|
|
SunOS-x86_64_SNAPPY_FLAGS :=
|
2013-11-06 15:11:06 +01:00
|
|
|
|
2012-06-29 05:58:21 +02:00
|
|
|
# '-include lib/inc_linux/jni_md.h' is used to force the use of our version,
|
|
|
|
# which defines JNIEXPORT differently; otherwise, since OpenJDK includes
|
|
|
|
# jni_md.h in same directory as jni.h, the include path is ignored when
|
|
|
|
# jni_md.h is included from jni.h
|
|
|
|
|
|
|
|
Linux-arm_CXX := $(CROSS_PREFIX)g++
|
|
|
|
Linux-arm_STRIP := $(CROSS_PREFIX)strip
|
|
|
|
Linux-arm_CXXFLAGS := -include lib/inc_linux/jni_md.h -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden -mfloat-abi=softfp
|
2012-06-13 04:56:14 +02:00
|
|
|
Linux-arm_LINKFLAGS := -shared -static-libgcc
|
|
|
|
Linux-arm_LIBNAME := libsnappyjava.so
|
|
|
|
Linux-arm_SNAPPY_FLAGS:=
|
|
|
|
|
2012-06-29 05:58:21 +02:00
|
|
|
Linux-armhf_CXX := $(CROSS_PREFIX)g++
|
|
|
|
Linux-armhf_STRIP := $(CROSS_PREFIX)strip
|
|
|
|
Linux-armhf_CXXFLAGS := -include lib/inc_linux/jni_md.h -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden -mfloat-abi=hard
|
|
|
|
Linux-armhf_LINKFLAGS := -shared -static-libgcc
|
|
|
|
Linux-armhf_LIBNAME := libsnappyjava.so
|
|
|
|
Linux-armhf_SNAPPY_FLAGS:=
|
|
|
|
|
2013-08-13 10:45:03 +02:00
|
|
|
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
|
|
|
|
Mac-x86_LINKFLAGS := -dynamiclib -static-libgcc
|
|
|
|
Mac-x86_LIBNAME := libsnappyjava.jnilib
|
|
|
|
Mac-x86_SNAPPY_FLAGS :=
|
2011-03-29 11:17:07 +02:00
|
|
|
|
2011-03-29 15:19:23 +02:00
|
|
|
Mac-x86_64_CXX := g++ -arch $(OS_ARCH)
|
2011-03-29 11:17:07 +02:00
|
|
|
Mac-x86_64_STRIP := strip -x
|
2012-05-25 03:23:26 +02:00
|
|
|
Mac-x86_64_CXXFLAGS := -Ilib/inc_mac -I$(JAVA_HOME)/include -O2 -fPIC -mmacosx-version-min=10.5 -fvisibility=hidden
|
2014-06-26 07:12:03 +02:00
|
|
|
Mac-x86_64_LINKFLAGS := -dynamiclib
|
2011-06-02 04:13:47 +02:00
|
|
|
Mac-x86_64_LIBNAME := libsnappyjava.jnilib
|
2011-03-29 13:30:07 +02:00
|
|
|
Mac-x86_64_SNAPPY_FLAGS :=
|
2011-03-29 11:17:07 +02:00
|
|
|
|
2013-08-13 10:45:03 +02:00
|
|
|
FreeBSD-x86_64_CXX := $(CROSS_PREFIX)g++
|
|
|
|
FreeBSD-x86_64_STRIP := $(CROSS_PREFIX)strip
|
|
|
|
FreeBSD-x86_64_CXXFLAGS := -I$(JAVA_HOME)/include -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden
|
|
|
|
FreeBSD-x86_64_LINKFLAGS := -shared -static-libgcc
|
|
|
|
FreeBSD-x86_64_LIBNAME := libsnappyjava.so
|
|
|
|
FreeBSD-x86_64_SNAPPY_FLAGS :=
|
2012-11-11 19:23:47 +01:00
|
|
|
|
2012-09-07 02:15:12 +02:00
|
|
|
Windows-x86_CXX := $(CROSS_PREFIX)g++
|
|
|
|
Windows-x86_STRIP := $(CROSS_PREFIX)strip
|
2011-06-20 06:35:13 +02:00
|
|
|
Windows-x86_CXXFLAGS := -Ilib/inc_win -O2
|
2011-03-30 09:46:19 +02:00
|
|
|
Windows-x86_LINKFLAGS := -Wl,--kill-at -shared -static
|
2011-06-02 04:13:47 +02:00
|
|
|
Windows-x86_LIBNAME := snappyjava.dll
|
2011-03-29 13:30:07 +02:00
|
|
|
Windows-x86_SNAPPY_FLAGS :=
|
2011-03-29 11:17:07 +02:00
|
|
|
|
2013-08-13 10:45:03 +02:00
|
|
|
Windows-x86_64_CXX := $(CROSS_PREFIX)g++
|
|
|
|
Windows-x86_64_STRIP := $(CROSS_PREFIX)strip
|
|
|
|
Windows-x86_64_CXXFLAGS := -Ilib/inc_win -O2
|
|
|
|
Windows-x86_64_LINKFLAGS := -Wl,--kill-at -shared -static
|
|
|
|
Windows-x86_64_LIBNAME := snappyjava.dll
|
|
|
|
Windows-x86_64_SNAPPY_FLAGS :=
|
2011-03-29 11:17:07 +02:00
|
|
|
|
|
|
|
|
2011-03-29 15:19:23 +02:00
|
|
|
CXX := $($(os_arch)_CXX)
|
|
|
|
STRIP := $($(os_arch)_STRIP)
|
|
|
|
CXXFLAGS := $($(os_arch)_CXXFLAGS)
|
|
|
|
LINKFLAGS := $($(os_arch)_LINKFLAGS)
|
|
|
|
LIBNAME := $($(os_arch)_LIBNAME)
|
|
|
|
SNAPPY_FLAGS := $($(os_arch)_SNAPPY_FLAGS)
|
2011-03-29 11:17:07 +02:00
|
|
|
|
2011-03-29 15:19:23 +02:00
|
|
|
|
2011-03-31 05:23:57 +02:00
|
|
|
|
|
|
|
CXXFLAGS := $(CXXFLAGS) -Ilib/include
|
2011-03-29 11:17:07 +02:00
|
|
|
ifneq ($(jni_include),)
|
2011-03-29 13:30:07 +02:00
|
|
|
CXXFLAGS := $(CXXFLAGS) -I"$(jni_include)"
|
2011-03-29 11:17:07 +02:00
|
|
|
endif
|
|
|
|
|
2014-07-09 23:33:22 +02:00
|
|
|
|