# $Id: TODO,v 6.4 2012/09/12 23:13:45 ksb Exp $ Depends AKA Also ---------------- Allow the command "Also" to force -u options /*@Also cleanup@*/ forces the option "-u cleanup" in the command line (at least it looks kinda like it). If we are expanding now. The unclear part here is if we include "cleanup" in the present file (when not otherwise invited to the dance) or build another file for it. That's sticky, but I think the first is what we'd want. We don't want to build any files we were not asked for. If the Explode for "cleanup" came before us in the file I'd not go back to get it, BTW. Humm. This is a real do-what-I-mean issue. Non-local source caches: ------------------------ Codify a way to (in a Makefile) poll a remote source repository with tftp, ftp, http, rsync, or some other protocol to explode remote source for a local build. Here is a way: use tcpmux to provision a service that calls explode. The muxcat would be (redirected to files): muxcat explode avl.h # cat the file muxcat explode avl.c init,ins,del,scan # fetch 4 function The perl code to do it would look like msrcmux.pl a lot. We'd have to watch the @Shell magics, but in a jail it would be sane. Any tty @Message output code fail the request (-reply) with the output included. Yay. More versital expansion: ------------------------ The down-side here is that running a lot via the shell in explode creates a pretty loose security model, like make(1) didn't already. Use m4, or something like the shell backquotes? /*@Filter "m4 -"@*/ define(...)dnl ... /*@Explode ...@*/ Or allow non-comment escapes to a shell/environment/expander? {Viz. $var, function params, \octal, and the like.} /*@Configure open-expand close-expand@*/ #@Configure << >>@# # makefile for <> # by <>, NPC Guild BIN= ${DESTDIR}$$HOME/bin MANROOT=${DESTDIR}/usr/man I=/usr/include S=/usr/include/sys P= INCLUDE= DEBUG= -O CDEFS= CFLAGS= ${DEBUG} ${CDEFS} ${INCLUDE} SRC= <> GENh= main.h GENc= main.c GEN= ${GENh} ${GENc} DEP= ${GENc} ${SRC} OBJ= main.o explode.o MAN= <> SOURCE= Makefile <> <> ${HDR} ${SRC} ${MAN} all: explode explode:$P ${OBJ} ${CC} -o $@ ${CFLAGS} ${OBJ} main.h: main.c # should be `mk explode.m' really main.c: explode.m mkcmd std_help.m std_version.m explode.m -(cmp -s prog.c main.c || (cp prog.c main.c && echo main.c updated)) -(cmp -s prog.h main.h || (cp prog.h main.h && echo main.h updated)) rm -f prog.[ch] clean: FRC rm -f explode ${GEN} *.o Makefile.bak a.out core errs tags depend: ${GEN} ${SRC} ${HDR} FRC maketd ${CDEFS} ${INCLUDE} ${DEP} install: all FRC install -c -s explode ${BIN} lint: ${HDR} ${SRC} ${GEN} FRC lint -hnx ${CDEFS} ${INCLUDE} ${DEP} mkcat: ${MAN} mkcat -r${MANROOT} ${MAN} print: source FRC lpr -J'explode source' ${SOURCE} source: ${SOURCE} spotless: clean rcsclean ${SOURCE} tags: ${SRC} ${HDR} ${GEN} ctags -t ${SRC} ${HDR} ${GEN} ${SOURCE}: co -q $@ FRC: # DO NOT DELETE THIS LINE - maketd DEPENDS ON IT main.o: $I/stdio.h main.c explode.o: $I/ctype.h $I/signal.h $I/stdio.h $S/file.h explode.c main.h # *** Do not add anything here - It will go away. ***