# Copyright 2014 Jeffrey Kegler
# This file is part of Marpa::R2. Marpa::R2 is free software: you can
# redistribute it and/or modify it under the terms of the GNU Lesser
# General Public License as published by the Free Software Foundation,
# either version 3 of the License, or (at your option) any later version.
#
# Marpa::R2 is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser
# General Public License along with Marpa::R2. If not, see
# http://www.gnu.org/licenses/.
# Code for the "Scanless interface" or SLIF, an upper
# layer for libmarpa.
CWEAVE = cweave -p
CTANGLE = ctangle -p
.PHONY: all
.SUFFIXES: .dvi .tex .w .pdf
.w.tex:
$(CWEAVE) $*
.tex.dvi:
tex $<
.w.dvi:
make $*.tex
make $*.dvi
.w.c:
$(CTANGLE) $*
.w.o:
make $*.c
make $*.o
.w.pdf:
make $*.tex
pdftex -interaction=batchmode -halt-on-error $* || cat $*.log
all: marpa_slif.pdf sources
sources: marpa_slif.c marpa_slif.h.p50 marpa_slif.h.p80 marpa_slif.h-ops marpa_slif.c-ops
C_LANGUAGE_PREAMBLE = ../shared/license.c ../shared/do_not_edit.c
MARPA_SLIF_H_PIECES = $(C_LANGUAGE_PREAMBLE) marpa_slif.h.p50 marpa_slif.h.p80
MARPA_SLIF_C_PIECES = $(C_LANGUAGE_PREAMBLE) marpa_slif.c.p10 marpa_slif.c-ops \
marpa_slif.c.p40 marpa_slif.c.p50
marpa_slif.h.p50 marpa_slif.c.p10 marpa_slif.c.p50: ../shared/copyright_page_license.w marpa_slif.w
$(CTANGLE) marpa_slif.w
cwebmac.tex: ../shared/cwebmac.tex
cp $? $@
marpa_slif.tex: cwebmac.tex ../shared/copyright_page_license.w
marpa_slif.pdf: marpa_slif.tex
marpa_slif.c: $(MARPA_SLIF_C_PIECES)
cat $(MARPA_SLIF_C_PIECES) > $@
CPPWRAP = perl ../bin/cppwrap.pl
marpa_slif.c.p40: marpa_slif.w
perl w2private_h.pl < $? | $(CPPWRAP) $@ > $@
marpa_slif.h.p80: api.texi internal.texi
cat api.texi internal.texi | \
perl ../bin/texi2proto.pl /dev/null > marpa_slif.h.p80
marpa_slif.h-ops marpa_slif.c-ops: create_ops.pl
perl create_ops.pl marpa_slif.h-ops | $(CPPWRAP) marpa_slif.c-ops > marpa_slif.c-ops
update_texi:
emacs -batch internal.texi \
-f texinfo-every-node-update \
-f texinfo-all-menus-update \
-f save-buffer -kill
CLEAN_FILES = marpa_slif.c marpa_slif.c.p10 marpa_slif.c.p40 marpa_slif.c.p50 \
marpa_slif.h.p50 marpa_slif.h.p80 \
marpa_slif.idx marpa_slif.log marpa_slif.pdf marpa_slif.scn marpa_slif.tex marpa_slif.toc \
cwebmac.tex
clean:
rm -f $(CLEAN_FILES)