`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':
1. In view of the `dist:' goal, you should have these lines near the
beginning of `src/Makefile.in':
PACKAGE = @PACKAGE@
VERSION = @VERSION@
2. If not done already, you should guarantee that `top_srcdir' gets
defined. This will serve for `cpp' include files. Just add the
line:
top_srcdir = @top_srcdir@
3. You might also want to define `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
4. The `main' function of your program will normally call
`bindtextdomain' (see Note:Triggering), like this:
bindtextdomain (PACKAGE, LOCALEDIR);
To make LOCALEDIR known to the program, add the following lines to
Makefile.in:
datadir = @datadir@
localedir = $(datadir)/locale
DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
Note that `@datadir@' defaults to `$(prefix)/share', thus
`$(localedir)' defaults to `$(prefix)/share/locale'.
5. You should ensure that the final linking will use `@INTLLIBS@' as
a library. An easy way to achieve this is to manage that it gets
into `LIBS', like this:
LIBS = @INTLLIBS@ @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 it is
not enough to place the support library (say `libsupport.a') just
between the `@INTLLIBS@' and `@LIBS@' in the above example.
Instead one has to write this:
LIBS = ../lib/libsupport.a @INTLLIBS@ ../lib/libsupport.a @LIBS@
6. You should also ensure that directory `intl/' will be searched for
C preprocessor include files in all circumstances. So, you have to
manage so both `-I../intl' and `-I$(top_srcdir)/intl' will be
given to the C compiler.
7. 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); \
done