diff options
author | dos-reis <gdr@axiomatics.org> | 2007-08-14 05:14:52 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2007-08-14 05:14:52 +0000 |
commit | ab8cc85adde879fb963c94d15675783f2cf4b183 (patch) | |
tree | c202482327f474583b750b2c45dedfc4e4312b1d /src/hyper/Makefile.pamphlet | |
download | open-axiom-ab8cc85adde879fb963c94d15675783f2cf4b183.tar.gz |
Initial population.
Diffstat (limited to 'src/hyper/Makefile.pamphlet')
-rw-r--r-- | src/hyper/Makefile.pamphlet | 343 |
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} |