diff options
Diffstat (limited to 'devdocs/gnu_make/complex-makefile.html')
| -rw-r--r-- | devdocs/gnu_make/complex-makefile.html | 230 |
1 files changed, 0 insertions, 230 deletions
diff --git a/devdocs/gnu_make/complex-makefile.html b/devdocs/gnu_make/complex-makefile.html deleted file mode 100644 index 72b60426..00000000 --- a/devdocs/gnu_make/complex-makefile.html +++ /dev/null @@ -1,230 +0,0 @@ - <h1 class="appendix"> Complex Makefile Example</h1> <p>Here is the makefile for the GNU <code>tar</code> program. This is a moderately complex makefile. The first line uses a <code>#!</code> setting to allow the makefile to be executed directly. </p> <p>Because it is the first target, the default goal is ‘<samp>all</samp>’. An interesting feature of this makefile is that <samp>testpad.h</samp> is a source file automatically created by the <code>testpad</code> program, itself compiled from <samp>testpad.c</samp>. </p> <p>If you type ‘<samp>make</samp>’ or ‘<samp>make all</samp>’, then <code>make</code> creates the <samp>tar</samp> executable, the <samp>rmt</samp> daemon that provides remote tape access, and the <samp>tar.info</samp> Info file. </p> <p>If you type ‘<samp>make install</samp>’, then <code>make</code> not only creates <samp>tar</samp>, <samp>rmt</samp>, and <samp>tar.info</samp>, but also installs them. </p> <p>If you type ‘<samp>make clean</samp>’, then <code>make</code> removes the ‘<samp>.o</samp>’ files, and the <samp>tar</samp>, <samp>rmt</samp>, <samp>testpad</samp>, <samp>testpad.h</samp>, and <samp>core</samp> files. </p> <p>If you type ‘<samp>make distclean</samp>’, then <code>make</code> not only removes the same files as does ‘<samp>make clean</samp>’ but also the <samp>TAGS</samp>, <samp>Makefile</samp>, and <samp>config.status</samp> files. (Although it is not evident, this makefile (and <samp>config.status</samp>) is generated by the user with the <code>configure</code> program, which is provided in the <code>tar</code> distribution, but is not shown here.) </p> <p>If you type ‘<samp>make realclean</samp>’, then <code>make</code> removes the same files as does ‘<samp>make distclean</samp>’ and also removes the Info files generated from <samp>tar.texinfo</samp>. </p> <p>In addition, there are targets <code>shar</code> and <code>dist</code> that create distribution kits. </p> <div class="example"> <pre class="example">#!/usr/bin/make -f -# Generated automatically from Makefile.in by configure. -# Un*x Makefile for GNU tar program. -# Copyright (C) 1991 Free Software Foundation, Inc. -</pre> - -<pre class="example"># This program is free software; you can redistribute -# it and/or modify it under the terms of the GNU -# General Public License … -… -… -</pre> -<pre class="example"> - -SHELL = /bin/sh - -#### Start of system configuration section. #### - -srcdir = . - -</pre> -<pre class="example"># 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 -</pre> -<pre class="example"> - -# 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 - -</pre> -<pre class="example">CDEBUG = -g -CFLAGS = $(CDEBUG) -I. -I$(srcdir) $(DEFS) \ - -DDEF_AR_FILE=\"$(DEF_AR_FILE)\" \ - -DDEFBLOCKING=$(DEFBLOCKING) -LDFLAGS = -g -</pre> - -<pre class="example">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 -</pre> -<pre class="example"> - -#### End of system configuration section. #### - -</pre> -<pre class="example">SRCS_C = tar.c create.c extract.c buffer.c \ - getoldopt.c update.c gnu.c mangle.c \ - version.c list.c names.c diffarch.c \ - port.c wildmat.c getopt.c getopt1.c \ - regex.c -SRCS_Y = getdate.y -SRCS = $(SRCS_C) $(SRCS_Y) -OBJS = $(SRCS_C:.c=.o) $(SRCS_Y:.y=.o) $(RTAPELIB) -</pre> -<pre class="example">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 -</pre> -<pre class="example"> - -.PHONY: all -all: tar rmt tar.info - -</pre> -<pre class="example">tar: $(OBJS) - $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) -</pre> - -<pre class="example">rmt: rmt.c - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ rmt.c -</pre> - -<pre class="example">tar.info: tar.texinfo - makeinfo tar.texinfo -</pre> - -<pre class="example">.PHONY: install -install: all - $(INSTALL) tar $(bindir)/$(binprefix)tar - -test ! -f rmt || $(INSTALL) rmt /etc/rmt - $(INSTALLDATA) $(srcdir)/tar.info* $(infodir) -</pre> - -<pre class="example">$(OBJS): tar.h port.h testpad.h -regex.o buffer.o tar.o: regex.h -# getdate.y has 8 shift/reduce conflicts. -</pre> - -<pre class="example">testpad.h: testpad - ./testpad -</pre> - -<pre class="example">testpad: testpad.o - $(CC) -o $@ testpad.o -</pre> - -<pre class="example">TAGS: $(SRCS) - etags $(SRCS) -</pre> - -<pre class="example">.PHONY: clean -clean: - rm -f *.o tar rmt testpad testpad.h core -</pre> - -<pre class="example">.PHONY: distclean -distclean: clean - rm -f TAGS Makefile config.status -</pre> - -<pre class="example">.PHONY: realclean -realclean: distclean - rm -f tar.info* -</pre> - -<pre class="example">.PHONY: shar -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 -</pre> - -<pre class="example">.PHONY: dist -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` - tar chZf `cat .fname`.tar.Z `cat .fname` - -rm -rf `cat .fname` .fname -</pre> - -<pre class="example">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 -</pre> -</div><div class="_attribution"> - <p class="_attribution-p"> - Copyright © 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Free Software Foundation, Inc. <br>Licensed under the GNU Free Documentation License.<br> - <a href="https://www.gnu.org/software/make/manual/html_node/Complex-Makefile.html" class="_attribution-link">https://www.gnu.org/software/make/manual/html_node/Complex-Makefile.html</a> - </p> -</div> |
