d00
Utilities in Makefiles
Contents|Index|Previous|Next
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 the following:
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.
The following are some of the programs.
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 acceptable to use other utilities in Makefile portions (or scripts)
intended only for particular systems where you know those utilities to exist.
0