DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 
Managing file interactions with make

Internal rules

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


Previous topic: Suggestions and warnings

© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 -- 02 June 2005