--- /dev/null
+RUN_COMMAND = sudo ./dist/build/rakka/rakka -p 8989 -l DEBUG -v
+
+CONFIGURE_ARGS = --disable-optimization -fbuild-test-suite
+
+include cabal-package.mk
\ No newline at end of file
| OptUserName String
| OptGroupName String
| OptLogLevel Priority
- | OptDisableStderrLog
+ | OptVerbose
| OptRebuildIndex
| OptHelp
deriving (Eq, Show)
(ReqArg (OptLogLevel . read) "LEVEL")
("The lowest log level to show. (default: " ++ show defaultLogLevel ++ ")")
- , Option [] ["disable-stderr-log"]
- (NoArg OptDisableStderrLog)
- "Disable logging to stderr."
+ , Option ['v'] ["verbose"]
+ (NoArg OptVerbose)
+ "Enable logging to stderr."
- , Option [] ["rebuild-index"]
+ , Option ['r'] ["rebuild-index"]
(NoArg OptRebuildIndex)
"Rebuild the index database."
setupLogger :: [CmdOpt] -> IO ()
setupLogger opts
- = do let disableStderrLog = find (== OptDisableStderrLog) opts /= Nothing
- logHandlers = if disableStderrLog then
- []
- else
- [verboseStreamHandler stderr DEBUG]
- logLevel = fromMaybe defaultLogLevel
- $ do OptLogLevel l <- find (\ x -> case x of
- OptLogLevel _ -> True
- _ -> False) opts
- return l
+ = do let verbose = find (== OptVerbose) opts /= Nothing
+ logHandlers = if verbose then
+ [verboseStreamHandler stderr DEBUG]
+ else
+ [] -- FIXME: enable file log
+ logLevel = fromMaybe defaultLogLevel
+ $ do OptLogLevel l <- find (\ x -> case x of
+ OptLogLevel _ -> True
+ _ -> False) opts
+ return l
logHandlers' <- sequence logHandlers
updateGlobalLogger rootLoggerName (setHandlers logHandlers' . setLevel logLevel)
+++ /dev/null
-CABAL_FILE = Rakka.cabal
-GHC = ghc
-EXECUTABLE = sudo ./dist/build/rakka/rakka -p 8989 -l DEBUG
-#EXECUTABLE = sudo ./dist/build/rakka/rakka -p 8989 -l DEBUG +RTS -S -A60M -RTS
-#EXECUTABLE = sudo ./dist/build/rakka/rakka -p 8989 -l DEBUG +RTS -p -RTS
-
-build: dist/setup-config Setup
- $(MAKE) -C js $@
- ./Setup build
-
-run: build
- $(EXECUTABLE)
-
-rebuild-index: build
- $(EXECUTABLE) --rebuild-index
-
-dist/setup-config: $(CABAL_FILE) configure Setup Rakka.buildinfo.in
- ./Setup configure --disable-optimization -fbuild-test-suite
-# ./Setup configure -fhardest-optimization
-# ./Setup configure -fenable-profiling
-
-configure: configure.ac
- autoconf
-
-Setup: Setup.hs
- $(GHC) --make Setup
-
-clean:
- $(MAKE) -C js $@
- rm -rf dist Setup Setup.o Setup.hi
- find . -name '*~' -exec rm -f {} \;
-
-install: build
- sudo ./Setup install
-
-test: build
- ./Setup test
-
-sdist: Setup
- ./Setup sdist
-
-.PHONY: build run clean install doc sdist test
--- /dev/null
+# -*- makefile-gmake -*-
+#
+# Variables:
+#
+# CONFIGURE_ARGS :: arguments to be passed to ./Setup configure
+# default: --disable-optimization
+#
+# RUN_COMMAND :: command to be run for "make run"
+#
+
+GHC ?= ghc
+FIND ?= find
+RM_RF ?= rm -rf
+SUDO ?= sudo
+AUTOCONF ?= autoconf
+HLINT ?= hlint
+
+CONFIGURE_ARGS ?= --disable-optimization
+
+SETUP_FILE := $(wildcard Setup.*hs)
+CABAL_FILE := $(wildcard *.cabal)
+
+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."
+ @echo "cabal-package.mk: If you want to run something, define RUN_COMMAND variable."
+else
+run: build
+ @echo ".:.:. Let's go .:.:."
+ $(RUN_COMMAND)
+endif
+
+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-hook
+ $(RM_RF) dist Setup *.o *.hi .setup-config *.buildinfo
+ $(FIND) . -name '*~' -exec rm -f {} \;
+
+clean-hook:
+
+doc: setup-config
+ ./Setup haddock
+
+install: build
+ $(SUDO) ./Setup install
+
+sdist: setup-config
+ ./Setup sdist
+
+test: build
+ ./Setup test
+
+lint:
+ $(HLINT) . --report \
+ --ignore="Use string literal" \
+ --ignore="Use concatMap"
+
+.PHONY: build build-hook setup-config setup-config-hook run clean clean-hook install doc sdist test lint