www.delorie.com/gnu/docs/gettext/gettext_187.html   search  
Buy GNU books!

GNU gettext utilities

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

12.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':

  1. In view of the `dist:' goal, you should have these lines near the beginning of `src/Makefile.in':


  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 see section 3.1 Triggering gettext Operations), like this:

    bindtextdomain (PACKAGE, LOCALEDIR);
    textdomain (PACKAGE);

    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 @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:


    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@

  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); \

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

  webmaster     delorie software   privacy  
  Copyright 2003   by The Free Software Foundation     Updated Jun 2003