pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

import gettext 1.0



Module Name:	pkgsrc-wip
Committed By:	Adam Ciarciński <adam%defguard.net@localhost>
Pushed By:	adam
Date:		Thu Jul 2 14:42:05 2026 +0200
Changeset:	a29e65449b9c8962e592d7afeff346e869b7e563

Modified Files:
	Makefile
Added Files:
	gettext-asprintf/DESCR
	gettext-asprintf/Makefile
	gettext-asprintf/PLIST
	gettext-asprintf/buildlink3.mk
	gettext-lib/DESCR
	gettext-lib/Makefile
	gettext-lib/PLIST
	gettext-lib/buildlink3.mk
	gettext-lib/builtin.mk
	gettext-lib/distinfo
	gettext-lib/patch-gettext-runtime_intl_configure
	gettext-lib/patch-gettext-runtime_intl_gnulib-lib_localename-unsafe.c
	gettext-lib/patch-gettext-runtime_intl_intl-compat.c
	gettext-lib/patches/patch-gettext-runtime_intl_configure
	gettext-lib/patches/patch-gettext-runtime_intl_gnulib-lib_localename-unsafe.c
	gettext-lib/patches/patch-gettext-runtime_intl_intl-compat.c
	gettext-m4/DESCR
	gettext-m4/Makefile
	gettext-m4/PLIST
	gettext-tools/DESCR
	gettext-tools/Makefile
	gettext-tools/PLIST
	gettext-tools/PLIST.Linux
	gettext-tools/buildlink3.mk
	gettext-tools/msgfmt-desktop.mk
	gettext/DESCR
	gettext/Makefile
	gettext/Makefile.common
	gettext/PLIST
	gettext/distinfo
	gettext/files/libgettext.h
	gettext/patches/patch-Makefile.in
	gettext/patches/patch-gettext-runtime_Makefile.in
	gettext/patches/patch-gettext-runtime_configure
	gettext/patches/patch-gettext-runtime_m4_gettext.m4
	gettext/patches/patch-gettext-tools_Makefile.in
	gettext/patches/patch-gettext-tools_configure
	gettext/patches/patch-gettext-tools_gnulib-lib_Makefile.in
	gettext/patches/patch-gettext-tools_po_Makefile.in.in
	gettext/patches/patch-gettext-tools_tests_Makefile.in

Log Message:
import gettext 1.0

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=a29e65449b9c8962e592d7afeff346e869b7e563

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 Makefile                                           |   5 +
 gettext-asprintf/DESCR                             |   3 +
 gettext-asprintf/Makefile                          |  17 ++
 gettext-asprintf/PLIST                             |   5 +
 gettext-asprintf/buildlink3.mk                     |  12 +
 gettext-lib/DESCR                                  |   4 +
 gettext-lib/Makefile                               |  30 +++
 gettext-lib/PLIST                                  |   3 +
 gettext-lib/buildlink3.mk                          |  63 +++++
 gettext-lib/builtin.mk                             | 141 ++++++++++
 gettext-lib/distinfo                               |   5 +
 gettext-lib/patch-gettext-runtime_intl_configure   |  14 +
 ...ext-runtime_intl_gnulib-lib_localename-unsafe.c |  15 ++
 .../patch-gettext-runtime_intl_intl-compat.c       |  17 ++
 .../patches/patch-gettext-runtime_intl_configure   |  14 +
 ...ext-runtime_intl_gnulib-lib_localename-unsafe.c |  15 ++
 .../patch-gettext-runtime_intl_intl-compat.c       |  17 ++
 gettext-m4/DESCR                                   |   3 +
 gettext-m4/Makefile                                |  39 +++
 gettext-m4/PLIST                                   |  20 ++
 gettext-tools/DESCR                                |   6 +
 gettext-tools/Makefile                             |  76 ++++++
 gettext-tools/PLIST                                | 297 +++++++++++++++++++++
 gettext-tools/PLIST.Linux                          |   2 +
 gettext-tools/buildlink3.mk                        |  14 +
 gettext-tools/msgfmt-desktop.mk                    |  13 +
 gettext/DESCR                                      |   3 +
 gettext/Makefile                                   |  35 +++
 gettext/Makefile.common                            |  39 +++
 gettext/PLIST                                      |  17 ++
 gettext/distinfo                                   |  14 +
 gettext/files/libgettext.h                         |   7 +
 gettext/patches/patch-Makefile.in                  |  13 +
 gettext/patches/patch-gettext-runtime_Makefile.in  |  22 ++
 gettext/patches/patch-gettext-runtime_configure    |  18 ++
 .../patches/patch-gettext-runtime_m4_gettext.m4    |  24 ++
 gettext/patches/patch-gettext-tools_Makefile.in    |  24 ++
 gettext/patches/patch-gettext-tools_configure      |  18 ++
 .../patch-gettext-tools_gnulib-lib_Makefile.in     |  13 +
 .../patches/patch-gettext-tools_po_Makefile.in.in  |  13 +
 .../patches/patch-gettext-tools_tests_Makefile.in  |  17 ++
 41 files changed, 1127 insertions(+)

diffs:
diff --git a/Makefile b/Makefile
index a4575720c7..cffa117a45 100644
--- a/Makefile
+++ b/Makefile
@@ -1278,6 +1278,11 @@ SUBDIR+=	gerris-snapshot
 SUBDIR+=	getdns
 SUBDIR+=	getdp
 SUBDIR+=	getssl
+SUBDIR+=	gettext
+SUBDIR+=	gettext-asprintf
+SUBDIR+=	gettext-lib
+SUBDIR+=	gettext-m4
+SUBDIR+=	gettext-tools
 SUBDIR+=	gf2x
 SUBDIR+=	gfa
 SUBDIR+=	gfan
diff --git a/gettext-asprintf/DESCR b/gettext-asprintf/DESCR
new file mode 100644
index 0000000000..d590df188b
--- /dev/null
+++ b/gettext-asprintf/DESCR
@@ -0,0 +1,3 @@
+This package provides libasprintf from GNU gettext.  This library makes
+it easier deal with formated output in C++ by providing a printf(3) like
+interface.
diff --git a/gettext-asprintf/Makefile b/gettext-asprintf/Makefile
new file mode 100644
index 0000000000..c5cf6ad538
--- /dev/null
+++ b/gettext-asprintf/Makefile
@@ -0,0 +1,17 @@
+# $NetBSD: Makefile,v 1.10 2013/01/31 21:45:04 adam Exp $
+
+.include "../../devel/gettext/Makefile.common"
+
+PKGNAME=	${DISTNAME:S/-/-asprintf-/}
+COMMENT=	Provides a printf-like interface for C++
+
+DISTINFO_FILE=	${.CURDIR}/../../devel/gettext/distinfo
+PATCHDIR=	${.CURDIR}/../../devel/gettext/patches
+
+CONFIGURE_DIRS=		gettext-runtime
+BUILD_DIRS=		gettext-runtime/libasprintf
+
+USE_LANGUAGES=		c c++
+INFO_FILES=		yes
+
+.include "../../mk/bsd.pkg.mk"
diff --git a/gettext-asprintf/PLIST b/gettext-asprintf/PLIST
new file mode 100644
index 0000000000..2ff0bc75fc
--- /dev/null
+++ b/gettext-asprintf/PLIST
@@ -0,0 +1,5 @@
+@comment $NetBSD: PLIST,v 1.3 2011/04/12 17:41:28 adam Exp $
+include/autosprintf.h
+info/autosprintf.info
+lib/libasprintf.la
+share/doc/libasprintf/autosprintf_all.html
diff --git a/gettext-asprintf/buildlink3.mk b/gettext-asprintf/buildlink3.mk
new file mode 100644
index 0000000000..4aff2008cf
--- /dev/null
+++ b/gettext-asprintf/buildlink3.mk
@@ -0,0 +1,12 @@
+# $NetBSD: buildlink3.mk,v 1.7 2018/01/07 13:04:01 rillig Exp $
+
+BUILDLINK_TREE+=	gettext-asprintf
+
+.if !defined(GETTEXT_ASPRINTF_BUILDLINK3_MK)
+GETTEXT_ASPRINTF_BUILDLINK3_MK:=
+
+BUILDLINK_API_DEPENDS.gettext-asprintf+=	gettext-asprintf>=0.18
+BUILDLINK_PKGSRCDIR.gettext-asprintf?=		../../devel/gettext-asprintf
+.endif # GETTEXT_ASPRINTF_BUILDLINK3_MK
+
+BUILDLINK_TREE+=	-gettext-asprintf
diff --git a/gettext-lib/DESCR b/gettext-lib/DESCR
new file mode 100644
index 0000000000..1a0fc7f154
--- /dev/null
+++ b/gettext-lib/DESCR
@@ -0,0 +1,4 @@
+This package provides the static and shared libintl libraries from
+GNU gettext. This Internationalized Message Handling Library provides
+handling messages in different languages, as one of the steps to
+internationalisation (or i18n) of a utility.
diff --git a/gettext-lib/Makefile b/gettext-lib/Makefile
new file mode 100644
index 0000000000..45c400f83f
--- /dev/null
+++ b/gettext-lib/Makefile
@@ -0,0 +1,30 @@
+# $NetBSD: Makefile,v 1.61 2023/11/07 10:51:11 wiz Exp $
+
+.include "../../devel/gettext/Makefile.common"
+
+PKGNAME=	${DISTNAME:S/-/-lib-/}
+COMMENT=	Internationalized Message Handling Library (libintl)
+
+USE_LANGUAGES=		c
+CONFIGURE_ARGS+=	--with-included-gettext
+CONFIGURE_ARGS+=	--disable-csharp
+CONFIGURE_ARGS+=	--disable-c++
+CONFIGURE_ENV+=		PKGLOCALEDIR=${PKGLOCALEDIR}
+MAKE_ENV+=		PKGLOCALEDIR=${PKGLOCALEDIR}
+GNU_CONFIGURE_STRICT=	no # because of gettext-tools/examples
+
+CFLAGS+=		${CFLAGS.${ICONV_TYPE}-iconv}
+CFLAGS.gnu-iconv+=	-DHAVE_GNU_ICONV
+
+INSTALL_MAKE_FLAGS=	${MAKE_FLAGS} localedir=${EGDIR}
+INSTALL_MAKE_FLAGS+=	includedir=${PREFIX}/include/gettext
+
+BUILD_DIRS=		gettext-runtime/intl
+#EGDIR=			${PREFIX}/share/examples/gettext
+#LOCALEDIR=		${PREFIX}/${PKGLOCALEDIR}/locale
+
+#REQD_DIRS+=		${LOCALEDIR}
+#REQD_FILES+=		${EGDIR}/locale.alias ${LOCALEDIR}/locale.alias
+
+.include "../../converters/libiconv/buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/gettext-lib/PLIST b/gettext-lib/PLIST
new file mode 100644
index 0000000000..9a5b9ada03
--- /dev/null
+++ b/gettext-lib/PLIST
@@ -0,0 +1,3 @@
+@comment $NetBSD: PLIST,v 1.6 2012/08/29 09:01:01 sbd Exp $
+include/gettext/libintl.h
+lib/libintl.la
diff --git a/gettext-lib/buildlink3.mk b/gettext-lib/buildlink3.mk
new file mode 100644
index 0000000000..adccb0a083
--- /dev/null
+++ b/gettext-lib/buildlink3.mk
@@ -0,0 +1,63 @@
+# $NetBSD: buildlink3.mk,v 1.44 2023/07/19 03:03:15 mef Exp $
+
+BUILDLINK_TREE+=	gettext
+
+.if !defined(GETTEXT_BUILDLINK3_MK)
+GETTEXT_BUILDLINK3_MK:=
+
+BUILDLINK_API_DEPENDS.gettext+=	gettext-lib>=0.22
+BUILDLINK_ABI_DEPENDS.gettext+=	gettext-lib>=0.22
+BUILDLINK_PKGSRCDIR.gettext?=	../../devel/gettext-lib
+BUILDLINK_LIBNAME.gettext=	intl
+BUILDLINK_LDADD.gettext=	${BUILDLINK_LIBNAME.gettext:S/^/-l/:S/^-l$//}
+BUILDLINK_LDADD.gettext+=	${BUILDLINK_LDADD.iconv}
+
+.include "../../mk/bsd.fast.prefs.mk"
+
+# Some GNU configure scripts generated with an older and broken gettext.m4
+# fail to detect if gettext is present or not because it fails to add
+# "-lintl" to the linker command line.
+#
+# If BROKEN_GETTEXT_DETECTION is "yes", then automatically add "-lintl"
+# to LIBS to workaround this brokenness.
+#
+BROKEN_GETTEXT_DETECTION?=	no
+.if ${BROKEN_GETTEXT_DETECTION:tl} == yes
+BUILDLINK_LIBS.gettext+=	${BUILDLINK_LDADD.gettext}
+CONFIGURE_ENV+=			INTLLIBS="${BUILDLINK_LDADD.gettext}"
+.endif
+
+#
+# Due to Linux shipping libintl in libc, third-party software often forgets to
+# explicitly look for and add -lintl when required.  On systems that use GNU
+# ld this isn't always an issue as it will often be pulled in via an explicit
+# library, but some systems have a stricter linker that will not pull in
+# symbols via implicit dependencies, and so we need to explicitly link here.
+#
+# Ideally this would be done via CWRAPPERS_LDADD to avoid leaking into LDFLAGS
+# but there is no concensus on that yet.
+#
+# USE_EXPLICIT_LIBDEPS is a package-settable variable for rare cases where the
+# libraries need to be pulled in but we do not want to expose them by default.
+#
+.if ${OPSYS_EXPLICIT_LIBDEPS:Uno:tl} == "yes" && ${USE_EXPLICIT_LIBDEPS:Uyes:tl} != "no"
+BUILDLINK_LDFLAGS.gettext+=	${COMPILER_RPATH_FLAG}${BUILDLINK_PREFIX.gettext}/lib
+BUILDLINK_LDFLAGS.gettext+=	${BUILDLINK_LDADD.gettext}
+.endif
+
+CHECK_BUILTIN.gettext:=	yes
+.include "../../devel/gettext-lib/builtin.mk"
+CHECK_BUILTIN.gettext:=	no
+
+# A built-in gettext is always going to use a built-in iconv.
+.if ${USE_BUILTIN.gettext:tl} == yes
+USE_BUILTIN.iconv=			yes
+.else
+#BUILDLINK_INCDIRS.gettext+=		include/gettext
+BUILDLINK_FNAME_TRANSFORM.gettext+=	-e 's|include/gettext/|include/|'
+.endif
+
+.include "../../converters/libiconv/buildlink3.mk"
+.endif # GETTEXT_BUILDLINK3_MK
+
+BUILDLINK_TREE+=	-gettext
diff --git a/gettext-lib/builtin.mk b/gettext-lib/builtin.mk
new file mode 100644
index 0000000000..e757c505e2
--- /dev/null
+++ b/gettext-lib/builtin.mk
@@ -0,0 +1,141 @@
+# $NetBSD: builtin.mk,v 1.50 2023/06/29 08:24:19 adam Exp $
+
+.include "../../mk/bsd.fast.prefs.mk"
+
+BUILTIN_PKG:=	gettext
+
+BUILTIN_FIND_LIBS:=				intl
+BUILTIN_FIND_HEADERS_VAR:=			H_GETTEXT H_GENTOO_GETTEXT \
+						H_NGETTEXT_GETTEXT \
+						H_OPNSVR5_GETTEXT
+BUILTIN_FIND_HEADERS.H_GETTEXT=			libintl.h
+BUILTIN_FIND_GREP.H_GETTEXT=			\#define[ 	]*__USE_GNU_GETTEXT
+BUILTIN_FIND_HEADERS.H_GENTOO_GETTEXT=		libintl.h
+BUILTIN_FIND_GREP.H_GENTOO_GETTEXT=		gentoo-multilib/.*/libintl.h
+BUILTIN_FIND_HEADERS.H_NGETTEXT_GETTEXT=	libintl.h
+BUILTIN_FIND_GREP.H_NGETTEXT_GETTEXT=		char.*ngettext
+BUILTIN_FIND_HEADERS.H_OPNSVR5_GETTEXT=		libintl.h
+BUILTIN_FIND_GREP.H_OPNSVR5_GETTEXT=		libgnuintl.h
+
+.include "../../mk/buildlink3/bsd.builtin.mk"
+
+###
+### Determine if there is a built-in implementation of the package and
+### set IS_BUILTIN.<pkg> appropriately ("yes" or "no").
+###
+#
+# Gentoo Linux has an unusual scheme where /usr/include/libintl.h
+# pulls in gentoo-multilib/$ARCH/libintl.h, where the latter is the
+# real libintl.h file.  We can safely assume that this is GNU gettext
+# (in glibc).
+#
+# SCO OpenServer 5.0.7/3.2 has an unusual scheme where /usr/include/libintl.h
+# pulls in /usr/include/libgnuintl.h, where the latter is the real libintl.h.
+#
+# By default, assume that the native gettext implementation is good
+# enough to replace GNU gettext if it supplies ngettext().
+#
+.if !defined(IS_BUILTIN.gettext)
+IS_BUILTIN.gettext=	no
+.  if (empty(H_GETTEXT:M__nonexistent__) && \
+       empty(H_GETTEXT:M${LOCALBASE}/*)) || \
+      (empty(H_GENTOO_GETTEXT:M__nonexistent__) && \
+       empty(H_GENTOO_GETTEXT:M${LOCALBASE}/*)) || \
+      (empty(H_NGETTEXT_GETTEXT:M__nonexistent__) && \
+       empty(H_NGETTEXT_GETTEXT:M${LOCALBASE}/*)) || \
+      (empty(H_OPNSVR5_GETTEXT:M__nonexistent__) && \
+       empty(H_OPNSVR5_GETTEXT:M${LOCALBASE}/*))
+IS_BUILTIN.gettext=	yes
+.  endif
+.endif
+MAKEVARS+=		IS_BUILTIN.gettext
+
+###
+### Determine whether we should use the built-in implementation if it
+### exists, and set USE_BUILTIN.<pkg> appropriate ("yes" or "no").
+###
+.if !defined(USE_BUILTIN.gettext)
+.  if ${PREFER.gettext} == "pkgsrc"
+USE_BUILTIN.gettext=	no
+.  else
+USE_BUILTIN.gettext=	${IS_BUILTIN.gettext}
+.    if defined(BUILTIN_PKG.gettext) && \
+	${IS_BUILTIN.gettext:tl} == yes
+USE_BUILTIN.gettext=	yes
+.      for _dep_ in ${BUILDLINK_API_DEPENDS.gettext}
+.        if ${USE_BUILTIN.gettext:tl} == yes
+USE_BUILTIN.gettext!=							\
+	if ${PKG_ADMIN} pmatch ${_dep_:Q} ${BUILTIN_PKG.gettext}; then	\
+		${ECHO} yes;						\
+	else								\
+		${ECHO} no;						\
+	fi
+.        endif
+.      endfor
+.    endif
+#
+#
+# Some platforms don't have a gettext implementation that can replace
+# GNU gettext.
+#
+_INCOMPAT_GETTEXT?=	SunOS-*-*	# XXX move to mk/platforms/SunOS.mk
+.    for _pattern_ in ${_INCOMPAT_GETTEXT} ${INCOMPAT_GETTEXT}
+.      if !empty(MACHINE_PLATFORM:M${_pattern_})
+USE_BUILTIN.gettext=	no
+.      endif
+.    endfor
+.  endif  # PREFER.gettext
+.endif
+MAKEVARS+=		USE_BUILTIN.gettext
+
+# Define BUILTIN_LIBNAME.gettext to be the base name of the built-in
+# gettext library.
+#
+.if ${BUILTIN_LIB_FOUND.intl:U:tl} == yes
+BUILTIN_LIBNAME.gettext=	intl
+.else
+BUILTIN_LIBNAME.gettext=	# empty (part of the C library)
+.endif
+
+###
+### The section below only applies if we are not including this file
+### solely to determine whether a built-in implementation exists.
+###
+CHECK_BUILTIN.gettext?=	no
+.if ${CHECK_BUILTIN.gettext:tl} == no
+
+.  if ${USE_BUILTIN.gettext:tl} == yes
+BUILDLINK_LIBNAME.gettext=	${BUILTIN_LIBNAME.gettext}
+.    if ${OS_VARIANT} == SCOOSR5
+BUILDLINK_PREFIX.gettext=	/usr/gnu
+.    endif
+.    if empty(BUILTIN_LIBNAME.gettext)
+BUILDLINK_TRANSFORM+=		rm:-lintl
+.    endif
+.  endif
+
+# If using a built-in libintl that isn't from GNU gettext, then set up
+# some GNU configure variables that are checked by modern gettext.m4
+# so that it will detect "GNU gettext" in the existing libintl.
+#
+.  if defined(GNU_CONFIGURE)
+.    if ${USE_BUILTIN.gettext:tl} == yes
+.      if ${BUILTIN_LIB_FOUND.intl:U:tl} == yes
+CONFIGURE_ENV+=		gt_cv_func_gnugettext_libintl="yes"
+CONFIGURE_ENV+=		gt_cv_func_gnugettext1_libintl="yes"
+.        if empty(H_NGETTEXT_GETTEXT:M__nonexistent__) && \
+	    empty(H_NGETTEXT_GETTEXT:M${LOCALBASE}/*)
+CONFIGURE_ENV+=		gt_cv_func_gnugettext2_libintl="yes"
+.        endif
+.      else
+CONFIGURE_ENV+=		gt_cv_func_gnugettext_libc="yes"
+CONFIGURE_ENV+=		gt_cv_func_gnugettext1_libc="yes"
+.        if empty(H_NGETTEXT_GETTEXT:M__nonexistent__) && \
+	    empty(H_NGETTEXT_GETTEXT:M${LOCALBASE}/*)
+CONFIGURE_ENV+=		gt_cv_func_gnugettext2_libc="yes"
+.        endif
+.      endif
+.    endif
+.  endif
+
+.endif	# CHECK_BUILTIN.gettext
diff --git a/gettext-lib/distinfo b/gettext-lib/distinfo
new file mode 100644
index 0000000000..2f2ddab99b
--- /dev/null
+++ b/gettext-lib/distinfo
@@ -0,0 +1,5 @@
+$NetBSD: distinfo,v 1.46 2026/04/09 08:48:44 jperkin Exp $
+
+BLAKE2s (gettext-1.0.tar.gz) = 9277ec2cb3676b657eb719c952d0b2481dd0991aa3253eac350db9c2d2575cb5
+SHA512 (gettext-1.0.tar.gz) = 664c3b1985cb7d1e7ed443e036a6c7f8c1f47354720d13c2db2c2cf8a85136d0ffc2cc920dce1240d688f706653f647749ce29f69eb0bb659e043b499f9c47eb
+Size (gettext-1.0.tar.gz) = 32694085 bytes
diff --git a/gettext-lib/patch-gettext-runtime_intl_configure b/gettext-lib/patch-gettext-runtime_intl_configure
new file mode 100644
index 0000000000..374bd9ebd1
--- /dev/null
+++ b/gettext-lib/patch-gettext-runtime_intl_configure
@@ -0,0 +1,14 @@
+$NetBSD: patch-gettext-runtime_intl_configure,v 1.1 2023/06/29 08:24:19 adam Exp $
+
+Do not force relocatable.
+
+--- gettext-runtime/intl/configure.orig	2023-06-29 07:43:54.000000000 +0000
++++ gettext-runtime/intl/configure
+@@ -6695,7 +6695,6 @@ fi
+ 
+ 
+ 
+-enable_relocatable=yes
+ 
+ ac_header= ac_cache=
+ for ac_item in $ac_header_c_list
diff --git a/gettext-lib/patch-gettext-runtime_intl_gnulib-lib_localename-unsafe.c b/gettext-lib/patch-gettext-runtime_intl_gnulib-lib_localename-unsafe.c
new file mode 100644
index 0000000000..1dec643a5b
--- /dev/null
+++ b/gettext-lib/patch-gettext-runtime_intl_gnulib-lib_localename-unsafe.c
@@ -0,0 +1,15 @@
+$NetBSD: patch-gettext-runtime_intl_gnulib-lib_localename-unsafe.c,v 1.1 2026/04/09 08:48:44 jperkin Exp $
+
+Remove bogus forward declaration.
+
+--- gettext-runtime/intl/gnulib-lib/localename-unsafe.c.orig	2026-04-09 08:13:35.749112469 +0000
++++ gettext-runtime/intl/gnulib-lib/localename-unsafe.c
+@@ -47,8 +47,6 @@
+ # endif
+ # if defined __sun
+ #  if HAVE_GETLOCALENAME_L
+-/* Solaris >= 12.  */
+-extern char * getlocalename_l(int, locale_t);
+ #  elif HAVE_SOLARIS114_LOCALES
+ #   include <sys/localedef.h>
+ #  endif
diff --git a/gettext-lib/patch-gettext-runtime_intl_intl-compat.c b/gettext-lib/patch-gettext-runtime_intl_intl-compat.c
new file mode 100644
index 0000000000..737984f941
--- /dev/null
+++ b/gettext-lib/patch-gettext-runtime_intl_intl-compat.c
@@ -0,0 +1,17 @@
+$NetBSD: patch-gettext-runtime_intl_intl-compat.c,v 1.2 2023/11/07 10:51:11 wiz Exp $
+
+Make sure bindtextdomain(3) is visible on macOS, as it cannot be exported otherwise:
+
+ld: warning: cannot export hidden symbol _bindtextdomain from .libs/intl-compat.o
+
+--- gettext-runtime/intl/intl-compat.c.orig	2023-09-19 20:11:19.000000000 +0000
++++ gettext-runtime/intl/intl-compat.c
+@@ -54,7 +54,7 @@
+ /* When building a DLL, we must export some functions.  Note that because
+    the functions are only defined for binary backward compatibility, we
+    don't need to use __declspec(dllimport) in any case.  */
+-#if HAVE_VISIBILITY && BUILDING_DLL
++#if HAVE_VISIBILITY && BUILDING_DLL || defined(__APPLE__)
+ # define DLL_EXPORTED __attribute__((__visibility__("default")))
+ #elif defined _MSC_VER && BUILDING_DLL
+ /* When building with MSVC, exporting a symbol means that the object file
diff --git a/gettext-lib/patches/patch-gettext-runtime_intl_configure b/gettext-lib/patches/patch-gettext-runtime_intl_configure
new file mode 100644
index 0000000000..374bd9ebd1
--- /dev/null
+++ b/gettext-lib/patches/patch-gettext-runtime_intl_configure
@@ -0,0 +1,14 @@
+$NetBSD: patch-gettext-runtime_intl_configure,v 1.1 2023/06/29 08:24:19 adam Exp $
+
+Do not force relocatable.
+
+--- gettext-runtime/intl/configure.orig	2023-06-29 07:43:54.000000000 +0000
++++ gettext-runtime/intl/configure
+@@ -6695,7 +6695,6 @@ fi
+ 
+ 
+ 
+-enable_relocatable=yes
+ 
+ ac_header= ac_cache=
+ for ac_item in $ac_header_c_list
diff --git a/gettext-lib/patches/patch-gettext-runtime_intl_gnulib-lib_localename-unsafe.c b/gettext-lib/patches/patch-gettext-runtime_intl_gnulib-lib_localename-unsafe.c
new file mode 100644
index 0000000000..1dec643a5b
--- /dev/null
+++ b/gettext-lib/patches/patch-gettext-runtime_intl_gnulib-lib_localename-unsafe.c
@@ -0,0 +1,15 @@
+$NetBSD: patch-gettext-runtime_intl_gnulib-lib_localename-unsafe.c,v 1.1 2026/04/09 08:48:44 jperkin Exp $
+
+Remove bogus forward declaration.
+
+--- gettext-runtime/intl/gnulib-lib/localename-unsafe.c.orig	2026-04-09 08:13:35.749112469 +0000
++++ gettext-runtime/intl/gnulib-lib/localename-unsafe.c
+@@ -47,8 +47,6 @@
+ # endif
+ # if defined __sun
+ #  if HAVE_GETLOCALENAME_L
+-/* Solaris >= 12.  */
+-extern char * getlocalename_l(int, locale_t);
+ #  elif HAVE_SOLARIS114_LOCALES
+ #   include <sys/localedef.h>
+ #  endif
diff --git a/gettext-lib/patches/patch-gettext-runtime_intl_intl-compat.c b/gettext-lib/patches/patch-gettext-runtime_intl_intl-compat.c
new file mode 100644
index 0000000000..737984f941
--- /dev/null
+++ b/gettext-lib/patches/patch-gettext-runtime_intl_intl-compat.c
@@ -0,0 +1,17 @@
+$NetBSD: patch-gettext-runtime_intl_intl-compat.c,v 1.2 2023/11/07 10:51:11 wiz Exp $
+
+Make sure bindtextdomain(3) is visible on macOS, as it cannot be exported otherwise:
+
+ld: warning: cannot export hidden symbol _bindtextdomain from .libs/intl-compat.o
+
+--- gettext-runtime/intl/intl-compat.c.orig	2023-09-19 20:11:19.000000000 +0000
++++ gettext-runtime/intl/intl-compat.c
+@@ -54,7 +54,7 @@
+ /* When building a DLL, we must export some functions.  Note that because
+    the functions are only defined for binary backward compatibility, we
+    don't need to use __declspec(dllimport) in any case.  */
+-#if HAVE_VISIBILITY && BUILDING_DLL
++#if HAVE_VISIBILITY && BUILDING_DLL || defined(__APPLE__)
+ # define DLL_EXPORTED __attribute__((__visibility__("default")))
+ #elif defined _MSC_VER && BUILDING_DLL
+ /* When building with MSVC, exporting a symbol means that the object file
diff --git a/gettext-m4/DESCR b/gettext-m4/DESCR
new file mode 100644
index 0000000000..1b8854e9ee
--- /dev/null
+++ b/gettext-m4/DESCR
@@ -0,0 +1,3 @@
+GNU gettext provides the necessary tools and libraries for handling
+messages in different languages, as one of the steps to
+internationalisation (or i18n) of a utility.
diff --git a/gettext-m4/Makefile b/gettext-m4/Makefile
new file mode 100644
index 0000000000..00b876b897
--- /dev/null
+++ b/gettext-m4/Makefile
@@ -0,0 +1,39 @@
+# $NetBSD: Makefile,v 1.27 2020/04/20 08:37:14 wiz Exp $
+
+.include "../../devel/gettext/Makefile.common"
+
+PKGNAME=	${DISTNAME:S/-/-m4-/}
+COMMENT=	Autoconf/automake m4 files for GNU NLS library
+LICENSE=	gnu-gpl-v2
+
+DISTINFO_FILE=	${.CURDIR}/../../devel/gettext/distinfo
+PATCHDIR=	${.CURDIR}/../../devel/gettext/patches
+
+NO_BUILD=		yes
+NO_CONFIGURE=		yes
+
+INSTALLATION_DIRS+=	share/aclocal
+
+GNULIB_M4_FILES=		\
+	codeset.m4		\
+	extern-inline.m4	\
+	host-cpu-c-abi.m4	\
+	lcmessage.m4		\
+	lib-ld.m4		\
+	lib-link.m4		\
+	lib-prefix.m4		\
+	lock.m4			\
+	threadlib.m4		\
+	wint_t.m4
+
+do-install:
+	${INSTALL_DATA} ${WRKSRC}/gettext-runtime/m4/*.m4 \
+		${DESTDIR}${PREFIX}/share/aclocal
+	${INSTALL_DATA} ${WRKSRC}/gettext-tools/m4/*.m4 \
+		${DESTDIR}${PREFIX}/share/aclocal
+.for i in ${GNULIB_M4_FILES}
+	${INSTALL_DATA} ${WRKSRC}/gettext-tools/gnulib-m4/${i} \
+	    ${DESTDIR}${PREFIX}/share/aclocal
+.endfor
+
+.include "../../mk/bsd.pkg.mk"
diff --git a/gettext-m4/PLIST b/gettext-m4/PLIST
new file mode 100644
index 0000000000..641669112c
--- /dev/null
+++ b/gettext-m4/PLIST
@@ -0,0 +1,20 @@
+@comment $NetBSD: PLIST,v 1.14 2023/06/28 21:14:11 wiz Exp $
+share/aclocal/build-to-host.m4
+share/aclocal/codeset.m4
+share/aclocal/exported.m4
+share/aclocal/extern-inline.m4
+share/aclocal/gettext.m4
+share/aclocal/glibc2.m4
+share/aclocal/host-cpu-c-abi.m4
+share/aclocal/hostname.m4
+share/aclocal/lcmessage.m4
+share/aclocal/lib-ld.m4
+share/aclocal/lib-link.m4
+share/aclocal/lib-prefix.m4
+share/aclocal/locale-de.m4
+share/aclocal/lock.m4
+share/aclocal/nls.m4
+share/aclocal/po.m4
+share/aclocal/progtest.m4
+share/aclocal/threadlib.m4
+share/aclocal/wint_t.m4
diff --git a/gettext-tools/DESCR b/gettext-tools/DESCR
new file mode 100644
index 0000000000..c577b265e2
--- /dev/null
+++ b/gettext-tools/DESCR
@@ -0,0 +1,6 @@
+GNU gettext provides the necessary tools and libraries for handling
+messages in different languages, as one of the steps to
+internationalisation (or i18n) of a utility.
+
+This package contains the various development tools. gettextize and
+autopoint are packaged separately.
diff --git a/gettext-tools/Makefile b/gettext-tools/Makefile
new file mode 100644
index 0000000000..57a2bf752e
--- /dev/null
+++ b/gettext-tools/Makefile
@@ -0,0 +1,76 @@
+# $NetBSD: Makefile,v 1.48 2025/07/02 11:01:31 jperkin Exp $
+
+.include "../../devel/gettext/Makefile.common"
+
+PKGNAME=	${DISTNAME:S/-/-tools-/}
+COMMENT=	Tools for providing messages in different languages
+
+DISTINFO_FILE=	${.CURDIR}/../../devel/gettext/distinfo
+PATCHDIR=	${.CURDIR}/../../devel/gettext/patches
+
+USE_LANGUAGES=		c c++
+USE_TOOLS+=		xz:run
+USE_PKGLOCALEDIR=	yes
+CONFIGURE_ARGS+=	--disable-csharp
+CONFIGURE_ARGS+=	--disable-java
+CONFIGURE_ARGS+=	--disable-openmp
+CONFIGURE_ARGS+=	--with-included-libcroco
+CONFIGURE_ARGS+=	--with-xz
+CONFIGURE_ARGS+=	--without-git
+CONFIGURE_ARGS+=	--without-emacs
+CONFIGURE_ARGS+=	--without-included-gettext
+CONFIGURE_ENV+=		GCJ= ac_cv_prog_GCJ= ac_cv_prog_JAR=
+CONFIGURE_ENV+=		HAVE_GCJ_IN_PATH=
+CONFIGURE_ENV+=		HAVE_JAVAC_IN_PATH=
+CONFIGURE_ENV+=		HAVE_JIKES_IN_PATH=
+GNU_CONFIGURE_STRICT=	no # because of gettext-runtime
+LDFLAGS.AIX+=		-Wl,-brtl
+
+# This is defined in the source but broken include ordering means it is not
+# defined too late to be activated for memset_s().
+CFLAGS.SunOS+=		-D__STDC_WANT_LIB_EXT1__=1
+
+SHLIBTOOL_OVERRIDE=	# empty
+INFO_FILES=		yes
+
+BROKEN_GETTEXT_DETECTION=	yes
+USE_BUILTIN.gettext=		no # force use of pkgsrc gettext-lib
+
+BUILDLINK_TRANSFORM.Cygwin+=	rm:-Wl,--disable-auto-import
+
+#bug 20453 in bug-gzip list, passed onto gnulib
+CONFIGURE_ENV.AIX+=	ac_cv_header_wctype_h=no
+
+.include "../../mk/bsd.prefs.mk"
+
+.if ${OPSYS} == "UnixWare"
+# atomics
+CFLAGS+=		-march=i486
+# cannot handle stat functions defined as macros by uw7 libc
+SUBST_CLASSES+=		offset
+SUBST_STAGE.offset=	pre-configure
+SUBST_FILES.offset=	*/configure
+SUBST_SED.offset=	-e 's/FILE_OFFSET_BITS 64/FILE_OFFSET_BITS 32/g'
+SUBST_SED.offset+=	-e 's/FILE_OFFSET_BITS=64/FILE_OFFSET_BITS=32/g'
+.endif
+
+PLIST_VARS+=	glibc
+
+.if !empty(GLIBC_VERSION)
+PLIST.glibc=	yes
+.endif
+
+REPLACE_PYTHON=	gettext-tools/src/spit.py.in
+
+post-install:
+	cd ${WRKSRC}/gettext-tools/its && ${MAKE} install DESTDIR=${DESTDIR}
+	cd ${WRKSRC}/gettext-tools/misc && ${MAKE} install DESTDIR=${DESTDIR}
+	${INSTALL_MAN} ${WRKSRC}/gettext-tools/man/autopoint.1 \
+		${DESTDIR}${PREFIX}/${PKGMANDIR}/man1
+	${INSTALL_MAN} ${WRKSRC}/gettext-tools/man/gettextize.1 \
+		${DESTDIR}${PREFIX}/${PKGMANDIR}/man1
+
+.include "../../devel/gettext-lib/buildlink3.mk"
+.include "../../lang/python/application.mk"
+.include "../../mk/termcap.buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/gettext-tools/PLIST b/gettext-tools/PLIST
new file mode 100644
index 0000000000..79c7c05e75
--- /dev/null
+++ b/gettext-tools/PLIST
@@ -0,0 +1,297 @@
+@comment $NetBSD: PLIST,v 1.17 2024/02/25 15:42:06 wiz Exp $
+bin/autopoint
+bin/envsubst
+bin/gettext
+bin/gettext.sh
+bin/gettextize
+bin/msgattrib
+bin/msgcat
+bin/msgcmp
+bin/msgcomm
+bin/msgconv
+bin/msgen
+bin/msgexec
+bin/msgfilter
+bin/msgfmt
+bin/msggrep
+bin/msginit
+bin/msgmerge
+bin/msgpre
+bin/msgunfmt
+bin/msguniq
+bin/ngettext
+bin/po-fetch
+bin/printf_gettext
+bin/printf_ngettext
+bin/recode-sr-latin
+bin/spit
+bin/xgettext
+include/gettext-po.h
+include/textstyle.h
+include/textstyle/version.h
+include/textstyle/woe32dll.h
+info/gettext.info
+info/libtextstyle.info
+lib/libgettextlib.la
+lib/libgettextpo.la
+lib/libgettextsrc.la
+lib/libtextstyle.la
+libexec/gettext/cldr-plurals
+libexec/gettext/hostname
+libexec/gettext/project-id
+libexec/gettext/urlget
+libexec/gettext/user-email
+man/man1/autopoint.1
+man/man1/autopoint.1.gz
+man/man1/envsubst.1
+man/man1/envsubst.1.gz
+man/man1/gettext.1
+man/man1/gettext.1.gz
+man/man1/gettextize.1
+man/man1/gettextize.1.gz
+man/man1/msgattrib.1
+man/man1/msgattrib.1.gz
+man/man1/msgcat.1
+man/man1/msgcat.1.gz
+man/man1/msgcmp.1
+man/man1/msgcmp.1.gz
+man/man1/msgcomm.1
+man/man1/msgcomm.1.gz
+man/man1/msgconv.1
+man/man1/msgconv.1.gz
+man/man1/msgen.1
+man/man1/msgen.1.gz
+man/man1/msgexec.1
+man/man1/msgexec.1.gz
+man/man1/msgfilter.1
+man/man1/msgfilter.1.gz
+man/man1/msgfmt.1
+man/man1/msgfmt.1.gz
+man/man1/msggrep.1
+man/man1/msggrep.1.gz
+man/man1/msginit.1
+man/man1/msginit.1.gz
+man/man1/msgmerge.1
+man/man1/msgmerge.1.gz
+man/man1/msgpre.1
+man/man1/msgunfmt.1
+man/man1/msgunfmt.1.gz
+man/man1/msguniq.1
+man/man1/msguniq.1.gz
+man/man1/ngettext.1
+man/man1/ngettext.1.gz
+man/man1/po-fetch.1
+man/man1/printf_gettext.1
+man/man1/printf_ngettext.1
+man/man1/recode-sr-latin.1
+man/man1/recode-sr-latin.1.gz
+man/man1/spit.1
+man/man1/xgettext.1
+man/man1/xgettext.1.gz
+man/man3/bind_textdomain_codeset.3
+man/man3/bind_textdomain_codeset.3.gz
+man/man3/bindtextdomain.3
+man/man3/bindtextdomain.3.gz
+man/man3/dcgettext.3
+man/man3/dcgettext.3.gz
+man/man3/dcngettext.3
+man/man3/dcngettext.3.gz
+man/man3/dgettext.3
+man/man3/dgettext.3.gz
+man/man3/dngettext.3
+man/man3/dngettext.3.gz
+man/man3/gettext.3
+man/man3/gettext.3.gz
+man/man3/ngettext.3
+man/man3/ngettext.3.gz
+man/man3/textdomain.3
+man/man3/textdomain.3.gz
+share/doc/gettext/FAQ.html
+share/doc/gettext/autopoint.1.html
+share/doc/gettext/bind_textdomain_codeset.3.html
+share/doc/gettext/bindtextdomain.3.html
+share/doc/gettext/envsubst.1.html
+share/doc/gettext/gettext.1.html
+share/doc/gettext/gettext.3.html
+share/doc/gettext/gettext_1.html
+share/doc/gettext/gettext_10.html
+share/doc/gettext/gettext_11.html
+share/doc/gettext/gettext_12.html
+share/doc/gettext/gettext_13.html
+share/doc/gettext/gettext_14.html
+share/doc/gettext/gettext_15.html
+share/doc/gettext/gettext_16.html
+share/doc/gettext/gettext_17.html
+share/doc/gettext/gettext_18.html
+share/doc/gettext/gettext_19.html
+share/doc/gettext/gettext_2.html
+share/doc/gettext/gettext_20.html
+share/doc/gettext/gettext_21.html
+share/doc/gettext/gettext_22.html
+share/doc/gettext/gettext_23.html
+share/doc/gettext/gettext_24.html
+share/doc/gettext/gettext_25.html
+share/doc/gettext/gettext_26.html
+share/doc/gettext/gettext_27.html
+share/doc/gettext/gettext_28.html
+share/doc/gettext/gettext_29.html
+share/doc/gettext/gettext_3.html
+share/doc/gettext/gettext_30.html
+share/doc/gettext/gettext_31.html
+share/doc/gettext/gettext_32.html
+share/doc/gettext/gettext_4.html
+share/doc/gettext/gettext_5.html
+share/doc/gettext/gettext_6.html
+share/doc/gettext/gettext_7.html
+share/doc/gettext/gettext_8.html
+share/doc/gettext/gettext_9.html
+share/doc/gettext/gettext_abt.html
+share/doc/gettext/gettext_fot.html
+share/doc/gettext/gettext_toc.html
+share/doc/gettext/gettextize.1.html
+share/doc/gettext/msgattrib.1.html
+share/doc/gettext/msgcat.1.html
+share/doc/gettext/msgcmp.1.html
+share/doc/gettext/msgcomm.1.html
+share/doc/gettext/msgconv.1.html
+share/doc/gettext/msgen.1.html
+share/doc/gettext/msgexec.1.html
+share/doc/gettext/msgfilter.1.html
+share/doc/gettext/msgfmt.1.html
+share/doc/gettext/msggrep.1.html
+share/doc/gettext/msginit.1.html
+share/doc/gettext/msgmerge.1.html
+share/doc/gettext/msgpre.1.html
+share/doc/gettext/msgunfmt.1.html
+share/doc/gettext/msguniq.1.html
+share/doc/gettext/ngettext.1.html
+share/doc/gettext/ngettext.3.html
+share/doc/gettext/po-fetch.1.html
+share/doc/gettext/printf_gettext.1.html
+share/doc/gettext/printf_ngettext.1.html
+share/doc/gettext/recode-sr-latin.1.html
+share/doc/gettext/spit.1.html
+share/doc/gettext/textdomain.3.html
+share/doc/gettext/tutorial.html
+share/doc/gettext/xgettext.1.html
+share/doc/libtextstyle/libtextstyle_1.html
+share/doc/libtextstyle/libtextstyle_2.html
+share/doc/libtextstyle/libtextstyle_3.html
+share/doc/libtextstyle/libtextstyle_4.html
+share/doc/libtextstyle/libtextstyle_5.html
+share/doc/libtextstyle/libtextstyle_6.html
+share/doc/libtextstyle/libtextstyle_7.html
+share/doc/libtextstyle/libtextstyle_abt.html
+share/doc/libtextstyle/libtextstyle_toc.html
+share/gettext-${PKGVERSION}/its/docbook.loc
+share/gettext-${PKGVERSION}/its/docbook4.its
+share/gettext-${PKGVERSION}/its/docbook5.its
+share/gettext-${PKGVERSION}/its/glade.loc
+share/gettext-${PKGVERSION}/its/glade1.its
+share/gettext-${PKGVERSION}/its/glade2.its
+share/gettext-${PKGVERSION}/its/gsettings.its
+share/gettext-${PKGVERSION}/its/gsettings.loc
+share/gettext-${PKGVERSION}/its/gtkbuilder.its
+share/gettext-${PKGVERSION}/its/metainfo.its
+share/gettext-${PKGVERSION}/its/metainfo.loc
+share/gettext/archive.dir.tar.xz
+share/gettext/disclaim-translations.txt
+share/gettext/msgunfmt.tcl
+share/gettext/po/Makefile.in.in
+share/gettext/po/Makevars.template
+share/gettext/po/Rules-quot
+share/gettext/po/boldquot.sed
+share/gettext/po/en@boldquot.header
+share/gettext/po/en@quot.header
+share/gettext/po/fetch-po
+share/gettext/po/insert-header.sed
+share/gettext/po/quot.sed
+share/gettext/po/remove-potcdate.sed
+share/gettext/schema/its-extensions.xsd
+share/gettext/schema/its.xsd10
+share/gettext/schema/its.xsd11
+share/gettext/schema/locating-rules.xsd10
+share/gettext/schema/locating-rules.xsd11
+share/gettext/styles/po-default.css
+share/gettext/styles/po-emacs-x.css
+share/gettext/styles/po-emacs-xterm.css
+share/gettext/styles/po-emacs-xterm16.css
+share/gettext/styles/po-emacs-xterm256.css
+share/gettext/styles/po-vim.css
+share/locale/ast/LC_MESSAGES/gettext-runtime.mo
+share/locale/be/LC_MESSAGES/gettext-runtime.mo
+share/locale/be/LC_MESSAGES/gettext-tools.mo
+share/locale/bg/LC_MESSAGES/gettext-runtime.mo
+share/locale/bg/LC_MESSAGES/gettext-tools.mo
+share/locale/ca/LC_MESSAGES/gettext-runtime.mo
+share/locale/ca/LC_MESSAGES/gettext-tools.mo
+share/locale/cs/LC_MESSAGES/gettext-runtime.mo
+share/locale/cs/LC_MESSAGES/gettext-tools.mo
+share/locale/da/LC_MESSAGES/gettext-runtime.mo
+share/locale/da/LC_MESSAGES/gettext-tools.mo
+share/locale/de/LC_MESSAGES/gettext-runtime.mo
+share/locale/de/LC_MESSAGES/gettext-tools.mo
+share/locale/el/LC_MESSAGES/gettext-runtime.mo
+share/locale/el/LC_MESSAGES/gettext-tools.mo
+share/locale/eo/LC_MESSAGES/gettext-runtime.mo
+share/locale/es/LC_MESSAGES/gettext-runtime.mo
+share/locale/es/LC_MESSAGES/gettext-tools.mo
+share/locale/et/LC_MESSAGES/gettext-runtime.mo
+share/locale/et/LC_MESSAGES/gettext-tools.mo
+share/locale/eu/LC_MESSAGES/gettext-tools.mo
+share/locale/fi/LC_MESSAGES/gettext-runtime.mo
+share/locale/fi/LC_MESSAGES/gettext-tools.mo
+share/locale/fr/LC_MESSAGES/gettext-runtime.mo
+share/locale/fr/LC_MESSAGES/gettext-tools.mo
+share/locale/ga/LC_MESSAGES/gettext-runtime.mo
+share/locale/gl/LC_MESSAGES/gettext-runtime.mo
+share/locale/gl/LC_MESSAGES/gettext-tools.mo
+share/locale/hr/LC_MESSAGES/gettext-runtime.mo
+share/locale/hr/LC_MESSAGES/gettext-tools.mo
+share/locale/hu/LC_MESSAGES/gettext-runtime.mo
+share/locale/id/LC_MESSAGES/gettext-runtime.mo
+share/locale/id/LC_MESSAGES/gettext-tools.mo
+share/locale/it/LC_MESSAGES/gettext-runtime.mo
+share/locale/it/LC_MESSAGES/gettext-tools.mo
+share/locale/ja/LC_MESSAGES/gettext-runtime.mo
+share/locale/ja/LC_MESSAGES/gettext-tools.mo
+share/locale/ka/LC_MESSAGES/gettext-runtime.mo
+share/locale/ka/LC_MESSAGES/gettext-tools.mo
+share/locale/ko/LC_MESSAGES/gettext-runtime.mo
+share/locale/ko/LC_MESSAGES/gettext-tools.mo
+share/locale/nb/LC_MESSAGES/gettext-runtime.mo
+share/locale/nb/LC_MESSAGES/gettext-tools.mo
+share/locale/nl/LC_MESSAGES/gettext-runtime.mo
+share/locale/nl/LC_MESSAGES/gettext-tools.mo
+share/locale/nn/LC_MESSAGES/gettext-runtime.mo
+share/locale/nn/LC_MESSAGES/gettext-tools.mo
+share/locale/pa/LC_MESSAGES/gettext-tools.mo
+share/locale/pl/LC_MESSAGES/gettext-runtime.mo
+share/locale/pl/LC_MESSAGES/gettext-tools.mo
+share/locale/pt/LC_MESSAGES/gettext-runtime.mo
+share/locale/pt/LC_MESSAGES/gettext-tools.mo
+share/locale/pt_BR/LC_MESSAGES/gettext-runtime.mo
+share/locale/pt_BR/LC_MESSAGES/gettext-tools.mo
+share/locale/ro/LC_MESSAGES/gettext-runtime.mo
+share/locale/ro/LC_MESSAGES/gettext-tools.mo
+share/locale/ru/LC_MESSAGES/gettext-runtime.mo
+share/locale/ru/LC_MESSAGES/gettext-tools.mo
+share/locale/sk/LC_MESSAGES/gettext-runtime.mo
+share/locale/sk/LC_MESSAGES/gettext-tools.mo
+share/locale/sl/LC_MESSAGES/gettext-runtime.mo
+share/locale/sl/LC_MESSAGES/gettext-tools.mo
+share/locale/sr/LC_MESSAGES/gettext-runtime.mo
+share/locale/sr/LC_MESSAGES/gettext-tools.mo
+share/locale/sv/LC_MESSAGES/gettext-runtime.mo
+share/locale/sv/LC_MESSAGES/gettext-tools.mo
+share/locale/tr/LC_MESSAGES/gettext-runtime.mo
+share/locale/tr/LC_MESSAGES/gettext-tools.mo
+share/locale/uk/LC_MESSAGES/gettext-runtime.mo
+share/locale/uk/LC_MESSAGES/gettext-tools.mo
+share/locale/vi/LC_MESSAGES/gettext-runtime.mo
+share/locale/vi/LC_MESSAGES/gettext-tools.mo
+share/locale/zh_CN/LC_MESSAGES/gettext-runtime.mo
+share/locale/zh_CN/LC_MESSAGES/gettext-tools.mo
+share/locale/zh_HK/LC_MESSAGES/gettext-runtime.mo
+share/locale/zh_TW/LC_MESSAGES/gettext-runtime.mo
+share/locale/zh_TW/LC_MESSAGES/gettext-tools.mo
diff --git a/gettext-tools/PLIST.Linux b/gettext-tools/PLIST.Linux
new file mode 100644
index 0000000000..fbb60e5dea
--- /dev/null
+++ b/gettext-tools/PLIST.Linux
@@ -0,0 +1,2 @@
+@comment $NetBSD: PLIST.Linux,v 1.1 2019/06/04 17:22:22 nia Exp $
+${PLIST.glibc}lib/preloadable_libintl.so
diff --git a/gettext-tools/buildlink3.mk b/gettext-tools/buildlink3.mk
new file mode 100644
index 0000000000..4577b62cc7
--- /dev/null
+++ b/gettext-tools/buildlink3.mk
@@ -0,0 +1,14 @@
+# $NetBSD: buildlink3.mk,v 1.2 2023/11/23 11:12:33 jperkin Exp $
+
+BUILDLINK_TREE+=	gettext-tools
+
+.if !defined(GETTEXT_TOOLS_BUILDLINK3_MK)
+GETTEXT_TOOLS_BUILDLINK3_MK:=
+
+BUILDLINK_API_DEPENDS.gettext-tools+=	gettext-tools>=0.18.1.1nb3
+BUILDLINK_PKGSRCDIR.gettext-tools?=	../../devel/gettext-tools
+
+.include "../../mk/termcap.buildlink3.mk"
+.endif	# GETTEXT_TOOLS_BUILDLINK3_MK
+
+BUILDLINK_TREE+=	-gettext-tools
diff --git a/gettext-tools/msgfmt-desktop.mk b/gettext-tools/msgfmt-desktop.mk
new file mode 100644
index 0000000000..4ac93a8502
--- /dev/null
+++ b/gettext-tools/msgfmt-desktop.mk
@@ -0,0 +1,13 @@
+# $NetBSD: msgfmt-desktop.mk,v 1.3 2022/03/18 17:49:46 wiz Exp $
+
+USE_TOOLS+=	msgfmt
+
+.include "../../mk/bsd.fast.prefs.mk"
+
+.if ${OPSYS} == "NetBSD"
+# Old GPLv2 version of msgfmt in NetBSD does not support --desktop/--xml.
+# XXX technically, we would require gettext-tools >= 0.19.7, as that's
+# when the --xml argument was added, rather than >= 0.15, which the tools
+# chain currently sets, but this seems non-trivial to adjust.
+TOOLS_PLATFORM.msgfmt=	# none
+.endif
diff --git a/gettext/DESCR b/gettext/DESCR
new file mode 100644
index 0000000000..1b8854e9ee
--- /dev/null
+++ b/gettext/DESCR
@@ -0,0 +1,3 @@
+GNU gettext provides the necessary tools and libraries for handling
+messages in different languages, as one of the steps to
+internationalisation (or i18n) of a utility.
diff --git a/gettext/Makefile b/gettext/Makefile
new file mode 100644
index 0000000000..a5a09273a4
--- /dev/null
+++ b/gettext/Makefile
@@ -0,0 +1,35 @@
+# $NetBSD: Makefile,v 1.88 2025/07/02 11:00:57 jperkin Exp $
+
+.include "../../devel/gettext/Makefile.common"
+
+COMMENT=	Tools for providing messages in different languages
+
+DEPENDS+=	gettext-m4-${PKGVERSION_NOREV}{,nb[0-9]*}:../../devel/gettext-m4
+DEPENDS+=	gettext-tools-${PKGVERSION_NOREV}{,nb[0-9]*}:../../devel/gettext-tools
+BUILDLINK_API_DEPENDS.gettext+=	gettext-lib>=0.18
+
+USE_LANGUAGES=		c c++
+USE_PKGLOCALEDIR=	yes
+SHLIBTOOL_OVERRIDE=	# empty
+CONFIGURE_ARGS+=	--disable-csharp
+CONFIGURE_ARGS+=	--without-git
+CONFIGURE_ARGS+=	--without-included-gettext
+CONFIGURE_ENV+=		GCJ= ac_cv_prog_GCJ=
+CONFIGURE_ENV+=		HAVE_GCJ_IN_PATH=
+CONFIGURE_ENV+=		HAVE_JAVAC_IN_PATH=
+CONFIGURE_ENV+=		HAVE_JIKES_IN_PATH=
+CONFIGURE_ENV+=		ac_cv_libexpat=no
+
+INSTALLATION_DIRS+=	lib
+
+BROKEN_GETTEXT_DETECTION=	yes
+USE_BUILTIN.gettext=		no # force use of pkgsrc gettext-lib
+
+do-install:
+	cd ${WRKSRC}/gettext-tools && ${MAKE} install-pkgdataSCRIPTS DESTDIR=${DESTDIR}
+	cd ${WRKSRC}/gettext-tools/projects && ${MAKE} install DESTDIR=${DESTDIR}
+	cd ${WRKSRC}/gettext-runtime && ${MAKE} install-gettextsrcDATA DESTDIR=${DESTDIR}
+
+.include "../../devel/gettext-lib/buildlink3.mk"
+.include "../../devel/gettext-asprintf/buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/gettext/Makefile.common b/gettext/Makefile.common
new file mode 100644
index 0000000000..31ad2b392b
--- /dev/null
+++ b/gettext/Makefile.common
@@ -0,0 +1,39 @@
+# $NetBSD: Makefile.common,v 1.28 2025/07/02 11:00:57 jperkin Exp $
+#
+# used by devel/gettext/Makefile
+# used by devel/gettext-asprintf/Makefile
+# used by devel/gettext-lib/Makefile
+# used by devel/gettext-m4/Makefile
+# used by devel/gettext-tools/Makefile
+
+DISTNAME=	gettext-1.0
+CATEGORIES=	devel
+MASTER_SITES=	${MASTER_SITE_GNU:=gettext/}
+
+MAINTAINER?=	pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE=	https://www.gnu.org/software/gettext/gettext.html
+LICENSE=	gnu-gpl-v3
+
+CONFLICTS=	gettext<=0.10.35
+
+USE_LIBTOOL=		yes
+GNU_CONFIGURE=		yes
+GNU_CONFIGURE_STRICT=	no # several sub-configures
+# Fix for faulty detection of iconv.
+CONFIGURE_ENV.Darwin=	am_cv_func_iconv_works=yes
+
+TEST_TARGET=	check
+
+.include "../../mk/bsd.fast.prefs.mk"
+
+# There is a bug in the 10.4 SDK that causes struct __darwin_ucontext
+# to be undefined when transcluding <sys/signal.h> via stdlib.h.
+#
+# This hack simply disables defining the mcontext_t typedefs, which
+# has no negative effects on this version.
+.if ${OPSYS} == "Darwin" && ${OPSYS_VERSION} < 100500
+CPPFLAGS+=		-D_MCONTEXT_T=1
+CPPFLAGS+=		-D_MCONTEXT64_T=1
+CPPFLAGS+=		-D_UCONTEXT_T=1
+CPPFLAGS+=		-D_UCONTEXT64_T=1
+.endif
diff --git a/gettext/PLIST b/gettext/PLIST
new file mode 100644
index 0000000000..d6dd9f259d
--- /dev/null
+++ b/gettext/PLIST
@@ -0,0 +1,17 @@
+@comment $NetBSD: PLIST,v 1.21 2020/01/23 11:42:16 nia Exp $
+share/gettext/ABOUT-NLS
+share/gettext/config.rpath
+share/gettext/projects/GNOME/team-address
+share/gettext/projects/GNOME/teams.html
+share/gettext/projects/GNOME/teams.url
+share/gettext/projects/GNOME/trigger
+share/gettext/projects/KDE/team-address
+share/gettext/projects/KDE/teams.html
+share/gettext/projects/KDE/teams.url
+share/gettext/projects/KDE/trigger
+share/gettext/projects/TP/team-address
+share/gettext/projects/TP/teams.html
+share/gettext/projects/TP/teams.url
+share/gettext/projects/TP/trigger
+share/gettext/projects/index
+share/gettext/projects/team-address
diff --git a/gettext/distinfo b/gettext/distinfo
new file mode 100644
index 0000000000..eb89f0d65e
--- /dev/null
+++ b/gettext/distinfo
@@ -0,0 +1,14 @@
+$NetBSD: distinfo,v 1.50 2026/04/09 08:50:03 jperkin Exp $
+
+BLAKE2s (gettext-1.0.tar.gz) = 9277ec2cb3676b657eb719c952d0b2481dd0991aa3253eac350db9c2d2575cb5
+SHA512 (gettext-1.0.tar.gz) = 664c3b1985cb7d1e7ed443e036a6c7f8c1f47354720d13c2db2c2cf8a85136d0ffc2cc920dce1240d688f706653f647749ce29f69eb0bb659e043b499f9c47eb
+Size (gettext-1.0.tar.gz) = 32694085 bytes
+SHA1 (patch-Makefile.in) = 19682afa60efca5afc1cf3abcf2d721885a8b27c
+SHA1 (patch-gettext-runtime_Makefile.in) = 5ce6a74d4c594280699bc51a5b0a491dd3620bcd
+SHA1 (patch-gettext-runtime_configure) = c1f0718f1c16a99fc2e747d8c8d48ec145eaeaee
+SHA1 (patch-gettext-runtime_m4_gettext.m4) = a154919e5da2013c3a2eaa965dc5f12460b1d4f4
+SHA1 (patch-gettext-tools_Makefile.in) = f93519ba8e17d905bbc5abac25caf3d756805230
+SHA1 (patch-gettext-tools_configure) = 0ff7557c41db2adee0cba7fa82a7d192efe86a7e
+SHA1 (patch-gettext-tools_gnulib-lib_Makefile.in) = 1e2ae3e92fa4b530649ec938cffee6743219ce1c
+SHA1 (patch-gettext-tools_po_Makefile.in.in) = a425dd4b5e9705438d01f4ebb92e4c74f0ec1579
+SHA1 (patch-gettext-tools_tests_Makefile.in) = af9c9ecbecfafc1c34d0bd3347d3d399122aaa80
diff --git a/gettext/files/libgettext.h b/gettext/files/libgettext.h
new file mode 100644
index 0000000000..98fb7327d2
--- /dev/null
+++ b/gettext/files/libgettext.h
@@ -0,0 +1,7 @@
+#include <libintl.h>
+
+#define gettext__	gettext
+#define dgettext__	dgettext
+#define dcgettext__	dcgettext
+#define textdomain__	textdomain
+#define bindtextdomain__	bindtextdomain
diff --git a/gettext/patches/patch-Makefile.in b/gettext/patches/patch-Makefile.in
new file mode 100644
index 0000000000..c6b8f0c241
--- /dev/null
+++ b/gettext/patches/patch-Makefile.in
@@ -0,0 +1,13 @@
+$NetBSD$
+
+--- Makefile.in.orig	2026-01-28 23:39:52.000000000 +0000
++++ Makefile.in
+@@ -323,7 +323,7 @@ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ AUTOMAKE_OPTIONS = 1.5 gnu
+ ACLOCAL_AMFLAGS = -I m4
+-SUBDIRS = gnulib-local gettext-runtime libtextstyle gettext-tools
++SUBDIRS = gettext-runtime libtextstyle gettext-tools
+ changelog_etc = \
+   gettext-runtime/ChangeLog.0 \
+   gettext-runtime/doc/ChangeLog.0 \
diff --git a/gettext/patches/patch-gettext-runtime_Makefile.in b/gettext/patches/patch-gettext-runtime_Makefile.in
new file mode 100644
index 0000000000..ca984f2021
--- /dev/null
+++ b/gettext/patches/patch-gettext-runtime_Makefile.in
@@ -0,0 +1,22 @@
+$NetBSD$
+
+--- gettext-runtime/Makefile.in.orig	2026-01-28 23:39:31.000000000 +0000
++++ gettext-runtime/Makefile.in
+@@ -2362,7 +2362,7 @@ ACLOCAL_AMFLAGS = -I m4 -I ../m4 -I gnul
+ # The list of subdirectories depends on whether --disable-libasprintf was
+ # specified.
+ @ENABLE_LIBASPRINTF_TRUE@SUBDIR_libasprintf = libasprintf
+-SUBDIRS = doc intl intl-java intl-csharp intl-d intl-modula2 gnulib-lib $(SUBDIR_libasprintf) src po man m4 tests install-tests
++SUBDIRS = doc intl gnulib-lib src po man m4 tests install-tests
+ 
+ # Allow users to use "gnulib-tool --update".
+ 
+@@ -2833,7 +2833,7 @@ info: info-recursive
+ 
+ info-am:
+ 
+-install-data-am: install-gettextsrcDATA
++install-data-am:
+ 
+ install-dvi: install-dvi-recursive
+ 
diff --git a/gettext/patches/patch-gettext-runtime_configure b/gettext/patches/patch-gettext-runtime_configure
new file mode 100644
index 0000000000..80c6421b53
--- /dev/null
+++ b/gettext/patches/patch-gettext-runtime_configure
@@ -0,0 +1,18 @@
+$NetBSD$
+
+--- gettext-runtime/configure.orig	2026-01-28 23:39:29.000000000 +0000
++++ gettext-runtime/configure
+@@ -26035,13 +26035,6 @@ printf "%s\n" "$ac_res" >&6; }
+       fi
+ 
+ 
+-      if test "$gt_cv_use_gnu_libintl" = "yes" \
+-         || case "$host_os" in cygwin*) true;; *) false;; esac; then
+-                                USE_INCLUDED_LIBINTL=yes
+-        LIBINTL="\${top_builddir}/intl/libintl.la $LIBICONV $LIBTHREAD"
+-        LTLIBINTL="\${top_builddir}/intl/libintl.la $LTLIBICONV $LTLIBTHREAD"
+-        LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
+-      fi
+ 
+       CATOBJEXT=
+       if test "$gt_use_preinstalled_gnugettext" = "yes" \
diff --git a/gettext/patches/patch-gettext-runtime_m4_gettext.m4 b/gettext/patches/patch-gettext-runtime_m4_gettext.m4
new file mode 100644
index 0000000000..c8275af720
--- /dev/null
+++ b/gettext/patches/patch-gettext-runtime_m4_gettext.m4
@@ -0,0 +1,24 @@
+$NetBSD: patch-gettext-runtime_m4_gettext.m4,v 1.1 2018/12/27 15:09:53 joerg Exp $
+
+--- gettext-runtime/m4/gettext.m4.orig	2018-12-26 00:43:05.863552486 +0000
++++ gettext-runtime/m4/gettext.m4
+@@ -204,8 +204,7 @@ extern
+ #ifdef __cplusplus
+ "C"
+ #endif
+-const char *_nl_expand_alias (const char *);
+-#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
++#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr)
+ #else
+ #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+ #endif
+@@ -230,8 +229,7 @@ extern
+ #ifdef __cplusplus
+ "C"
+ #endif
+-const char *_nl_expand_alias (const char *);
+-#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
++#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr)
+ #else
+ #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+ #endif
diff --git a/gettext/patches/patch-gettext-tools_Makefile.in b/gettext/patches/patch-gettext-tools_Makefile.in
new file mode 100644
index 0000000000..aa275f1d90
--- /dev/null
+++ b/gettext/patches/patch-gettext-tools_Makefile.in
@@ -0,0 +1,24 @@
+$NetBSD$
+
+Don't install stuff handled by devel/gettext, and skip examples.
+
+--- gettext-tools/Makefile.in.orig	2026-01-28 23:39:43.000000000 +0000
++++ gettext-tools/Makefile.in
+@@ -4014,7 +4014,7 @@ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ AUTOMAKE_OPTIONS = 1.5 gnu
+ ACLOCAL_AMFLAGS = -I m4 -I ../gettext-runtime/m4 -I ../m4 -I gnulib-m4 -I libgrep/gnulib-m4 -I libgettextpo/gnulib-m4 -I tests/gnulib-m4
+-SUBDIRS = gnulib-lib libgrep src libgettextpo po its projects styles wizard autotools misc emacs man m4 tests system-tests gnulib-tests install-tests examples doc
++SUBDIRS = gnulib-lib libgrep src libgettextpo po its styles wizard autotools misc emacs man tests system-tests gnulib-tests install-tests doc
+ 
+ # Files imported from tree-sitter.
+ 
+@@ -4631,7 +4631,7 @@ info: info-recursive
+ 
+ info-am:
+ 
+-install-data-am: install-examplesbuildauxDATA install-pkgdataSCRIPTS
++install-data-am:
+ 
+ install-dvi: install-dvi-recursive
+ 
diff --git a/gettext/patches/patch-gettext-tools_configure b/gettext/patches/patch-gettext-tools_configure
new file mode 100644
index 0000000000..eda16a6d49
--- /dev/null
+++ b/gettext/patches/patch-gettext-tools_configure
@@ -0,0 +1,18 @@
+$NetBSD$
+
+--- gettext-tools/configure.orig	2026-01-28 23:37:49.000000000 +0000
++++ gettext-tools/configure
+@@ -29958,13 +29958,6 @@ printf "%s\n" "$ac_res" >&6; }
+       fi
+ 
+ 
+-      if test "$gt_cv_use_gnu_libintl" = "yes" \
+-         || case "$host_os" in cygwin*) true;; *) false;; esac; then
+-                                USE_INCLUDED_LIBINTL=yes
+-        LIBINTL="\${top_builddir}/../gettext-runtime/intl/libintl.la $LIBICONV $LIBTHREAD"
+-        LTLIBINTL="\${top_builddir}/../gettext-runtime/intl/libintl.la $LTLIBICONV $LTLIBTHREAD"
+-        LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
+-      fi
+ 
+       CATOBJEXT=
+       if test "$gt_use_preinstalled_gnugettext" = "yes" \
diff --git a/gettext/patches/patch-gettext-tools_gnulib-lib_Makefile.in b/gettext/patches/patch-gettext-tools_gnulib-lib_Makefile.in
new file mode 100644
index 0000000000..04a772865c
--- /dev/null
+++ b/gettext/patches/patch-gettext-tools_gnulib-lib_Makefile.in
@@ -0,0 +1,13 @@
+$NetBSD: patch-ag,v 1.14 2023/12/30 15:47:03 wiz Exp $
+
+--- gettext-tools/gnulib-lib/Makefile.in.orig	2023-11-19 20:23:04.000000000 +0000
++++ gettext-tools/gnulib-lib/Makefile.in
+@@ -6571,7 +6571,7 @@ info: info-am
+ 
+ info-am:
+ 
+-install-data-am: install-pkgdataDATA
++install-data-am:
+ 
+ install-dvi: install-dvi-am
+ 
diff --git a/gettext/patches/patch-gettext-tools_po_Makefile.in.in b/gettext/patches/patch-gettext-tools_po_Makefile.in.in
new file mode 100644
index 0000000000..06dfffa253
--- /dev/null
+++ b/gettext/patches/patch-gettext-tools_po_Makefile.in.in
@@ -0,0 +1,13 @@
+$NetBSD$
+
+--- gettext-tools/po/Makefile.in.in.orig	2026-01-28 23:36:19.000000000 +0000
++++ gettext-tools/po/Makefile.in.in
+@@ -366,7 +366,7 @@ $(POFILES):
+ 	fi
+ 
+ 
+-install: install-exec install-data
++install: install-exec install-data-@USE_NLS@
+ install-exec:
+ install-data: install-data-@USE_NLS@
+ install-data-no: all
diff --git a/gettext/patches/patch-gettext-tools_tests_Makefile.in b/gettext/patches/patch-gettext-tools_tests_Makefile.in
new file mode 100644
index 0000000000..3b07319e4f
--- /dev/null
+++ b/gettext/patches/patch-gettext-tools_tests_Makefile.in
@@ -0,0 +1,17 @@
+$NetBSD: patch-gettext-tools_tests_Makefile.in,v 1.3 2023/06/28 21:14:10 wiz Exp $
+
+--- gettext-tools/tests/Makefile.in.orig	2023-06-17 11:54:44.000000000 +0000
++++ gettext-tools/tests/Makefile.in
+@@ -3786,7 +3786,12 @@ AM_CPPFLAGS = \
+ 
+ # INTL_MACOSX_LIBS is needed because the programs depend on libintl.la
+ # but libtool doesn't put -Wl,-framework options into .la files.
++OS != uname -s
++.if ${OS} == SCO_SV
++LDADD = # empty
++.else
+ LDADD = $(LDADD_@USE_INCLUDED_LIBINTL@) @INTL_MACOSX_LIBS@
++.endif
+ LDADD_yes = ../../gettext-runtime/intl/libintl.la @LTLIBTHREAD@
+ LDADD_no = ../../gettext-runtime/intl/libgnuintl.la @LTLIBTHREAD@ @LTLIBINTL@
+ tstgettext_SOURCES = \


Home | Main Index | Thread Index | Old Index