{@lxx_output_extension <.lx>}
{@lxx_mode <k>}
{@default_thread <v>}
{@@@du}{@output_name <makefile>}
{@@@v}{@output_name <descrip.mms>}

{@@@adu}
{@convert_initial_blanks}
{@map}& {@end@}
{@map}!

{@@v}
{@map}& {@end@}
{@@v1}{@map}&,
{@@@v}
{@map}!;*
{@map}: :
{@unmap}:

{@set <dante1>} 1-7
{@set <dante2>} 8-100

@#::dante_files1 multiple.tex multiple.dvi position.dtx position.ins position.sty {@@##}
   cvt_rm.c tiny_c2l.l tiny_t2l.l testfile.l testfile.dvi asm_uebung.s asm_uebung.dvi
@#::makefiles makefile.dos makefile.unix makefile.vms
@#::dante_files2 config.lx makefile.lxx position.lx tiny_cvt2ltx.lx

@# dante_dir1
{@@@d}dante-neu\
{@@@u}dante-neu/
{@@@v}[.dante-neu]

@# dante_dir2
{@@@d}dante-neu\lx2l-src\
{@@@u}dante-neu/lx2l-src/
{@@@v}[.dante-neu.lx2l-src]

@# dante_zipfiles
{@@@d}tiny_c2l\*.*
{@@@u}tiny_c2l/*
{@@@v}[.tiny_c2l]*.*


@# tiny_c2l
{@@@v}mc sys$disk:[]tiny_c2l$(EXE)
{@@@u}./tiny_c2l
{@@@d}tiny_c2l

@# xdvi
{@@@d}yap
{@@@uv}xdvi

@# run cmd
{@@@v}mc sys$disk:[]{@#.cmd}$(EXE)
{@@@u}./\cmd
{@@@d}\cmd

@# copy
{@@@dv}copy
{@@@u}cp

@# rename
{@@@dv}rename
{@@@u}mv

@# lx2lxh
{@@@v}mc sys$disk:[]lx2lxh$(EXE)
{@@@u}./lx2lxh
{@@@d}lx2lxh

@# obj
{@@@v}$(OBJ)
{@@@^v}.o

@# exe
{@@@d}.exe
{@@@u}{@end@}
{@@@v}$(EXE)

@# cvt_rm_dep
{@calc "%s" "\delete"=="cvt_rm" ? " cvt_rm\exe" : "";}

@# delete
{@@@}cvt_rm
{@@d1v1}cvt_rm
{@@u1}- rm

@# latex
latex

@# latex_b
latex{@@v}/batch

@#- ltx_delete base TEX
{@@@}\delete \base.aux!&\base.dvi!&\base.lis!&\base.log!{@@#.TEX+}&\base.tex!{@@#.TEX#}&\base.toc!
{@@d1v1}\delete \base.aux!&\base.dvi!&\base.lis!&\base.log!{@@#.TEX+}&\base.tex!{@@#.TEX#}&\base.toc!
{@@u1}\delete \base.aux!&\base.dvi!&\base.log!{@@#.TEX+}&\base.tex!{@@#.TEX#}&\base.toc!

@#- make_ltx short base full src gen opt{@@+}
{@#.short}v: \base.dvi
   \xdvi \base.dvi
{@#.short}t2: \base.dvi position.sty
   - \latex_b \full
\base.dvi: \full position.sty
   - \latex_b \full
{@if "\src" ne ""}{@#.short}t: \full
\full: \src \gen\exe
   \run(\gen) \opt \src \full
{@endif}

{@@#}

@#- mf target thread
makefile.\target: makefile.lx{@@+}
   lx2l {@#.thread}1 makefile.lx makefile.\target

@#- dante_copy1 file
\dante_dir1\file: \file{@@+}
   \copy \file \dante_dir1

@#- dante_copy2 file
\dante_dir2\file: \file{@@+}
   \copy \file \dante_dir2

{@@@@}{@remap}:

{@@-}
{@@@v}
{@unmap}:
.ifdef __AXP__
OBJ = .obj_x
EXE = .exe_x
LIBS  = ,sys$share:vaxcrtl/lib/exec=$(MMS$TARGET)
.else
OBJ = .obj
EXE = .exe
LIBS  = ,c.opt/opt/exec=$(MMS$TARGET)
.endif
LEX   = flex
{@remap}:

.SUFFIXES: .l $(OBJ) $(EXE)
.c$(EXE):
   $(CC) $</object=$(MMS$TARGET_NAME)$(OBJ)
   link $(MMS$TARGET_NAME)$(OBJ)$(LIBS)
   \delete $(MMS$TARGET_NAME)$(OBJ)!
.l$(EXE):
   $(LEX) $<
   $(CC) $(MMS$TARGET_NAME).c/object=$(MMS$TARGET_NAME)$(OBJ)
   link $(MMS$TARGET_NAME)$(OBJ)$(LIBS)
   \delete $(MMS$TARGET_NAME).c!&$(MMS$TARGET_NAME)$(OBJ)!
{@@@^v}
CFLAGS   = -O2 -fomit-frame-pointer -Wchar-subscripts -Wformat
LEX      = flex
LFLAGS   =
LDFLAGS  =
LIBS     =
CC       = gcc

.PHONY: demo tf

{@@@d}
.SUFFIXES: .l .exe
.c.exe:
   $(CC) $< -o$*
   djp $*
   \delete $*.o $*
.l.exe:
   $(LEX) $<
   $(CC) $*.c -o$*
   djp $*
   \delete $*.c $*.o $*
{@@@@}

all: tc pt2 demo
demo: tiny_c2l.dvi testfile.dvi asm_uebung.dvi multiple.dvi

\make_ltx#p#position#position.dtx####
py: position.sty
position.sty: position.dtx position.ins
   \latex position.ins

\make_ltx#tc#tiny_c2l#tiny_c2l.tex#tiny_c2l.l#tiny_c2l#-l#
\make_ltx#tf#testfile#testfile.tex#testfile.l#tiny_c2l#-+ -l1#
\make_ltx#a#asm_uebung#asm_uebung.tex#asm_uebung.s#tiny_t2l#-t8#
md: multiple.dvi
multiple.dvi: testfile.tex tiny_c2l.tex position.sty
   - \latex_b multiple

tc: tiny_c2l\exe
{@@@}
tiny_c2l.l: tiny_cvt2ltx.lx config.lx
   lx2l c tiny_cvt2ltx.lx
{@@@dv}
tiny_c2l\exe: tiny_c2l.l
cvt_rm\exe: cvt_rm.c
{@@@@}

tt: tiny_t2l\exe
{@@@v}
tiny_t2l\exe:  tiny_t2l.l
{@@@}
\make_ltx#tf1#testfile1#testfile1.tex#testfile1.l#tiny_c2l#-+ -l1#
tiny_t2l.l:  tiny_cvt2ltx.lx config.lx
   lx2l t tiny_cvt2ltx.lx

mf{@@v}: descrip.mms
descrip.mms{@@@}: makefile.lx
   lx2l {@@d}d{@@u}u{@@v}v{@@@} makefile.lx
makefile.lx: makefile.lxx
   lx2l -x makefile.lxx
\mf(dos)(d)
\mf(unix)(u)
\mf(vms)(v)
mfs: makefile.lx {@forall}\makefiles {@repeat}
   lx2l d1 makefile.lx makefile1.dos
   lx2l u1 makefile.lx makefile1.unix
   lx2l v1 makefile.lx makefile1.vms

position.dtx: position.lx config.lx
   lx2l p position.lx

position.ins: position.lx
   lx2l i position.lx

html: position.html position.idx
pxh: position.html

position.lxh: position.lx lx2lxh\exe
   \lx2lxh position.lx position.lxh
position.html: position.lxh config.lx
   lx2l h position.lxh
position.idx: position.lxh config.lx
   lx2l i1 position.lxh
{@@v}
lx2lxh\exe: lx2lxh.l
{@@@}

dante: dante_zip clean
dante_zip: tiny_c2l.zip
tiny_c2l.zip: dante_files
   \rename dante-neu{@@v}.dir{@@@} tiny_c2l
   zip -9ur tiny_c2l \dante_zipfiles
   \rename tiny_c2l{@@v}.dir{@@@} dante-neu
dante_files:{@forall} {@#dante_dir1}\dante_files1{@repeat}\
   {@forall} {@#dante_dir1}\makefiles{@repeat}\
   {@forall} {@#dante_dir2}\dante_files2{@repeat}

{@forall}\dante_copy1(\dante_files1)
{@repeat}
{@forall}\dante_copy1(\makefiles)
{@repeat}
{@forall}\dante_copy2(\dante_files2)
{@repeat}

{@@@@}
clean:\cvt_rm_dep
   \ltx_delete(tiny_c2l)(1)
   \ltx_delete(testfile)(1)
   \ltx_delete(asm_uebung)(1)
   \ltx_delete(multiple)(0)
   \delete tiny_c2l.dbg!&tiny_t2l.dbg!{@@@}&lx2l.dbg!&position.html!&position.lxh!{@@@@}
   \ltx_delete(position)(0){@@@}&position.dtx!{@@@@}
{@@@}
   \delete makefile.lx!&makefile.dos!&makefile.unix!&makefile.vms!&makefile1.dos!&makefile1.unix!&makefile1.vms!
   \ltx_delete(testfile1)(1)
   \ltx_delete(tiny_t2l)(1)
   \ltx_delete(linediagram)(1)
   \ltx_delete(tf)(1)
{@@@@}
distclean: clean
   \delete {@@@}tiny_c2l.l!&{@@@@}tiny_c2l.c!&tiny_c2l\obj!&tiny_c2l\exe!
   \delete {@@@}tiny_t2l.l!&{@@@@}tiny_t2l.c!&tiny_t2l\obj!&tiny_t2l\exe!
   \delete cvt_rm\obj!&cvt_rm\exe!&position.sty
{@@@}
   \delete makefile!&descrip.mms!&position.sty!&position.ins!
   \delete{@for [dante1]} {@#dante_dir1}\dante_files1!{@repeat}
   \delete{@for [dante2]} {@#dante_dir1}\dante_files1!{@repeat}
   \delete{@forall} {@#dante_dir1}\makefiles!{@repeat}
   \delete{@forall} {@#dante_dir2}\dante_files2!{@repeat}