BLOSC_OBJS=	lib/blosc-1.20.1/bitshuffle-avx2.o \
			lib/blosc-1.20.1/blosc.o \
			lib/blosc-1.20.1/shuffle-avx2.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:	H5Zblosc.o
	$(CXX) $(PKG_CXXFLAGS) $(PKG_CXXPICFLAGS) $(PKG_LDFLAGS) -shared -o libH5Zblosc.so H5Zblosc.o \
	libblosc.a ../zstd/libzstd.a -lz

H5Zblosc.o: libblosc.a
	$(CC) $(PKG_CFLAGS) $(PKG_CPICFLAGS) -c -o H5Zblosc.o H5Zblosc.c \
	$(PKG_CPPFLAGS) -I./lib/blosc-1.20.1

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
