$#define DEBUG
#define FIGDIR ./Fig

#include "../../include/cake/SEP.clop.defs"
#include <SEP.defs>

$ programs to be built
#define PROGLIST Patch Onepatch

$ figures to be built

#define FIGLIST patchout onepatchout

$ datafiles that will be created and need to be cleaned
#define DATAFILES [[ sub X X.H patchin patchout onepatchin onepatchout onepatchout2 ]]

$ test to run in this directory
default&: tube

patchin.H: if not exist patchin.H
	Spike n1=10 n2=20 k1=1,3,5,7,9 nsp=5 > patchin.H

patchout.H: BINDIR/Patch patchin.H
	BINDIR/Patch <patchin.H > patchout.H

FIGDIR/patchout.v : patchin.H patchout.H
	Wiggle <patchin.H title="Input" head=/dev/null out=stdout > FIGDIR/tmp1.v
	Wiggle <patchout.H title="Output" head=/dev/null out=stdout > FIGDIR/tmp2.v
	vp_SideBySideIso FIGDIR/tmp1.v FIGDIR/tmp2.v > FIGDIR/patchout.v
	@RM_CMD  FIGDIR/tmp1.v FIGDIR/tmp2.v 

BINDIR/Patch : OBJDIR/Patch.o
	CPPLINK(OBJDIR/Patch.o,a.out)
	CPPINST(BINDIR/Patch)

onepatchin.H: if not exist onepatchin.H
	Spike n1=10 n2=20 k1=1,3,5,7,9 nsp=5 > onepatchin.H

onepatchout.H: BINDIR/Onepatch onepatchin.H
	BINDIR/Onepatch < onepatchin.H > onepatchout.H

onepatchout2.H: BINDIR/Onepatch onepatchout.H
	BINDIR/Onepatch < onepatchout.H > onepatchout2.H adj=1

FIGDIR/onepatchout.v : onepatchin.H onepatchout.H onepatchout2.H
	Wiggle <onepatchin.H title="Original space" head=/dev/null out=stdout >FIGDIR/tmp1.v
	Wiggle <onepatchout.H title="Patch" head=/dev/null out=stdout >FIGDIR/tmp2.v	
	Wiggle <onepatchout2.H title="Adjoint on Patch" head=/dev/null out=stdout >FIGDIR/tmp3.v
	vp_SideBySideIso FIGDIR/tmp1.v FIGDIR/tmp2.v FIGDIR/tmp3.v >FIGDIR/onepatchout.v
	@RM_CMD  FIGDIR/tmp1.v FIGDIR/tmp2.v FIGDIR/tmp3.v

Onepatch&: BINDIR/Onepatch

BINDIR/Onepatch : OBJDIR/Onepatch.o
	CPPLINK(OBJDIR/Onepatch.o,a.out)
	CPPINST(BINDIR/Onepatch)


default&: [[sub LINOPINC/X.h X.Head [[ls LINOPINC/\*.h]] ]]

$ put exceptions here:
foperator.Head&: 
        @C++Extract <LINOPINC/foperator.h  \"class foperator\" "private:" > foperator.Head


$ need special general rules:

%.Head&: if not exist LINOPINC/%.h
        @echo do nothing for %.HEAD >/dev/null

%.Head&: LINOPINC/%.h
        @C++Extract <LINOPINC/%.h  \"class %\" "private:" | C++Extract  \"class %\" "protected:" >%.Head

$ clean
clean&: 
	-Rm DATAFILES
	-Rm -f *.Head

#include <SEP.idoc.rules>
#include <SEP.obj.rules>
#include "../../include/cake/SEP.clop.rules"
