GNU Info

Info Node: (standards.info)Utilities in Makefiles

(standards.info)Utilities in Makefiles


Next: Command Variables Prev: Makefile Basics Up: Makefile Conventions
Enter node , (file) or (file)node

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.


automatically generated by info2www version 1.2.2.9