initial revision
[pkg-find-outdated-cabal.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
17 CONFIGURE_ARGS ?= --disable-optimization
18
19 SETUP_FILE := $(wildcard Setup.*hs)
20 CABAL_FILE := $(wildcard *.cabal)
21
22 ifeq ($(shell ls configure.ac 2>/dev/null),configure.ac)
23   AUTOCONF_AC_FILE := configure.ac
24   AUTOCONF_FILE    := configure
25 else
26   ifeq ($(shell ls configure.in 2>/dev/null),configure.in)
27     AUTOCONF_AC_FILE := configure.in
28     AUTOCONF_FILE    := configure
29   else
30     AUTOCONF_AC_FILE :=
31     AUTOCONF_FILE    :=
32   endif
33 endif
34
35 BUILDINFO_IN_FILE := $(wildcard *.buildinfo.in)
36 BUILDINFO_FILE    := $(BUILDINFO_IN_FILE:.in=)
37
38 all: build
39
40 build: setup-config build-hook
41         ./Setup build
42
43 build-hook:
44
45 ifeq ($(RUN_COMMAND),)
46 run:
47         @echo "cabal-package.mk: No command to run."
48         @echo "cabal-package.mk: If you want to run something, define RUN_COMMAND variable."
49 else
50 run: build
51         @echo ".:.:. Let's go .:.:."
52         $(RUN_COMMAND)
53 endif
54
55 setup-config: dist/setup-config setup-config-hook $(BUILDINFO_FILE)
56
57 setup-config-hook:
58
59 dist/setup-config: $(CABAL_FILE) Setup $(AUTOCONF_FILE)
60         ./Setup configure $(CONFIGURE_ARGS)
61
62 $(AUTOCONF_FILE): $(AUTOCONF_AC_FILE)
63         $(AUTOCONF)
64
65 $(BUILDINFO_FILE): $(BUILDINFO_IN_FILE) configure
66         ./Setup configure $(CONFIGURE_ARGS)
67
68 Setup: $(SETUP_FILE)
69         $(GHC) --make Setup
70
71 clean: clean-hook
72         $(RM_RF) dist Setup *.o *.hi .setup-config *.buildinfo
73         $(FIND) . -name '*~' -exec rm -f {} \;
74
75 clean-hook:
76
77 doc: setup-config
78         ./Setup haddock
79
80 install: build
81         $(SUDO) ./Setup install
82
83 sdist: setup-config
84         ./Setup sdist
85
86 test: build
87         ./Setup test
88
89 .PHONY: build build-hook setup-config setup-config-hook run clean clean-hook install doc sdist test