BLOSC_INCLUDE=-I./lib/blosc-1.20.1
BLOSC_LIB=./libblosc.a
ZSTD_LIB=../zstd/libzstd.a

BLOSC_OBJS=	 \
			lib/blosc-1.20.1/blosc.o \
			 \
			lib/blosc-1.20.1/shuffle-sse2.o \
			lib/blosc-1.20.1/bitshuffle-generic.o \
			lib/blosc-1.20.1/blosclz.o \
			lib/blosc-1.20.1/shuffle.o \
			lib/blosc-1.20.1/bitshuffle-sse2.o \
			lib/blosc-1.20.1/fastcopy.o \
			lib/blosc-1.20.1/shuffle-generic.o

LZ4_OBJS=	lib/lz4-1.9.4/lz4.o \
			lib/lz4-1.9.4/lz4hc.o

SNAPPY_OBJS=lib/snappy-1.1.1/snappy.o \
			lib/snappy-1.1.1/snappy-c.o \
			lib/snappy-1.1.1/snappy-sinksource.o \
			lib/snappy-1.1.1/snappy-stubs-internal.o


all: libH5Zblosc.so

libH5Zblosc.so: libblosc.a
	$(CXX) $(PKG_CXXFLAGS) $(PKG_CXXPICFLAGS) -shared $(PKG_CPPFLAGS) H5Zblosc.cpp \
	$(PKG_LDFLAGS) $(BLOSC_INCLUDE) $(BLOSC_LIB) $(ZSTD_LIB) -lz -o libH5Zblosc.so 

libblosc.a: blosc
	rm -f libblosc.a
	$(AR) cq libblosc.a $(BLOSC_OBJS) $(SNAPPY_OBJS) $(LZ4_OBJS) 
	$(RANLIB) libblosc.a

.PHONY: blosc

blosc: subdirs
	$(MAKE) -C lib/blosc-1.20.1 all

SUBDIRS=lib/snappy-1.1.1 lib/lz4-1.9.4

.PHONY: subdirs $(SUBDIRS)

subdirs: $(SUBDIRS)

$(SUBDIRS):
	$(MAKE) -C $@

clean:
	rm -f libH5Zblosc.so
	rm -f libblosc.a
	rm -f lib/blosc-1.20.1/*.o
	rm -f lib/snappy-1.1.1/*.o
	rm -f lib/lz4-1.9.4/*.o
