Next: gettext.h in lib/, Previous: Makefile.in at top level, Up: Files You Must Create or Alter [Contents][Index]
Some of the modifications made in the main Makefile.in will also be needed in the Makefile.in from your package sources, which we assume here to be in the src/ subdirectory. Here are all the modifications needed in src/Makefile.in:
PACKAGE = @PACKAGE@ VERSION = @VERSION@
top_srcdir
gets defined. This will serve for cpp
include files. Just add
the line:
top_srcdir = @top_srcdir@
subdir
as ‘src’, later
allowing for almost uniform ‘dist:’ goals in all your
Makefile.in. At list, the ‘dist:’ goal below assume that
you used:
subdir = src
main
function of your program will normally call
bindtextdomain
(see see Triggering gettext
Operations), like this:
bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE);
On native Windows platforms, the main
function may call
wbindtextdomain
instead of bindtextdomain
.
To make LOCALEDIR known to the program, add the following lines to Makefile.in:
datadir = @datadir@ datarootdir= @datarootdir@ localedir = @localedir@ DEFS = -DLOCALEDIR=$(localedir_c_make) @DEFS@
$(localedir_c_make)
expands to the value of localedir
, in
C syntax, escaped for use in a Makefile
.
Note that @datadir@
defaults to ‘$(prefix)/share’, and
$(localedir)
defaults to ‘$(prefix)/share/locale’.
@LIBINTL@
or
@LTLIBINTL@
as a library. @LIBINTL@
is for use without
libtool
, @LTLIBINTL@
is for use with libtool
. An
easy way to achieve this is to manage that it gets into LIBS
, like
this:
LIBS = @LIBINTL@ @LIBS@
In most packages internationalized with GNU gettext
, one will
find a directory lib/ in which a library containing some helper
functions will be build. (You need at least the few functions which the
GNU gettext
Library itself needs.) However some of the functions
in the lib/ also give messages to the user which of course should be
translated, too. Taking care of this, the support library (say
libsupport.a) should be placed before @LIBINTL@
and
@LIBS@
in the above example. So one has to write this:
LIBS = ../lib/libsupport.a @LIBINTL@ @LIBS@
distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) dist: Makefile $(DISTFILES) for file in $(DISTFILES); do \ ln $$file $(distdir) 2>/dev/null || cp -p $$file $(distdir) || exit 1; \ done
Note that if you are using GNU automake
, Makefile.in is
automatically generated from Makefile.am, and the first three
changes and the last change are not necessary. The remaining needed
Makefile.am modifications are the following:
<module>_CPPFLAGS = -DLOCALEDIR=$(localedir_c_make)
for each specific module or compilation unit, or
AM_CPPFLAGS = -DLOCALEDIR=$(localedir_c_make)
for all modules and compilation units together.
@LIBINTL@
or
@LTLIBINTL@
as a library, add the following to
Makefile.am:
<program>_LDADD = @LIBINTL@
for each specific program, or
LDADD = @LIBINTL@
for all programs together. Remember that when you use libtool
to link a program, you need to use @LTLIBINTL@ instead of @LIBINTL@
for that program.
Next: gettext.h in lib/, Previous: Makefile.in at top level, Up: Files You Must Create or Alter [Contents][Index]