summaryrefslogtreecommitdiff
path: root/devdocs/gnu_make/complex-makefile.html
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2025-08-14 22:58:58 -0500
committerCraig Jennings <c@cjennings.net>2025-08-14 22:58:58 -0500
commit82ba818ff456bcd6d56a06226e3f27e98fbb55c3 (patch)
tree158cfc17b2f644a10f063cb546752cfaae12c97f /devdocs/gnu_make/complex-makefile.html
parent9278ddd4ea1a8b1a4c1edaa8894516e3f48d245b (diff)
downloaddotemacs-82ba818ff456bcd6d56a06226e3f27e98fbb55c3.tar.gz
dotemacs-82ba818ff456bcd6d56a06226e3f27e98fbb55c3.zip
removing all downloaded devdocs files
Diffstat (limited to 'devdocs/gnu_make/complex-makefile.html')
-rw-r--r--devdocs/gnu_make/complex-makefile.html230
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 \
- &gt; 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` &gt; .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 \
- &gt; 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>