# IDoc makefile # # Author : Manuel M T Chakravarty # Created: 24 February 2002 # # Version $Revision: 1.2 $ from $Date: 2002/02/28 06:33:03 $ # # Copyright (c) 2002 Manuel M T Chakravarty # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # = DOCU ===================================================================== # # This makefile is made to work without an extra configuration step to keep # everything as simple as possible for the user. # # The default compiler is GHC, but you can overwrite makefile variables by # providing alternatives values as argument to the invocation of `make'. # # *************************************** # !!! This makefile requires GNU make !!! # *************************************** # variables that you may like to overwrite # # * HC : Haskell compiler to be used # * HCFLAGS: flags passed to the Haskell compiler for compiling and linking # * PREFIX : subtree into which to install the tool # HC = ghc HCFLAGS = PREFIX = /usr/local # compute compiler dependent options # SYS = $(notdir $(HC)) ifeq ($(strip $(SYS)),ghc) HCFLAGS=-O endif # install paths # prefix = $(PREFIX) bindir = $(prefix)/bin # package name as well as source and object files # PACKAGE = idoc SRCS = GetOpt.hs IDoc.hs OBJS = $(patsubst %.hs,%.o,$(filter %.hs,$(SRCS))) # file that contains a `versnum = "x.y.z"' line # VERSFILE = IDoc.hs # this is far from elegant, but extracts the plain version number # VERSION =$(shell grep '^versnum' $(VERSFILE)\ | sed '-e s/versnum.* "//' '-e s/"//') # define what get dumped into a source distribution # MKFILES = Makefile NONCODE = COPYING ChangeLog README TESTFILES= $(wildcard test/*.hs) DISTFILES= $(NONCODE) $(MKFILES) $(SRCS) $(TESTFILES) # default target # default: idoc # compile rules # %.o: %.hs $(RM) $@ $(HC) -c $(HCFLAGS) $< %.hi: %.o @: # link target # idoc: $(OBJS) $(HC) $(HCFLAGS) -o $@ $^ # install target # .PHONY: install install: idoc mkdir -p $(bindir) cp idoc $(bindir)/idoc -strip $(bindir)/idoc chmod a+x $(bindir)/idoc # admin targets # .PHONY: clean cleanhi cleanall tar clean: -$(RM) *.o idoc cleanhi: -$(RM) *.hi cleanall: clean cleanhi tar: -ln -s . $(PACKAGE)-$(VERSION) tar czf $(PACKAGE)-$(VERSION).tar.gz\ $(addprefix $(PACKAGE)-$(VERSION)/,$(DISTFILES)) $(RM) $(PACKAGE)-$(VERSION) # dependencies # IDoc.o : IDoc.hs GetOpt.hi GetOpt.o: GetOpt.hs