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 echo egrep expr grep ln mkdir mv pwd rm rmdir sed test touch
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.
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 lex make makeinfo ranlib texi2dvi yacc
Use the following make
variables:
$(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LEX) $(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC)
When you use ranlib
, you should make sure nothing bad happens if
the system does not have ranlib
. Arrange to ignore an error
from that command, and print a message before the command to tell the
user that failure of the ranlib
command does not mean a problem.
If you use symbolic links, you should implement a fallback for systems that don't have symbolic links.
It is ok to use other utilities in Makefile portions (or scripts) intended only for particular systems where you know those utilities to exist.