version/0.1
[cdimgtools.git] / Makefile
bloba8f2d2d956aefe19031113717f6107aff6fd7697
1 # Makefile for CDimgtools
3 # Include the settings chosen by the configure script
4 # If it is not found, default values are used
5 -include config.make
7 prefix ?= $(HOME)/.local
8 bindir ?= $(prefix)/bin
9 datarootdir ?= $(prefix)/share
10 sysconfdir ?= $(prefix)/etc
11 docdir ?= $(datarootdir)/doc
12 mandir ?= $(datarootdir)/man
13 # DESTDIR = # distributors set this on the command line
15 PACKAGE_NAME = cdimgtools
17 # Get the version via git or from the VERSION file or from the project
18 # directory name.
19 VERSION = $(shell test -x version.sh && ./version.sh $(PACKAGE_NAME) \
20 || echo "unknown_version")
21 # Allow either to be overwritten by setting DIST_VERSION on the command line.
22 ifdef DIST_VERSION
23 VERSION = $(DIST_VERSION)
24 endif
26 # Remove the _g<SHA1> part from the $VERSION
27 RPM_VERSION = $(shell echo $(VERSION) | sed -e 's/_g[0-9a-z]\+//')
28 # Get the release from the spec file
29 RPM_RELEASE = $(shell sed -r -n -e 's/^Release:[[:space:]]+(.*)%.*$$/\1/p' \
30 $(PACKAGE_NAME).spec.in)
32 PROGS =
33 SCRIPTS = raw96cdconv nrgtool
34 TESTS =
35 SOURCE = README INSTALL COPYING BUGS
36 PERLDOC = raw96cdconv nrgtool
37 MANDOC = $(PERLDOC:%=%.1)
38 HTMLDOC = $(PERLDOC:%=%.1.html) README.html
39 RELEASEDOC = $(MANDOC) $(HTMLDOC)
40 ALLDOC = $(PERLDOC:%=%.1.txt) $(MANDOC) $(HTMLDOC)
42 TARNAME = $(PACKAGE_NAME)-$(RPM_VERSION)
44 MV ?= mv
45 CP ?= cp
46 RM ?= rm
47 LN ?= ln
48 MKDIR ?= mkdir
49 INSTALL ?= install
50 TAR ?= tar
51 TAR_FLAGS = --owner root --group root
52 RPMBUILD_FLAGS = --nodeps # in case we are not on an rpm system
53 MAKE ?= make
54 AUTORECONF ?= autoreconf
55 ASCIIDOC ?= asciidoc
56 ASCIIDOC_FLAGS = -aversion=$(VERSION) -asysconfdir=$(sysconfdir)
58 PERL ?= /usr/bin/perl
60 all: build
61 .help:
62 @echo "Available targets for $(PACKAGE_NAME) Makefile:"
63 @echo " .help all configure build clean doc doc-txt doc-man doc-html"
64 @echo " dist docdist rpm"
65 @echo " install install-doc install-doc-man install-doc-html distclean"
66 @echo "Useful variables for $(PACKAGE_NAME) Makefile:"
67 @echo " prefix DESTDIR"
68 help: .help
69 .PHONY: .help help all build clean doc doc-txt doc-man doc-html dist docdist \
70 rpm distclean install install-doc install-doc-man install-doc-html
72 build: $(PROGS) $(TESTS)
73 doc: $(ALLDOC)
74 doc-txt: $(PERLDOC:%=%.1.txt)
75 doc-man: $(MANDOC)
76 doc-html: $(HTMLDOC)
78 install: all
79 $(MKDIR) -p $(DESTDIR)$(bindir) && \
80 for prog in $(PROGS) $(SCRIPTS); do \
81 $(INSTALL) -p -m 0755 "$$prog" "$(DESTDIR)$(bindir)"; \
82 done
83 install-doc: install-doc-man install-doc-html
84 install-doc-man: doc-man
85 $(MKDIR) -p $(DESTDIR)$(mandir)/man1
86 for doc in $(MANDOC); do \
87 sed 's#++SYSCONFDIR++#$(sysconfdir)#' < "$$doc" > "$$doc+"; \
88 $(INSTALL) -p -m 0644 "$$doc+" "$(DESTDIR)$(mandir)/man1/$$doc"; \
89 $(RM) "$$doc+"; \
90 done
91 install-doc-html: doc-html
92 $(MKDIR) -p $(DESTDIR)$(docdir)/$(PACKAGE_NAME)
93 for doc in $(HTMLDOC); do \
94 sed 's#++SYSCONFDIR++#$(sysconfdir)#' < "$$doc" > "$$doc+"; \
95 case "$$doc" in \
96 (*.html) $(INSTALL) -p -m 0644 "$$doc+" \
97 "$(DESTDIR)$(docdir)/$(PACKAGE_NAME)/$$doc" ;; \
98 esac; \
99 $(RM) "$$doc+"; \
100 done
102 clean:
103 $(RM) -r $(TARNAME)
104 $(RM) $(PACKAGE_NAME)-*.tar $(PACKAGE_NAME)-*.tar.gz $(PACKAGE_NAME)-*.tar.gz.md5
105 $(RM) $(PROGS) $(TESTS) *.xml pod2htm*
107 distclean: clean
108 $(RM) -r autom4te.cache
109 $(RM) $(ALLDOC) $(PACKAGE_NAME).spec aclocal.m4 configure
110 $(RM) config.h config.log config.make config.status config.h.in
112 $(TARNAME).tar: configure $(PACKAGE_NAME).spec
113 @$(MKDIR) -p $(TARNAME) && \
114 echo $(VERSION) > $(TARNAME)/VERSION && \
115 $(CP) -p $(PACKAGE_NAME).spec configure $(TARNAME)
116 git archive --format=tar --prefix=$(TARNAME)/ HEAD \
117 | $(TAR) --delete $(TARNAME)/VERSION | cat > $(TARNAME).tar && \
118 $(TAR) $(TAR_FLAGS) -rf $(TARNAME).tar $(TARNAME) && \
119 echo $(TARNAME).tar successfully generated
120 @$(RM) -r $(TARNAME)
121 dist: $(TARNAME).tar
122 gzip -f -9 $(TARNAME).tar && \
123 md5sum $(TARNAME).tar.gz > $(TARNAME).tar.gz.md5
124 rpm: dist
125 rpmbuild $(RPMBUILD_FLAGS) -ta $(TARNAME).tar.gz
126 $(TARNAME)-doc.tar: $(TARNAME).tar $(RELEASEDOC)
127 $(MV) $(TARNAME).tar $(TARNAME)-doc.tar
128 $(MKDIR) $(TARNAME)
129 $(CP) -p -d $(RELEASEDOC) $(TARNAME)
130 $(TAR) --mode 644 -rf $(TARNAME)-doc.tar `find $(TARNAME)/*`
131 @$(RM) -r $(TARNAME)
132 docdist: $(TARNAME)-doc.tar
133 gzip -f -9 $(TARNAME)-doc.tar && \
134 md5sum $(TARNAME)-doc.tar.gz > $(TARNAME)-doc.tar.gz.md5
136 configure: configure.ac
137 $(AUTORECONF) -v
139 $(PACKAGE_NAME).spec: $(PACKAGE_NAME).spec.in
140 sed -e 's/@@VERSION@@/$(RPM_VERSION)/g' \
141 -e 's/@@RELEASE@@/$(RPM_RELEASE)/g' < $< > $@
143 README.html: README INSTALL BUGS asciidoc.conf
144 $(ASCIIDOC) $(ASCIIDOC_FLAGS) -b xhtml11 -d article -a readme $<
146 $(PERLDOC:%=%.1): $(PERLDOC)
147 pod2man --utf8 $(patsubst %.1,%,$@) >$@
148 $(PERLDOC:%=%.1.txt): $(PERLDOC)
149 pod2text --utf8 $(patsubst %.1.txt,%,$@) >$@
150 $(PERLDOC:%=%.1.html): $(PERLDOC)
151 pod2html --noindex $(patsubst %.1.html,%,$@) >$@