From 21c7ac8d714be74903755ed2d6ee3716ab77a727 Mon Sep 17 00:00:00 2001 From: simonmar Date: Fri, 14 Oct 2005 23:11:19 +0000 Subject: First cut of Cabal build system --- src/Binary.hs | 2 +- src/FastMutInt.hs | 2 +- src/HaddockVersion.hs | 5 ++- src/Main.hs | 39 ++--------------- src/Makefile | 115 -------------------------------------------------- 5 files changed, 8 insertions(+), 155 deletions(-) delete mode 100644 src/Makefile (limited to 'src') diff --git a/src/Binary.hs b/src/Binary.hs index f3bc6477..f1c98620 100644 --- a/src/Binary.hs +++ b/src/Binary.hs @@ -1,4 +1,4 @@ -{-# OPTIONS -cpp #-} +{-# OPTIONS_GHC -cpp -fglasgow-exts #-} -- -- (c) The University of Glasgow 2002 -- diff --git a/src/FastMutInt.hs b/src/FastMutInt.hs index 39f4f99b..23001c1f 100644 --- a/src/FastMutInt.hs +++ b/src/FastMutInt.hs @@ -1,4 +1,4 @@ -{-# OPTIONS -cpp #-} +{-# OPTIONS_GHC -cpp -fglasgow-exts #-} -- -- (c) The University of Glasgow 2002 -- diff --git a/src/HaddockVersion.hs b/src/HaddockVersion.hs index f3090b4e..4cb94271 100644 --- a/src/HaddockVersion.hs +++ b/src/HaddockVersion.hs @@ -8,10 +8,11 @@ module HaddockVersion ( projectName, projectVersion, projectUrl ) where -import Version ( version ) +import Paths_Haddock ( version ) +import Data.Version ( showVersion ) projectName, projectUrl :: String projectName = "Haddock" projectUrl = "http://www.haskell.org/haddock/" -projectVersion = version +projectVersion = showVersion version diff --git a/src/Main.hs b/src/Main.hs index 0c9cdb0a..bed74040 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -1,3 +1,4 @@ +{-# OPTIONS_GHC -fglasgow-exts #-} -- -- Haddock - A Haskell Documentation Tool -- @@ -22,6 +23,7 @@ import HsSyn import Map ( Map ) import qualified Map hiding ( Map ) import Set +import Paths_Haddock ( getDataDir ) import Control.Exception ( bracket ) import Control.Monad ( when ) @@ -166,11 +168,7 @@ run flags files = do verbose = Flag_Verbose `elem` flags libdir <- case [str | Flag_Lib str <- flags] of - [] -> do maybe_exec_dir <- getBaseDir - -- Get directory of executable - case maybe_exec_dir of - Nothing -> return "." - Just dir -> return dir + [] -> getDataDir -- provided by Cabal fs -> return (last fs) let css_file = case [str | Flag_CSS str <- flags] of @@ -1404,34 +1402,3 @@ toModuleInfo descriptionOpt = type ErrMsg = String type ErrMsgM a = Writer [ErrMsg] a - -getBaseDir :: IO (Maybe String) -#if defined(mingw32_HOST_OS) -getBaseDir = do let len = (2048::Int) -- plenty, PATH_MAX is 512 under Win32. - buf <- mallocArray len - ret <- getModuleFileName nullPtr buf len - if ret == 0 then free buf >> return Nothing - else do s <- peekCString buf - free buf - return (Just (rootDir s)) - where - rootDir s = reverse (dropList "/haddock.exe" (reverse (normalisePath s))) - -foreign import stdcall unsafe "GetModuleFileNameA" - getModuleFileName :: Ptr () -> CString -> Int -> IO Int32 -#else -getBaseDir :: IO (Maybe String) = do return Nothing -#endif -normalisePath :: String -> String --- Just changes '\' to '/' - -#if defined(mingw32_HOST_OS) -normalisePath xs = subst '\\' '/' xs -subst a b ls = map (\ x -> if x == a then b else x) ls -#else -normalisePath xs = xs -#endif -dropList :: [b] -> [a] -> [a] -dropList [] xs = xs -dropList _ xs@[] = xs -dropList (_:xs) (_:ys) = dropList xs ys diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index d97a1276..00000000 --- a/src/Makefile +++ /dev/null @@ -1,115 +0,0 @@ -TOP = .. -include $(TOP)/mk/boilerplate.mk - -INSTALLING=1 - -ghc_ge_504 := $(shell if (test $(GhcCanonVersion) -ge 504); then echo YES; else echo NO; fi) -ghc_ge_603 := $(shell if (test $(GhcCanonVersion) -ge 603); then echo YES; else echo NO; fi) - -SRC_HC_OPTS += -fglasgow-exts -cpp - -# Use hierarchical libraries for GHC >= 5.04 -ifeq "$(ghc_ge_504)" "YES" -SRC_HC_OPTS += -package network -# Monad transformers live in their own package for GHC >= 6.3 -ifeq "$(ghc_ge_603)" "YES" -SRC_HC_OPTS += -package mtl -endif -else -SRC_HC_OPTS += -package data -package text -package util -package net -endif - -ifeq "$(Windows)" "YES" -HS_PROG_EXT = .exe -else -HS_PROG_EXT = .bin -endif - -HS_PROG = haddock$(HS_PROG_EXT) - -# Why HOST platform, not TARGET platform??? Confusing... -ifeq "$(Windows)" "YES" -Main_HC_OPTS += -Dmingw32_HOST_OS=1 -endif - -HsParser_HC_OPTS += -Onot -HaddockParse_HC_OPTS += -Onot - -# ----------------------------------------------------------------------------- -# Create the Version.hs file - -VERSION_HS = Version.hs -EXTRA_SRCS += $(VERSION_HS) - -boot :: $(VERSION_HS) - -Version.hs : $(TOP)/mk/version.mk - @$(RM) -f $(VERSION_HS) - @echo "Creating $(VERSION_HS) ... " - @echo "module Version where" >>$(VERSION_HS) - @echo "version = \"$(ProjectVersion)\"" >> $(VERSION_HS) - -# ----------------------------------------------------------------------------- - -ifeq "$(INSTALLING)" "1" -ifeq "$(BIN_DIST)" "1" -HADDOCKLIB=$$\"\"datadir/haddock -HADDOCKBIN=$$\"\"libexecdir/$(HS_PROG) -else -ifeq "$(TARGETPLATFORM)" "i386-unknown-cygwin32" -# --mixed is only provided by newer versions of cygpath (1.2 doesn't have it, for instance.) -#HADDOCKLIB=$(shell cygpath --mixed $(datadir)) -HADDOCKLIB=$(shell cygpath -w $(datadir) | sed -e 's%\\%/%g') -else -HADDOCKLIB=$(datadir) -endif -HADDOCKBIN=$(libexecdir)/$(HS_PROG) -endif # BIN_DIST -else -ifeq "$(TARGETPLATFORM)" "i386-unknown-cygwin32" -# See above comment re: --mixed -#HADDOCKLIB=$(shell cygpath --mixed $(FPTOOLS_TOP_ABS)/haddock/html) -HADDOCKLIB=$(shell cygpath -w $(FPTOOLS_TOP_ABS)/haddock/html | sed -e 's%\\%/%g') -else -HADDOCKLIB=$(FPTOOLS_TOP_ABS)/haddock/html -endif -HADDOCKBIN=$(FPTOOLS_TOP_ABS)/haddock/src/$(HS_PROG) -endif # INSTALLING - -HAPPY_OPTS += $(GHC_HAPPY_OPTS) - -INSTALLED_SCRIPT_PROG = haddock-$(ProjectVersion) -INPLACE_SCRIPT_PROG = haddock-inplace - -ifeq "$(INSTALLING)" "1" -TOP_PWD := $(prefix) -SCRIPT_PROG = $(INSTALLED_SCRIPT_PROG) -ifeq "$(Windows)" "NO" -LINK = haddock -endif -else -TOP_PWD := $(FPTOOLS_TOP_ABS) -SCRIPT_PROG = $(INPLACE_SCRIPT_PROG) -endif - -SCRIPT_OBJS=haddock.sh - -INTERP=$(SHELL) - -SCRIPT_SUBST_VARS = HADDOCKLIB HADDOCKBIN - -# The script isn't installed on MinGW; we run the binary directly -ifeq "$(Windows)" "NO" -INSTALL_SCRIPTS += $(SCRIPT_PROG) -endif - -INSTALL_LIBEXECS = $(HS_PROG) - -# don't recurse on 'make install' -# -ifeq "$(INSTALLING)" "1" -all clean distclean maintainer-clean :: - $(MAKE) INSTALLING=0 BIN_DIST=0 $(MFLAGS) $@ -endif - -include $(TOP)/mk/target.mk -- cgit v1.2.3