]> gitweb @ CieloNegro.org - time-http.git/blob - cabal-package.mk
RFC1123
[time-http.git] / cabal-package.mk
1 # -*- makefile-gmake -*-
2 #
3 # Variables:
4 #
5 #   CONFIGURE_ARGS :: arguments to be passed to ./Setup configure
6 #     default: --disable-optimization
7 #
8 #   RUN_COMMAND :: command to be run for "make run"
9 #
10
11 GHC      ?= ghc
12 FIND     ?= find
13 RM_RF    ?= rm -rf
14 SUDO     ?= sudo
15 AUTOCONF ?= autoconf
16 HLINT    ?= hlint
17
18 CONFIGURE_ARGS ?= --disable-optimization
19
20 SETUP_FILE := $(wildcard Setup.*hs)
21 CABAL_FILE := $(wildcard *.cabal)
22
23 ifeq ($(shell ls configure.ac 2>/dev/null),configure.ac)
24   AUTOCONF_AC_FILE := configure.ac
25   AUTOCONF_FILE    := configure
26 else
27   ifeq ($(shell ls configure.in 2>/dev/null),configure.in)
28     AUTOCONF_AC_FILE := configure.in
29     AUTOCONF_FILE    := configure
30   else
31     AUTOCONF_AC_FILE :=
32     AUTOCONF_FILE    :=
33   endif
34 endif
35
36 BUILDINFO_IN_FILE := $(wildcard *.buildinfo.in)
37 BUILDINFO_FILE    := $(BUILDINFO_IN_FILE:.in=)
38
39 all: build
40
41 build: setup-config build-hook
42         ./Setup build
43
44 build-hook:
45
46 ifeq ($(RUN_COMMAND),)
47 run:
48         @echo "cabal-package.mk: No command to run."
49         @echo "cabal-package.mk: If you want to run something, define RUN_COMMAND variable."
50 else
51 run: build
52         @echo ".:.:. Let's go .:.:."
53         $(RUN_COMMAND)
54 endif
55
56 setup-config: dist/setup-config setup-config-hook $(BUILDINFO_FILE)
57
58 setup-config-hook:
59
60 dist/setup-config: $(CABAL_FILE) Setup $(AUTOCONF_FILE)
61         ./Setup configure $(CONFIGURE_ARGS)
62
63 $(AUTOCONF_FILE): $(AUTOCONF_AC_FILE)
64         $(AUTOCONF)
65
66 $(BUILDINFO_FILE): $(BUILDINFO_IN_FILE) configure
67         ./Setup configure $(CONFIGURE_ARGS)
68
69 Setup: $(SETUP_FILE)
70         $(GHC) --make Setup
71
72 clean: clean-hook
73         $(RM_RF) dist Setup *.o *.hi .setup-config *.buildinfo
74         $(FIND) . -name '*~' -exec rm -f {} \;
75
76 clean-hook:
77
78 doc: setup-config
79         ./Setup haddock
80
81 install: build
82         $(SUDO) ./Setup install
83
84 sdist: setup-config
85         ./Setup sdist
86
87 test: build
88         ./Setup test
89
90 lint:
91         $(HLINT) . --report \
92                 --ignore="Use string literal" \
93                 --ignore="Use concatMap"
94
95 .PHONY: build build-hook setup-config setup-config-hook run clean clean-hook install doc sdist test lint