1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
.PHONY: all install clean compiler_name
version=1.10
prefix := /usr/local
libdir := $(prefix)/lib
localstatedir := $(prefix)/lib
mylibdir := $(libdir)/haskell-utils
COMPILER := $(firstword $(shell bash -c "type -p ghc6 ghc hugs"))
COMPILER_NAME := $(notdir $(COMPILER))
GHC_FLAGS := -O -Wall -Werror
GHC_FLAGS += -package Cabal
USER_PROGRAMS := update-haskell-control update-debian-haskell-files
SYSTEM_PROGRAMS := haskell-utils
PROGRAMS := $(USER_PROGRAMS) $(SYSTEM_PROGRAMS)
SOURCES := $(addsuffix .lhs,$(PROGRAMS))
MANPAGES := $(addsuffix .1,$(USER_PROGRAMS)) \
$(addsuffix .8,$(SYSTEM_PROGRAMS))
SCRIPT_ALL := $(wildcard scripts/*/*)
SCRIPT_EXECUTABLES := $(filter %/rules %post% %pre%, $(SCRIPT_ALL))
SCRIPT_DATA := $(filter-out %/rules %post% %pre%, $(SCRIPT_ALL))
SCRIPT_VERSION=$(shell cd scripts && ls -1 | sort -rn | head -n 1 )
all: $(PROGRAMS) $(MANPAGES)
$(PROGRAMS): %: %.lhs
ifeq "$(COMPILER_NAME)" "hugs"
(echo "#!/usr/bin/runhugs +l"; cat $<) > $@
chmod +x $@
else
$(COMPILER) $(GHC_FLAGS) $< -o $@
endif
$(SOURCES) $(MANPAGES): %: %.in
sed -e "s@^#line.*@@" \
-e "s#@version@#$(version)#g" \
-e "s#@libdir@#$(libdir)#g" \
-e "s#@localstatedir@#$(localstatedir)#g" \
< $< > $@
install: $(PROGRAMS)
install -d $(prefix)/sbin/
install -d $(prefix)/bin/
install -m 755 $(USER_PROGRAMS) $(prefix)/bin/
install -m 755 $(SYSTEM_PROGRAMS) $(prefix)/sbin/
install -d $(mylibdir)/
install -d $(localstatedir)/haskell-utils/
install -d $(mylibdir)/varfiles/
install -m 644 haskell-utils-common_varfile $(mylibdir)/varfiles/
install -d $(mylibdir)/scripts
#set -e; for i in scripts/*; do install -d $(mylibdir)/$$i; done
#set -e; for i in $(SCRIPT_DATA); do install -m 644 $$i $(mylibdir)/$$i; done
cp -a scripts $(mylibdir)
#set -e; for i in $(SCRIPT_EXECUTABLES); do install -m 755 $$i $(mylibdir)/$$i; done
ln -s $(SCRIPT_VERSION) $(mylibdir)/scripts/current
clean:
rm -f *.o *.hi $(PROGRAMS) $(MANPAGES) $(SOURCES)
compiler_name:
@echo $(COMPILER_NAME)
|