Gettext/src 002fMakefile
Next: lib/gettext.h, Previous: Makefile, Up: Adjusting Files [Contents][Index]
13.4.11 Makefile.in
in src/
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
:
- In view of the ‘
dist:
’ goal, you should have these lines near the beginning ofsrc/Makefile.in
:PACKAGE = @PACKAGE@ VERSION = @VERSION@
- If not done already, you should guarantee that
top_srcdir
gets defined. This will serve forcpp
include files. Just add the line:top_srcdir = @top_srcdir@
- You might also want to define
subdir
as ‘src
’, later allowing for almost uniform ‘dist:
’ goals in all yourMakefile.in
. At list, the ‘dist:
’ goal below assume that you used:subdir = src
The
main
function of your program will normally callbindtextdomain
(see see Triggering), like this:bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE);
On native Windows platforms, the
main
function may callwbindtextdomain
instead ofbindtextdomain
.To make LOCALEDIR known to the program, add the following lines to
Makefile.in
:datadir = @datadir@ datarootdir= @datarootdir@ localedir = @localedir@ DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
Note that
@datadir@
defaults to ‘$(prefix)/share
’, and$(localedir)
defaults to ‘$(prefix)/share/locale
’.You should ensure that the final linking will use
@LIBINTL@
or@LTLIBINTL@
as a library.@LIBINTL@
is for use withoutlibtool
,@LTLIBINTL@
is for use withlibtool
. An easy way to achieve this is to manage that it gets intoLIBS
, like this:LIBS = @LIBINTL@ @LIBS@
In most packages internationalized with GNU
gettext
, one will find a directorylib/
in which a library containing some helper functions will be build. (You need at least the few functions which the GNUgettext
Library itself needs.) However some of the functions in thelib/
also give messages to the user which of course should be translated, too. Taking care of this, the support library (saylibsupport.a
) should be placed before@LIBINTL@
and@LIBS@
in the above example. So one has to write this:LIBS = ../lib/libsupport.a @LIBINTL@ @LIBS@
- Your ‘
dist:
’ goal has to conform with others. Here is a reasonable definition for it: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:
To make LOCALEDIR known to the program, add the following to
Makefile.am
:<module>_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\"
for each specific module or compilation unit, or
AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\"
for all modules and compilation units together. Furthermore, if you are using an Autoconf version older then 2.60, add this line to define ‘
localedir
’:localedir = $(datadir)/locale
To ensure that the final linking will use
@LIBINTL@
or@LTLIBINTL@
as a library, add the following toMakefile.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: lib/gettext.h, Previous: Makefile, Up: Adjusting Files [Contents][Index]