summaryrefslogtreecommitdiff
path: root/devel/gettext-lib/builtin.mk
blob: bc15bd6666e5b09304d8f9a5bc83c2efd4857efb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# $NetBSD: builtin.mk,v 1.39 2008/02/28 20:30:18 jlam Exp $

.include "../../mk/bsd.fast.prefs.mk"

BUILTIN_PKG:=	gettext

BUILTIN_FIND_LIBS:=			intl
BUILTIN_FIND_FILES_VAR:=		H_GETTEXT H_GENTOO_GETTEXT	\
					H_NGETTEXT_GETTEXT
BUILTIN_FIND_FILES.H_GETTEXT=		/usr/include/libintl.h
BUILTIN_FIND_GREP.H_GETTEXT=		\#define[ 	]*__USE_GNU_GETTEXT
BUILTIN_FIND_FILES.H_GENTOO_GETTEXT=	/usr/include/libintl.h
BUILTIN_FIND_GREP.H_GENTOO_GETTEXT=	gentoo-multilib/.*/libintl.h
BUILTIN_FIND_FILES.H_NGETTEXT_GETTEXT=	/usr/include/libintl.h
BUILTIN_FIND_GREP.H_NGETTEXT_GETTEXT=	char.*ngettext

.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).
#
.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}/*))
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) && \
	!empty(IS_BUILTIN.gettext:M[yY][eE][sS])
USE_BUILTIN.gettext=	yes
.      for _dep_ in ${BUILDLINK_API_DEPENDS.gettext}
.	 if !empty(USE_BUILTIN.gettext:M[yY][eE][sS])
USE_BUILTIN.gettext!=							\
	if ${PKG_ADMIN} pmatch ${_dep_:Q} ${BUILTIN_PKG.gettext:Q}; then \
		${ECHO} yes;						\
	else								\
		${ECHO} no;						\
	fi
.	 endif
.      endfor
.    endif
# XXX
# XXX By default, assume that the native gettext implementation is good
# XXX enough to replace GNU gettext if it supplies ngettext().
# XXX
.    if empty(H_NGETTEXT_GETTEXT:M__nonexistent__) && \
	empty(H_NGETTEXT_GETTEXT:M${LOCALBASE}/*)
USE_BUILTIN.gettext=	yes
.    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 !empty(BUILTIN_LIB_FOUND.intl:M[yY][eE][sS])
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 !empty(CHECK_BUILTIN.gettext:M[nN][oO])

.  if !empty(USE_BUILTIN.gettext:M[yY][eE][sS])
BUILDLINK_LIBNAME.gettext=	${BUILTIN_LIBNAME.gettext}
.    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 !empty(USE_BUILTIN.gettext:M[yY][eE][sS])
.      if !empty(BUILTIN_LIB_FOUND.intl:M[yY][eE][sS])
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
.      endif
.    endif
.    if !empty(USE_BUILTIN.gettext:M[nN][oO])
CONFIGURE_ARGS+=	--with-libintl-prefix="${BUILDLINK_PREFIX.gettext}"
.    else
CONFIGURE_ARGS+=	--without-libintl-prefix
.    endif
.  endif

.endif	# CHECK_BUILTIN.gettext