home *** CD-ROM | disk | FTP | other *** search
GNU Info File | 1993-12-17 | 16.8 KB | 506 lines |
- This is Info file make.info, produced by Makeinfo-1.54 from the input
- file ./make.texinfo.
-
- This file documents the GNU Make utility, which determines
- automatically which pieces of a large program need to be recompiled,
- and issues the commands to recompile them.
-
- This is Edition 0.45, last updated 14 December 1993, of `The GNU
- Make Manual', for `make', Version 3.70 Beta.
-
- Copyright (C) 1988, '89, '90, '91, '92, '93 Free Software
- Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
- manual provided the copyright notice and this permission notice are
- preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
- this manual under the conditions for verbatim copying, provided that
- the entire resulting derived work is distributed under the terms of a
- permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
- manual into another language, under the above conditions for modified
- versions, except that this permission notice may be stated in a
- translation approved by the Free Software Foundation.
-
- File: make.info, Node: Quick Reference, Next: Complex Makefile, Prev: Makefile Conventions, Up: Top
-
- Quick Reference
- ***************
-
- This appendix summarizes the directives, text manipulation functions,
- and special variables which GNU `make' understands. *Note Special
- Targets::, *Note Catalogue of Implicit Rules: Catalogue of Rules, and
- *Note Summary of Options: Options Summary, for other summaries.
-
- Here is a summary of the directives GNU `make' recognizes:
-
- `define VARIABLE'
- `endef'
- Define a multi-line, recursively-expanded variable.
- *Note Sequences::.
-
- `ifdef VARIABLE'
- `ifndef VARIABLE'
- `ifeq (A,B)'
- `ifeq "A" "B"'
- `ifeq 'A' 'B''
- `ifneq (A,B)'
- `ifneq "A" "B"'
- `ifneq 'A' 'B''
- `else'
- `endif'
- Conditionally evaluate part of the makefile.
- *Note Conditionals::.
-
- `include FILE'
- Include another makefile.
- *Note Including Other Makefiles: Include.
-
- `override VARIABLE = VALUE'
- `override VARIABLE := VALUE'
- `override VARIABLE += VALUE'
- `override define VARIABLE'
- `endef'
- Define a variable, overriding any previous definition, even one
- from the command line.
- *Note The `override' Directive: Override Directive.
-
- `export'
- Tell `make' to export all variables to child processes by default.
- *Note Communicating Variables to a Sub-`make': Variables/Recursion.
-
- `export VARIABLE'
- `export VARIABLE = VALUE'
- `export VARIABLE := VALUE'
- `export VARIABLE += VALUE'
- `unexport VARIABLE'
- Tell `make' whether or not to export a particular variable to child
- processes.
- *Note Communicating Variables to a Sub-`make': Variables/Recursion.
-
- `vpath PATTERN PATH'
- Specify a search path for files matching a `%' pattern.
- *Note The `vpath' Directive: Selective Search.
-
- `vpath PATTERN'
- Remove all search paths previously specified for PATTERN.
-
- `vpath'
- Remove all search paths previously specified in any `vpath'
- directive.
-
- Here is a summary of the text manipulation functions (*note
- Functions::.):
-
- `$(subst FROM,TO,TEXT)'
- Replace FROM with TO in TEXT.
- *Note Functions for String Substitution and Analysis: Text
- Functions.
-
- `$(patsubst PATTERN,REPLACEMENT,TEXT)'
- Replace words matching PATTERN with REPLACEMENT in TEXT.
- *Note Functions for String Substitution and Analysis: Text
- Functions.
-
- `$(strip STRING)'
- Remove excess whitespace characters from STRING.
- *Note Functions for String Substitution and Analysis: Text
- Functions.
-
- `$(findstring FIND,TEXT)'
- Locate FIND in TEXT.
- *Note Functions for String Substitution and Analysis: Text
- Functions.
-
- `$(filter PATTERN...,TEXT)'
- Select words in TEXT that match one of the PATTERN words.
- *Note Functions for String Substitution and Analysis: Text
- Functions.
-
- `$(filter-out PATTERN...,TEXT)'
- Select words in TEXT that *do not* match any of the PATTERN words.
- *Note Functions for String Substitution and Analysis: Text
- Functions.
-
- `$(sort LIST)'
- Sort the words in LIST lexicographically, removing duplicates.
- *Note Functions for String Substitution and Analysis: Text
- Functions.
-
- `$(dir NAMES...)'
- Extract the directory part of each file name.
- *Note Functions for File Names: Filename Functions.
-
- `$(notdir NAMES...)'
- Extract the non-directory part of each file name.
- *Note Functions for File Names: Filename Functions.
-
- `$(suffix NAMES...)'
- Extract the suffix (the last `.' and following characters) of each
- file name.
- *Note Functions for File Names: Filename Functions.
-
- `$(basename NAMES...)'
- Extract the base name (name without suffix) of each file name.
- *Note Functions for File Names: Filename Functions.
-
- `$(addsuffix SUFFIX,NAMES...)'
- Append SUFFIX to each word in NAMES.
- *Note Functions for File Names: Filename Functions.
-
- `$(addprefix PREFIX,NAMES...)'
- Prepend PREFIX to each word in NAMES.
- *Note Functions for File Names: Filename Functions.
-
- `$(join LIST1,LIST2)'
- Join two parallel lists of words.
- *Note Functions for File Names: Filename Functions.
-
- `$(word N,TEXT)'
- Extract the Nth word (one-origin) of TEXT.
- *Note Functions for File Names: Filename Functions.
-
- `$(words TEXT)'
- Count the number of words in TEXT.
- *Note Functions for File Names: Filename Functions.
-
- `$(firstword NAMES...)'
- Extract the first word of NAMES.
- *Note Functions for File Names: Filename Functions.
-
- `$(wildcard PATTERN...)'
- Find file names matching a shell file name pattern (*not* a `%'
- pattern).
- *Note The Function `wildcard': Wildcard Function.
-
- `$(shell COMMAND)'
- Execute a shell command and return its output.
- *Note The `shell' Function: Shell Function.
-
- `$(origin VARIABLE)'
- Return a string describing how the `make' variable VARIABLE was
- defined.
- *Note The `origin' Function: Origin Function.
-
- `$(foreach VAR,WORDS,TEXT)'
- Evaluate TEXT with VAR bound to each word in WORDS, and
- concatenate the results.
- *Note The `foreach' Function: Foreach Function.
-
- Here is a summary of the automatic variables. *Note Automatic
- Variables: Automatic, for full information.
-
- `$@'
- The file name of the target.
-
- `$%'
- The target member name, when the target is an archive member.
-
- `$<'
- The name of the first dependency.
-
- `$?'
- The names of all the dependencies that are newer than the target,
- with spaces between them. For dependencies which are archive
- members, only the member named is used (*note Archives::.).
-
- `$^'
- The names of all the dependencies, with spaces between them. For
- dependencies which are archive members, only the member named is
- used (*note Archives::.).
-
- `$*'
- The stem with which an implicit rule matches (*note How Patterns
- Match: Pattern Match.).
-
- `$(@D)'
- `$(@F)'
- The directory part and the file-within-directory part of `$@'.
-
- `$(*D)'
- `$(*F)'
- The directory part and the file-within-directory part of `$*'.
-
- `$(%D)'
- `$(%F)'
- The directory part and the file-within-directory part of `$%'.
-
- `$(<D)'
- `$(<F)'
- The directory part and the file-within-directory part of `$<'.
-
- `$(^D)'
- `$(^F)'
- The directory part and the file-within-directory part of `$^'.
-
- `$(?D)'
- `$(?F)'
- The directory part and the file-within-directory part of `$?'.
-
- These variables are used specially by GNU `make':
-
- `MAKEFILES'
- Makefiles to be read on every invocation of `make'.
- *Note The Variable `MAKEFILES': MAKEFILES Variable.
-
- `VPATH'
- Directory search path for files not found in the current directory.
- *Note `VPATH' Search Path for All Dependencies: General Search.
-
- `SHELL'
- The name of the system default command interpreter, usually
- `/bin/sh'. You can set `SHELL' in the makefile to change the
- shell used to run commands. *Note Command Execution: Execution.
-
- `MAKE'
- The name with which `make' was invoked. Using this variable in
- commands has special meaning. *Note How the `MAKE' Variable
- Works: MAKE Variable.
-
- `MAKELEVEL'
- The number of levels of recursion (sub-`make's).
- *Note Variables/Recursion::.
-
- `MAKEFLAGS'
- `MFLAGS'
- The flags given to `make'. You can set this in the environment or
- a makefile to set flags.
- *Note Communicating Options to a Sub-`make': Options/Recursion.
-
- `SUFFIXES'
- The default list of suffixes before `make' reads any makefiles.
-
- File: make.info, Node: Complex Makefile, Next: Concept Index, Prev: Quick Reference, Up: Top
-
- Complex Makefile Example
- ************************
-
- Here is the makefile for the GNU `tar' program. This is a
- moderately complex makefile.
-
- Because it is the first target, the default goal is `all'. An
- interesting feature of this makefile is that `testpad.h' is a source
- file automatically created by the `testpad' program, itself compiled
- from `testpad.c'.
-
- If you type `make' or `make all', then `make' creates the `tar'
- executable, the `rmt' daemon that provides remote tape access, and the
- `tar.info' Info file.
-
- If you type `make install', then `make' not only creates `tar',
- `rmt', and `tar.info', but also installs them.
-
- If you type `make clean', then `make' removes the `.o' files, and
- the `tar', `rmt', `testpad', `testpad.h', and `core' files.
-
- If you type `make distclean', then `make' not only removes the same
- files as does `make clean' but also the `TAGS', `Makefile', and
- `config.status' files. (Although it is not evident, this makefile (and
- `config.status') is generated by the user with the `configure' program,
- which is provided in the `tar' distribution, but is not shown here.)
-
- If you type `make realclean', then `make' removes the same files as
- does `make distclean' and also removes the Info files generated from
- `tar.texinfo'.
-
- In addition, there are targets `shar' and `dist' that create
- distribution kits.
-
- # Generated automatically from Makefile.in by configure.
- # Un*x Makefile for GNU tar program.
- # Copyright (C) 1991 Free Software Foundation, Inc.
-
- # This program is free software; you can redistribute
- # it and/or modify it under the terms of the GNU
- # General Public License ...
- ...
- ...
-
- SHELL = /bin/sh
-
- #### Start of system configuration section. ####
-
- srcdir = .
-
- # If you use gcc, you should either run the
- # fixincludes script that comes with it or else use
- # gcc with the -traditional option. Otherwise ioctl
- # calls will be compiled incorrectly on some systems.
- CC = gcc -O
- YACC = bison -y
- INSTALL = /usr/local/bin/install -c
- INSTALLDATA = /usr/local/bin/install -c -m 644
-
- # Things you might add to DEFS:
- # -DSTDC_HEADERS If you have ANSI C headers and
- # libraries.
- # -DPOSIX If you have POSIX.1 headers and
- # libraries.
- # -DBSD42 If you have sys/dir.h (unless
- # you use -DPOSIX), sys/file.h,
- # and st_blocks in `struct stat'.
- # -DUSG If you have System V/ANSI C
- # string and memory functions
- # and headers, sys/sysmacros.h,
- # fcntl.h, getcwd, no valloc,
- # and ndir.h (unless
- # you use -DDIRENT).
- # -DNO_MEMORY_H If USG or STDC_HEADERS but do not
- # include memory.h.
- # -DDIRENT If USG and you have dirent.h
- # instead of ndir.h.
- # -DSIGTYPE=int If your signal handlers
- # return int, not void.
- # -DNO_MTIO If you lack sys/mtio.h
- # (magtape ioctls).
- # -DNO_REMOTE If you do not have a remote shell
- # or rexec.
- # -DUSE_REXEC To use rexec for remote tape
- # operations instead of
- # forking rsh or remsh.
- # -DVPRINTF_MISSING If you lack vprintf function
- # (but have _doprnt).
- # -DDOPRNT_MISSING If you lack _doprnt function.
- # Also need to define
- # -DVPRINTF_MISSING.
- # -DFTIME_MISSING If you lack ftime system call.
- # -DSTRSTR_MISSING If you lack strstr function.
- # -DVALLOC_MISSING If you lack valloc function.
- # -DMKDIR_MISSING If you lack mkdir and
- # rmdir system calls.
- # -DRENAME_MISSING If you lack rename system call.
- # -DFTRUNCATE_MISSING If you lack ftruncate
- # system call.
- # -DV7 On Version 7 Unix (not
- # tested in a long time).
- # -DEMUL_OPEN3 If you lack a 3-argument version
- # of open, and want to emulate it
- # with system calls you do have.
- # -DNO_OPEN3 If you lack the 3-argument open
- # and want to disable the tar -k
- # option instead of emulating open.
- # -DXENIX If you have sys/inode.h
- # and need it 94 to be included.
-
- DEFS = -DSIGTYPE=int -DDIRENT -DSTRSTR_MISSING \
- -DVPRINTF_MISSING -DBSD42
- # Set this to rtapelib.o unless you defined NO_REMOTE,
- # in which case make it empty.
- RTAPELIB = rtapelib.o
- LIBS =
- DEF_AR_FILE = /dev/rmt8
- DEFBLOCKING = 20
-
- CDEBUG = -g
- CFLAGS = $(CDEBUG) -I. -I$(srcdir) $(DEFS) \
- -DDEF_AR_FILE=\"$(DEF_AR_FILE)\" \
- -DDEFBLOCKING=$(DEFBLOCKING)
- LDFLAGS = -g
-
- prefix = /usr/local
- # Prefix for each installed program,
- # normally empty or `g'.
- binprefix =
-
- # The directory to install tar in.
- bindir = $(prefix)/bin
-
- # The directory to install the info files in.
- infodir = $(prefix)/info
-
- #### End of system configuration section. ####
-
- SRC1 = tar.c create.c extract.c buffer.c \
- getoldopt.c update.c gnu.c mangle.c
- SRC2 = version.c list.c names.c diffarch.c \
- port.c wildmat.c getopt.c
- SRC3 = getopt1.c regex.c getdate.y
- SRCS = $(SRC1) $(SRC2) $(SRC3)
- OBJ1 = tar.o create.o extract.o buffer.o \
- getoldopt.o update.o gnu.o mangle.o
- OBJ2 = version.o list.o names.o diffarch.o \
- port.o wildmat.o getopt.o
- OBJ3 = getopt1.o regex.o getdate.o $(RTAPELIB)
- OBJS = $(OBJ1) $(OBJ2) $(OBJ3)
- AUX = README COPYING ChangeLog Makefile.in \
- makefile.pc configure configure.in \
- tar.texinfo tar.info* texinfo.tex \
- tar.h port.h open3.h getopt.h regex.h \
- rmt.h rmt.c rtapelib.c alloca.c \
- msd_dir.h msd_dir.c tcexparg.c \
- level-0 level-1 backup-specs testpad.c
-
- all: tar rmt tar.info
-
- tar: $(OBJS)
- $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
-
- rmt: rmt.c
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ rmt.c
-
- tar.info: tar.texinfo
- makeinfo tar.texinfo
-
- install: all
- $(INSTALL) tar $(bindir)/$(binprefix)tar
- -test ! -f rmt || $(INSTALL) rmt /etc/rmt
- $(INSTALLDATA) $(srcdir)/tar.info* $(infodir)
-
- $(OBJS): tar.h port.h testpad.h
- regex.o buffer.o tar.o: regex.h
- # getdate.y has 8 shift/reduce conflicts.
-
- testpad.h: testpad
- ./testpad
-
- testpad: testpad.o
- $(CC) -o $@ testpad.o
-
- TAGS: $(SRCS)
- etags $(SRCS)
-
- clean:
- rm -f *.o tar rmt testpad testpad.h core
-
- distclean: clean
- rm -f TAGS Makefile config.status
-
- realclean: distclean
- rm -f tar.info*
-
- shar: $(SRCS) $(AUX)
- shar $(SRCS) $(AUX) | compress \
- > tar-`sed -e '/version_string/!d' \
- -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
- -e q
- version.c`.shar.Z
-
- dist: $(SRCS) $(AUX)
- echo tar-`sed \
- -e '/version_string/!d' \
- -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
- -e q
- version.c` > .fname
- -rm -rf `cat .fname`
- mkdir `cat .fname`
- ln $(SRCS) $(AUX) `cat .fname`
- -rm -rf `cat .fname` .fname
- tar chZf `cat .fname`.tar.Z `cat .fname`
-
- tar.zoo: $(SRCS) $(AUX)
- -rm -rf tmp.dir
- -mkdir tmp.dir
- -rm tar.zoo
- for X in $(SRCS) $(AUX) ; do \
- echo $$X ; \
- sed 's/$$/^M/' $$X \
- > tmp.dir/$$X ; done
- cd tmp.dir ; zoo aM ../tar.zoo *
- -rm -rf tmp.dir
-
-