DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(make.info.gz) Utilities in Makefiles

Info Catalog (make.info.gz) Makefile Basics (make.info.gz) Makefile Conventions (make.info.gz) Command Variables
 
 14.2 Utilities in Makefiles
 ===========================
 
 Write the Makefile commands (and any shell scripts, such as
 `configure') to run in `sh', not in `csh'.  Don't use any special
 features of `ksh' or `bash'.
 
    The `configure' script and the Makefile rules for building and
 installation should not use any utilities directly except these:
 
      cat cmp cp diff echo egrep expr false grep install-info
      ln ls mkdir mv pwd rm rmdir sed sleep sort tar test touch true
 
    The compression program `gzip' can be used in the `dist' rule.
 
    Stick to the generally supported options for these programs.  For
 example, don't use `mkdir -p', convenient as it may be, because most
 systems don't support it.
 
    It is a good idea to avoid creating symbolic links in makefiles,
 since a few systems don't support them.
 
    The Makefile rules for building and installation can also use
 compilers and related programs, but should do so via `make' variables
 so that the user can substitute alternatives.  Here are some of the
 programs we mean:
 
      ar bison cc flex install ld ldconfig lex
      make makeinfo ranlib texi2dvi yacc
 
    Use the following `make' variables to run those programs:
 
      $(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX)
      $(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC)
 
    When you use `ranlib' or `ldconfig', you should make sure nothing
 bad happens if the system does not have the program in question.
 Arrange to ignore an error from that command, and print a message before
 the command to tell the user that failure of this command does not mean
 a problem.  (The Autoconf `AC_PROG_RANLIB' macro can help with this.)
 
    If you use symbolic links, you should implement a fallback for
 systems that don't have symbolic links.
 
    Additional utilities that can be used via Make variables are:
 
      chgrp chmod chown mknod
 
    It is ok to use other utilities in Makefile portions (or scripts)
 intended only for particular systems where you know those utilities
 exist.
 
Info Catalog (make.info.gz) Makefile Basics (make.info.gz) Makefile Conventions (make.info.gz) Command Variables
automatically generated byinfo2html