From 31a86ac8d9ddfd53832bf219a8f4b8eb18f14582 Mon Sep 17 00:00:00 2001 From: PHO Date: Sat, 30 May 2009 18:21:19 +0900 Subject: [PATCH] buildinfo thingy --- .gitignore | 5 ++++ GNUmakefile | 10 ++----- Setup.lhs | 2 +- blackboard-dns.buildinfo.in | 4 +++ blackboard-dns.cabal | 2 +- cabal-package.mk | 59 +++++++++++++++++++++++++++++-------- configure.ac | 17 +++++++++++ 7 files changed, 77 insertions(+), 22 deletions(-) create mode 100644 blackboard-dns.buildinfo.in create mode 100644 configure.ac diff --git a/.gitignore b/.gitignore index 181a84d..e38f235 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,11 @@ +configure dist Setup data/GenDBModules *.o *.hi +*.cache +*.log +*.status +*.buildinfo \ No newline at end of file diff --git a/GNUmakefile b/GNUmakefile index b0ac41c..d6d702a 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -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 diff --git a/Setup.lhs b/Setup.lhs index 5bde0de..341d5eb 100644 --- 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 index 0000000..a817b1c --- /dev/null +++ b/blackboard-dns.buildinfo.in @@ -0,0 +1,4 @@ +-- -*- haskell-cabal -*- +Executable: blackboard-dns +GHC-Options: + -DLOCALSTATEDIR="@DDNS_LOCALSTATEDIR@" diff --git a/blackboard-dns.cabal b/blackboard-dns.cabal index abcfe9c..360728e 100644 --- a/blackboard-dns.cabal +++ b/blackboard-dns.cabal @@ -8,7 +8,7 @@ Author: PHO Maintainer: PHO Stability: Experimental Cabal-Version: >= 1.2 -Build-Type: Simple +Build-Type: Configure Extra-Source-Files: data/GNUmakefile data/GenDBModules.hs diff --git a/cabal-package.mk b/cabal-package.mk index a37d18e..ca291ff 100644 --- a/cabal-package.mk +++ b/cabal-package.mk @@ -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 index 0000000..408ad3c --- /dev/null +++ b/configure.ac @@ -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 -- 2.40.0