Warning: this is an htmlized version!
The original is across this link,
and the conversion rules are here.
# By Edrx, 2008jan22
# This is my script to make the tgz:
#   (find-es "blogme" "blogme3.tgz")
#   (find-sh "cd ~/blogme3/ && make")

# Usage: on linux,
#   cd ~/blogme3/; make
# on BSDs:
#   cd ~/blogme3/; make LUAOS=bsd
# on zumbi, a BSD box in the same net of persephone:
#   cd ~/blogme3/; make LUAOS=bsd ANGGBASE=http://10.1.0.101/TH/R/
# on persephone or angg (linux boxes with $S and external binaries):
#   cd ~/blogme3/; make S=$S testb

# Note: on macosx things are harder - we need to use LUAOS=macosx to
# compile lua, and different gcc flags (and maybe an environment
# variable?) to compile lpeg... and right now the gcc flags that I use
# for lpeg are hard-coded in the makefile, see the "lpegbuild" and
# "$(LPEGSO_)" targets below...
# This message shows flags that seem to work:
#   http://lua-users.org/lists/lua-l/2007-04/msg00589.html
# that is,
#   export MACOSX_DEPLOYMENT_TARGET=10.3
#   gcc -bundle -undefined dynamic_lookup -Wall -O2 -o lpeg.so lpeg.c

# (find-node "(make)Setting" "FOO ?= bar")
# (find-node "(make)Instead of Execution" "`-n'")
# (find-node "(make)Errors" "-rm -f *.o")
# (find-es "make" "environment")
# (find-es "lua5" "install-5.1.2")

# Note: LUASRC must be absolute (a directory).
# (LPEGSRC too?)

S         = snarf
USRC      = usrc

# ANGGBASE = http://10.1.0.101/TH/R/
ANGGBASE = http://angg.twu.net/

LUAURL    =    http://www.lua.org/ftp/lua-5.1.2.tar.gz
LUATGZ    = $(S)/http/www.lua.org/ftp/lua-5.1.2.tar.gz
LUATGZDIR = $(S)/http/www.lua.org/ftp/
LUASRC    = $(PWD)/usrc/lua-5.1.2
LUA51_    = $(LUASRC)/src/lua
LUA51     = ./lua51
LUAOS     = linux

LPEGURL    =    http://www.inf.puc-rio.br/~roberto/lpeg-0.7.tar.gz
LPEGTGZ    = $(S)/http/www.inf.puc-rio.br/~roberto/lpeg-0.7.tar.gz
LPEGTGZDIR = $(S)/http/www.inf.puc-rio.br/~roberto/
LPEGSRC    = $(PWD)/usrc/lpeg-0.7
LPEGSO_    = $(LPEGSRC)/lpeg.so
LPEGSO     = lpeg.so

LUA51_ANGG  = $(HOME)/bin/lua51
LPEGSO_ANGG = $(HOME)/usrc/lpeg-0.7/lpeg.so

default: test
clean: cleanbinaries cleanscripts

# (find-eevfile "Makefile" "/tmp/eev-current.tar.gz:")
# (find-es "omnisys")
# (find-es "blogme" "blogme3.tgz")
#blogme3.tgz:
#	(TZ=GMT date; date) > VERSION
#	tar -cvzf $@ $$(cat .files)

luadownload: $(LUATGZ)
$(LUATGZ):
	mkdir -p $(LUATGZDIR)
	cd       $(LUATGZDIR) && \
	wget     $(LUAURL)

lpegdownload: $(LPEGTGZ)
$(LPEGTGZ):
	mkdir -p $(LPEGTGZDIR)
	cd       $(LPEGTGZDIR) && \
	wget     $(LPEGURL)

luabuild: $(LUA51_)
$(LUA51_): $(LUATGZ)
	-rm -Rv $(LUASRC)/
	mkdir -p $(USRC)/
	tar   -C $(USRC)/ -xvzf $(LUATGZ)
	cd $(LUASRC) && make $(LUAOS) test

lpegbuild: $(LPEGTGZ)
$(LPEGSO_): $(LPEGTGZ)
	-rm -Rv $(LPEGSRC)/
	mkdir -p $(USRC)/
	tar   -C $(USRC)/ -xvzf $(LPEGTGZ)
	cd $(LPEGSRC) && \
	  chmod 644 * && \
	  gcc -g -Wall -shared -I$(LUASRC)/src -o lpeg.so lpeg.c && \
	  $(LUA51_) test.lua

# 2008feb17: new targets, unused

luaunpack: $(LUATGZ)
	-rm -Rv $(LUASRC)/
	mkdir -p $(USRC)/
	tar   -C $(USRC)/ -xvzf $(LUATGZ)
luacompile: 
	cd $(LUASRC) && make $(LUAOS) test

lpegunpack: $(LPEGTGZ)
	-rm -Rv $(LPEGSRC)/
	mkdir -p $(USRC)/
	tar   -C $(USRC)/ -xvzf $(LPEGTGZ)
	cd $(LPEGSRC) && chmod 644 *
lpegcompile:
	cd $(LPEGSRC) && \
	  gcc -g -Wall -shared -I$(LUASRC)/src -o lpeg.so lpeg.c && \
	  $(LUA51_) test.lua
lpegcompile_macosx:
	cd $(LPEGSRC) && \
	  export MACOSX_DEPLOYMENT_TARGET=10.3 && \
	  gcc -bundle -undefined dynamic_lookup -Wall -O2 -o lpeg.so lpeg.c && \
	  $(LUA51_) test.lua

# (find-lua51file "Makefile" "test:")
# (find-lpegfile  "makefile")

luatest: $(LUA51)
	cd $(LUASRC) && $(LUA51) test/hello.lua	
lpegtest: $(LUA51) $(LPEGSO)
	cd $(LPEGSRC) && $(LUA51) test.lua

# (find-node "(make)Automatic Variables")
# cp -v $< $@

#$(LUA51): $(LUA51_)
#	cp -v $(LUA51_) $(LUA51)
#$(LPEGSO): $(LPEGSO_)
#	cp -v $(LPEGSO_) $(LPEGSO)

cleanbinaries:
	-rm -v $(LUA51)
	-rm -v $(LPEGSO)
compilebinaries: cleanbinaries $(LUA51_) $(LPEGSO_)
	cp -v $(LUA51_) $(LUA51)
	cp -v $(LPEGSO_) $(LPEGSO)
linkbinaries: cleanbinaries
	ln -s $(LUA51_ANGG) $(LUA51)
	ln -s $(LPEGSO_ANGG) $(LPEGSO)

# This can be more flexible...
blogme3: blogme3.lua
	cat blogme3.lua | { echo "#!$(PWD)/lua51"; awk 'NR>1'; } > blogme3
	chmod 755 blogme3
a2html:
	{ echo '#!/bin/sh'; \
	  echo 'run () { echo $$*; $$*; }'; \
	  echo 'run $(PWD)/blogme3 -anggat $(ANGGBASE) -o $$1.html -a2html $$1'; \
	} > a2html
	chmod 755 a2html
t2html:
	{ echo '#!/bin/sh'; \
	  echo 'run () { echo $$*; $$*; }'; \
	  echo 'run $(PWD)/blogme3 -anggat $(ANGGBASE) -o $$1.html -t2html $$1'; \
	} > t2html
	chmod 755 t2html
w2html:
	{ echo '#!/bin/sh'; \
	  echo 'run () { echo $$*; $$*; }'; \
	  echo 'run $(PWD)/blogme3 -anggat $(ANGGBASE) -o $$1.html -w2html $$1'; \
	} > w2html
	chmod 755 w2html
lstoindexhtml: lstoindexhtml.lua
	{ echo "#!$(PWD)/lua51"; cat lstoindexhtml.lua; } > lstoindexhtml
	chmod 755 lstoindexhtml
lstoindexhtml-here: lstoindexhtml
	{ echo "#!/bin/sh"; \
	  echo "rm -f index.html"; \
	  echo "ls -laF | col -x | $(PWD)/lstoindexhtml . > index.html"; \
	} > lstoindexhtml-here
	chmod 755 lstoindexhtml-here
scripts: blogme3 a2html t2html w2html lstoindexhtml lstoindexhtml-here

cleanscripts:
	-rm -v blogme3
	-rm -v a2html
	-rm -v t2html
	-rm -v w2html
	-rm -v lstoindexhtml
	-rm -v lstoindexhtml-here

test: compilebinaries scripts
	./blogme3 -o blogme3.html -i TH/blogme3.blogme
	./lstoindexhtml-here
testb: linkbinaries scripts
	./blogme3 -o blogme3.html -i TH/blogme3.blogme
	./lstoindexhtml-here