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

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

     
    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@
    

  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
    


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

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