ifndef BUILDDIR
OBJDIR = build
else
OBJDIR = $(abspath $(BUILDDIR))/obj/bindings/python
endif

.PHONY: gen_const install install3 install_cython clean

gen_const:
	cd .. && python const_generator.py python

install:
	rm -rf $(OBJDIR) src/
	rm -rf prebuilt/win64/capstone.dll
	rm -rf prebuilt/win32/capstone.dll
	if test -n "${DESTDIR}"; then \
		python setup.py build -b $(OBJDIR) install --root="${DESTDIR}"; \
	else \
		python setup.py build -b $(OBJDIR) install; \
	fi

install3:
	rm -rf $(OBJDIR) src/
	rm -rf prebuilt/win64/capstone.dll
	rm -rf prebuilt/win32/capstone.dll
	if test -n "${DESTDIR}"; then \
		python3 setup.py build -b $(OBJDIR) install --root="${DESTDIR}"; \
	else \
		python3 setup.py build -b $(OBJDIR) install; \
	fi

# NOTE: Newer cython can be installed by: sudo pip install --upgrade cython
install_cython:
	rm -rf $(OBJDIR) src/ dist/
	rm -rf prebuilt/win64/capstone.dll
	rm -rf prebuilt/win32/capstone.dll
	mkdir -p $(OBJDIR)/pyx
	cp setup_cython.py $(OBJDIR)
	cp pyx/ccapstone* $(OBJDIR)/pyx/
	cp capstone/__init__.py $(OBJDIR)/pyx/__init__.py
	cp capstone/arm.py $(OBJDIR)/pyx/arm.pyx
	cp capstone/arm_const.py $(OBJDIR)/pyx/arm_const.pyx
	cp capstone/arm64.py $(OBJDIR)/pyx/arm64.pyx
	cp capstone/arm64_const.py $(OBJDIR)/pyx/arm64_const.pyx
	cp capstone/m68k.py $(OBJDIR)/pyx/m68k.pyx
	cp capstone/m68k_const.py $(OBJDIR)/pyx/m68k_const.pyx
	cp capstone/mips.py $(OBJDIR)/pyx/mips.pyx
	cp capstone/mips_const.py $(OBJDIR)/pyx/mips_const.pyx
	cp capstone/ppc.py $(OBJDIR)/pyx/ppc.pyx
	cp capstone/ppc_const.py $(OBJDIR)/pyx/ppc_const.pyx
	cp capstone/sparc.py $(OBJDIR)/pyx/sparc.pyx
	cp capstone/sparc_const.py $(OBJDIR)/pyx/sparc_const.pyx
	cp capstone/systemz.py $(OBJDIR)/pyx/systemz.pyx
	cp capstone/sysz_const.py $(OBJDIR)/pyx/sysz_const.pyx
	cp capstone/x86.py $(OBJDIR)/pyx/x86.pyx
	cp capstone/x86_const.py $(OBJDIR)/pyx/x86_const.pyx
	cp capstone/xcore.py $(OBJDIR)/pyx/xcore.pyx
	cp capstone/xcore_const.py $(OBJDIR)/pyx/xcore_const.pyx
	cd $(OBJDIR) && python setup_cython.py build -b ./tmp install --home=$(OBJDIR)
	mv $(OBJDIR)/build/lib/python/capstone/* capstone
	cd $(OBJDIR) && python setup_cython.py build -b ./tmp install

build_cython:
	rm -rf $(OBJDIR) src/ dist/
	mkdir -p $(OBJDIR)/pyx
	cp setup_cython.py $(OBJDIR)
	cp pyx/ccapstone* $(OBJDIR)/pyx/
	cp capstone/__init__.py $(OBJDIR)/pyx/__init__.py
	cp capstone/arm.py $(OBJDIR)/pyx/arm.pyx
	cp capstone/arm_const.py $(OBJDIR)/pyx/arm_const.pyx
	cp capstone/arm64.py $(OBJDIR)/pyx/arm64.pyx
	cp capstone/arm64_const.py $(OBJDIR)/pyx/arm64_const.pyx
	cp capstone/m68k.py $(OBJDIR)/pyx/m68k.pyx
	cp capstone/m68k_const.py $(OBJDIR)/pyx/m68k_const.pyx
	cp capstone/mips.py $(OBJDIR)/pyx/mips.pyx
	cp capstone/mips_const.py $(OBJDIR)/pyx/mips_const.pyx
	cp capstone/ppc.py $(OBJDIR)/pyx/ppc.pyx
	cp capstone/ppc_const.py $(OBJDIR)/pyx/ppc_const.pyx
	cp capstone/sparc.py $(OBJDIR)/pyx/sparc.pyx
	cp capstone/sparc_const.py $(OBJDIR)/pyx/sparc_const.pyx
	cp capstone/systemz.py $(OBJDIR)/pyx/systemz.pyx
	cp capstone/sysz_const.py $(OBJDIR)/pyx/sysz_const.pyx
	cp capstone/x86.py $(OBJDIR)/pyx/x86.pyx
	cp capstone/x86_const.py $(OBJDIR)/pyx/x86_const.pyx
	cp capstone/xcore.py $(OBJDIR)/pyx/xcore.pyx
	cp capstone/xcore_const.py $(OBJDIR)/pyx/xcore_const.pyx
	cd $(OBJDIR) && python setup_cython.py build

# build & upload PyPi package with source code of the core
sdist:
	rm -rf src/ dist/
	rm -rf prebuilt/win64/capstone.dll
	rm -rf prebuilt/win32/capstone.dll
	cp README.pypi-src README
	cp PKG-INFO.src PKG-INFO
	python setup.py sdist register upload

# build & upload PyPi package with source code of the core
sdist3:
	rm -rf src/ dist/
	rm -rf prebuilt/win64/capstone.dll
	rm -rf prebuilt/win32/capstone.dll
	cp README.pypi-src README
	cp PKG-INFO.src PKG-INFO
	python3 setup.py sdist register upload

# build & upload PyPi package with prebuilt core
# NOTE: be sure to have precompiled core under prebuilt/win*/ beforehand
sdist_win:
	rm -rf src/ dist/
	cp README.pypi-win README
	cp PKG-INFO.win PKG-INFO
	python setup.py sdist register upload

# build & upload PyPi package with prebuilt core
# NOTE: be sure to have precompiled core under prebuilt/win*/ beforehand
sdist3_win:
	rm -rf src/ dist/
	cp README.pypi-win README
	cp PKG-INFO.win PKG-INFO
	python3 setup.py sdist register upload

clean:
	rm -rf $(OBJDIR) src/ dist/ README
	rm -f capstone/*.so
	rm -rf prebuilt/win64/capstone.dll
	rm -rf prebuilt/win32/capstone.dll


TESTS = test_basic.py test_detail.py test_arm.py test_arm64.py test_m68k.py test_mips.py
TESTS += test_ppc.py test_sparc.py test_systemz.py test_x86.py test_xcore.py test_skipdata.py
check:
	@for t in $(TESTS); do \
		echo Check $$t ... ; \
		./$$t > /dev/null && echo OK || echo FAILED; \
	done

