all: larray include Makefile.common SRC:=larray-mmap/src/main/java LARRAY_OUT:=$(TARGET)/larray-$(os_arch) LARRAY_SRC_DIR:=$(SRC)/xerial/larray/impl LARRAY_SRC:=$(shell find $(LARRAY_SRC_DIR)) LARRAY_OBJ:=$(LARRAY_OUT)/LArrayNative.o VERSION:=$(shell perl -npe "s/version in ThisBuild\s+:=\s+\"(.*)\"/\1/" version.sbt | sed -e "/^$$/d") CFLAGS:=$(CFLAGS) -I$(LARRAY_SRC_DIR) LARRAY_HEADER:=$(SRC)/xerial/larray/impl/LArrayNative.h $(TARGET)/classes/xerial/larray/impl/%.class : $(LARRAY_SRC_DIR)/%.java $(JAVAC) -sourcepath $(SRC) -d $(TARGET)/classes $< jni-header: $(LARRAY_HEADER) $(LARRAY_HEADER): $(SRC)/xerial/larray/impl/LArrayNative.java $(TARGET)/classes/xerial/larray/impl/LArrayNative.class @mkdir -p $(TARGET)/classes $(JAVAH) -classpath $(TARGET)/classes -o $@ xerial.larray.impl.LArrayNative $(LARRAY_OUT)/%.o : $(LARRAY_SRC_DIR)/%.c @mkdir -p $(@D) $(CC) $(CFLAGS) -c $< -o $@ $(LARRAY_OUT)/$(LIBNAME): $(LARRAY_OBJ) $(CC) $(CFLAGS) -o $@ $+ $(LINKFLAGS) $(STRIP) $@ clean-native: rm -rf $(LARRAY_OUT) clean: rm -rf $(TARGET) NATIVE_DIR:=larray-mmap/src/main/resources/xerial/larray/native/$(OS_NAME)/$(OS_ARCH) NATIVE_TARGET_DIR:=$(TARGET)/classes/xerial/native/$(OS_NAME)/$(OS_ARCH) NATIVE_DLL:=$(NATIVE_DIR)/$(LIBNAME) native: osinfo $(NATIVE_DLL) larray: native $(TARGET)/larray-$(VERSION).jar SBT:=./sbt $(NATIVE_DLL): $(LARRAY_OUT)/$(LIBNAME) @mkdir -p $(@D) cp $< $@ @mkdir -p $(NATIVE_TARGET_DIR) cp $< $(NATIVE_TARGET_DIR)/$(LIBNAME) $(TARGET)/larray-$(VERSION).jar: native $(NATIVE_DLL) $(SBT) package test: $(NATIVE_DLL) $(SBT) test win32: $(MAKE) native CROSS_PREFIX=i686-w64-mingw32- OS_NAME=Windows OS_ARCH=x86 # for cross-compilation on Ubuntu, install the g++-mingw-w64-x86-64 package win64: $(MAKE) native CROSS_PREFIX=x86_64-w64-mingw32- OS_NAME=Windows OS_ARCH=amd64 mac32: $(MAKE) native OS_NAME=Mac OS_ARCH=i386 linux32: $(MAKE) native OS_NAME=Linux OS_ARCH=i386 # for cross-compilation on Ubuntu, install the g++-arm-linux-gnueabi package linux-arm: $(MAKE) native CROSS_PREFIX=arm-linux-gnueabi- OS_NAME=Linux OS_ARCH=arm # for cross-compilation on Ubuntu, install the g++-arm-linux-gnueabihf package linux-armhf: $(MAKE) native CROSS_PREFIX=arm-linux-gnueabihf- OS_NAME=Linux OS_ARCH=armhf clean-native-linux32: $(MAKE) clean-native OS_NAME=Linux OS_ARCH=i386 clean-native-win32: $(MAKE) clean-native OS_NAME=Windows OS_ARCH=x86