DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(gettext.info.gz) src/Makefile

Info Catalog (gettext.info.gz) Makefile (gettext.info.gz) Adjusting Files (gettext.info.gz) lib/gettext
 
 13.4.12 `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  Triggering), 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) || 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:
 
   1. 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, add
      this line to define `localedir':
 
           localedir = $(datadir)/locale
 
   2. To ensure that the final linking will use `@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.
 
   3. If you have an `intl/' directory, whose contents is created by
      `gettextize', then to ensure that it will be searched for C
      preprocessor include files in all circumstances, add something like
      this to `Makefile.am':
 
           AM_CPPFLAGS = -I../intl -I$(top_srcdir)/intl
 
 
Info Catalog (gettext.info.gz) Makefile (gettext.info.gz) Adjusting Files (gettext.info.gz) lib/gettext
automatically generated byinfo2html