|
|
The standard set of internal rules used by make are reproduced below.
# # SUFFIXES RECOGNIZED BY MAKE #.SUFFIXES: .o .c .c~ .y .y~ .l .l~ .s .s~ .sh .sh~ .h .h~ .f .f~ .C .C~ \ .Y .Y~ .L .L~
# # PREDEFINED MACROS #
AR=ar ARFLAGS=rv AS=as ASFLAGS= BUILD=build CC=cc CFLAGS=-O C++C=CC C++FLAGS=-O F77=f77 FFLAGS=-O GET=get GFLAGS= LEX=lex LFLAGS= LD=ld LDFLAGS= MAKE=make YACC=yacc YFLAGS= # # SPECIAL RULES #
markfile.o : markfile A=@; echo "static char _sccsid[]=\042`grep $$A'(#)' markfile`\042;" \ > markfile.c $(CC) -c markfile.c -rm -f markfile.c # # SINGLE SUFFIX RULES #
.c: $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
.c~: $(GET) $(GFLAGS) $< $(CC) $(CFLAGS) -o $@ $
.c $(LDFLAGS) -rm -f $
.c
.s: $(AS) $(ASFLAGS) -o $*.o $< $(CC) -o $@ $
.o $(LDFLAGS) -rm -f $\(8**.o
.s~: $(GET) $(GFLAGS) $< $(AS) $(ASFLAGS) -o $
.o $
.s $(CC) -o $
$
.o $(LDFLAGS) -rm -f $
.[so]
.sh: cp $< $@; chmod +x $@
.sh~: $(GET) $(GFLAGS) $< cp $
.sh $
; chmod +x $@ -rm -f $
.sh
.f: $(F77) $(FFLAGS) -o $@ $< $(LDFLAGS)
.f~: $(GET) $(GFLAGS) $< $(F77) $(FFLAGS) -o $@ $
.f $(LDFLAGS) -rm -f $
.f
.C: $(C++C) $(C++FLAGS) -o $@ $< $(LDFLAGS)
.C~: $(GET) $(GFLAGS) $< $(C++C) $(C++FLAGS) -o $@ $
.C $(LDFLAGS) -rm -f $
.C # # DOUBLE SUFFIX RULES #
.c~.c .y~.y .l~.l .s~.s .sh~.sh .h~.h: .f~.f .C~.C .Y~.Y .L~.L: $(GET) $(GFLAGS) $<
.c.a: $(CC) $(CFLAGS) -c $< $(AR) $(ARFLAGS) $@ $(<F:.c=.o) -rm -f $(<F:.c=.o)
.c~.a: $(GET) $(GFLAGS) $< $(CC) $(CFLAGS) -c $
.c $(AR) $(ARFLAGS) $@ $
.o -rm -f $
.[co]
.c.o: $(CC) $(CFLAGS) -c $<
.c~.o: $(GET) $(GFLAGS) $< $(CC) $(CFLAGS) -c $
.c -rm -f $
.c
.y.c: $(YACC) $(YFLAGS) $< mv y.tab.c $@
.y~.c: $(GET) $(GFLAGS) $< $(YACC) $(YFLAGS) $
.y mv y.tab.c $
.c -rm -f $
.y
.y.o: $(YACC) $(YFLAGS) $< $(CC) $(CFLAGS) -c y.tab.c -rm -f y.tab.c mv y.tab.o $@
.y~.o: $(GET) $(GFLAGS) $< $(YACC) $(YFLAGS) $
.y $(CC) $(CFLAGS) -c y.tab.c -rm -f y.tab.c $
.y mv y.tab.o $
.o
.l.c: $(LEX) $(LFLAGS) $< mv lex.yy.c $@
.l~.c: $(GET) $(GFLAGS) $< $(LEX) $(LFLAGS) $
.l mv lex.yy.c $@ -rm -f $
.l
.l.o: $(LEX) $(LFLAGS) $< $(CC) $(CFLAGS) -c lex.yy.c -rm -f lex.yy.c mv lex.yy.o $@
.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~.a: $(GET) $(GFLAGS) $< $(AS) $(ASFLAGS) -o $
.o $
.s $(AR) $(ARFLAGS) $@ $
.o -rm -f $
.[so]
.s.o: $(AS) $(ASFLAGS) -o $@ $<
.s~.o: $(GET) $(GFLAGS) $< $(AS) $(ASFLAGS) -o $
.o $
.s -rm -f $
.s
.f.a: $(F77) $(FFLAGS) -c $
.f $(AR) $(ARFLAGS) $@ $(<F:.f=.o) -rm -f $(<F:.f=.o)
.f~.a: $(GET) $(GFLAGS) $< $(F77) $(FFLAGS) -c $
.f $(AR) $(ARFLAGS) $@ $
.o -rm -f $
.[fo]
.f.o: $(F77) $(FFLAGS) -c $
.f
.f~.o: $(GET) $(GFLAGS) $< $(F77) $(FFLAGS) -c $
.f -rm -f $
.f
.C.a: $(C++C) $(C++FLAGS) -c $< $(AR) $(ARFLAGS) $@ $(<F:.C=.o) -rm -f $(<F:.C=.o)
.C~.a: $(GET) $(GFLAGS) $< $(C++C) $(C++FLAGS) -c $
.C $(AR) $(ARFLAGS) $@ $
.o -rm -f $
.[Co]
.C.o: $(C++C) $(C++FLAGS) -c $<
.C~.o: $(GET) $(GFLAGS) $< $(C++C) $(C++FLAGS) -c $
.C -rm -f $
.C
.Y.C: $(YACC) $(YFLAGS) $< mv y.tab.c $@
.Y~.C: $(GET) $(GFLAGS) $< $(YACC) $(YFLAGS) $
.Y mv y.tab.c $
.C -rm -f $
.Y
.Y.o: $(YACC) $(YFLAGS) $< $(C++C) $(C++FLAGS) -c y.tab.c -rm -f y.tab.c mv y.tab.o $@
.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
.L.C: $(LEX) $(LFLAGS) $< mv lex.yy.c $@
.L~.C: $(GET) $(GFLAGS) $< $(LEX) $(LFLAGS) $
.L mv lex.yy.c $@ -rm -f $
.L
.L.o: $(LEX) $(LFLAGS) $< $(C++C) $(C++FLAGS) -c lex.yy.c -rm -f lex.yy.c mv lex.yy.o $@
.L~.o: $(GET) $(GFLAGS) $< $(LEX) $(LFLAGS) $
.L $(C++C) $(C++FLAGS) -c lex.yy.c -rm -f lex.yy.c $
.L mv lex.yy.o $@
make internal rules