summaryrefslogtreecommitdiffstats
path: root/docs/manual/adding-packages-gettext.txt
blob: c955b1fa028a8dc6200a8d68499470ef5fb692d7 (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
// -*- mode:doc; -*-
// vim: set syntax=asciidoc:

=== Gettext integration and interaction with packages

Many packages that support internationalization use the gettext
library. Dependencies for this library are fairly complicated and
therefore, deserve some explanation.

The 'uClibc' C library doesn't implement gettext functionality;
therefore with this C library, a separate gettext must be compiled,
which is provided by the additional +libintl+ library, part of the
+gettext+ package.

On the other hand, the 'glibc' C library does integrate its own
gettext library functions, so it is not necessary to build a separate
+libintl+ library.

However, certain packages need some gettext utilities on the target,
such as the +gettext+ program itself, which allows to retrieve
translated strings, from the command line.

Additionally, some packages (such as +libglib2+) do require gettext
functions unconditionally, while other packages (in general, those who
support +--disable-nls+) only require gettext functions when locale
support is enabled.

Therefore, Buildroot defines two configuration options:

* +BR2_NEEDS_GETTEXT+, which is true as soon as the toolchain doesn't
  provide its own gettext implementation

* +BR2_NEEDS_GETTEXT_IF_LOCALE+, which is true if the toolchain
  doesn't provide its own gettext implementation and if locale support
  is enabled

Packages that need gettext only when locale support is enabled should:

* use +select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE+ in the
  +Config.in+ file;

* use +$(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),gettext)+ in the package
  +DEPENDENCIES+ variable in the +.mk+ file.

Packages that unconditionally need gettext (which should be very rare)
should:

* use +select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT+ in the +Config.in+
  file;

* use +$(if $(BR2_NEEDS_GETTEXT),gettext)+ in the package
  +DEPENDENCIES+ variable in the +.mk+ file.

Packages that need the +gettext+ utilities on the target (should be
rare) should:

* use +select BR2_PACKAGE_GETTEXT+ in their +Config.in+ file,
  indicating in a comment above that it's a runtime dependency only.

* not add any +gettext+ dependency in the +DEPENDENCIES+ variable of
  their +.mk+ file.
OpenPOWER on IntegriCloud