###############################################################################
# libbrlapi - A library providing access to braille terminals for applications.
#
# Copyright (C) 2005-2025 by
#   Alexis Robert <alexissoft@free.fr>
#   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
#
# libbrlapi comes with ABSOLUTELY NO WARRANTY.
#
# This is free software, placed under the terms of the
# GNU Lesser General Public License, as published by the Free Software
# Foundation; either version 2.1 of the License, or (at your option) any
# later version. Please see the file LICENSE-LGPL for details.
#
# Web Page: http://brltty.app/
#
# This software is maintained by Dave Mielke <dave@mielke.cc>.
###############################################################################

include $(SRC_TOP)bindings.mk

PYTHON_OK = @PYTHON_OK@
PYTHON = @PYTHON@
PYTHON_VERSION = @PYTHON_VERSION@
PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@
PYTHON_LIBS = @PYTHON_LIBS@
PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@
PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@
PYTHON_SITE_PKG = @PYTHON_SITE_PKG@

CYTHON = @CYTHON@
CYTHON_CFLAGS = @CYTHON_CFLAGS@

PYTHON_DESTDIR = $(INSTALL_ROOT)
PYTHON_PREFIX =

PYTHON_MODULE = $(API_NAME)
PYTHON_API = $(PYTHON_MODULE).$(LIB_EXT)

V_setup_  = $(V_setup_0)
V_setup_0 = --quiet
V_setup_1 = --verbose
V_setup   = $(V_setup_$(V))

INSTALLED_FILES = installed-files

all: $(PYTHON_API)

$(PYTHON_API): brlapi.auto.c $(API_HDRS) | $(INSTALLED_FILES) brlapi
	set -- $(V_setup) build --build-temp .; \
	[ "@host_os@" != "mingw32" ] || set -- "$${@}" --compiler mingw32; \
	"$(PYTHON)" ./setup.py "$${@}"
	[ "@host_os@" != "mingw32" ] || "$(PYTHON)" ./setup.py $(V_setup) bdist_egg --skip-build

$(INSTALLED_FILES):
	touch $(INSTALLED_FILES)

brlapi.auto.c: $(SRC_DIR)/brlapi.pyx $(SRC_DIR)/c_brlapi.pxd constants.auto.pyx
	"$(CYTHON)" -$(PYTHON_VERSION) -I. -X embedsignature=True -o $@ $(SRC_DIR)/brlapi.pyx

constants.auto.pyx: $(CONSTANTS_DEPENDENCIES)
	$(AWK) $(CONSTANTS_ARGUMENTS) >$@

doc: $(PYTHON_API)
	LD_PRELOAD=$(API_LIB) "$(PYTHON)" $(SRC_DIR)/mkdoc.py $(PYTHON_MODULE)

-include /usr/share/python3/python.mk
install: all
	set -- $(V_setup) install --skip-build --record "$(INSTALLED_FILES)"; \
	[ -z "$(PYTHON_DESTDIR)" ] || set -- "$${@}" --root "$(PYTHON_DESTDIR)"; \
	[ -z "$(PYTHON_PREFIX)" ] || set -- "$${@}" --prefix "$(PYTHON_PREFIX)"; \
	set -- "$${@}" $(py_setup_install_args); \
	"$(PYTHON)" ./setup.py "$${@}"
	[ "@host_os@" != "mingw32" ] || "$(PYTHON)" ./setup.py $(V_setup) bdist_wheel --skip-build                    
	-rm -f -r -- Brlapi.egg-info

uninstall:
	[ ! -f "$(INSTALLED_FILES)" ] || rm -f -- `$(AWK) '{printf "%s%s ", "$(PYTHON_DESTDIR)", $$0}' "$(INSTALLED_FILES)"`

clean::
	-rm -f -- $(PYTHON_API) *.auto.* *.html "$(INSTALLED_FILES)"
	-rm -f -r -- build
	-rm -f -r -- dist
	-rm -f -r -- Release

distclean::
	-rm -f -- setup.py
