diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
| commit | 97d5c458cfa039d857301e1ca7d5af3beb37131d (patch) | |
| tree | b460cd850d0537eb71806ba30358840377b27688 /static/v10/man1/make.1 | |
| parent | b89dc2331a50c63f8b33272a5c4c61ab98abdaa3 (diff) | |
build: Better Build System
Diffstat (limited to 'static/v10/man1/make.1')
| -rw-r--r-- | static/v10/man1/make.1 | 425 |
1 files changed, 0 insertions, 425 deletions
diff --git a/static/v10/man1/make.1 b/static/v10/man1/make.1 deleted file mode 100644 index 66b14bda..00000000 --- a/static/v10/man1/make.1 +++ /dev/null @@ -1,425 +0,0 @@ -.TH MAKE 1 -.CT 1 prog_c writing_troff prog_other -.SH NAME -make \(mi maintain collections of programs -.SH SYNOPSIS -.B make -[ -.B -f -.I makefile -] -[ -.I option ... -] -[ -.I name ... -] -.SH DESCRIPTION -.I Make -executes recipes in -.I makefile -to update the target -.IR names -(usually programs). -If no target is specified, the targets of the first rule in -.I makefile -are updated. -If no -.B -f -option is present, -.L makefile -and -.L Makefile -are tried in order. -If -.I makefile -is -.LR - , -the standard input is taken. -More than one -.B -f -option may appear. -.PP -.I Make -updates a target if it depends on prerequisite files -that have been modified since the target was last modified, -or if the target does not exist. -The prerequisites are updated before the target. -.PP -The makefile -comprises a sequence of rules and macro definitions. -The first line of a rule is a -blank-separated list of targets, then a single or double colon, -then a list of prerequisite files terminated by semicolon or newline. -Text following a semicolon, and all following lines -that begin with a tab, are shell commands: -the recipe for updating the target. -.PP -If a name appears as target in more than one single-colon rule, it depends -on all of the prerequisites of those rules, but only -one recipe may be specified among the rules. -A target in a double-colon rule is updated by the following -recipe only if it is out of date with respect to the -prerequisites of that rule. -.PP -Two special forms of name are recognized. -A name like -.IR a ( b ) -means the file named -.I b -stored in the archive named -.I a. -A name like -.IR a (( b )) -means the file stored in archive -.I a -and containing the entry point -.I b. -.PP -Sharp and newline surround comments. -.PP -In this makefile -.L pgm -depends on two -files -.L a.o -and -.LR b.o , -and they in turn depend on -.L .c -files and a common file -.LR ab.h : -.PP -.EX -pgm: a.o b.o - cc a.o b.o -lplot -o pgm -.EE -.PP -.EX -a.o: ab.h a.c - cc -c a.c -.EE -.PP -.EX -b.o: ab.h b.c - cc -c b.c -.EE -.PP -Makefile lines of the form -.IP -.IB "string1 " = " string2" -.LP -are macro definitions. -Subsequent appearances of -.BI $( string1 ) -are replaced by -.IR string2 . -If -.I string1 -is a single character, the parentheses are optional; -.B $$ -is replaced by -.BR $ . -Each entry in the environment (see -.IR sh (1)) -of the -.I make -command is taken as a macro definition, -as are command arguments with embedded equal signs. -.PP -Lines of the form -.IB "string1 " := " string2" -occurring in a recipe are assignments: macro definitions -that are made in the course of executing the recipe. -.PP -A target containing a single -.B % -introduces a pattern rule, -which controls the making of names that do not occur -explicitly as targets. -The -.B % -matches an arbitrary string called the stem: -.IB A % B -matches any string that begins with -.I A -and ends with -.I B. -A -.B % -in a prerequisite name stands for the stem; -and the special macro -.B $% -stands for the stem in the recipe. -A name that has no explicit recipe is -matched against the target of each pattern rule. -The first pattern rule for which the prerequisites exist -specifies -further dependencies. -.PP -The following pattern rule maintains an object library where all the C source files -share a common include file -.LR defs.h . -.PP -.EX -arch.a(%.o) : %.c defs.h - cc -c $%.c - ar r arch.a $%.o - rm $%.o -.EE -.PP -A set of default pattern rules is built in, and effectively -follows the user's list of rules. -Assuming these rules, -which tell, among other things, how to make -.B .o -files from -.B .c -files, the first example becomes: -.PP -.EX -pgm: a.o b.o - cc a.o b.o -lplot -o pgm -.EE -.PP -.EX -a.o b.o: ab.h -.EE -.PP -Here, greatly simplified, is a sample of the built-in rules: -.PP -.EX - CC = cc - %.o: %.c - $(CC) $(CFLAGS) -c $%.c - %.o: %.f - f77 $(FFLAGS) -c $%.f - % : %.c - $(CC) $(CFLAGS) -o $% $%.c -.EE -.PP -The first rule -says that a name ending in -.B .o -could be made -if a matching name ending in -.B .c -were present. -The second states a similar rule for files ending in -.BR .f . -The third says that an arbitrary name can be made -by compiling a file with that name suffixed by -.BR .c . -.PP -Macros make the builtin pattern rules flexible: -.B CC -names the particular C compiler, -.B CFLAGS -gives -.IR cc (1) -options, -.B FFLAGS -for -.IR f77 (1), -.B LFLAGS -for -.IR lex (1), -.B YFLAGS -for -.IR yacc (1), -and -.B PFLAGS -for -.IR pascal (A). -.PP -An older, now disparaged, means of specifying default rules -is based only on suffixes. -Prerequisites are inferred according to selected suffixes -listed as the `prerequisites' for the special name -.BR .SUFFIXES ; -multiple lists accumulate; -an empty list clears what came before. -.PP -The rule to create a file with suffix -.I s2 -that depends on a similarly named file with suffix -.I s1 -is specified as an entry -for the `target' -.IR s1s2 . -Order is significant; the first possible name for which both -a file and a rule exist -is inferred. -An old style rule for making -optimized -.B .o -files from -.B .c -files is -.PP -.EX -\&.SUFFIXES: .c .o -\&.c.o: ; cc -c -O -o $@ $*.c -.EE -.PP -The following two macros are defined for use in any rule: -.TP -.B $($@) -full name of target -.PD0 -.TP -.B $($/) -target name beginning at the last slash, if any -.PD -.LP -A number of other special macros are defined -automatically in rules invoked by one of the implicit mechanisms: -.TP -.B $* -target name with suffix deleted -.PD0 -.TP -.B $@ -full target name -.TP -.B $< -list of prerequisites in an implicit rule -.TP -.B $? -list of prerequisites that are out of date -.TP -.B $^ -list of all prerequisites -.PD -.PP -The following are included for consistency with System V: -.TP -.B $(@D) -directory part of -.B $@ -(up to last slash) -.PD0 -.TP -.B $(@F) -file name part of -.B $@ -(after last slash) -.TP -.B $(*D) -directory part of -.B $* -(up to last slash) -.TP -.B $(*F) -file name part of -.B $* -(after last slash) -.TP -.B $(<D) -directory part of -.B $< -(up to last slash) -.TP -.B $(<F) -file name part of -.B $< -(after last slash) -.PD -.PP -Recipe lines are executed one at a time, each by its -own shell. -A line is printed when it is executed unless -the special target -.B .SILENT -is in the makefile, -or the first character of the command is -.BR @ . -.PP -Commands that return nonzero status -cause -.I make -to terminate unless -the special target -.B .IGNORE -is in the makefile -or the command begins with -<tab><hyphen>. -.PP -Interrupt and quit cause the target to be deleted -unless the target depends on the special name -.BR .PRECIOUS . -.PP -.I Make -includes a rudimentary parallel processing ability. -If the separation string is -.B :& -or -.B ::& , -.I make -can run the command sequences to create the prerequisites -simultaneously. -If two names are separated by an ampersand on the right side -of a colon, those two may be created in parallel. -.PP -Other options: -.TP -.B -i -Equivalent to the special entry -.L .IGNORE: . -.TP -.B -k -When a command returns nonzero status, -abandon work on the current entry, but -continue on branches that do not depend on the current entry. -.TP -.B -n -Trace and print, but do not execute the commands -needed to update the targets. -.TP -.B -t -Touch, i.e. update the modified date of targets, without -executing any commands. -.TP -.B -r -Turn off built-in rules. -.TP -.B -s -Equivalent to the special entry -.BR .SILENT: . -.TP -.B -e -Environment definitions override conflicting definitions in arguments -or in makefiles. -Ordinary precedence is argument over makefile -over environment. -.TP -.B -o -Assume old style default suffix list: -.L -\&.SUFFIXES: .out .o .c .e .r .f .y .l .s .p -.TP -.BI -P n -Permit -.I n -command sequences to be done in parallel with -.BR & . -.TP -.B -z -Run commands by passing them to the shell; -normally simple commands are run directly by -.IR exec (2). -.SH FILES -.F makefile -.br -.F Makefile -.SH "SEE ALSO" -.IR sh (1), -.I touch -in -.IR chdate (1), -.IR ar (1), -.IR mk (1) -.SH BUGS -Comments can't appear on recipe lines. -.br -Archive entries are not handled reliably. |
