################################################################################
#
# setools
#
################################################################################

SETOOLS_VERSION = 3.3.8
SETOOLS_SOURCE = setools-$(SETOOLS_VERSION).tar.bz2
SETOOLS_SITE = https://raw.githubusercontent.com/wiki/TresysTechnology/setools3/files/dists/setools-$(SETOOLS_VERSION)
SETOOLS_DEPENDENCIES = libselinux libsepol sqlite libxml2 bzip2 host-bison host-flex
SETOOLS_INSTALL_STAGING = YES
SETOOLS_LICENSE = GPLv2+ LGPLv2.1+
SETOOLS_LICENSE_FILES = COPYING COPYING.GPL COPYING.LGPL

# configure.ac is patched by the cross compile patch,
# so autoreconf is necessary
SETOOLS_AUTORECONF = YES

# Notes: Need "disable-selinux-check" so the configure does not check to see
#        if host has selinux enabled.
#        No python support as only the libraries and commandline tools are
#        installed on target
SETOOLS_CONF_OPTS = \
	--disable-debug \
	--disable-gui \
	--disable-bwidget-check \
	--disable-selinux-check \
	--disable-swig-java \
	--disable-swig-python \
	--disable-swig-tcl \
	--with-sepol-devel="$(STAGING_DIR)/usr" \
	--with-selinux-devel="$(STAGING_DIR)/usr"

HOST_SETOOLS_DEPENDENCIES = host-libselinux host-libsepol host-sqlite \
	host-libxml2 host-bzip2 host-bison

ifeq ($(BR2_PACKAGE_PYTHON3),y)
HOST_SETOOLS_PYTHON_VERSION=$(PYTHON3_VERSION_MAJOR)
HOST_SETOOLS_DEPENDENCIES += host-python3
HOST_SETOOLS_CONF_ENV += am_cv_python_version=$(PYTHON3_VERSION)
else
HOST_SETOOLS_PYTHON_VERSION=$(PYTHON_VERSION_MAJOR)
HOST_SETOOLS_DEPENDENCIES += host-python
HOST_SETOOLS_CONF_ENV += am_cv_python_version=$(PYTHON_VERSION)
endif

HOST_SETOOLS_PYTHON_SITE_PACKAGES = $(HOST_DIR)/usr/lib/python$(HOST_SETOOLS_PYTHON_VERSION)/site-packages
HOST_SETOOLS_PYTHON_INCLUDES = $(HOST_DIR)/usr/include/python$(HOST_SETOOLS_PYTHON_VERSION)
HOST_SETOOLS_PYTHON_LIB = -lpython$(HOST_SETOOLS_PYTHON_VERSION)

# Notes: Need "disable-selinux-check" so the configure does not check to see
#        if host has selinux enabled.
#        Host builds with python support to enable tools for offline target
#        policy analysis
HOST_SETOOLS_CONF_OPTS = \
	--disable-debug \
	--disable-gui \
	--disable-bwidget-check \
	--disable-selinux-check \
	--disable-swig-java \
	--disable-swig-python \
	--disable-swig-tcl \
	--with-sepol-devel="$(HOST_DIR)/usr" \
	--with-selinux-devel="$(HOST_DIR)/usr" \
	PYTHON_LDFLAGS="-L$(HOST_DIR)/usr/lib/" \
	PYTHON_CPPFLAGS="-I$(HOST_SETOOLS_PYTHON_INCLUDES)" \
	PYTHON_SITE_PKG="$(HOST_SETOOLS_PYTHON_SITE_PACKAGES)" \
	PYTHON_EXTRA_LIBS="-lpthread -ldl -lutil $(HOST_SETOOLS_PYTHON_LIB)"

HOST_SETOOLS_CONF_ENV += \
	am_cv_pathless_PYTHON=python \
	ac_cv_path_PYTHON=$(HOST_DIR)/usr/bin/python \
	am_cv_python_platform=linux2 \
	am_cv_python_version=$(HOST_SETOOLS_PYTHON_VERSION) \
	am_cv_python_pythondir=$(HOST_SETOOLS_PYTHON_SITE_PACKAGES) \
	am_cv_python_pyexecdir=$(HOST_SETOOLS_PYTHON_SITE_PACKAGES) \
	am_cv_python_includes=-I$(HOST_SETOOLS_PYTHON_INCLUDES)

$(eval $(autotools-package))
$(eval $(host-autotools-package))
