pandoc/Makefile

326 lines
11 KiB
Makefile
Raw Normal View History

# Makefile for Pandoc.
#-------------------------------------------------------------------------------
# Constant names and commands in source tree
#-------------------------------------------------------------------------------
CABAL := pandoc.cabal
SRCDIR := .
MANDIR := man
TESTDIR := tests
BUILDDIR := dist
BUILDCONF := $(BUILDDIR)/setup-config
BUILDVARS := vars
CONFIGURE := configure
ODTSTYLES := odt-styles
#-------------------------------------------------------------------------------
# Cabal constants
#-------------------------------------------------------------------------------
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
PKG := $(shell sed -ne 's/^[Nn]ame:[[:space:]]*//p' $(CABAL) | tr A-Z a-z)
VERSION := $(shell sed -ne 's/^[Vv]ersion:[[:space:]]*//p' $(CABAL))
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
PKGID := $(PKG)-$(VERSION)
EXECSBASE := $(shell sed -ne 's/^[Ee]xecutable:\{0,1\}[[:space:]]*//p' $(CABAL))
#-------------------------------------------------------------------------------
More sanitizations in Makefile (needs testing): + Remove a bogus DOCS assignment line. + Cabal recreates pandoc executable by unnecessarily linking Main.o with library (it skips compiling *.hs files though). Since pandoc's time stamp is modified, it is copied from buildir to top directory, and also README.html is regenerated, each time a target which has a 'build' prerequisite is invoked. As a solution, now PHONY 'build' target depends on BUILDDIR/. + "THIS" variable has a confusing semantics and it is abusingly used in various targets. We in fact need it to specify package sub directories created during installation. Clarify this meaning by moving it to path variables section. + Create a new variable as MAIN which holds the main executable name. Sorry for my obsession to avoid simply using a magic "pandoc" name. :-) Modify all targets which (abusingly) refers to THIS and replace THIS with MAIN. Note that MAIN is derived from EXECS which in turn collects all executable names from Executable stanzas in cabal file. + As EXECS may hold more than one executable name, update EXECS target to reflect this semantic. + Rename BINS variable as PROGS and modify it so as to hold the names of all executables required to be installed. Remove bin_all local variable as PROGS can be used for the same purpose instead. + Modify DOCS variable so as to hold the names of all documents required to be installed. Remove doc_all local variable as DOCS can be used for the same purpose instead. + Remove DOCS target. README.html is already generated when needed. + Remove build-exec redundant prerequisite from osx_dest target. Make can find its way. + Set MAIN as the prerequisite of 'test' and 'test-markdown' to make things more clear. git-svn-id: https://pandoc.googlecode.com/svn/trunk@70 788f1e2b-df1e-0410-8736-df70ead52e1b
2006-11-02 15:32:57 +01:00
# Install targets
#-------------------------------------------------------------------------------
WRAPPERS := html2markdown hsmarkdown markdown2pdf
# Add .exe extensions if we're running Windows/Cygwin.
EXTENSION := $(shell uname | tr '[:upper:]' '[:lower:]' | \
sed -ne 's/^cygwin.*$$/\.exe/p')
BUILDCMD := $(addsuffix $(EXTENSION), ./setup)
EXECS := $(addsuffix $(EXTENSION),$(EXECSBASE))
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
PROGS := $(EXECS) $(WRAPPERS)
MAIN := $(firstword $(EXECS))
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
DOCS := README.html README BUGS
MANPAGES := $(patsubst %.md,%,$(wildcard $(MANDIR)/man?/*.?.md))
#-------------------------------------------------------------------------------
# Variables to setup through environment
#-------------------------------------------------------------------------------
# Specify default values.
prefix := /usr/local
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
destdir :=
# Attempt to set variables from a previous make session.
-include $(BUILDVARS)
# Fallback to defaults but allow to get the values from environment.
PREFIX ?= $(prefix)
DESTDIR ?= $(destdir)
DATADIR ?= $(PKGID)
DOCDIR ?= $(PKGID)/doc
#-------------------------------------------------------------------------------
# Installation paths
#-------------------------------------------------------------------------------
DESTPATH := $(DESTDIR)$(PREFIX)
BINPATH := $(DESTPATH)/bin
DATAPATH := $(DESTPATH)/share
MANPATH := $(DATAPATH)/man
PKGDATAPATH := $(DATAPATH)/$(DATADIR)
PKGDOCPATH := $(DATAPATH)/$(DOCDIR)
#-------------------------------------------------------------------------------
# Generic Makefile variables
#-------------------------------------------------------------------------------
INSTALL := install -c
INSTALL_PROGRAM := $(INSTALL) -m 755
INSTALL_DATA := $(INSTALL) -m 644
STRIP := strip
GHC ?= ghc
GHC_VERSION := $(shell $(GHC) --version | sed -e 's/[^0-9]*//')
#-------------------------------------------------------------------------------
# Recipes
#-------------------------------------------------------------------------------
# Default target.
.PHONY: all
all: build-program
# Document process rules.
More sanitizations in Makefile (needs testing): + Remove a bogus DOCS assignment line. + Cabal recreates pandoc executable by unnecessarily linking Main.o with library (it skips compiling *.hs files though). Since pandoc's time stamp is modified, it is copied from buildir to top directory, and also README.html is regenerated, each time a target which has a 'build' prerequisite is invoked. As a solution, now PHONY 'build' target depends on BUILDDIR/. + "THIS" variable has a confusing semantics and it is abusingly used in various targets. We in fact need it to specify package sub directories created during installation. Clarify this meaning by moving it to path variables section. + Create a new variable as MAIN which holds the main executable name. Sorry for my obsession to avoid simply using a magic "pandoc" name. :-) Modify all targets which (abusingly) refers to THIS and replace THIS with MAIN. Note that MAIN is derived from EXECS which in turn collects all executable names from Executable stanzas in cabal file. + As EXECS may hold more than one executable name, update EXECS target to reflect this semantic. + Rename BINS variable as PROGS and modify it so as to hold the names of all executables required to be installed. Remove bin_all local variable as PROGS can be used for the same purpose instead. + Modify DOCS variable so as to hold the names of all documents required to be installed. Remove doc_all local variable as DOCS can be used for the same purpose instead. + Remove DOCS target. README.html is already generated when needed. + Remove build-exec redundant prerequisite from osx_dest target. Make can find its way. + Set MAIN as the prerequisite of 'test' and 'test-markdown' to make things more clear. git-svn-id: https://pandoc.googlecode.com/svn/trunk@70 788f1e2b-df1e-0410-8736-df70ead52e1b
2006-11-02 15:32:57 +01:00
%.html: % $(MAIN)
./$(MAIN) -s -S --toc $< >$@ || rm -f $@
More sanitizations in Makefile (needs testing): + Remove a bogus DOCS assignment line. + Cabal recreates pandoc executable by unnecessarily linking Main.o with library (it skips compiling *.hs files though). Since pandoc's time stamp is modified, it is copied from buildir to top directory, and also README.html is regenerated, each time a target which has a 'build' prerequisite is invoked. As a solution, now PHONY 'build' target depends on BUILDDIR/. + "THIS" variable has a confusing semantics and it is abusingly used in various targets. We in fact need it to specify package sub directories created during installation. Clarify this meaning by moving it to path variables section. + Create a new variable as MAIN which holds the main executable name. Sorry for my obsession to avoid simply using a magic "pandoc" name. :-) Modify all targets which (abusingly) refers to THIS and replace THIS with MAIN. Note that MAIN is derived from EXECS which in turn collects all executable names from Executable stanzas in cabal file. + As EXECS may hold more than one executable name, update EXECS target to reflect this semantic. + Rename BINS variable as PROGS and modify it so as to hold the names of all executables required to be installed. Remove bin_all local variable as PROGS can be used for the same purpose instead. + Modify DOCS variable so as to hold the names of all documents required to be installed. Remove doc_all local variable as DOCS can be used for the same purpose instead. + Remove DOCS target. README.html is already generated when needed. + Remove build-exec redundant prerequisite from osx_dest target. Make can find its way. + Set MAIN as the prerequisite of 'test' and 'test-markdown' to make things more clear. git-svn-id: https://pandoc.googlecode.com/svn/trunk@70 788f1e2b-df1e-0410-8736-df70ead52e1b
2006-11-02 15:32:57 +01:00
%.tex: % $(MAIN)
./$(MAIN) -s -w latex $< >$@ || rm -f $@
%.rtf: % $(MAIN)
./$(MAIN) -s -w rtf $< >$@ || rm -f $@
%.pdf: % $(MAIN) markdown2pdf
sh ./markdown2pdf $< || rm -f $@
%.txt: %
perl -p -e 's/\n/\r\n/' $< > $@ || rm -f $@ # convert to DOS line endings
.PHONY: configure
cleanup_files+=Setup.hi Setup.o $(BUILDCMD) $(BUILDVARS)
ifdef GHC_PKG
hc_pkg = --with-hc-pkg=$(GHC_PKG)
else
hc_pkg =
endif
templates=$(wildcard templates/*.* templates/headers/*.* templates/ui/default/*.*)
configure: $(BUILDCONF)
$(BUILDCMD): Setup.hs
$(GHC) -package Cabal Setup.hs -o $(BUILDCMD)
$(BUILDCONF): $(CABAL) $(CABAL_BACKUP) $(BUILDCMD) $(templates)
$(BUILDCMD) configure --prefix=$(PREFIX) --with-compiler=$(GHC) $(hc_pkg) $(CABALOPTS)
@# Make configuration time settings persistent (definitely a hack).
@echo "PREFIX?=$(PREFIX)" >$(BUILDVARS)
@echo "DESTDIR?=$(DESTDIR)" >>$(BUILDVARS)
.PHONY: build
build: configure
$(BUILDCMD) build
.PHONY: build-exec
build-exec: $(PROGS)
More sanitizations in Makefile (needs testing): + Remove a bogus DOCS assignment line. + Cabal recreates pandoc executable by unnecessarily linking Main.o with library (it skips compiling *.hs files though). Since pandoc's time stamp is modified, it is copied from buildir to top directory, and also README.html is regenerated, each time a target which has a 'build' prerequisite is invoked. As a solution, now PHONY 'build' target depends on BUILDDIR/. + "THIS" variable has a confusing semantics and it is abusingly used in various targets. We in fact need it to specify package sub directories created during installation. Clarify this meaning by moving it to path variables section. + Create a new variable as MAIN which holds the main executable name. Sorry for my obsession to avoid simply using a magic "pandoc" name. :-) Modify all targets which (abusingly) refers to THIS and replace THIS with MAIN. Note that MAIN is derived from EXECS which in turn collects all executable names from Executable stanzas in cabal file. + As EXECS may hold more than one executable name, update EXECS target to reflect this semantic. + Rename BINS variable as PROGS and modify it so as to hold the names of all executables required to be installed. Remove bin_all local variable as PROGS can be used for the same purpose instead. + Modify DOCS variable so as to hold the names of all documents required to be installed. Remove doc_all local variable as DOCS can be used for the same purpose instead. + Remove DOCS target. README.html is already generated when needed. + Remove build-exec redundant prerequisite from osx_dest target. Make can find its way. + Set MAIN as the prerequisite of 'test' and 'test-markdown' to make things more clear. git-svn-id: https://pandoc.googlecode.com/svn/trunk@70 788f1e2b-df1e-0410-8736-df70ead52e1b
2006-11-02 15:32:57 +01:00
cleanup_files+=$(EXECS)
$(EXECS): build
for f in $@; do \
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
find $(BUILDDIR) -type f -name "$$f" -perm +a=x \
-exec ln -s -f {} . \; ; \
done
.PHONY: build-doc
cleanup_files+=README.html $(MANPAGES)
build-doc: $(DOCS) $(MANPAGES)
.PHONY: build-program
build-program: build-exec build-doc
.PHONY: build-lib-doc haddock
build-lib-doc: html
haddock: build-lib-doc
cleanup_files+=html
html/: configure
-rm -rf html
$(BUILDCMD) haddock && cp -r $(BUILDDIR)/doc/html .
.PHONY: build-all
build-all: build-program build-lib-doc
# User documents installation.
.PHONY: install-doc uninstall-doc
man_all:=$(patsubst $(MANDIR)/%,%,$(MANPAGES))
install-doc: build-doc
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
$(INSTALL) -d $(PKGDOCPATH) && $(INSTALL_DATA) $(DOCS) $(PKGDOCPATH)/
for f in $(man_all); do \
$(INSTALL) -d $(MANPATH)/$$(dirname $$f); \
$(INSTALL_DATA) $(MANDIR)/$$f $(MANPATH)/$$f; \
done
uninstall-doc:
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
-for f in $(DOCS); do rm -f $(PKGDOCPATH)/$$f; done
-for f in $(man_all); do rm -f $(MANPATH)/$$f; done
rmdir $(PKGDOCPATH) 2>/dev/null ||:
# Program only installation.
.PHONY: install-exec uninstall-exec
install-exec: build-exec
$(STRIP) $(EXECS)
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
$(INSTALL) -d $(BINPATH); \
for f in $(PROGS); do \
if [ -L $$f ]; then \
f=$$(readlink $$f); \
fi; \
$(INSTALL_PROGRAM) $$f $(BINPATH)/; \
done
uninstall-exec:
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
-for f in $(notdir $(PROGS)); do rm -f $(BINPATH)/$$f; done
# Program + user documents installation.
.PHONY: install-program uninstall-program
install-program: install-exec install-doc
uninstall-program: uninstall-exec uninstall-doc
.PHONY: install-all uninstall-all
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
# Full installation through Cabal: main + wrappers + user docs + lib + lib docs
install-all: build-all install-program
destdir=$(DESTDIR); \
# Older Cabal versions have no '--destdir' option.
if $(BUILDCMD) copy --help | grep -q '\-\-destdir'; then \
opt="--destdir=$${destdir-/}"; \
else \
opt="--copy-prefix=$${destdir}$(PREFIX)"; \
fi; \
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
$(BUILDCMD) copy $$opt; $(BUILDCMD) register
# Cabal lacks an 'uninstall' command. We have to remove some cruft manually.
uninstall-all: uninstall-program configure
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
@libdir=$$($(GHC_PKG) field $(PKGID) library-dirs 2>/dev/null | \
sed 's/^library-dirs: *//'); \
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
htmldir=$$($(GHC_PKG) field $(PKGID) haddock-html 2>/dev/null | \
sed 's/^haddock-html: *//'); \
if [ -d $$libdir ]; then \
$(BUILDCMD) unregister ||:; \
else \
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
echo >&2 "*** Couldn't locate library for pkgid: $(PKGID). ***"; \
fi; \
for d in $$libdir $$htmldir; do \
[ -d $$d ] && { \
rm -rf $$d; rmdir $$(dirname $$d) 2>/dev/null ||:; \
} \
done; \
rmdir $(PKGDOCPATH) $(PKGDATAPATH) 2>/dev/null ||:
# Default installation recipe for a common deployment scenario.
.PHONY: install uninstall
install: install-program
uninstall: uninstall-program
# FreeBSD port
.PHONY: freebsd
freebsd_dest:=freebsd
freebsd_makefile:=$(freebsd_dest)/Makefile
freebsd_template:=$(freebsd_makefile).in
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
cleanup_files+=$(freebsd_makefile)
freebsd : $(freebsd_makefile)
$(freebsd_makefile) : $(freebsd_template)
sed -e 's/@VERSION@/$(VERSION)/' $< > $@
# MacPort
.PHONY: macport
macport_dest:=macports
portfile:=$(macport_dest)/Portfile
portfile_template:=$(portfile).in
cleanup_files+=$(portfile)
macport : $(portfile)
$(portfile) : $(portfile_template) tarball
sed -e 's/@VERSION@/$(VERSION)/' $(portfile_template) | \
sed -e 's/@TARBALLMD5SUM@/$(word 2, $(shell openssl md5 $(tarball)))/' > \
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
$(portfile)
.PHONY: win-pkg
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
win_pkg_name:=$(PKGID).zip
win_docs:=COPYING.txt COPYRIGHT.txt BUGS.txt README.txt README.html
cleanup_files+=$(win_pkg_name) $(win_docs)
win-pkg: $(win_pkg_name)
$(win_pkg_name): $(PKG).exe $(win_docs)
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
zip -r $(win_pkg_name) $(PKG).exe $(win_docs)
.PHONY: test test-markdown
More sanitizations in Makefile (needs testing): + Remove a bogus DOCS assignment line. + Cabal recreates pandoc executable by unnecessarily linking Main.o with library (it skips compiling *.hs files though). Since pandoc's time stamp is modified, it is copied from buildir to top directory, and also README.html is regenerated, each time a target which has a 'build' prerequisite is invoked. As a solution, now PHONY 'build' target depends on BUILDDIR/. + "THIS" variable has a confusing semantics and it is abusingly used in various targets. We in fact need it to specify package sub directories created during installation. Clarify this meaning by moving it to path variables section. + Create a new variable as MAIN which holds the main executable name. Sorry for my obsession to avoid simply using a magic "pandoc" name. :-) Modify all targets which (abusingly) refers to THIS and replace THIS with MAIN. Note that MAIN is derived from EXECS which in turn collects all executable names from Executable stanzas in cabal file. + As EXECS may hold more than one executable name, update EXECS target to reflect this semantic. + Rename BINS variable as PROGS and modify it so as to hold the names of all executables required to be installed. Remove bin_all local variable as PROGS can be used for the same purpose instead. + Modify DOCS variable so as to hold the names of all documents required to be installed. Remove doc_all local variable as DOCS can be used for the same purpose instead. + Remove DOCS target. README.html is already generated when needed. + Remove build-exec redundant prerequisite from osx_dest target. Make can find its way. + Set MAIN as the prerequisite of 'test' and 'test-markdown' to make things more clear. git-svn-id: https://pandoc.googlecode.com/svn/trunk@70 788f1e2b-df1e-0410-8736-df70ead52e1b
2006-11-02 15:32:57 +01:00
test: $(MAIN)
$(BUILDCMD) test
compat:=$(PWD)/hsmarkdown
markdown_test_dirs:=$(wildcard $(TESTDIR)/MarkdownTest_*)
test-markdown: $(MAIN) $(compat)
@for suite in $(markdown_test_dirs); do \
( \
suite_version=$$(echo $$suite | sed -e 's/.*_//');\
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
echo >&2 "-----------------------------------------";\
echo >&2 "Running Markdown test suite version $${suite_version}.";\
PATH=$(PWD):$$PATH; export PATH; cd $$suite && \
perl MarkdownTest.pl -s $(compat) -tidy ; \
) \
done
# Stolen and slightly improved from a GPLed Makefile. Credits to John Meacham.
src_all:=$(shell find $(SRCDIR) -type f -name '*hs' | egrep -v '^\./(_darcs|lib|test)/')
cleanup_files+=$(patsubst %,$(SRCDIR)/%,tags tags.sorted)
tags: $(src_all)
cd $(SRCDIR) && hasktags -c $(src_all:$(SRCDIR)/%=%); \
LC_ALL=C sort tags >tags.sorted; mv tags.sorted tags
.PHONY: tarball
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
tarball:=$(PKGID).tar.gz
cleanup_files+=$(tarball)
tarball: $(tarball)
$(tarball):
$(BUILDCMD) sdist
cp $(BUILDDIR)/$(tarball) .
.PHONY: deb
deb_name:=$(shell grep ^Package debian/control | cut -d' ' -f2 | head -n 1)
deb_version:=$(shell head -n 1 debian/changelog | cut -f2 -d' ' | tr -d '()')
deb_arch:=i386
deb_main:=$(deb_name)_$(deb_version)_$(deb_arch).deb
deb: debian
@[ -x /usr/bin/fakeroot ] || { \
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
echo >&2 "*** Please install fakeroot package. ***"; \
exit 1; \
}
@[ -x /usr/bin/dpkg-buildpackage ] || { \
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
echo >&2 "*** Please install dpkg-dev package. ***"; \
exit 1; \
}
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
mv $(BUILDVARS) $(BUILDVARS).old 2>/dev/null ||: # backup settings
if [ -x /usr/bin/debuild ]; then \
debuild -uc -us -i.svn -I.svn -i_darcs -I_darcs --lintian-opts -i; \
else \
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
echo >&2 "*** Please install devscripts package. ***"; \
echo >&2 "*** Using dpkg-buildpackage for package building. ***"; \
dpkg-buildpackage -rfakeroot -uc -us -i.svn -I.svn -i_darcs -I_darcs; \
fi
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
mv $(BUILDVARS).old $(BUILDVARS) 2>/dev/null ||: # restore
.PHONY: website
web_src:=web
web_dest:=pandoc-website
make_page:=./$(MAIN) -s -S -B $(web_src)/header.html \
-A $(web_src)/footer.html \
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
-H $(web_src)/css
cleanup_files+=$(web_dest)
$(web_dest) : html $(wildcard $(web_src)/*) debian/changelog \
INSTALL $(MANPAGES) $(MANDIR)/man1/pandoc.1.md README
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
rm -rf $(web_dest) && { \
mkdir $(web_dest); \
cp -r html $(web_dest)/doc; \
cp $(web_src)/* $(web_dest)/; \
sed -e 's#@VERSION@#$(VERSION)#g' $(web_src)/index.txt.in > \
$(web_dest)/index.txt; \
cp debian/changelog $(web_dest)/changelog.txt ; \
cp README $(web_dest)/ ; \
cp INSTALL $(web_dest)/ ; \
cp $(MANDIR)/man1/pandoc.1.md $(web_dest)/ ; \
cp $(MANPAGES) $(web_dest)/ ; \
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
} || { rm -rf $(web_dest); exit 1; }
website: $(MAIN) $(web_dest)
Changes in Makefile: - For generic installations, use $prefix/share/pandoc-$VERSION/doc directory to put all the documentation files. This fixes the issue of having two copies of the library documentation (one in $prefix/share/pandoc-doc, the other is in $prefix/share/pandoc-$VERSION). - Remove uninstall-lib-doc target and move the relevant code to uninstall-all target. Add extra code to remove the html directory. These changes fix the issue of leaving the library documentation in $prefix/share/pandoc-$VERSION uninstalled. - Remove the confusing NAME and THIS variables and create new variables: PKG (same as THIS), and PKGID ($PKG-$VERSION = $THIS-$VERSION). Remove RELNAME (which is equal to PKGID). All these changes simplified things a bit in "Cabal constants" section and uninstall-all target. - Remove some Cabal constants for the sake of simplicity and add a few new ones: PKGDATAPATH and PKGDOCPATH. We at least need a PKGDOCPATH variable to install DOCS, as Cabal doesn't provide a command for this target (hence, install-doc). I wish to set this variable by using ghc-pkg (just like libdir in install-all), but this seems a bit difficult to me, as there is no docdir variable in .installed-pkg-config and we would have to resort to an unclean hack which extracts docdir from haddock-dir. - Keep all non-critical steps (i.e. rmdir) quiet to reduce noise. - Ensure to use stderr for all messages. - Avoid forking a subshell in $(web_dest). - A few unrelated cosmetic changes. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1043 788f1e2b-df1e-0410-8736-df70ead52e1b
2007-10-07 19:49:45 +02:00
PANDOC_PATH=$(shell pwd) make -C $(web_dest)
.PHONY: distclean clean
distclean: clean
if [ -d debian ]; then \
chmod +x debian/rules; fakeroot debian/rules clean; \
fi
clean:
-if [ -f $(BUILDCONF) ]; then $(BUILDCMD) clean; fi
-rm -rf $(cleanup_files)