Patchwork [1/2] Convert gettext to autotargets

login
register
mail settings
Submitter Maxime Ripard
Date April 4, 2012, 2:46 p.m.
Message ID <854f44b783b6b7dd9c1189c53e6c98aa74db10a1.1333550801.git.maxime.ripard@free-electrons.com>
Download mbox | patch
Permalink /patch/150745/
State Superseded
Headers show

Comments

Maxime Ripard - April 4, 2012, 2:46 p.m.
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
 package/gettext/Config.in       |   12 ---
 package/gettext/gettext.mk      |  168 +++-----------------------------------
 package/gettext/libdir-la.patch |  154 -----------------------------------
 3 files changed, 14 insertions(+), 320 deletions(-)
 delete mode 100644 package/gettext/libdir-la.patch
Maxime Ripard - April 4, 2012, 2:56 p.m.
Hi List,

While this patch is definitely needed I think, the implementation is
still to be discussed imho.

There was two options here for the gettext package: BR2_PACKAGE_GETTEXT
and BR2_PACKAGE_LIBINTL.

It seems that these two were quite confusing. BR2_PACKAGE_GETTEXT was
only installing stuff in the staging area, but what for ?

So here, judging by the help message in the Config.in, my understanding
is that:
   - BR2_PACKAGE_GETTEXT should be built both in staging and in the
target area
   - BR2_PACKAGE_LIBINTL should be only to build gettext without the binary
   - So BR2_PACKAGE_LIBINTL should only remove generated binaries, and
as such be a sub-option of BR2_PACKAGE_GETTEXT

This what is implemented in this patch.

Now, as we are slightly modifying the relations between these two
options, package that depends on them should be adapted.

Right now, we have three cases:
  * Packages that depend on BR2_PACKAGE_GETTEXT: libidn, php
  * Packages that depend on BR2_PACKAGE_LIBINTL: pulseaudio, dnsmasq,
util-linux
  * Packages that depend on both: make, grep, vala, psmisc, binutils,
pango, glib-networking, gmpc, axel, avahi, sysstat, libglib2, diffutils,
kbd, flex, gdk-pixbuf, libsoup, sshfs

So I guess that they need to all depend only on BR2_PACKAGE_GETTEXT if
such change in the options is adopted.

What do you think of it ?

Maxime


Le 04/04/2012 16:46, Maxime Ripard a écrit :
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
>  package/gettext/Config.in       |   12 ---
>  package/gettext/gettext.mk      |  168 +++-----------------------------------
>  package/gettext/libdir-la.patch |  154 -----------------------------------
>  3 files changed, 14 insertions(+), 320 deletions(-)
>  delete mode 100644 package/gettext/libdir-la.patch
> 
> diff --git a/package/gettext/Config.in b/package/gettext/Config.in
> index fabfe1e..0ee4065 100644
> --- a/package/gettext/Config.in
> +++ b/package/gettext/Config.in
> @@ -12,18 +12,6 @@ config BR2_PACKAGE_GETTEXT
>  comment "gettext requires a toolchain with WCHAR support"
>  	depends on BR2_NEEDS_GETTEXT && !BR2_USE_WCHAR
>  
> -config BR2_PACKAGE_GETTEXT_STATIC
> -	bool "Use libgettext.a instead of libgettext.so.*"
> -	depends on BR2_PACKAGE_GETTEXT
> -	depends on BR2_arm
> -	help
> -	  The GNU `gettext' utilities are a set of tools that provide a
> -	  framework to help other GNU packages produce multi-lingual
> -	  messages.
> -
> -	  http://www.gnu.org/software/gettext/
> -
> -
>  config BR2_PACKAGE_LIBINTL
>  	bool "libintl"
>  	depends on BR2_NEEDS_GETTEXT
> diff --git a/package/gettext/gettext.mk b/package/gettext/gettext.mk
> index f3605da..7c7b26c 100644
> --- a/package/gettext/gettext.mk
> +++ b/package/gettext/gettext.mk
> @@ -3,162 +3,22 @@
>  # gettext
>  #
>  #############################################################
> -GETTEXT_VERSION:=0.16.1
> -GETTEXT_SOURCE:=gettext-$(GETTEXT_VERSION).tar.gz
> -GETTEXT_SITE:=$(BR2_GNU_MIRROR)/gettext
> -GETTEXT_DIR:=$(BUILD_DIR)/gettext-$(GETTEXT_VERSION)
> -GETTEXT_CAT:=$(ZCAT)
> -GETTEXT_BINARY:=gettext-runtime/src/gettext
> -GETTEXT_TARGET_BINARY:=usr/bin/gettext
> +GETTEXT_VERSION = 0.16.1
> +GETTEXT_SITE = $(BR2_GNU_MIRROR)/gettext
> +GETTEXT_INSTALL_STAGING = YES
>  
> -ifeq ($(BR2_PACKAGE_GETTEXT_STATIC),y)
> -LIBINTL_TARGET_BINARY:=usr/lib/libintl.a
> -else
> -LIBINTL_TARGET_BINARY:=usr/lib/libintl.so
> -endif
> -
> -$(DL_DIR)/$(GETTEXT_SOURCE):
> -	 $(call DOWNLOAD,$(GETTEXT_SITE)/$(GETTEXT_SOURCE))
> -
> -gettext-source: $(DL_DIR)/$(GETTEXT_SOURCE)
> -
> -$(GETTEXT_DIR)/.unpacked: $(DL_DIR)/$(GETTEXT_SOURCE)
> -	$(GETTEXT_CAT) $(DL_DIR)/$(GETTEXT_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
> -	support/scripts/apply-patches.sh $(GETTEXT_DIR) package/gettext/ gettext\*.patch
> -	$(call CONFIG_UPDATE,$(@D))
> -	touch $@
> -
> -ifneq ($(BR2_TOOLCHAIN_BUILDROOT),y)
> -IGNORE_EXTERNAL_GETTEXT:=--with-included-gettext
> -endif
> -
> -$(GETTEXT_DIR)/.configured: $(GETTEXT_DIR)/.unpacked
> -	(cd $(GETTEXT_DIR); rm -rf config.cache; \
> -		$(TARGET_CONFIGURE_OPTS) \
> -		$(TARGET_CONFIGURE_ARGS) \
> -		ac_cv_func_strtod=yes \
> -		ac_fsusage_space=yes \
> -		fu_cv_sys_stat_statfs2_bsize=yes \
> -		ac_cv_func_closedir_void=no \
> -		ac_cv_func_getloadavg=no \
> -		ac_cv_lib_util_getloadavg=no \
> -		ac_cv_lib_getloadavg_getloadavg=no \
> -		ac_cv_func_getgroups=yes \
> -		ac_cv_func_getgroups_works=yes \
> -		ac_cv_func_chown_works=yes \
> -		ac_cv_have_decl_euidaccess=no \
> -		ac_cv_func_euidaccess=no \
> -		ac_cv_have_decl_strnlen=yes \
> -		ac_cv_func_strnlen_working=yes \
> -		ac_cv_func_lstat_dereferences_slashed_symlink=yes \
> -		ac_cv_func_lstat_empty_string_bug=no \
> -		ac_cv_func_stat_empty_string_bug=no \
> -		vb_cv_func_rename_trailing_slash_bug=no \
> -		ac_cv_have_decl_nanosleep=yes \
> -		jm_cv_func_nanosleep_works=yes \
> -		gl_cv_func_working_utimes=yes \
> -		ac_cv_func_utime_null=yes \
> -		ac_cv_have_decl_strerror_r=yes \
> -		ac_cv_func_strerror_r_char_p=no \
> -		jm_cv_func_svid_putenv=yes \
> -		ac_cv_func_getcwd_null=yes \
> -		ac_cv_func_getdelim=yes \
> -		ac_cv_func_mkstemp=yes \
> -		utils_cv_func_mkstemp_limitations=no \
> -		utils_cv_func_mkdir_trailing_slash_bug=no \
> -		jm_cv_func_gettimeofday_clobber=no \
> -		gl_cv_func_working_readdir=yes \
> -		jm_ac_cv_func_link_follows_symlink=no \
> -		utils_cv_localtime_cache=no \
> -		ac_cv_struct_st_mtim_nsec=no \
> -		gl_cv_func_tzset_clobber=no \
> -		gl_cv_func_getcwd_null=yes \
> -		gl_cv_func_getcwd_path_max=yes \
> -		ac_cv_func_fnmatch_gnu=yes \
> -		am_getline_needs_run_time_check=no \
> -		am_cv_func_working_getline=yes \
> -		gl_cv_func_mkdir_trailing_slash_bug=no \
> -		gl_cv_func_mkstemp_limitations=no \
> -		ac_cv_func_working_mktime=yes \
> -		jm_cv_func_working_re_compile_pattern=yes \
> -		ac_use_included_regex=no \
> -		gl_cv_c_restrict=no \
> -		./configure $(QUIET) \
> -		--target=$(GNU_TARGET_NAME) \
> -		--host=$(GNU_TARGET_NAME) \
> -		--build=$(GNU_HOST_NAME) \
> -		--prefix=/usr \
> -		--exec-prefix=/usr \
> -		--disable-libasprintf \
> -		--enable-shared \
> -		$(IGNORE_EXTERNAL_GETTEXT) \
> -		--disable-openmp \
> -	)
> -	touch $@
> +GETTEXT_CONF_OPT += \
> +	--disable-libasprintf \
> +	--disable-openmp \
>  
> -$(GETTEXT_DIR)/$(GETTEXT_BINARY): $(GETTEXT_DIR)/.configured
> -	$(MAKE) -C $(GETTEXT_DIR)
> -	touch -c $(GETTEXT_DIR)/$(GETTEXT_BINARY)
> +define GETTEXT_REMOVE_BINARIES
> +	rm -f $(TARGET_DIR)/usr/bin/gettext
> +	rm -f $(TARGET_DIR)/usr/bin/gettext.sh
> +	rm -f $(TARGET_DIR)/usr/bin/gettextize
> +endef
>  
> -$(STAGING_DIR)/$(GETTEXT_TARGET_BINARY): $(GETTEXT_DIR)/$(GETTEXT_BINARY)
> -	$(MAKE) DESTDIR=$(STAGING_DIR) -C $(GETTEXT_DIR) install
> -	$(SED) 's,/lib/,$(STAGING_DIR)/usr/lib/,g' $(STAGING_DIR)/usr/lib/libgettextlib.la
> -	$(SED) 's,/lib/,$(STAGING_DIR)/usr/lib/,g' $(STAGING_DIR)/usr/lib/libgettextpo.la
> -	$(SED) 's,/lib/,$(STAGING_DIR)/usr/lib/,g' $(STAGING_DIR)/usr/lib/libgettextsrc.la
> -	$(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/lib/libgettextlib.la
> -	$(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/lib/libgettextpo.la
> -	$(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/lib/libgettextsrc.la
> -	$(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/lib/libintl.la
> -	rm -f $(addprefix $(STAGING_DIR)/usr/bin/, \
> -		autopoint envsubst gettext.sh gettextize msg* ?gettext)
> -	touch -c $@
> -
> -gettext: host-pkg-config $(if $(BR2_PACKAGE_LIBICONV),libiconv) $(STAGING_DIR)/$(GETTEXT_TARGET_BINARY)
> -
> -gettext-unpacked: $(GETTEXT_DIR)/.unpacked
> -
> -gettext-clean:
> -	-$(MAKE) DESTDIR=$(STAGING_DIR) CC="$(TARGET_CC)" -C $(GETTEXT_DIR) uninstall
> -	-$(MAKE) DESTDIR=$(TARGET_DIR) CC="$(TARGET_CC)" -C $(GETTEXT_DIR) uninstall
> -	-$(MAKE) -C $(GETTEXT_DIR) clean
> -
> -gettext-dirclean:
> -	rm -rf $(GETTEXT_DIR)
> -
> -#############################################################
> -#
> -# gettext on the target
> -#
> -#############################################################
> -
> -gettext-target: $(GETTEXT_DIR)/$(GETTEXT_BINARY)
> -	$(MAKE) DESTDIR=$(TARGET_DIR) -C $(GETTEXT_DIR) install
> -	chmod +x $(TARGET_DIR)/usr/lib/libintl.so* # identify as needing to be stripped
> -
> -$(TARGET_DIR)/usr/lib/libintl.so: $(STAGING_DIR)/$(GETTEXT_TARGET_BINARY)
> -	cp -dpf $(STAGING_DIR)/usr/lib/libgettext*.so* \
> -		$(STAGING_DIR)/usr/lib/libintl*.so* $(TARGET_DIR)/usr/lib/
> -	$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libgettext*.so*
> -	$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libintl*.so*
> -	rm -f $(addprefix $(TARGET_DIR)/usr/lib/, \
> -		libgettext*.so*.la libintl*.so*.la)
> -	touch -c $@
> -
> -$(TARGET_DIR)/usr/lib/libintl.a: $(STAGING_DIR)/$(GETTEXT_TARGET_BINARY)
> -	cp -dpf $(STAGING_DIR)/usr/lib/libgettext*.a $(TARGET_DIR)/usr/lib/
> -	cp -dpf $(STAGING_DIR)/usr/lib/libintl*.a $(TARGET_DIR)/usr/lib/
> -	touch -c $@
> -
> -libintl: $(TARGET_DIR)/$(LIBINTL_TARGET_BINARY)
> -
> -#############################################################
> -#
> -# Toplevel Makefile options
> -#
> -#############################################################
>  ifeq ($(BR2_PACKAGE_LIBINTL),y)
> -TARGETS+=libintl
> -endif
> -ifeq ($(BR2_PACKAGE_GETTEXT),y)
> -TARGETS+=gettext
> +	GETTEXT_POST_INSTALL_TARGET_HOOKS += GETTEXT_REMOVE_BINARIES
>  endif
> +
> +$(eval $(call AUTOTARGETS))
> diff --git a/package/gettext/libdir-la.patch b/package/gettext/libdir-la.patch
> deleted file mode 100644
> index d5076c1..0000000
> --- a/package/gettext/libdir-la.patch
> +++ /dev/null
> @@ -1,154 +0,0 @@
> ---- gettext-0.14.6/autoconf-lib-link/build-aux/ltmain.sh.orig	2007-01-13 14:33:23.000000000 -0700
> -+++ gettext-0.14.6/autoconf-lib-link/build-aux/ltmain.sh	2007-01-13 14:35:10.000000000 -0700
> -@@ -234,8 +234,9 @@
> - 	# line option must be used.
> - 	if test -z "$tagname"; then
> - 	  $echo "$modename: unable to infer tagged configuration"
> --	  $echo "$modename: specify a tag with \`--tag'" 1>&2
> --	  exit $EXIT_FAILURE
> -+	  $echo "$modename: defaulting to \`CC'"
> -+	  $echo "$modename: if this is not correct, specify a tag with \`--tag'"
> -+#	  exit $EXIT_FAILURE
> - #        else
> - #          $echo "$modename: using $tagname tagged configuration"
> - 	fi
> -@@ -2324,8 +2325,14 @@
> - 	    absdir="$abs_ladir"
> - 	    libdir="$abs_ladir"
> - 	  else
> --	    dir="$libdir"
> --	    absdir="$libdir"
> -+            # Adding 'libdir' from the .la file to our library search paths
> -+            # breaks crosscompilation horribly.  We cheat here and don't add
> -+            # it, instead adding the path where we found the .la.  -CL
> -+	    dir="$abs_ladir"
> -+	    absdir="$abs_ladir"
> -+	    libdir="$abs_ladir"
> -+	    #dir="$libdir"
> -+	    #absdir="$libdir"
> - 	  fi
> - 	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
> - 	else
> -@@ -2800,6 +2807,16 @@
> - 		esac
> - 		if grep "^installed=no" $deplib > /dev/null; then
> - 		  path="$absdir/$objdir"
> -+#		This interferes with crosscompilation. -CL
> -+#		else
> -+#		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
> -+#		  if test -z "$libdir"; then
> -+#		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
> -+#		    exit 1
> -+#		  fi
> -+#		  if test "$absdir" != "$libdir"; then
> -+#		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
> -+#		  fi
> - 		else
> - 		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
> - 		  if test -z "$libdir"; then
> -@@ -5210,6 +5227,10 @@
> - 	    # Replace all uninstalled libtool libraries with the installed ones
> - 	    newdependency_libs=
> - 	    for deplib in $dependency_libs; do
> -+              # Replacing uninstalled with installed can easily break crosscompilation,
> -+              # since the installed path is generally the wrong architecture.  -CL
> -+              newdependency_libs="$newdependency_libs $deplib"
> -+              continue
> - 	      case $deplib in
> - 	      *.la)
> - 		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
> -@@ -5528,10 +5549,13 @@
> - 	  # At present, this check doesn't affect windows .dll's that
> - 	  # are installed into $libdir/../bin (currently, that works fine)
> - 	  # but it's something to keep an eye on.
> --	  if test "$inst_prefix_dir" = "$destdir"; then
> --	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
> --	    exit $EXIT_FAILURE
> --	  fi
> -+	  #
> -+	  # This breaks install into our staging area.  -PB
> -+	  # 
> -+	  # if test "$inst_prefix_dir" = "$destdir"; then
> -+	  #   $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
> -+	  #   exit $EXIT_FAILURE
> -+	  # fi
> - 
> - 	  if test -n "$inst_prefix_dir"; then
> - 	    # Stick the inst_prefix_dir data into the link command.
> ---- gettext-0.14.6/build-aux/ltmain.sh.orig	2005-05-20 15:03:38.000000000 -0600
> -+++ gettext-0.14.6/build-aux/ltmain.sh	2007-01-13 14:34:27.000000000 -0700
> -@@ -234,8 +234,9 @@
> - 	# line option must be used.
> - 	if test -z "$tagname"; then
> - 	  $echo "$modename: unable to infer tagged configuration"
> --	  $echo "$modename: specify a tag with \`--tag'" 1>&2
> --	  exit $EXIT_FAILURE
> -+	  $echo "$modename: defaulting to \`CC'"
> -+	  $echo "$modename: if this is not correct, specify a tag with \`--tag'"
> -+#	  exit $EXIT_FAILURE
> - #        else
> - #          $echo "$modename: using $tagname tagged configuration"
> - 	fi
> -@@ -2324,8 +2325,14 @@
> - 	    absdir="$abs_ladir"
> - 	    libdir="$abs_ladir"
> - 	  else
> --	    dir="$libdir"
> --	    absdir="$libdir"
> -+            # Adding 'libdir' from the .la file to our library search paths
> -+            # breaks crosscompilation horribly.  We cheat here and don't add
> -+            # it, instead adding the path where we found the .la.  -CL
> -+	    dir="$abs_ladir"
> -+	    absdir="$abs_ladir"
> -+	    libdir="$abs_ladir"
> -+	    #dir="$libdir"
> -+	    #absdir="$libdir"
> - 	  fi
> - 	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
> - 	else
> -@@ -2800,6 +2807,16 @@
> - 		esac
> - 		if grep "^installed=no" $deplib > /dev/null; then
> - 		  path="$absdir/$objdir"
> -+#		This interferes with crosscompilation. -CL
> -+#		else
> -+#		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
> -+#		  if test -z "$libdir"; then
> -+#		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
> -+#		    exit 1
> -+#		  fi
> -+#		  if test "$absdir" != "$libdir"; then
> -+#		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
> -+#		  fi
> - 		else
> - 		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
> - 		  if test -z "$libdir"; then
> -@@ -5210,6 +5227,10 @@
> - 	    # Replace all uninstalled libtool libraries with the installed ones
> - 	    newdependency_libs=
> - 	    for deplib in $dependency_libs; do
> -+              # Replacing uninstalled with installed can easily break crosscompilation,
> -+              # since the installed path is generally the wrong architecture.  -CL
> -+              newdependency_libs="$newdependency_libs $deplib"
> -+              continue
> - 	      case $deplib in
> - 	      *.la)
> - 		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
> -@@ -5528,10 +5549,13 @@
> - 	  # At present, this check doesn't affect windows .dll's that
> - 	  # are installed into $libdir/../bin (currently, that works fine)
> - 	  # but it's something to keep an eye on.
> --	  if test "$inst_prefix_dir" = "$destdir"; then
> --	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
> --	    exit $EXIT_FAILURE
> --	  fi
> -+	  #
> -+	  # This breaks install into our staging area.  -PB
> -+	  # 
> -+	  # if test "$inst_prefix_dir" = "$destdir"; then
> -+	  #   $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
> -+	  #   exit $EXIT_FAILURE
> -+	  # fi
> - 
> - 	  if test -n "$inst_prefix_dir"; then
> - 	    # Stick the inst_prefix_dir data into the link command.

Patch

diff --git a/package/gettext/Config.in b/package/gettext/Config.in
index fabfe1e..0ee4065 100644
--- a/package/gettext/Config.in
+++ b/package/gettext/Config.in
@@ -12,18 +12,6 @@  config BR2_PACKAGE_GETTEXT
 comment "gettext requires a toolchain with WCHAR support"
 	depends on BR2_NEEDS_GETTEXT && !BR2_USE_WCHAR
 
-config BR2_PACKAGE_GETTEXT_STATIC
-	bool "Use libgettext.a instead of libgettext.so.*"
-	depends on BR2_PACKAGE_GETTEXT
-	depends on BR2_arm
-	help
-	  The GNU `gettext' utilities are a set of tools that provide a
-	  framework to help other GNU packages produce multi-lingual
-	  messages.
-
-	  http://www.gnu.org/software/gettext/
-
-
 config BR2_PACKAGE_LIBINTL
 	bool "libintl"
 	depends on BR2_NEEDS_GETTEXT
diff --git a/package/gettext/gettext.mk b/package/gettext/gettext.mk
index f3605da..7c7b26c 100644
--- a/package/gettext/gettext.mk
+++ b/package/gettext/gettext.mk
@@ -3,162 +3,22 @@ 
 # gettext
 #
 #############################################################
-GETTEXT_VERSION:=0.16.1
-GETTEXT_SOURCE:=gettext-$(GETTEXT_VERSION).tar.gz
-GETTEXT_SITE:=$(BR2_GNU_MIRROR)/gettext
-GETTEXT_DIR:=$(BUILD_DIR)/gettext-$(GETTEXT_VERSION)
-GETTEXT_CAT:=$(ZCAT)
-GETTEXT_BINARY:=gettext-runtime/src/gettext
-GETTEXT_TARGET_BINARY:=usr/bin/gettext
+GETTEXT_VERSION = 0.16.1
+GETTEXT_SITE = $(BR2_GNU_MIRROR)/gettext
+GETTEXT_INSTALL_STAGING = YES
 
-ifeq ($(BR2_PACKAGE_GETTEXT_STATIC),y)
-LIBINTL_TARGET_BINARY:=usr/lib/libintl.a
-else
-LIBINTL_TARGET_BINARY:=usr/lib/libintl.so
-endif
-
-$(DL_DIR)/$(GETTEXT_SOURCE):
-	 $(call DOWNLOAD,$(GETTEXT_SITE)/$(GETTEXT_SOURCE))
-
-gettext-source: $(DL_DIR)/$(GETTEXT_SOURCE)
-
-$(GETTEXT_DIR)/.unpacked: $(DL_DIR)/$(GETTEXT_SOURCE)
-	$(GETTEXT_CAT) $(DL_DIR)/$(GETTEXT_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
-	support/scripts/apply-patches.sh $(GETTEXT_DIR) package/gettext/ gettext\*.patch
-	$(call CONFIG_UPDATE,$(@D))
-	touch $@
-
-ifneq ($(BR2_TOOLCHAIN_BUILDROOT),y)
-IGNORE_EXTERNAL_GETTEXT:=--with-included-gettext
-endif
-
-$(GETTEXT_DIR)/.configured: $(GETTEXT_DIR)/.unpacked
-	(cd $(GETTEXT_DIR); rm -rf config.cache; \
-		$(TARGET_CONFIGURE_OPTS) \
-		$(TARGET_CONFIGURE_ARGS) \
-		ac_cv_func_strtod=yes \
-		ac_fsusage_space=yes \
-		fu_cv_sys_stat_statfs2_bsize=yes \
-		ac_cv_func_closedir_void=no \
-		ac_cv_func_getloadavg=no \
-		ac_cv_lib_util_getloadavg=no \
-		ac_cv_lib_getloadavg_getloadavg=no \
-		ac_cv_func_getgroups=yes \
-		ac_cv_func_getgroups_works=yes \
-		ac_cv_func_chown_works=yes \
-		ac_cv_have_decl_euidaccess=no \
-		ac_cv_func_euidaccess=no \
-		ac_cv_have_decl_strnlen=yes \
-		ac_cv_func_strnlen_working=yes \
-		ac_cv_func_lstat_dereferences_slashed_symlink=yes \
-		ac_cv_func_lstat_empty_string_bug=no \
-		ac_cv_func_stat_empty_string_bug=no \
-		vb_cv_func_rename_trailing_slash_bug=no \
-		ac_cv_have_decl_nanosleep=yes \
-		jm_cv_func_nanosleep_works=yes \
-		gl_cv_func_working_utimes=yes \
-		ac_cv_func_utime_null=yes \
-		ac_cv_have_decl_strerror_r=yes \
-		ac_cv_func_strerror_r_char_p=no \
-		jm_cv_func_svid_putenv=yes \
-		ac_cv_func_getcwd_null=yes \
-		ac_cv_func_getdelim=yes \
-		ac_cv_func_mkstemp=yes \
-		utils_cv_func_mkstemp_limitations=no \
-		utils_cv_func_mkdir_trailing_slash_bug=no \
-		jm_cv_func_gettimeofday_clobber=no \
-		gl_cv_func_working_readdir=yes \
-		jm_ac_cv_func_link_follows_symlink=no \
-		utils_cv_localtime_cache=no \
-		ac_cv_struct_st_mtim_nsec=no \
-		gl_cv_func_tzset_clobber=no \
-		gl_cv_func_getcwd_null=yes \
-		gl_cv_func_getcwd_path_max=yes \
-		ac_cv_func_fnmatch_gnu=yes \
-		am_getline_needs_run_time_check=no \
-		am_cv_func_working_getline=yes \
-		gl_cv_func_mkdir_trailing_slash_bug=no \
-		gl_cv_func_mkstemp_limitations=no \
-		ac_cv_func_working_mktime=yes \
-		jm_cv_func_working_re_compile_pattern=yes \
-		ac_use_included_regex=no \
-		gl_cv_c_restrict=no \
-		./configure $(QUIET) \
-		--target=$(GNU_TARGET_NAME) \
-		--host=$(GNU_TARGET_NAME) \
-		--build=$(GNU_HOST_NAME) \
-		--prefix=/usr \
-		--exec-prefix=/usr \
-		--disable-libasprintf \
-		--enable-shared \
-		$(IGNORE_EXTERNAL_GETTEXT) \
-		--disable-openmp \
-	)
-	touch $@
+GETTEXT_CONF_OPT += \
+	--disable-libasprintf \
+	--disable-openmp \
 
-$(GETTEXT_DIR)/$(GETTEXT_BINARY): $(GETTEXT_DIR)/.configured
-	$(MAKE) -C $(GETTEXT_DIR)
-	touch -c $(GETTEXT_DIR)/$(GETTEXT_BINARY)
+define GETTEXT_REMOVE_BINARIES
+	rm -f $(TARGET_DIR)/usr/bin/gettext
+	rm -f $(TARGET_DIR)/usr/bin/gettext.sh
+	rm -f $(TARGET_DIR)/usr/bin/gettextize
+endef
 
-$(STAGING_DIR)/$(GETTEXT_TARGET_BINARY): $(GETTEXT_DIR)/$(GETTEXT_BINARY)
-	$(MAKE) DESTDIR=$(STAGING_DIR) -C $(GETTEXT_DIR) install
-	$(SED) 's,/lib/,$(STAGING_DIR)/usr/lib/,g' $(STAGING_DIR)/usr/lib/libgettextlib.la
-	$(SED) 's,/lib/,$(STAGING_DIR)/usr/lib/,g' $(STAGING_DIR)/usr/lib/libgettextpo.la
-	$(SED) 's,/lib/,$(STAGING_DIR)/usr/lib/,g' $(STAGING_DIR)/usr/lib/libgettextsrc.la
-	$(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/lib/libgettextlib.la
-	$(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/lib/libgettextpo.la
-	$(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/lib/libgettextsrc.la
-	$(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/lib/libintl.la
-	rm -f $(addprefix $(STAGING_DIR)/usr/bin/, \
-		autopoint envsubst gettext.sh gettextize msg* ?gettext)
-	touch -c $@
-
-gettext: host-pkg-config $(if $(BR2_PACKAGE_LIBICONV),libiconv) $(STAGING_DIR)/$(GETTEXT_TARGET_BINARY)
-
-gettext-unpacked: $(GETTEXT_DIR)/.unpacked
-
-gettext-clean:
-	-$(MAKE) DESTDIR=$(STAGING_DIR) CC="$(TARGET_CC)" -C $(GETTEXT_DIR) uninstall
-	-$(MAKE) DESTDIR=$(TARGET_DIR) CC="$(TARGET_CC)" -C $(GETTEXT_DIR) uninstall
-	-$(MAKE) -C $(GETTEXT_DIR) clean
-
-gettext-dirclean:
-	rm -rf $(GETTEXT_DIR)
-
-#############################################################
-#
-# gettext on the target
-#
-#############################################################
-
-gettext-target: $(GETTEXT_DIR)/$(GETTEXT_BINARY)
-	$(MAKE) DESTDIR=$(TARGET_DIR) -C $(GETTEXT_DIR) install
-	chmod +x $(TARGET_DIR)/usr/lib/libintl.so* # identify as needing to be stripped
-
-$(TARGET_DIR)/usr/lib/libintl.so: $(STAGING_DIR)/$(GETTEXT_TARGET_BINARY)
-	cp -dpf $(STAGING_DIR)/usr/lib/libgettext*.so* \
-		$(STAGING_DIR)/usr/lib/libintl*.so* $(TARGET_DIR)/usr/lib/
-	$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libgettext*.so*
-	$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libintl*.so*
-	rm -f $(addprefix $(TARGET_DIR)/usr/lib/, \
-		libgettext*.so*.la libintl*.so*.la)
-	touch -c $@
-
-$(TARGET_DIR)/usr/lib/libintl.a: $(STAGING_DIR)/$(GETTEXT_TARGET_BINARY)
-	cp -dpf $(STAGING_DIR)/usr/lib/libgettext*.a $(TARGET_DIR)/usr/lib/
-	cp -dpf $(STAGING_DIR)/usr/lib/libintl*.a $(TARGET_DIR)/usr/lib/
-	touch -c $@
-
-libintl: $(TARGET_DIR)/$(LIBINTL_TARGET_BINARY)
-
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
 ifeq ($(BR2_PACKAGE_LIBINTL),y)
-TARGETS+=libintl
-endif
-ifeq ($(BR2_PACKAGE_GETTEXT),y)
-TARGETS+=gettext
+	GETTEXT_POST_INSTALL_TARGET_HOOKS += GETTEXT_REMOVE_BINARIES
 endif
+
+$(eval $(call AUTOTARGETS))
diff --git a/package/gettext/libdir-la.patch b/package/gettext/libdir-la.patch
deleted file mode 100644
index d5076c1..0000000
--- a/package/gettext/libdir-la.patch
+++ /dev/null
@@ -1,154 +0,0 @@ 
---- gettext-0.14.6/autoconf-lib-link/build-aux/ltmain.sh.orig	2007-01-13 14:33:23.000000000 -0700
-+++ gettext-0.14.6/autoconf-lib-link/build-aux/ltmain.sh	2007-01-13 14:35:10.000000000 -0700
-@@ -234,8 +234,9 @@
- 	# line option must be used.
- 	if test -z "$tagname"; then
- 	  $echo "$modename: unable to infer tagged configuration"
--	  $echo "$modename: specify a tag with \`--tag'" 1>&2
--	  exit $EXIT_FAILURE
-+	  $echo "$modename: defaulting to \`CC'"
-+	  $echo "$modename: if this is not correct, specify a tag with \`--tag'"
-+#	  exit $EXIT_FAILURE
- #        else
- #          $echo "$modename: using $tagname tagged configuration"
- 	fi
-@@ -2324,8 +2325,14 @@
- 	    absdir="$abs_ladir"
- 	    libdir="$abs_ladir"
- 	  else
--	    dir="$libdir"
--	    absdir="$libdir"
-+            # Adding 'libdir' from the .la file to our library search paths
-+            # breaks crosscompilation horribly.  We cheat here and don't add
-+            # it, instead adding the path where we found the .la.  -CL
-+	    dir="$abs_ladir"
-+	    absdir="$abs_ladir"
-+	    libdir="$abs_ladir"
-+	    #dir="$libdir"
-+	    #absdir="$libdir"
- 	  fi
- 	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
- 	else
-@@ -2800,6 +2807,16 @@
- 		esac
- 		if grep "^installed=no" $deplib > /dev/null; then
- 		  path="$absdir/$objdir"
-+#		This interferes with crosscompilation. -CL
-+#		else
-+#		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-+#		  if test -z "$libdir"; then
-+#		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
-+#		    exit 1
-+#		  fi
-+#		  if test "$absdir" != "$libdir"; then
-+#		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
-+#		  fi
- 		else
- 		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
- 		  if test -z "$libdir"; then
-@@ -5210,6 +5227,10 @@
- 	    # Replace all uninstalled libtool libraries with the installed ones
- 	    newdependency_libs=
- 	    for deplib in $dependency_libs; do
-+              # Replacing uninstalled with installed can easily break crosscompilation,
-+              # since the installed path is generally the wrong architecture.  -CL
-+              newdependency_libs="$newdependency_libs $deplib"
-+              continue
- 	      case $deplib in
- 	      *.la)
- 		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
-@@ -5528,10 +5549,13 @@
- 	  # At present, this check doesn't affect windows .dll's that
- 	  # are installed into $libdir/../bin (currently, that works fine)
- 	  # but it's something to keep an eye on.
--	  if test "$inst_prefix_dir" = "$destdir"; then
--	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
--	    exit $EXIT_FAILURE
--	  fi
-+	  #
-+	  # This breaks install into our staging area.  -PB
-+	  # 
-+	  # if test "$inst_prefix_dir" = "$destdir"; then
-+	  #   $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
-+	  #   exit $EXIT_FAILURE
-+	  # fi
- 
- 	  if test -n "$inst_prefix_dir"; then
- 	    # Stick the inst_prefix_dir data into the link command.
---- gettext-0.14.6/build-aux/ltmain.sh.orig	2005-05-20 15:03:38.000000000 -0600
-+++ gettext-0.14.6/build-aux/ltmain.sh	2007-01-13 14:34:27.000000000 -0700
-@@ -234,8 +234,9 @@
- 	# line option must be used.
- 	if test -z "$tagname"; then
- 	  $echo "$modename: unable to infer tagged configuration"
--	  $echo "$modename: specify a tag with \`--tag'" 1>&2
--	  exit $EXIT_FAILURE
-+	  $echo "$modename: defaulting to \`CC'"
-+	  $echo "$modename: if this is not correct, specify a tag with \`--tag'"
-+#	  exit $EXIT_FAILURE
- #        else
- #          $echo "$modename: using $tagname tagged configuration"
- 	fi
-@@ -2324,8 +2325,14 @@
- 	    absdir="$abs_ladir"
- 	    libdir="$abs_ladir"
- 	  else
--	    dir="$libdir"
--	    absdir="$libdir"
-+            # Adding 'libdir' from the .la file to our library search paths
-+            # breaks crosscompilation horribly.  We cheat here and don't add
-+            # it, instead adding the path where we found the .la.  -CL
-+	    dir="$abs_ladir"
-+	    absdir="$abs_ladir"
-+	    libdir="$abs_ladir"
-+	    #dir="$libdir"
-+	    #absdir="$libdir"
- 	  fi
- 	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
- 	else
-@@ -2800,6 +2807,16 @@
- 		esac
- 		if grep "^installed=no" $deplib > /dev/null; then
- 		  path="$absdir/$objdir"
-+#		This interferes with crosscompilation. -CL
-+#		else
-+#		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-+#		  if test -z "$libdir"; then
-+#		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
-+#		    exit 1
-+#		  fi
-+#		  if test "$absdir" != "$libdir"; then
-+#		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
-+#		  fi
- 		else
- 		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
- 		  if test -z "$libdir"; then
-@@ -5210,6 +5227,10 @@
- 	    # Replace all uninstalled libtool libraries with the installed ones
- 	    newdependency_libs=
- 	    for deplib in $dependency_libs; do
-+              # Replacing uninstalled with installed can easily break crosscompilation,
-+              # since the installed path is generally the wrong architecture.  -CL
-+              newdependency_libs="$newdependency_libs $deplib"
-+              continue
- 	      case $deplib in
- 	      *.la)
- 		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
-@@ -5528,10 +5549,13 @@
- 	  # At present, this check doesn't affect windows .dll's that
- 	  # are installed into $libdir/../bin (currently, that works fine)
- 	  # but it's something to keep an eye on.
--	  if test "$inst_prefix_dir" = "$destdir"; then
--	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
--	    exit $EXIT_FAILURE
--	  fi
-+	  #
-+	  # This breaks install into our staging area.  -PB
-+	  # 
-+	  # if test "$inst_prefix_dir" = "$destdir"; then
-+	  #   $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
-+	  #   exit $EXIT_FAILURE
-+	  # fi
- 
- 	  if test -n "$inst_prefix_dir"; then
- 	    # Stick the inst_prefix_dir data into the link command.