]> gitweb @ CieloNegro.org - blackboard-dns.git/commitdiff
buildinfo thingy
authorPHO <pho@cielonegro.org>
Sat, 30 May 2009 09:21:19 +0000 (18:21 +0900)
committerPHO <pho@cielonegro.org>
Sat, 30 May 2009 09:21:19 +0000 (18:21 +0900)
.gitignore
GNUmakefile
Setup.lhs
blackboard-dns.buildinfo.in [new file with mode: 0644]
blackboard-dns.cabal
cabal-package.mk
configure.ac [new file with mode: 0644]

index 181a84d3193c0e39d943df773e798e2cbdf8f919..e38f235a0008c6f8145505f4c70f4024699446b8 100644 (file)
@@ -1,6 +1,11 @@
+configure
 dist
 Setup
 data/GenDBModules
 
 *.o
 *.hi
+*.cache
+*.log
+*.status
+*.buildinfo
\ No newline at end of file
index b0ac41c73aef81e0dd9837af9d943155e3a35412..d6d702a4a461937c3e30162ec195aadffb76d886 100644 (file)
@@ -1,13 +1,9 @@
 RUN_COMMAND = ./dist/build/blackboard-dns/blackboard-dns
 
-build: generated-sources
-
-clean: clean-sources
+include cabal-package.mk
 
-generated-sources:
+build-hook:
        $(MAKE) -C data all
 
-clean-sources:
+clean-hook:
        $(MAKE) -C data clean
-
-include cabal-package.mk
index 5bde0de962274e26328ecffabb4e9f6430a10cc9..341d5eb20318880d6c54da440593b549a7421c09 100644 (file)
--- a/Setup.lhs
+++ b/Setup.lhs
@@ -1,3 +1,3 @@
 #!/usr/bin/env runhaskell
 > import Distribution.Simple
-> main = defaultMain
+> main = defaultMainWithHooks autoconfUserHooks
diff --git a/blackboard-dns.buildinfo.in b/blackboard-dns.buildinfo.in
new file mode 100644 (file)
index 0000000..a817b1c
--- /dev/null
@@ -0,0 +1,4 @@
+-- -*- haskell-cabal -*-
+Executable: blackboard-dns
+GHC-Options:
+    -DLOCALSTATEDIR="@DDNS_LOCALSTATEDIR@"
index abcfe9cdebf91703416c1d72ecbbcfe0d3b99aa6..360728e1b9ad1f4fb301368eda2216b3371145c3 100644 (file)
@@ -8,7 +8,7 @@ Author:              PHO <pho at cielonegro.org>
 Maintainer:          PHO <pho at cielonegro.org>
 Stability:           Experimental
 Cabal-Version:       >= 1.2
-Build-Type:          Simple
+Build-Type:          Configure
 Extra-Source-Files:
     data/GNUmakefile
     data/GenDBModules.hs
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
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..408ad3c
--- /dev/null
@@ -0,0 +1,17 @@
+AC_INIT([blackboard-dns], [], [pho at cielonegro dot org])
+AC_CONFIG_SRCDIR([blackboard-dns.cabal])
+
+# $localstatedir has a reference to ${prefix} but the ${prefix} is
+# "NONE" at this time. AC_OUTPUT changes the value of ${prefix} from
+# "NONE" to $ac_default_prefix but it's too late!
+if test "x$prefix" = "xNONE"; then
+   prefix=$ac_default_prefix
+fi
+
+DDNS_LOCALSTATEDIR=`eval echo "$localstatedir"`/blackboard-dns
+AC_SUBST([DDNS_LOCALSTATEDIR])
+
+AC_CONFIG_FILES([
+        blackboard-dns.buildinfo
+])
+AC_OUTPUT