Next: , Previous: , Up: Adjusting Files   [Contents][Index]


13.4.11 Makefile.in at top level

Here are a few modifications you need to make to your main, top-level Makefile.in file.

  1. Add the following lines near the beginning of your Makefile.in, so the ‘dist:’ goal will work properly (as explained further down):
    PACKAGE = @PACKAGE@
    VERSION = @VERSION@
    
  2. Add file ABOUT-NLS to the DISTFILES definition, so the file gets distributed.
  3. Wherever you process subdirectories in your Makefile.in, be sure you also process the subdirectories ‘intl’ and ‘po’. Special rules in the Makefiles take care for the case where no internationalization is wanted.

    If you are using Makefiles, either generated by automake, or hand-written so they carefully follow the GNU coding standards, the effected goals for which the new subdirectories must be handled include ‘installdirs’, ‘install’, ‘uninstall’, ‘clean’, ‘distclean’.

    Here is an example of a canonical order of processing. In this example, we also define SUBDIRS in Makefile.in for it to be further used in the ‘dist:’ goal.

    SUBDIRS = doc intl lib src po
    

    Note that you must arrange for ‘make’ to descend into the intl directory before descending into other directories containing code which make use of the libintl.h header file. For this reason, here we mention intl before lib and src.

  4. A delicate point is the ‘dist:’ goal, as both intl/Makefile and po/Makefile will later assume that the proper directory has been set up from the main Makefile. Here is an example at what the ‘dist:’ goal might look like:
    distdir = $(PACKAGE)-$(VERSION)
    dist: Makefile
    	rm -fr $(distdir)
    	mkdir $(distdir)
    	chmod 777 $(distdir)
    	for file in $(DISTFILES); do \
    	  ln $$file $(distdir) 2>/dev/null || cp -p $$file $(distdir); \
    	done
    	for subdir in $(SUBDIRS); do \
    	  mkdir $(distdir)/$$subdir || exit 1; \
    	  chmod 777 $(distdir)/$$subdir; \
    	  (cd $$subdir && $(MAKE) $@) || exit 1; \
    	done
    	tar chozf $(distdir).tar.gz $(distdir)
    	rm -fr $(distdir)
    

Note that if you are using GNU automake, Makefile.in is automatically generated from Makefile.am, and all needed changes to Makefile.am are already made by running ‘gettextize’.


Next: , Previous: , Up: Adjusting Files   [Contents][Index]