aboutsummaryrefslogtreecommitdiff
path: root/src/hyper/Makefile.pamphlet
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2007-08-14 05:14:52 +0000
committerdos-reis <gdr@axiomatics.org>2007-08-14 05:14:52 +0000
commitab8cc85adde879fb963c94d15675783f2cf4b183 (patch)
treec202482327f474583b750b2c45dedfc4e4312b1d /src/hyper/Makefile.pamphlet
downloadopen-axiom-ab8cc85adde879fb963c94d15675783f2cf4b183.tar.gz
Initial population.
Diffstat (limited to 'src/hyper/Makefile.pamphlet')
-rw-r--r--src/hyper/Makefile.pamphlet343
1 files changed, 343 insertions, 0 deletions
diff --git a/src/hyper/Makefile.pamphlet b/src/hyper/Makefile.pamphlet
new file mode 100644
index 00000000..f48ef5b5
--- /dev/null
+++ b/src/hyper/Makefile.pamphlet
@@ -0,0 +1,343 @@
+%% Oh Emacs, this is a -*- Makefile -*-, so give me tabs.
+\documentclass{article}
+\usepackage{axiom}
+
+\title{\$SPAD/src/hyper Makefile}
+\author{Timothy Daly \and Gabriel Dos~Reis}
+
+\begin{document}
+
+\maketitle
+
+\begin{abstract}
+\end{abstract}
+
+\tableofcontents
+\eject
+
+NOTE:
+
+The programs \Tool{hypertex}, \Tool{htadd}, and \Tool{htsearch}, used
+to be installed in [[$(axiom_target_bindir)]]. Now all executable
+from HyperDoc component are installed in [[$(axiom_target_libdir)]].
+
+\section{Environment variables}
+
+The programs \Tool{hypertex} and \Tool{spadbuf} require either
+X11 support or socket support, or both.
+<<environment>>=
+bin_PROGRAMS = htadd$(EXEEXT) hthits$(EXEEXT) ex2ht$(EXEEXT)
+ifeq ($(strip $(axiom_use_x)),yes)
+bin_PROGRAMS += hypertex$(EXEEXT) spadbuf$(EXEEXT)
+endif
+
+# this is where to put the various commands
+OUTLIB= $(axiom_target_libdir)
+
+# this is where the include files live
+INC= $(axiom_src_srcdir)/include
+
+# this is where the hypertex documentation files are
+HYPER=$(axiom_target_datadir)/hypertex
+
+HTADD=$(OUTLIB)/htadd
+
+BITMAPS = mouse11.bitmap mouse11.mask sdown3d.bitmap sdown3dpr.bitmap \
+ sdown.bitmap sup3d.bitmap sup3dpr.bitmap sup.bitmap ht_icon
+
+SCRIPTS=${OUTLIB}/htsearch ${OUTLIB}/presea
+
+BINFILES= $(addprefix $(OUTLIB)/,$(bin_PROGRAMS))
+
+HEADERS = addfile.h cond.h dialog.h display.h event.h extent.h \
+ group.h hterror.h hyper.h initx.h keyin.h lex.h mem.h \
+ parse.h parse-aux.h parse-paste.h parse-types.h scrollbar.h \
+ show-types.h titlebar.h token.h $(axiom_c_macros_h)
+
+
+build_libdir = $(abs_top_builddir)/src/lib
+
+hypertex_sources = addfile.c cond.c dialog.c display.c event.c extent1.c \
+ extent2.c form-ext.c group.c halloc.c hash.c hterror.c \
+ htinp.c hyper.c initx.c input.c item.c keyin.c lex.c \
+ macro.c mem.c parse.c parse-aux.c parse-input.c \
+ parse-paste.c parse-types.c ReadBitmap.c scrollbar.c \
+ show-types.c spadint.c titlebar.c
+
+libspad_la = $(axiom_target_libdir)/libspad.la
+
+hypertex_SOURCES = $(hypertex_sources:.c=.pamphlet)
+hypertex_objects = $(hypertex_sources:.c=.lo)
+hypertex_LDADD = $(libspad_la)
+hypertex_DEPENDENCIES =
+
+htadd_sources = addfile.c halloc.c hash.c htadd.c hterror.c lex.c
+htadd_SOURCES = $(htadd_sources:.c=.pamphlet)
+htadd_objects = $(htadd_sources:.c=.lo)
+htadd_LDADD = $(libspad_la)
+htadd_DEPENDENCIES =
+
+htsearch_SOURCES = search.pamphlet
+
+spadbuf_sources = spadbuf.c
+spadbuf_SOURCES = $(spadbuf_sources:.c=.pamphlet)
+spadbuf_objects = $(spadbuf_sources:.c=.lo)
+spadbuf_LDADD = $(libspad_la)
+spadbuf_DEPENDENCIES =
+
+hthits_sources = hthits.c
+hthits_SOURCES = $(hthits_sources:.c=.pamphlet)
+hthits_objects = $(hthits_sources:.c=.lo)
+hthits_LDADD = $(libspad_la)
+hthits_DEPENDENCIES =
+
+ex2ht_sources = ex2ht.c
+ex2ht_SOURCES = $(ex2ht_sources:.c=.pamphlet)
+ex2ht_objects = $(ex2ht_sources:.c=.lo)
+ex2ht_LDADD = $(libspad_la)
+ex2ht_DEPENDENCIES =
+
+pamphlets = Makefile.pamphlet $(hypertex_SOURCES) $(htadd_SOURCES) \
+ $(htsearch_SOURCES) $(spadbuf_SOURCES) $(hthits_SOURCES) \
+ $(ex2ht_SOURCES)
+@
+
+\section{header files}
+
+We use a very simple and general rule to extract C source code and header
+files. The names of the corresponding files are conveniently named after
+the pamphlet files.
+<<header files>>=
+.PRECIOUS: %.h
+
+$(HEADERS): %.h: $(srcdir)/%.pamphlet
+ $(axiom_build_document) --tangle=$*.h --output=$@ $<
+@
+
+For that naming scheme to work correctly with noweb --- the tool
+currently used by Axiom, to support its notion implementation of literate
+programming --- it must be
+ensured that the filenames contain only characters that can be rendered
+properly by \LaTeX{} in non-math mode. There are various ways to
+ensure that, ranging from restricted character set to escaping active
+characters. We have retained the restricted character set solution.
+
+<<objects>>=
+.PRECIOUS: %.lo %.$(OBJEXT)
+.PRECIOUS: %.c
+
+%.lo: %.c $(HEADERS)
+ $(COMPILE) -o $@ $(CFLAGS) ${CCF} $(axiom_includes) $(AXIOM_X11_CFLAGS) -I. $<
+
+%.c: $(srcdir)/%.pamphlet
+ $(axiom_build_document) --tangle --output=$@ $<
+
+@
+
+
+\section{bitmaps}
+There are two files for each (special) character glyph, one
+for the upper case form, and one for the lower case form.
+For more information about hese bitmaps see 'util.ht' in the
+section 'pages', below.
+
+<<bitmaps>>=
+mouse11.bitmap: $(srcdir)/bitmaps.pamphlet
+ $(axiom_build_document) --tangle=mouse11.bitmap --output=$@ $<
+
+mouse11.mask: $(srcdir)/bitmaps.pamphlet
+ $(axiom_build_document) --tangle=mouse11.mask --output=$@ $<
+
+sdown3d.bitmap: $(srcdir)/bitmaps.pamphlet
+ $(axiom_build_document) --tangle=sdown3d.bitmap --output=$@ $<
+
+sdown3dpr.bitmap: $(srcdir)/bitmaps.pamphlet
+ $(axiom_build_document) --tangle=sdown3dpr.bitmap --output=$@ $<
+
+sdown.bitmap: $(srcdir)/bitmaps.pamphlet
+ $(axiom_build_document) --tangle=sdown.bitmap --output=$@ $<
+
+sup3d.bitmap: $(srcdir)/bitmaps.pamphlet
+ $(axiom_build_document) --tangle=sup3d.bitmap --output=$@ $<
+
+sup3dpr.bitmap: $(srcdir)/bitmaps.pamphlet
+ $(axiom_build_document) --tangle=sup3dpr.bitmap --output=$@ $<
+
+sup.bitmap: $(srcdir)/bitmaps.pamphlet
+ $(axiom_build_document) --tangle=sup.bitmap --output=$@ $<
+
+ht_icon: $(srcdir)/bitmaps.pamphlet
+ $(axiom_build_document) --tangle=hticon --output=$@ $<
+@
+
+\section{search}
+<<search>>=
+${OUTLIB}/htsearch: $(srcdir)/search.pamphlet
+ $(axiom_build_document) --tangle=htsearch --output=$@ $<
+ chmod a+x ${OUTLIB}/htsearch
+
+${OUTLIB}/presea: $(srcdir)/search.pamphlet
+ $(axiom_build_document) --tangle=presea --output=$@ $<
+ chmod a+x ${OUTLIB}/presea
+@
+
+\section{ex2ht binary}
+<<ex2ht (BIN)>>=
+${OUTLIB}/ex2ht$(EXEEXT): $(ex2ht_objects) $(ex2ht_DEPENDENCIES)
+ ${LINK} -o $@ $(ex2ht_objects) $(ex2ht_LDADD) $(AXIOM_X11_LDFLAGS) -lm
+@
+
+\section{htadd binary}
+<<htadd (BIN)>>=
+$(OUTLIB)/htadd$(EXEEXT): $(htadd_objects) $(htadd_DEPENDENCIES)
+ ${LINK} -o $@ $(htadd_objects) $(htadd_LDADD) $(AXIOM_X11_LDFLAGS) -lm
+@
+
+\section{hthits binary}
+<<hthits (BIN)>>=
+${OUTLIB}/hthits$(EXEEXT): $(hthits_objects) $(hthits_DEPENDENCIES)
+ ${LINK} -o $@ $(hthits_objects) $(hthits_LDADD) $(AXIOM_X11_LDFLAGS) -lm
+
+@
+
+\section{hypertex binary}
+<<hypertex (BIN)>>=
+$(OUTLIB)/hypertex$(EXEEXT): $(hypertex_objects) $(hypertex_DEPENDENCIES)
+ ${LINK} -o $@ $(hypertex_objects) $(hypertex_LDADD) \
+ $(AXIOM_X11_LDFLAGS) -lm
+@
+
+\section{spadbuf binary}
+<<spadbuf (BIN)>>=
+${OUTLIB}/spadbuf$(EXEEXT): $(spadbuf_objects) $(spadbuf_DEPENDENCIES)
+ ${LINK} -o $@ $(spadbuf_objects) $(spadbuf_LDADD) \
+ $(AXIOM_X11_LDFLAGS) -lm
+@
+
+\section{pages}
+The 'ht.db' is built when pages from 'src/hyper/pages' such as 'util.ht'
+and 'util.pht' are installed in the target directory. Because the .db
+file must be kept in sync with the page filesof course care must be
+taken not to overwrite these files at a later time without re-building
+the database.
+
+The Axiom system from which this branch had been made appears
+to contain a redundant copy of util.ht. Removing the version of
+'util.ht' in 'src/share/doc/hypertex/pages/util.ht' would make
+Makefile logic simpler so it has been removed to minimize problems
+when this file is updated.
+
+The [[.pht]] files contain hardcoded pathnames to viewport directories
+in the installed system. Of course, that is asking for trouble. During
+installation, we must change those paths to reflect the correct
+location of the viewports. That necessary step is implemented
+as:
+\begin{verbatim}
+ for A in `ls *.pht`; do \
+ sed 's,/doc/viewports/,/share/viewports/,g' $$A \
+ > ${HYPER}/pages/$$A; \
+ done
+\end{verbatim}
+
+In the long term, the [[.pht]] and viewports should be generated at either
+build time or installation time using commands like:
+\begin{verbatim}
+ rm -f ht.db
+ ${HTADD} *.ht
+ for A in `ls *.ht`; do ${SMAN} -paste $$a ; done
+ rm -f ht.db
+ ${HTADD} *.ht *.pht
+\end{verbatim}
+
+On case-insensitive filesytems such as Windows and traditional Mac
+checkout from the source archive can fail if files have names
+differing only in case: poly.ht contra POLY.ht and
+poly.pht contra POLY.pht. To avoid conflicts on case-insensitive
+filesytems we renamed [[poly.ht]] to [[polys.ht]] and [[poly.pht]]
+to [[polys.pht]].
+
+The page [[util.ht]] refers to two files for each (special) character
+glyph, one for the upper case form, and one for the lower case form.
+The names for these files avoid the use of upper and lower letters
+to distinguish these forms. Intstead we use 'xxx.bitmap' for lower case
+and 'xxx-cap.bitmap' for upper case, where "xxx" is the common name for
+the glyth. For example alpha.bitmap and alpha-cap.bitmape.
+
+We need to make sure that [[ht.db]], the hypertex database file
+is up to date. The file contains absolute offsets into the various
+[[ht]] and [[pht]] files so it must reflect the current pages. In
+order to do this we run [[htadd]] in the [[${HYPER}/pages]] directory.
+<<pages>>=
+${HYPER}/pages/ht.db: $(HTADD) $(srcdir)/pages/*.ht $(srcdir)/pages/*.pht
+ @echo making ${HYPER}/pages from $(axiom_src_srcdir)/pages directory
+ @ mkdir -p ${HYPER}/pages
+ @ cp -pr $(srcdir)/pages/*.ht ${HYPER}/pages
+ @ for A in `ls $(srcdir)/pages/*.pht`; do \
+ sed 's,/doc/viewports/,/share/viewports/,g' $$A \
+ > ${HYPER}/pages/`basename $$A`; \
+ done
+ @ rm -f ${HYPER}/pages/ht.db ; \
+ rm -f ${HYPER}/pages/*~ ; AXIOM=$(AXIOM) \
+ ${HTADD} -s ${HYPER}/pages/*.ht ${HYPER}/pages/*.pht
+ @ cp -pr $(srcdir)/bitmaps ${HYPER}
+ @ cp -pr $(srcdir)/viewports $(axiom_target_datadir)
+
+@
+
+<<*>>=
+<<environment>>
+
+subdir = src/hyper/
+
+.PHONY: all all-hyper
+.SUFFIXES:
+.SUFFIXES: .c .o .h
+
+all: all-ax
+
+all-ax all-hyper: stamp
+ @ echo finished $(builddir)
+
+stamp: $(HEADERS) ${BITMAPS} ${SCRIPTS} ${BINFILES} ${HYPER}/pages/ht.db
+ -rm -f stamp
+ $(STAMP) stamp
+
+mostclean-local:
+
+clean-local: mostclean-local
+ -rm -f $(objects)
+ -rm -f $(hypertex_sources)
+ -rm -f $(htadd_sources)
+ -rm -f $(htsearch_sources)
+ -rm -f $(spadbuf_sources)
+ -rm -f $(hthits_sources)
+ -rm -f $(ex2ht_sources)
+ -rm -f $(BINFILES)
+
+distclean-local: clean-local
+
+<<header files>>
+
+<<objects>>
+
+<<bitmaps>>
+
+<<pages>>
+
+<<search>>
+
+<<ex2ht (BIN)>>
+
+<<htadd (BIN)>>
+
+<<hthits (BIN)>>
+
+<<hypertex (BIN)>>
+
+<<spadbuf (BIN)>>
+@
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}