## texk/web2c/am/bootstrap.am: Makefile fragment for tangle and ctangle. ## ## Copyright (C) 2009-2015 Peter Breitenlohner ## 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