MODULE_NAME=_gidpost
PYTHON_SO_EXTENSION=$(shell python3 -c "import sysconfig ; print( sysconfig.get_config_var('EXT_SUFFIX') )")
PYTHON_PLATFORM=$(shell python3 -c "import sysconfig ; print( sysconfig.get_platform() )")
PYTHON_TAG=$(shell python3 -c "import sys ; print( sys.implementation.cache_tag )")
BUILD_DIR=build/lib.$(PYTHON_PLATFORM)-$(PYTHON_TAG)
FULL_NAME=$(BUILD_DIR)/$(MODULE_NAME)$(PYTHON_SO_EXTENSION)

SWIG_SOURCE = gidpost_module.i
SWIG_SOURCE_DEPS = gidpost_module.h
SWIG_OUT = gidpost_module_wrap.c

GIDPOST_SOURCE = ../source

MODULE_SOURCES = \
	gidpost_module_wrap.c               \
    $(GIDPOST_SOURCE)/gidpost.c         \
    $(GIDPOST_SOURCE)/gidpostFILES.c    \
    $(GIDPOST_SOURCE)/gidpostInt.c      \
    $(GIDPOST_SOURCE)/gidpostHash.c     \
    $(GIDPOST_SOURCE)/hashtab.c         \
    $(GIDPOST_SOURCE)/recycle.c         \
    $(GIDPOST_SOURCE)/lookupa.c         \
    $(GIDPOST_SOURCE)/hdf5c.c           \
    $(GIDPOST_SOURCE)/gidpostHDF5.c

# Checking dependencies
CHECK_ZLIB = $(shell pkg-config --list-all | grep zlib)
# CHECK_HDF5 = $(shell pkg-config --list-all | grep hdf5)
CHECK_HDF5 = $(shell h5cc -show -shlib | grep hdf5)

ifeq ($(CHECK_ZLIB),)
error_no_zlib:
	@echo "Could not find Zlib with pkg-config --list-all | grep zlib"
	@exit 1
endif

ifeq ($(CHECK_HDF5),)
error_no_hdf5:
	@echo "Could not find Hdf5 with h5cc -show -shlib | grep hdf5"
	@exit 1
endif

default: $(FULL_NAME)

$(FULL_NAME): $(SWIG_OUT) $(MODULE_SOURCES)
	@python3 setup.py build
	@echo Build done.

$(SWIG_OUT): $(SWIG_SOURCE) $(SWIG_SOURCE_DEPS) 
	@swig -I$(GIDPOST_SOURCE) -python $<

clean:
	@rm -f $(SWIG_OUT) $(FULL_NAME) 
	@rm -rf build __pycache__
	@rm -f gidpost.py gidpost-test.post.* gidpost-test-array.post.*

# test creates file gidpost-test.post.h5
test: default
	@echo "GiDpost testing previous API:"
	@python3 gidpost_test.py
	@echo "GiDpost testing new API:"
	@python3 gidpost_test_array.py
