#----------------------------------------------------------------------------- # Robot Analysis and Visualization Toolkit # Makefile # Tom Moertel # CVS $Id: Makefile,v 1.9 2002/09/11 02:44:49 thor Exp $ #----------------------------------------------------------------------------- VERSION = 0.8 TARGETS = RobotProxy ReadGameLog MergeGames VisualizeGameASCII \ DumpGameAnalysis DOCDIR = docs DISTDIR = ravt-$(VERSION) TARBALL = $(DISTDIR).tar.gz BINDISTDIR = ravt-$(VERSION)-$(shell uname -ms | tr 'A-Z ' 'a-z-') BINTARGETS := README $(TARGETS) HASKELL := $(wildcard *.hs) GHC_PACKAGE = -package network GHC_OPT = -O2 GHC = ghc $(GHC_OPT) $(GHC_PACKAGE) STRIP = strip DIST_MANIFEST := README LICENSE Makefile animate-ascii.el $(HASKELL) #----------------------------------------------------------------------------- # top level targets: all docs dist #----------------------------------------------------------------------------- .PHONY : all allfast allopt dist bindist all : $(TARGETS) allfast : ; make GHC_OPT='' all allopt : ; make GHC_OPT='-O2' all dist : $(DISTDIR) bindist : $(BINDISTDIR) $(DISTDIR) : $(DIST_MANIFEST) rsync -avC $(DIST_MANIFEST) $@/ echo $(DIST_MANIFEST) | tr ' ' \\012 > $@/MANIFEST touch $@ rm -f $@.tar.gz && tar zcf $@.tar.gz $@ $(BINDISTDIR) : $(BINTARGETS) rsync -avC $(BINTARGETS) $@/ touch $@ rm -f $@.tar.gz && tar zcf $@.tar.gz $@ $(DOCDIR) : $(HASKELL) @[ -d $@ ] || mkdir $@ haddock --html -o $(DOCDIR) $(HASKELL) && touch $@ #----------------------------------------------------------------------------- # helpers #----------------------------------------------------------------------------- # build rules for Haskell %.o : %.hs $(GHC) -c $< % : %.o $(GHC) -o $@ --make $@.hs $(STRIP) $@ # the following magic rules take care of automatic Haskell dependencies include $(HASKELL:.hs=.d) %.hi : %.o @: # do nothing at all, yet satisfy the %.hi build requirement %.d : %.hs $(GHC) -M -optdep-f -optdep$@ $^ \ && perl -i -lpe'if (/\.hi$$/) { print; s/\.o :/ :/; s/\.hi$$/.o/ }' $@ # build README.html for Apache indexing README.html : README weblog-filter.pl $^ > $@ # maintenance rules .PHONY : clean clean : rm -f *.o *.hi *.bak $(TARGETS) rm -rf $(DOCDIR) .PHONY : cleandeps cleandeps : rm -f *.d TAGS : $(HASKELL) hasktags $(HASKELL)