UNIX in a Nutshell: System V Edition

UNIX in a Nutshell: System V EditionSearch this book
Previous: 20.6 Writing Command LinesChapter 20
The make Utility
Next: V. Appendixes
 

20.7 Sample Default Macros, Suffixes, and Rules

.SUFFIXES: .o .c .c~ .y .y~ .l .l~ .s .s~ .sh .sh~ .h .h~ .f .f~ \
.C .C~ .Y .Y~ .L .L~

MAKE=make
BUILD=build
AR=ar
ARFLAGS=rv
AS=as
ASFLAGS=
CC=cc
CFLAGS=-O
F77=f77
FFLAGS=-O
GET=get
GFLAGS=
LD=ld
LDFLAGS=
LEX=lex
LFLAGS=
YACC=yacc
YFLAGS=
C++C=CC
C++FLAGS=-O

.c:
	$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
.c~:
	$(GET) $(GFLAGS) $<
	$(CC) $(CFLAGS) $*.c -o $@ $(LDFLAGS)
	-rm -f $*.c
.f:
	$(F77) $(FFLAGS) $< -o $@ $(LDFLAGS)
.f~:
	$(GET) $(GFLAGS) $<
	$(F77) $(FFLAGS) $*.f -o $@ $(LDFLAGS)
	-rm -f $*.f
.s:
	$(AS) $(ASFLAGS) $< -o $@ $(LDFLAGS)
.s~:
	$(GET) $(GFLAGS) $<
	$(AS) $(ASFLAGS) $*.s -o $* $(LDFLAGS)
	-rm -f $*.s
.sh:
	cp $< $@; chmod 0777 $@
.sh~:
	$(GET) $(GFLAGS) $<
	cp $*.sh $*; chmod 0777 $@
	-rm -f $*.sh
.C:
	$(C++C) $(C++FLAGS) $< -o $@ $(LDFLAGS)
.C~:
	$(GET) $(GFLAGS) $<
	$(C++C) $(C++FLAGS) $*.C -o $@ $(LDFLAGS)
	-rm -f $*.C

.c.a:
	$(CC) $(CFLAGS) -c $<
	$(AR) $(ARFLAGS) $@ $*.o
	-rm -f $*.o
.c.o:
	$(CC) $(CFLAGS) -c $<
.c~.a:
	$(GET) $(GFLAGS) $<
	$(CC) $(CFLAGS) -c $*.c
	$(AR) $(ARFLAGS) $@ $*.o
	-rm -f $*.[co]
.c~.c:
	$(GET) $(GFLAGS) $<
.c~.o:
	$(GET) $(GFLAGS) $<
	$(CC) $(CFLAGS) -c $*.c
	-rm -f $*.c
.f.a:
	$(F77) $(FFLAGS) -c $*.f
	$(AR) $(ARFLAGS) $@ $*.o
	-rm -f $*.o
.f.o:
	$(F77) $(FFLAGS) -c $*.f
.f~.a:
	$(GET) $(GFLAGS) $<
	$(F77) $(FFLAGS) -c $*.f
	$(AR) $(ARFLAGS) $@ $*.o
	-rm -f $*.[fo]
.f~.f:
	$(GET) $(GFLAGS) $<
.f~.o:
	$(GET) $(GFLAGS) $<
	$(F77) $(FFLAGS) -c $*.f
	-rm -f $*.f
.h~.h:
	$(GET) $(GFLAGS) $<
.l.c:
	$(LEX) $(LFLAGS) $<
	mv lex.yy.c $@
.l.o:
	$(LEX) $(LFLAGS) $<
	$(CC) $(CFLAGS) -c lex.yy.c
	-rm lex.yy.c; mv lex.yy.o $@
.l~.c:
	$(GET) $(GFLAGS) $<
	$(LEX) $(LFLAGS) $*.l
	mv lex.yy.c $@
	-rm -f $*.l
.l~.l:
	$(GET) $(GFLAGS) $<
.l~.o:
	$(GET) $(GFLAGS) $<
	$(LEX) $(LFLAGS) $*.l
	$(CC) $(CFLAGS) -c lex.yy.c
	-rm -f lex.yy.c $*.l
	mv lex.yy.o $@
.s.a:
	$(AS) $(ASFLAGS) -o $*.o $*.s
	$(AR) $(ARFLAGS) $@ $*.o
.s.o:
	$(AS) $(ASFLAGS) -o $@ $<
.s~.a:
	$(GET) $(GFLAGS) $<
	$(AS) $(ASFLAGS) -o $*.o $*.s
	$(AR) $(ARFLAGS) $@ $*.o
	-rm -f $*.[so]
.s~.o:
	$(GET) $(GFLAGS) $<
	$(AS) $(ASFLAGS) -o $*.o $*.s
	-rm -f $*.s
.s~.s:
	$(GET) $(GFLAGS) $<
.sh~.sh:
	$(GET) $(GFLAGS) $<
.y.c:
	$(YACC) $(YFLAGS) $<
	mv y.tab.c $@
.y.o:
	$(YACC) $(YFLAGS) $<
	$(CC) $(CFLAGS) -c y.tab.c
	-rm y.tab.c
	mv y.tab.o $@
.y~.c:
	$(GET) $(GFLAGS) $<
	$(YACC) $(YFLAGS) $*.y
	mv y.tab.c $*.c
	-rm -f $*.y
.y~.o:
	$(GET) $(GFLAGS) $<
	$(YACC) $(YFLAGS) $*.y
	$(CC) $(CFLAGS) -c y.tab.c
	-rm -f y.tab.c $*.y
	mv y.tab.o $*.o
.y~.y :
	$(GET) $(GFLAGS) $<
.C.a:
	$(C++C) $(C++FLAGS) -c $<
	$(AR) $(ARFLAGS) $@ $*.o
	-rm -f $*.o
.C.o:
	$(C++C) $(C++FLAGS) -c $<
.C~.a:
	$(GET) $(GFLAGS) $<
	$(C++C) $(C++FLAGS) -c $*.C
	$(AR) $(ARFLAGS) $@ $*.o
	-rm -f $*.[Co]
.C~.C:
	$(GET) $(GFLAGS) $<
.C~.o:
	$(GET) $(GFLAGS) $<
	$(C++C) $(C++FLAGS) -c $*.C
	-rm -f $*.C
.L.C:
	$(LEX) $(LFLAGS) $<
	mv lex.yy.c $@
.L.o:
	$(LEX) $(LFLAGS) $<
	$(C++C) $(C++FLAGS) -c lex.yy.c
	-rm lex.yy.c; mv lex.yy.o $@
.L~.C:
	$(GET) $(GFLAGS) $<
	$(LEX) $(LFLAGS) $*.L
	mv lex.yy.c $@
	-rm -f $*.L
.L~.L:
	$(GET) $(GFLAGS) $<
.L~.o:
	$(GET) $(GFLAGS) $<
	$(LEX) $(LFLAGS) $*.L
	$(C++C) $(C++FLAGS) -c lex.yy.c
	-rm -f lex.yy.c $*.L
	mv lex.yy.c $@
.Y.C:
	$(YACC) $(YFLAGS) $<
	mv y.tab.c $@
.Y.o:
	$(YACC) $(YFLAGS) $<
	$(C++C) $(C++FLAGS) -c y.tab.c
	-rm y.tab.c
	mv y.tab.o $@
.Y~.C:
	$(GET) $(GFLAGS) $<
	$(YACC) $(YFLAGS) $*.Y
	mv y.tab.c $*.C
	-rm -f $*.Y
.Y~.o:
	$(GET) $(GFLAGS) $<
	$(YACC) $(YFLAGS) $*.Y
	$(C++C) $(C++FLAGS) -c y.tab.c
	-rm -f y.tab.c $*.Y
	mv y.tab.o $*.o
.Y~.Y :
	$(GET) $(GFLAGS) $<

markfile.o:	markfile
	echo "static char _sccsid[] = \"`grep @'(#)' markfile`\";" > markfile.c
	$(CC) -c markfile.c
	-rm -f markfile.c

.SCCS_GET:
	$(GET) $(GFLAGS)  s.$@


Previous: 20.6 Writing Command LinesUNIX in a Nutshell: System V EditionNext: V. Appendixes
20.6 Writing Command LinesBook IndexV. Appendixes

The UNIX CD Bookshelf NavigationThe UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System