1VERSION=3.4.0.0 2 3#KIND=devel 4KIND=rc 5#KIND=cabal-latest 6 7PREFIX=/usr/local 8HC=ghc 9GHCFLAGS=-Wall -threaded 10SSH_USER=$(USER) 11 12all: build 13 14# build the library itself 15 16SOURCES=Distribution/*.hs Distribution/Simple/*.hs \ 17 Distribution/PackageDescription/*.hs Distribution/Simple/GHC/*.hs \ 18 Distribution/Simple/Build/*.hs Distribution/Compat/*.hs \ 19 Distribution/Simple/Program/*.hs 20CONFIG_STAMP=dist/setup-config 21BUILD_STAMP=dist/build/libHSCabal-$(VERSION).a 22HADDOCK_STAMP=dist/doc/html/Cabal/index.html 23USERGUIDE_STAMP=dist/doc/users-guide/index.html 24SDIST_STAMP=dist/Cabal-$(VERSION).tar.gz 25DISTLOC=dist/release 26DIST_STAMP=$(DISTLOC)/Cabal-$(VERSION).tar.gz 27 28# TODO: when we have sphinx-build2 ? 29SPHINXCMD:=sphinx-build 30 31COMMA=, 32 33setup: $(SOURCES) Setup.hs 34 -mkdir -p dist/setup 35 $(HC) $(GHCFLAGS) --make -i. -odir dist/setup -hidir dist/setup Setup.hs \ 36 -o setup 37 38$(CONFIG_STAMP): setup Cabal.cabal 39 ./setup configure --with-compiler=$(HC) --prefix=$(PREFIX) 40 41build: $(BUILD_STAMP) 42$(BUILD_STAMP): $(CONFIG_STAMP) $(SOURCES) 43 ./setup build 44 45install: $(BUILD_STAMP) 46 ./setup install 47 48# documentation... 49 50haddock: $(HADDOCK_STAMP) 51$(HADDOCK_STAMP) : $(CONFIG_STAMP) $(BUILD_STAMP) 52 ./setup haddock 53 54SPHINX_HTML_OUTDIR=dist/doc/users-guide 55 56# do pip install everytime so we have up to date requirements when we build 57users-guide: .python-sphinx-virtualenv $(USERGUIDE_STAMP) 58$(USERGUIDE_STAMP) : doc/*.rst 59 mkdir -p $(SPHINX_HTML_OUTDIR) 60 (. ./.python-sphinx-virtualenv/bin/activate && pip install -r doc/requirements.txt && $(SPHINXCMD) doc $(SPHINX_HTML_OUTDIR)) 61 62docs: haddock users-guide 63 64.python-sphinx-virtualenv: 65 python3 -m venv .python-sphinx-virtualenv 66 (. ./.python-sphinx-virtualenv/bin/activate) 67 68clean: 69 rm -rf dist/ 70 rm -f setup 71 72# testing... 73 74moduleTest: tests/ModuleTest.hs tests/PackageDescriptionTests.hs 75 mkdir -p dist/test 76 $(HC) --make -Wall -DDEBUG -odir dist/test -hidir dist/test \ 77 -itests tests/ModuleTest.hs -o moduleTest 78 79#tests: moduleTest clean 80# cd tests/A && $(MAKE) clean 81# cd tests/HUnit-1.0 && $(MAKE) clean 82# cd tests/A && $(MAKE) 83# cd tests/HUnit-1.0 && $(MAKE) 84 85#check: 86# rm -f moduleTest 87# $(MAKE) moduleTest 88# ./moduleTest 89 90# distribution... 91 92$(SDIST_STAMP) : $(BUILD_STAMP) 93 ./setup sdist 94 95dist: $(DIST_STAMP) 96$(DIST_STAMP) : $(HADDOCK_STAMP) $(USERGUIDE_STAMP) $(SDIST_STAMP) 97 rm -rf $(DISTLOC) 98 mkdir $(DISTLOC) 99 tar -xzf $(SDIST_STAMP) -C $(DISTLOC)/ 100 mkdir -p $(DISTLOC)/Cabal-$(VERSION)/doc 101 cp -r dist/doc/html $(DISTLOC)/Cabal-$(VERSION)/doc/API 102 cp -r dist/doc/users-guide $(DISTLOC)/Cabal-$(VERSION)/doc/ 103 cp ChangeLog.md $(DISTLOC)/Cabal-$(VERSION)/ 104 tar --format=ustar -C $(DISTLOC) -czf $(DISTLOC)/Cabal-$(VERSION).tar.gz Cabal-$(VERSION) 105 mkdir $(DISTLOC)/doc 106 mv $(DISTLOC)/Cabal-$(VERSION)/doc/users-guide $(DISTLOC)/doc 107 mv $(DISTLOC)/Cabal-$(VERSION)/doc/API $(DISTLOC)/doc 108 mv $(DISTLOC)/Cabal-$(VERSION)/ChangeLog.md $(DISTLOC)/ 109 rm -r $(DISTLOC)/Cabal-$(VERSION)/ 110 @echo "Cabal tarball built: $(DIST_STAMP)" 111 @echo "Release fileset prepared: $(DISTLOC)/" 112 113# Out of date, use SFTP 114#release: $(DIST_STAMP) 115# scp -r $(DISTLOC) $(SSH_USER)@haskell.org:/home/web/haskell.org/cabal/release/cabal-$(VERSION) 116# ssh $(SSH_USER)@haskell.org 'cd /home/web/haskell.org/cabal/release && rm -f $(KIND) && ln -s cabal-$(VERSION) $(KIND)' 117 118# tags... 119 120TAGSSRCDIRS = Distribution Language 121tags TAGS: $(SOURCES) 122 find $(TAGSSRCDIRS) -name \*.\*hs | xargs hasktags 123