kumquat-buildroot/package/gettext/gettext.mk
Thomas Petazzoni 431d00abc1 gettext: build libintl unconditionally for uClibc/musl
Only the initial patches of the gettext series have been applied, and
a bisectability problem has arised: when BR2_SYSTEM_ENABLE_NLS is
disabled, which is the default, gettext no longer builds libintl.

However, since packages have not yet been updated to the new gettext
logic, they still try to link against libintl, because they rely on
BR2_NEEDS_GETTEXT/BR2_NEEDS_GETTEXT_IF_LOCALE, which are true.

So, as a temporary measure, we adjust the gettext package so that it
unconditionally builds libintl for uClibc/musl, even when NLS is
disabled. This commit will be reverted once all packages have been
fixed.

Fixes:

  http://autobuild.buildroot.net/results/a4cf71c34dcc5c750ea87a16014c2cb2d28cdebd/
  (elfutils)

  http://autobuild.buildroot.net/results/cb9ae18295b21b3f9399be6edd82273add375656/
  (linux-pam)

  http://autobuild.buildroot.net/results/4225e5dfb6bcf590d9c1068112472ee82bc87d6b/
  (alsa-utils)

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2017-07-05 00:13:24 +02:00

101 lines
3.3 KiB
Makefile

################################################################################
#
# gettext
#
################################################################################
GETTEXT_VERSION = 0.19.8.1
GETTEXT_SITE = $(BR2_GNU_MIRROR)/gettext
GETTEXT_SOURCE = gettext-$(GETTEXT_VERSION).tar.xz
GETTEXT_INSTALL_STAGING = YES
GETTEXT_LICENSE = LGPL-2.1+ (libintl), GPL-3.0+ (the rest)
GETTEXT_LICENSE_FILES = COPYING gettext-runtime/intl/COPYING.LIB
# 0002-Update-after-gnulib-changed.patch
GETTEXT_AUTORECONF = YES
GETTEXT_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv)
# Avoid using the bundled subset of libxml2
HOST_GETTEXT_DEPENDENCIES = host-libxml2
GETTEXT_CONF_OPTS += \
--disable-libasprintf \
--disable-acl \
--disable-openmp \
--disable-rpath \
--disable-java \
--disable-native-java \
--disable-csharp \
--disable-relocatable \
--without-emacs
HOST_GETTEXT_CONF_OPTS = \
--disable-libasprintf \
--disable-acl \
--disable-openmp \
--disable-rpath \
--disable-java \
--disable-native-java \
--disable-csharp \
--disable-relocatable \
--without-emacs
# Force the build of libintl, even if the C library provides a stub
# gettext implementation
ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y)
GETTEXT_CONF_OPTS += --with-included-gettext --enable-nls
else
GETTEXT_CONF_OPTS += --without-included-gettext
endif
# For the target version, we only need the runtime, and for the host
# version, we only need the tools.
GETTEXT_SUBDIR = gettext-runtime
HOST_GETTEXT_SUBDIR = gettext-tools
# Disable the build of documentation and examples of gettext-tools,
# and the build of documentation and tests of gettext-runtime.
define HOST_GETTEXT_DISABLE_UNNEEDED
$(SED) '/^SUBDIRS/s/ doc //;/^SUBDIRS/s/examples$$//' $(@D)/gettext-tools/Makefile.in
$(SED) '/^SUBDIRS/s/ doc //;/^SUBDIRS/s/tests$$//' $(@D)/gettext-runtime/Makefile.in
endef
GETTEXT_POST_PATCH_HOOKS += HOST_GETTEXT_DISABLE_UNNEEDED
HOST_GETTEXT_POST_PATCH_HOOKS += HOST_GETTEXT_DISABLE_UNNEEDED
define GETTEXT_REMOVE_UNNEEDED
$(RM) -rf $(TARGET_DIR)/usr/share/gettext/ABOUT-NLS
rmdir --ignore-fail-on-non-empty $(TARGET_DIR)/usr/share/gettext
endef
GETTEXT_POST_INSTALL_TARGET_HOOKS += GETTEXT_REMOVE_UNNEEDED
# Force build with NLS support, otherwise libintl is not built
# This is needed because some packages (eg. libglib2) requires
# locales, but do not properly depend on BR2_ENABLE_LOCALE, and
# instead select BR2_PACKAGE_GETTEXT. Those packages need to be
# fixed before we can remove the following 3 lines... :-(
ifeq ($(BR2_ENABLE_LOCALE),)
GETTEXT_CONF_OPTS += --enable-nls
endif
# Disable interactive confirmation in host gettextize for package fixups
define HOST_GETTEXT_GETTEXTIZE_CONFIRMATION
$(SED) '/read dummy/d' $(HOST_DIR)/usr/bin/gettextize
endef
HOST_GETTEXT_POST_INSTALL_HOOKS += HOST_GETTEXT_GETTEXTIZE_CONFIRMATION
# autoreconf expects gettextize to install ABOUT-NLS, but it only gets
# installed by gettext-runtime which we don't build/install for the
# host, so do it manually
define HOST_GETTEXT_ADD_ABOUT_NLS
$(INSTALL) -m 0644 $(@D)/$(HOST_GETTEXT_SUBDIR)/ABOUT-NLS \
$(HOST_DIR)/usr/share/gettext/ABOUT-NLS
endef
HOST_GETTEXT_POST_INSTALL_HOOKS += HOST_GETTEXT_ADD_ABOUT_NLS
GETTEXTIZE = $(HOST_CONFIGURE_OPTS) AUTOM4TE=$(HOST_DIR)/usr/bin/autom4te $(HOST_DIR)/usr/bin/gettextize -f
$(eval $(autotools-package))
$(eval $(host-autotools-package))