]> gitweb @ CieloNegro.org - blackboard-dns.git/blobdiff - cabal-package.mk
buildinfo thingy
[blackboard-dns.git] / cabal-package.mk
index a37d18e3972d214a5d6f1e7084a2279d76f4d961..ca291ff93111587ba2f4d30245a97c94713e84a3 100644 (file)
@@ -8,19 +8,40 @@
 #   RUN_COMMAND :: command to be run for "make run"
 #
 
-GHC   ?= ghc
-FIND  ?= find
-RM_RF ?= rm -rf
-SUDO  ?= sudo
+GHC      ?= ghc
+FIND     ?= find
+RM_RF    ?= rm -rf
+SUDO     ?= sudo
+AUTOCONF ?= autoconf
 
-SETUP_FILE ?= $(wildcard Setup.*hs)
-CABAL_FILE ?= $(wildcard *.cabal)
+CONFIGURE_ARGS ?= --disable-optimization
 
-CONFIGURE_ARGS := --disable-optimization
+SETUP_FILE := $(wildcard Setup.*hs)
+CABAL_FILE := $(wildcard *.cabal)
 
-build: dist/setup-config Setup
+ifeq ($(shell ls configure.ac 2>/dev/null),configure.ac)
+  AUTOCONF_AC_FILE := configure.ac
+  AUTOCONF_FILE    := configure
+else
+  ifeq ($(shell ls configure.in 2>/dev/null),configure.in)
+    AUTOCONF_AC_FILE := configure.in
+    AUTOCONF_FILE    := configure
+  else
+    AUTOCONF_AC_FILE :=
+    AUTOCONF_FILE    :=
+  endif
+endif
+
+BUILDINFO_IN_FILE := $(wildcard *.buildinfo.in)
+BUILDINFO_FILE    := $(BUILDINFO_IN_FILE:.in=)
+
+all: build
+
+build: setup-config build-hook
        ./Setup build
 
+build-hook:
+
 ifeq ($(RUN_COMMAND),)
 run:
        @echo "cabal-package.mk: No command to run."
@@ -31,26 +52,38 @@ run: build
        $(RUN_COMMAND)
 endif
 
-dist/setup-config: $(CABAL_FILE) Setup
+setup-config: dist/setup-config setup-config-hook $(BUILDINFO_FILE)
+
+setup-config-hook:
+
+dist/setup-config: $(CABAL_FILE) Setup $(AUTOCONF_FILE)
+       ./Setup configure $(CONFIGURE_ARGS)
+
+$(AUTOCONF_FILE): $(AUTOCONF_AC_FILE)
+       $(AUTOCONF)
+
+$(BUILDINFO_FILE): $(BUILDINFO_IN_FILE) configure
        ./Setup configure $(CONFIGURE_ARGS)
 
 Setup: $(SETUP_FILE)
        $(GHC) --make Setup
 
-clean:
+clean: clean-hook
        $(RM_RF) dist Setup *.o *.hi .setup-config *.buildinfo
        $(FIND) . -name '*~' -exec rm -f {} \;
 
-doc: dist/setup-config Setup
+clean-hook:
+
+doc: setup-config
        ./Setup haddock
 
 install: build
        $(SUDO) ./Setup install
 
-sdist: Setup
+sdist: setup-config
        ./Setup sdist
 
 test: build
        ./Setup test
 
-.PHONY: build run clean install doc sdist test
+.PHONY: build build-hook setup-config setup-config-hook run clean clean-hook install doc sdist test