summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/am/bootstrap.am
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-02-25 19:22:25 +0000
committerKarl Berry <karl@freefriends.org>2021-02-25 19:22:25 +0000
commitad547a6b5986815fda458221149728d9d9ab1d87 (patch)
tree16296910eb3eca724371474ea9aea3994dc69614 /Build/source/texk/web2c/am/bootstrap.am
parent947b43de3dd21d58ccc2ffadefc4441ea1c2a813 (diff)
restore Build,TODO from r57911
git-svn-id: svn://tug.org/texlive/trunk@57915 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/am/bootstrap.am')
-rw-r--r--Build/source/texk/web2c/am/bootstrap.am99
1 files changed, 99 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/am/bootstrap.am b/Build/source/texk/web2c/am/bootstrap.am
new file mode 100644
index 00000000000..63717703ae3
--- /dev/null
+++ b/Build/source/texk/web2c/am/bootstrap.am
@@ -0,0 +1,99 @@
+## texk/web2c/am/bootstrap.am: Makefile fragment for tangle and ctangle.
+##
+## Copyright (C) 2009-2015 Peter Breitenlohner <tex-live@tug.org>
+## You may freely use, modify and/or distribute this file.
+
+cp_silent = $(cp_silent_@AM_V@)
+cp_silent_ = $(cp_silent_@AM_DEFAULT_V@)
+cp_silent_0 = @echo " COPY " $@;
+cp_silent_1 =
+
+# Bootstrapping tangle requires making it with itself. We use the opportunity
+# to create an up-to-date tangleboot.pin as well.
+bin_PROGRAMS += tangle
+nodist_tangle_SOURCES = tangle.c tangle.h
+tangle.c tangle.h: tangle-web2c
+ @$(web2c) tangle
+tangle-web2c: tangle.p $(web2c_depend)
+ @$(web2c) tangle
+# tangle.p is a special case, since it is needed to compile itself. We
+# convert and compile the (distributed) tangleboot.pin to make a tangle
+# which we use to make the other programs. We depend on tangleboot, even
+# though we might not use it.
+tangle.p: tangleboot$(EXEEXT) tangle.web tangle.ch
+ $(tangleboot) tangle tangle
+ @cmp -s tangle.p $(srcdir)/tangleboot.pin || { \
+ if $(AM_V_P); then \
+ echo "Updating tangle.p => $(srcdir)/tangleboot.pin"; \
+ else \
+ echo " UPD " tangleboot.pin; \
+ fi; cp -f tangle.p $(srcdir)/tangleboot.pin; }
+tangle.web:
+ @echo "You seem to be missing tangle.web, perhaps because you" >&2
+ @echo "didn't retrieve web.tar.gz, only web2c.tar.gz." >&2
+ @echo "You need both." >&2
+ @echo >&2
+ @echo "web.tar.gz should be available from the" >&2
+ @echo "same place that you got web2c.tar.gz." >&2
+ @echo "In any case, you can get it from" >&2
+ @echo "ftp://ftp.tug.org/tex/web.tar.gz." >&2
+ false
+EXTRA_DIST += tangle.web tangle.ch
+DISTCLEANFILES += tangle.c tangle.h tangle.p tangle-web2c
+
+noinst_PROGRAMS += tangleboot
+nodist_tangleboot_SOURCES = tangleboot.c tangleboot.h
+tangleboot.c tangleboot.h: tangleboot-web2c
+ @$(web2c) tangleboot
+tangleboot-web2c: tangleboot.p $(web2c_depend)
+ @$(web2c) tangleboot
+# tangleboot.pin is in the distribution
+.pin.p:
+ $(cp_silent)cp -f $< $@
+$(tangleboot_OBJECTS): $(tangleboot_DEPENDENCIES)
+tangleboot_DEPENDENCIES = $(default_dependencies)
+EXTRA_DIST += tangleboot.pin
+DISTCLEANFILES += tangleboot.c tangleboot.h tangleboot.p tangleboot-web2c
+
+# Bootstrapping ctangle requires making it with itself. We use the opportunity
+# to create an up-to-date ctangleboot.cin and cwebboot.cin as well.
+bin_PROGRAMS += ctangle
+nodist_ctangle_SOURCES = ctangle.c cweb.c
+# ctangle.c and cweb.c are special cases, since they are needed to compile
+# themselves. We depend on ctangleboot, even though we might not use it.
+ctangleboot = AM_V_P=$(AM_V_P) $(SHELL) ./ctangleboot-sh $@
+ctangle.c: common-ctangle cwebdir/ctangle.w cwebdir/ctang-w2c.ch
+ @$(ctangleboot) ctangle ctang-w2c
+cweb.c: common-ctangle cwebdir/common.w cwebdir/comm-w2c.ch
+ @$(ctangleboot) common comm-w2c cweb.c
+common-ctangle: ctangleboot$(EXEEXT) cwebdir/comm-w2c.h ctangleboot-sh
+EXTRA_DIST += cwebdir
+NEVER_DIST += cwebdir/cweave.log cwebdir/cweave.trs
+NEVER_DIST += cwebdir/ctwill.log cwebdir/ctwill.trs
+NEVER_DIST += cwebdir/refsort.log cwebdir/refsort.trs
+NEVER_DIST += cwebdir/twinx.log cwebdir/twinx.trs
+## We install man/cweb.man, not cwebdir/cweb.1
+## nodist_man_MANS += cwebdir/cweb.1
+DISTCLEANFILES += ctangle.c cweb.c common-ctangle
+
+noinst_PROGRAMS += ctangleboot
+nodist_ctangleboot_SOURCES = ctangleboot.c cwebboot.c
+$(ctangleboot_OBJECTS): $(ctangleboot_DEPENDENCIES)
+# ctangleboot.cin and cwebboot.cin are in the distribution
+.cin.c:
+ $(cp_silent)cp -f $< $@
+.hin.h:
+ $(cp_silent)cp -f $< $@
+ctangleboot_DEPENDENCIES = $(default_dependencies)
+EXTRA_DIST += ctangleboot.cin cwebboot.cin
+DISTCLEANFILES += ctangleboot.c cwebboot.c
+
+## Tests
+##
+EXTRA_DIST += tangle.test
+
+TESTS += tangle.test
+tangle.log: tangle$(EXEEXT)
+
+DISTCLEANFILES += cftest.p
+