################################################################################
#
# gpm
#
################################################################################

GPM_VERSION = 1.20.7
GPM_SOURCE = gpm-$(GPM_VERSION).tar.lzma
GPM_SITE = http://www.nico.schottelius.org/software/gpm/archives
GPM_LICENSE = GPL-2.0+
GPM_LICENSE_FILES = COPYING
GPM_SELINUX_MODULES = gpm
GPM_INSTALL_STAGING = YES
GPM_DEPENDENCIES = host-bison

# if not already installed in staging dir, gpm Makefile may fail to find some
# of the headers needed to generate build dependencies, the first time it is
# built. CPPFLAGS is used to pass the right include path to dependency rules.
GPM_CONF_ENV = \
	CPPFLAGS="$(TARGET_CPPFLAGS) -I$(@D)/src/headers/" \
	ac_cv_path_emacs=no

# For some reason, Microblaze gcc does not define __ELF__, which gpm
# configure script uses to determine whether the architecture uses ELF
# binaries and therefore can build shared libraries. We fix this by
# telling GPM that ELF is used on Microblaze.
ifeq ($(BR2_microblaze),y)
GPM_CONF_ENV += itz_cv_sys_elf=yes
endif

# gpm and ncurses have a circular dependency. As gpm function GPM_Wgetch()
# (requiring ncurses) is not recommended for use by ncurses people themselves
# and as it's better to have gpm support in ncurses that the contrary, we force
# gpm to not look after ncurses explicitly.
# http://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib
GPM_CONF_OPTS = --without-curses

# configure is missing but gpm seems not compatible with our autoreconf
# mechanism so we have to do it manually instead of using GPM_AUTORECONF = YES
define GPM_RUN_AUTOGEN
	cd $(@D) && PATH=$(BR_PATH) ./autogen.sh
endef
GPM_PRE_CONFIGURE_HOOKS += GPM_RUN_AUTOGEN

GPM_DEPENDENCIES += host-automake host-autoconf host-libtool

# gpm tries to build/install .info doc even if makeinfo isn't installed on the
# host, so we have to disable global doc installation to prevent autobuild
# errors.
define GPM_DISABLE_DOC_INSTALL
	$(SED) 's/SUBDIRS = src doc contrib/SUBDIRS = src contrib/' \
		$(@D)/Makefile.in
endef
GPM_POST_PATCH_HOOKS += GPM_DISABLE_DOC_INSTALL

ifeq ($(BR2_PACKAGE_GPM_INSTALL_TEST_TOOLS),)
define GPM_REMOVE_TEST_TOOLS_FROM_TARGET
	for tools in mev hltest mouse-test display-buttons \
		get-versions display-coords; do \
			rm -f $(TARGET_DIR)/usr/bin/$$tools ; \
	done
endef
GPM_POST_INSTALL_TARGET_HOOKS += GPM_REMOVE_TEST_TOOLS_FROM_TARGET
endif

define GPM_INSTALL_GPM_ROOT_CONF_ON_TARGET
	$(INSTALL) -m 0644 -D $(@D)/conf/gpm-root.conf $(TARGET_DIR)/etc/
endef

GPM_POST_INSTALL_TARGET_HOOKS += GPM_INSTALL_GPM_ROOT_CONF_ON_TARGET

$(eval $(autotools-package))
