TARGET:=target SRC:=src/main/java include $(SRC)/org/xerial/snappy/VERSION 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" OSINFO_CLASS := org.xerial.snappy.OSInfo OSINFO_PROG := lib/org/xerial/snappy/OSInfo.class ## building OSInfo.java #$(info compiling OSInfo.java) #$(shell mkdir -p lib) #$(shell $(JAVAC) src/main/java/org/xerial/snappy/OSInfo.java -d lib) 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)) # Windows uses different path separators ifeq ($(OS_NAME),Windows) sep := ; else sep := : endif snappy := snappy-$(VERSION) jni_md := $(shell find -L "$(JAVA_HOME)" -name jni_md.h) ifneq ($(jni_md),) jni_include := $(shell dirname "$(jni_md)") endif # os=Default is meant to be generic unix/linux known_os_archs := Linux-i386 Linux-amd64 Linux-arm Linux-armhf Mac-i386 Mac-x86_64 Windows-x86 Windows-amd64 os_arch := $(OS_NAME)-$(OS_ARCH) ifeq (,$(findstring $(strip $(os_arch)),$(known_os_archs))) os_arch := Default endif # cross-compilation toolchain prefix (e.g. "arm-linux-gnueabi-") CROSS_PREFIX := Default_CXX := $(CROSS_PREFIX)g++ Default_STRIP := $(CROSS_PREFIX)strip Default_CXXFLAGS := -I$(JAVA_HOME)/include -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden Default_LINKFLAGS := -shared -static Default_LIBNAME := libsnappyjava.so Default_SNAPPY_FLAGS := Linux-i386_CXX := $(CROSS_PREFIX)g++ Linux-i386_STRIP := $(CROSS_PREFIX)strip Linux-i386_CXXFLAGS := -include lib/inc_linux/jni_md.h -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden -m32 Linux-i386_LINKFLAGS := -shared -static-libgcc -static-libstdc++ Linux-i386_LIBNAME := libsnappyjava.so Linux-i386_SNAPPY_FLAGS:= Linux-amd64_CXX := $(CROSS_PREFIX)g++ Linux-amd64_STRIP := $(CROSS_PREFIX)strip Linux-amd64_CXXFLAGS := -include lib/inc_linux/jni_md.h -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden -m64 Linux-amd64_LINKFLAGS := -shared -static-libgcc Linux-amd64_LIBNAME := libsnappyjava.so Linux-amd64_SNAPPY_FLAGS := # '-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 Linux-arm_LINKFLAGS := -shared -static-libgcc Linux-arm_LIBNAME := libsnappyjava.so Linux-arm_SNAPPY_FLAGS:= 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:= Mac-i386_CXX := g++ -arch $(OS_ARCH) Mac-i386_STRIP := strip -x Mac-i386_CXXFLAGS := -Ilib/inc_mac -I$(JAVA_HOME)/include -O2 -fPIC -mmacosx-version-min=10.4 -fvisibility=hidden Mac-i386_LINKFLAGS := -dynamiclib -static-libgcc Mac-i386_LIBNAME := libsnappyjava.jnilib Mac-i386_SNAPPY_FLAGS := Mac-x86_64_CXX := g++ -arch $(OS_ARCH) Mac-x86_64_STRIP := strip -x Mac-x86_64_CXXFLAGS := -Ilib/inc_mac -I$(JAVA_HOME)/include -O2 -fPIC -mmacosx-version-min=10.5 -fvisibility=hidden Mac-x86_64_LINKFLAGS := -dynamiclib -static-libgcc Mac-x86_64_LIBNAME := libsnappyjava.jnilib Mac-x86_64_SNAPPY_FLAGS := Windows-x86_CXX := $(CROSS_PREFIX)g++ Windows-x86_STRIP := $(CROSS_PREFIX)strip Windows-x86_CXXFLAGS := -Ilib/inc_win -O2 Windows-x86_LINKFLAGS := -Wl,--kill-at -shared -static Windows-x86_LIBNAME := snappyjava.dll Windows-x86_SNAPPY_FLAGS := Windows-amd64_CXX := $(CROSS_PREFIX)g++ Windows-amd64_STRIP := $(CROSS_PREFIX)strip Windows-amd64_CXXFLAGS := -Ilib/inc_win -O2 Windows-amd64_LINKFLAGS := -Wl,--kill-at -shared -static Windows-amd64_LIBNAME := snappyjava.dll Windows-amd64_SNAPPY_FLAGS := 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) CXXFLAGS := $(CXXFLAGS) -Ilib/include ifneq ($(jni_include),) CXXFLAGS := $(CXXFLAGS) -I"$(jni_include)" endif