aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
authorMattias Andrée <maandree@member.fsf.org>2015-12-07 21:48:38 +0100
committerMattias Andrée <maandree@member.fsf.org>2015-12-07 21:48:38 +0100
commit4a4273ad90ed8f7c3876141a776c50bc8c96afd8 (patch)
treeef00e75de64ffa9ea97d50804af5b13e62e4cec0 /Makefile
parentwhitespace (diff)
downloadscrotty-4a4273ad90ed8f7c3876141a776c50bc8c96afd8.tar.gz
scrotty-4a4273ad90ed8f7c3876141a776c50bc8c96afd8.tar.bz2
scrotty-4a4273ad90ed8f7c3876141a776c50bc8c96afd8.tar.xz
misc improvements
Signed-off-by: Mattias Andrée <maandree@member.fsf.org>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile198
1 files changed, 133 insertions, 65 deletions
diff --git a/Makefile b/Makefile
index f92efd2..e37b20f 100644
--- a/Makefile
+++ b/Makefile
@@ -40,8 +40,38 @@ COMMAND = scrotty
# The name of the package as it should be installed
PKGNAME = scrotty
+# Programs the makefile uses.
+# Part of GNU Coreutils:
+MKDIR ?= mkdir
+MV ?= mv
+RM ?= rm
+RMDIR ?= rmdir
+TRUE ?= true
+TEST ?= test
+INSTALL ?= install
+INSTALL_PROGRAM ?= $(INSTALL) -m755
+INSTALL_DATA ?= $(INSTALL) -m644
+INSTALL_DIR ?= $(INSTALL) -dm755
+# Part of Texinfo:
+MAKEINFO ?= makeinfo
+MAKEINFO_HTML ?= $(MAKEINFO) --html
+# Part of Texlive-plainextra:
+TEXI2PDF ?= texi2pdf
+TEXI2DVI ?= texi2dvi
+TEXI2PS ?= texi2pdf --ps
+# Part of GCC:
+CC ?= cc
+CPP ?= cpp
+# Part of GNU Gettext:
+XGETTEXT ?= xgettext
+MSGFMT ?= msgfmt
+MSGMERGE ?= msgmerge
+MSGINIT ?= msginit
+
+# Additional options for compiling PDF, DVI, and PS manuals.
+TEXINFO_FLAGS =
# Optimisation settings for C code compilation
-OPTIMISE = -Og -g
+OPTIMISE = -O2
# Warnings settings for C code compilation
WARN = -Wall -Wextra -pedantic -Wdouble-promotion -Wformat=2 -Winit-self -Wmissing-include-dirs \
-Wtrampolines -Wmissing-prototypes -Wmissing-declarations -Wnested-externs \
@@ -63,16 +93,19 @@ ifndef WITHOUT_GETTEXT
DEFS += -D'USE_GETTEXT=1'
endif
-# List of translations.
+# List of translations
LOCALES = sv
+# Files generated texi2html
+HTML_FILES = GNU-Free-Documentation-License.html index.html Invoking.html Overview.html
-.PHONY: default
-default: base info locale
.PHONY: all
-all: base doc locale
+all: base info locale
+
+.PHONY: everything
+everything: base doc locale
.PHONY: base
base: cmd
@@ -81,43 +114,49 @@ base: cmd
cmd: bin/scrotty
obj/scrotty.o: src/scrotty.c
- @mkdir -p obj
+ @$(MKDIR) -p obj
$(CC) $(STD) $(OPTIMISE) $(WARN) $(DEFS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
bin/scrotty: obj/scrotty.o
- @mkdir -p bin
+ @$(MKDIR) -p bin
$(CC) $(STD) $(OPTIMISE) $(WARN) $(LDFLAGS) -o $@ $^
.PHONY: doc
-doc: info pdf dvi ps
+doc: info pdf dvi ps html
.PHONY: info
info: bin/scrotty.info
-bin/%.info: doc/info/%.texinfo doc/info/fdl.texinfo
- @mkdir -p bin
- makeinfo $<
- mv $*.info $@
+bin/%.info: doc/info/%.texinfo doc/info/*.texinfo
+ @$(MKDIR) -p bin
+ $(MAKEINFO) $<
+ $(MV) $*.info $@
.PHONY: pdf
pdf: bin/scrotty.pdf
-bin/%.pdf: doc/info/%.texinfo doc/info/fdl.texinfo
- @mkdir -p obj/pdf bin
- cd obj/pdf && texi2pdf ../../$< < /dev/null
- mv obj/pdf/$*.pdf $@
+bin/%.pdf: doc/info/%.texinfo doc/info/*.texinfo
+ @$(MKDIR) -p obj/pdf bin
+ cd obj/pdf && $(TEXI2PDF) ../../$< $(TEXINFO_FLAGS) < /dev/null
+ $(MV) obj/pdf/$*.pdf $@
.PHONY: dvi
dvi: bin/scrotty.dvi
-bin/%.dvi: doc/info/%.texinfo doc/info/fdl.texinfo
- @mkdir -p obj/dvi bin
- cd obj/dvi && texi2dvi ../../$< < /dev/null
- mv obj/dvi/$*.dvi $@
+bin/%.dvi: doc/info/%.texinfo doc/info/*.texinfo
+ @$(MKDIR) -p obj/dvi bin
+ cd obj/dvi && $(TEXI2DVI) ../../$< $(TEXINFO_FLAGS) < /dev/null
+ $(MV) obj/dvi/$*.dvi $@
.PHONY: ps
ps: bin/scrotty.ps
-bin/%.ps: doc/info/%.texinfo doc/info/fdl.texinfo
- @mkdir -p obj/ps bin
- cd obj/ps && texi2pdf --ps ../../$< < /dev/null
- mv obj/ps/$*.ps $@
+bin/%.ps: doc/info/%.texinfo doc/info/*.texinfo
+ @$(MKDIR) -p obj/ps bin
+ cd obj/ps && $(TEXI2PS) ../../$< $(TEXINFO_FLAGS) < /dev/null
+ $(MV) obj/ps/$*.ps $@
+
+.PHONY: html
+html: bin/html/scrotty/index.html
+bin/html/scrotty/index.html: doc/info/scrotty.texinfo doc/info/*.texinfo
+ @$(MKDIR) -p bin/html
+ cd bin/html && $(MAKEINFO_HTML) ../../$< < /dev/null
ifdef WITHOUT_GETTEXT
.PHONY: locale
@@ -128,14 +167,14 @@ locale: $(foreach L,$(LOCALES),bin/mo/$(L)/messages.mo)
endif
bin/mo/%/messages.mo: po/%.po
- @mkdir -p bin/mo/$*
- cd bin/mo/$* && msgfmt ../../../$<
+ @$(MKDIR) -p bin/mo/$*
+ cd bin/mo/$* && $(MSGFMT) ../../../$<
obj/scrotty.pot: src/scrotty.c
- @mkdir -p obj
- cpp -DUSE_GETTEXT=1 < src/scrotty.c | \
- xgettext -o "$@" -Lc --from-code utf-8 --package-name scrotty \
+ @$(MKDIR) -p obj
+ $(CPP) -DUSE_GETTEXT=1 < src/scrotty.c | \
+ $(XGETTEXT) -o "$@" -Lc --from-code utf-8 --package-name scrotty \
--package-version 1.1 --no-wrap --force-po \
--copyright-holder 'Mattias Andrée (maandree@member.fsf.org)' -
@@ -144,68 +183,87 @@ obj/scrotty.pot: src/scrotty.c
update-po: $(foreach L,$(LOCALES),po/$(L).po)
po/%.po: obj/scrotty.pot
- @mkdir -p po
- if ! test -e $@; then \
- msginit --no-translator --no-wrap -i $< -o $@ -l $*; \
+ @$(MKDIR) -p po
+ if ! $(TEST) -e $@; then \
+ $(MSGINIT) --no-translator --no-wrap -i $< -o $@ -l $*; \
else \
- msgmerge --no-wrap -U $@ $<; \
+ $(MSGMERGE) --no-wrap -U $@ $<; \
fi
.PHONY: install
install: install-base install-info install-man install-locale
-.PHONY: install-all
-install-all: install-base install-doc install-locale
+.PHONY: install-everything
+install-everything: install-base install-doc install-locale
.PHONY: install-base
install-base: install-cmd install-copyright
+.PHONY: install-strip
+install-strip: install-base-strip install-info install-man install-locale
+
+.PHONY: install-everything-strip
+install-everything-strip: install-base-strip install-doc install-locale
+
+.PHONY: install-base-strip
+install-base-strip: install-cmd-strip install-copyright
+
.PHONY: install-cmd
install-cmd: bin/scrotty
- install -dm755 -- "$(DESTDIR)$(BINDIR)"
- install -m755 $< -- "$(DESTDIR)$(BINDIR)/$(COMMAND)"
+ $(INSTALL_DIR) -- "$(DESTDIR)$(BINDIR)"
+ $(INSTALL_PROGRAM) $< -- "$(DESTDIR)$(BINDIR)/$(COMMAND)"
+
+.PHONY: install-cmd-strip
+install-cmd-strip: bin/scrotty
+ $(INSTALL_DIR) -- "$(DESTDIR)$(BINDIR)"
+ $(INSTALL_PROGRAM) -s $< -- "$(DESTDIR)$(BINDIR)/$(COMMAND)"
.PHONY: install-copyright
install-copyright: install-copying install-license
.PHONY: install-copying
install-copying:
- install -dm755 -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
- install -m644 COPYING -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/COPYING"
+ $(INSTALL_DIR) -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
+ $(INSTALL_DATA) COPYING -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/COPYING"
.PHONY: install-license
install-license:
- install -dm755 -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
- install -m644 LICENSE -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/LICENSE"
+ $(INSTALL_DIR) -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
+ $(INSTALL_DATA) LICENSE -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/LICENSE"
.PHONY: install-doc
-install-doc: install-info install-pdf install-ps install-dvi install-man
+install-doc: install-info install-pdf install-ps install-dvi install-html install-man
.PHONY: install-info
install-info: bin/scrotty.info
- install -dm755 -- "$(DESTDIR)$(INFODIR)"
- install -m644 $< -- "$(DESTDIR)$(INFODIR)/$(PKGNAME).info"
+ $(INSTALL_DIR) -- "$(DESTDIR)$(INFODIR)"
+ $(INSTALL_DATA) $< -- "$(DESTDIR)$(INFODIR)/$(PKGNAME).info"
.PHONY: install-pdf
install-pdf: bin/scrotty.pdf
- install -dm755 -- "$(DESTDIR)$(DOCDIR)"
- install -m644 $< -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).pdf"
+ $(INSTALL_DIR) -- "$(DESTDIR)$(DOCDIR)"
+ $(INSTALL_DATA) $< -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).pdf"
.PHONY: install-ps
install-ps: bin/scrotty.ps
- install -dm755 -- "$(DESTDIR)$(DOCDIR)"
- install -m644 $< -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).ps"
+ $(INSTALL_DIR) -- "$(DESTDIR)$(DOCDIR)"
+ $(INSTALL_DATA) $< -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).ps"
.PHONY: install-dvi
install-dvi: bin/scrotty.dvi
- install -dm755 -- "$(DESTDIR)$(DOCDIR)"
- install -m644 $< -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).dvi"
+ $(INSTALL_DIR) -- "$(DESTDIR)$(DOCDIR)"
+ $(INSTALL_DATA) $< -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).dvi"
+
+.PHONY: install-html
+install-html: $(foreach F,$(HTML_FILES),bin/html/scrotty/$(F))
+ $(INSTALL_DIR) -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)/html"
+ $(INSTALL_DATA) $^ -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)/html/"
.PHONY: install-man
install-man: doc/man/scrotty.1
- install -dm755 -- "$(DESTDIR)$(MAN1DIR)"
- install -m644 $< -- "$(DESTDIR)$(MAN1DIR)/$(COMMAND).1"
+ $(INSTALL_DIR) -- "$(DESTDIR)$(MAN1DIR)"
+ $(INSTALL_DATA) $< -- "$(DESTDIR)$(MAN1DIR)/$(COMMAND).1"
ifdef WITHOUT_GETTEXT
.PHONY: install-locale
@@ -213,26 +271,36 @@ install-locale:
else
.PHONY: install-locale
install-locale:
- install -dm755 -- $(foreach L,$(LOCALES),"$(DESTDIR)$(LOCALEDIR)/$(L)/LC_MESSAGES")
- $(foreach L,$(LOCALES),install -m644 bin/mo/$(L)/messages.mo -- "$(DESTDIR)$(LOCALEDIR)/$(L)/LC_MESSAGES/$(PKGNAME).mo" &&) true
+ $(INSTALL) -dm755 -- $(foreach L,$(LOCALES),"$(DESTDIR)$(LOCALEDIR)/$(L)/LC_MESSAGES")
+ $(foreach L,$(LOCALES),$(INSTALL_DATA) bin/mo/$(L)/messages.mo -- "$(DESTDIR)$(LOCALEDIR)/$(L)/LC_MESSAGES/$(PKGNAME).mo" &&) $(TRUE)
endif
.PHONY: uninstall
uninstall:
- -rm -- "$(DESTDIR)$(BINDIR)/$(COMMAND)"
- -rm -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/COPYING"
- -rm -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/LICENSE"
- -rmdir -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
- -rm -- "$(DESTDIR)$(INFODIR)/$(PKGNAME).info"
- -rm -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).pdf"
- -rm -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).ps"
- -rm -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).dvi"
- -rm -- "$(DESTDIR)$(MAN1DIR)/$(COMMAND).1"
- -rm -- $(foreach L,$(LOCALES),"$(DESTDIR)$(LOCALEDIR)/$(L)/LC_MESSAGES/$(PKGNAME).mo")
+ -$(RM) -- "$(DESTDIR)$(BINDIR)/$(COMMAND)"
+ -$(RM) -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/COPYING"
+ -$(RM) -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/LICENSE"
+ -$(RMDIR) -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)"
+ -$(RM) -- "$(DESTDIR)$(INFODIR)/$(PKGNAME).info"
+ -$(RM) -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).pdf"
+ -$(RM) -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).ps"
+ -$(RM) -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).dvi"
+ -$(RM) -- $(foreach F,$(HTML_FILES),"$(DESTDIR)$(DOCDIR)/$(PKGNAME)/html/$(F)")
+ -$(RM) -- "$(DESTDIR)$(MAN1DIR)/$(COMMAND).1"
+ -$(RM) -- $(foreach L,$(LOCALES),"$(DESTDIR)$(LOCALEDIR)/$(L)/LC_MESSAGES/$(PKGNAME).mo")
.PHONY: clean
clean:
- -rm -r bin obj
+ -$(RM) -r bin obj
+
+.PHONY: distclean
+distclean: clean
+
+.PHONY: mostlyclean
+mostlyclean: clean
+
+.PHONY: maintainer-clean
+maintainer-clean: clean