summaryrefslogtreecommitdiffstats
path: root/Makefile.in
diff options
context:
space:
mode:
authorP. J. McDermott <pjm@nac.net>2013-06-15 16:57:02 (EDT)
committer P. J. McDermott <pjm@nac.net>2013-06-15 16:57:02 (EDT)
commit443f79077d349db5aa14169a6c5ccf1e4bcd4cf1 (patch)
tree01924a3db679391b6d0494fa869de890028f2eea /Makefile.in
parenta5bba3e6fc970d6ea91d9679dbeb0c90fcf60b65 (diff)
parent56cc8c00ddebce8c0ccb3cd907ff5a66e7be226b (diff)
Merge branch 'feature/build-system-improvements'.
Diffstat (limited to 'Makefile.in')
-rw-r--r--Makefile.in301
1 files changed, 227 insertions, 74 deletions
diff --git a/Makefile.in b/Makefile.in
index b7a53a2..70b584a 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -2,7 +2,7 @@
# Makefile.in
# Input Makefile for configure.
#
-# Copyright (C) 2012 Patrick "P. J." McDermott
+# Copyright (C) 2012-2013 Patrick "P. J." McDermott
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -19,102 +19,255 @@
package_name = @package_name@
package_version = @package_version@
+package_description = @package_description@
+package_library = @package_library@
srcdir = @srcdir@
prefix = @prefix@
bindir = @bindir@
libdir = @libdir@
+pkglibdir = @pkglibdir@
datadir = @datadir@
mandir = @mandir@
+man1dir = @man1dir@
+man3dir = @man3dir@
+localedir = @localedir@
sysconfdir = @sysconfdir@
-libopkbuild = @libopkbuild@
-metadata = @metadata@
-opkhelper_3_0 = @opkhelper_3_0@
DESTDIR = /
sh = @sh@
+opkhelper_3_0 = @opkhelper_3_0@
+
+metadata = @metadata@
+
+pkglibpackagedir = $(pkglibdir)/package
+pkglibmetadatadir = $(pkglibdir)/metadata
-MACROS = \
- 'DESTDIR=$(DESTDIR)' \
- 'prefix=$(prefix)' \
- 'bindir=$(bindir)' \
- 'libdir=$(libdir)' \
- 'datadir=$(datadir)' \
- 'mandir=$(mandir)' \
- 'sysconfdir=$(sysconfdir)' \
- 'libopkbuild=$(libopkbuild)' \
- 'metadata=$(metadata)' \
- 'opkhelper_3_0=$(opkhelper_3_0)'
+include $(srcdir)/src/local.mk
+include $(srcdir)/lib/local.mk
+include $(srcdir)/lib/package/local.mk
+include $(srcdir)/lib/metadata/local.mk
+include $(srcdir)/man/local.mk
+include $(srcdir)/locale/local.mk
+include $(srcdir)/tests/local.mk
+
+bin = $(bin_srcs:.sh=)
+pkglib = $(pkglib_srcs:.sh=.sm)
+pkglibpackage = $(pkglibpackage_srcs:.sh=.sm)
+pkglibmetadata = $(pkglibmetadata_srcs:.sh=.sm)
+man1 = $(man1_srcs:.1in=.1)
+man3 = $(man3_srcs:.3in=.3)
+locale = $(locale_srcs:.sh=.ms)
distdir = $(package_name)-$(package_version)
-distfiles = configure Makefile.in COPYING.2 COPYING.3 \
- README INSTALL ChangeLog TODO
+distfiles = \
+ configure \
+ Makefile.in \
+ COPYING.2 \
+ COPYING.3 \
+ README \
+ INSTALL \
+ ChangeLog \
+ TODO \
+ src/local.mk \
+ lib/local.mk \
+ lib/package/local.mk \
+ lib/metadata/local.mk \
+ man/local.mk \
+ locale/local.mk \
+ tests/local.mk \
+ $(bin_srcs) \
+ $(pkglib_srcs) \
+ $(pkglibpackage_srcs) \
+ $(pkglibmetadata_srcs) \
+ $(man1_srcs) \
+ $(man3_srcs) \
+ $(locale_srcs) \
+ $(tests)
+
+script = \
+ s&@@PACKAGE_NAME@@&$(package_name)&;\
+ s&@@PACKAGE_VERSION@@&$(package_version)&;\
+ s&@@PACKAGE_DESCRIPTION@@&$(package_description)&;\
+ s&@@BINDIR@@&$(bindir)&;\
+ s&@@PKGLIBDIR@@&$(pkglibdir)&;\
+ s&@@DATADIR@@&$(datadir)&;\
+ s&@@LOCALEDIR@@&$(localedir)&;\
+ s&@@SYSCONFDIR@@&$(sysconfdir)&;\
+ s&@@SH@@&$(sh)&;\
+ s&@@METADATA@@&$(metadata)&;\
+ s&@@OPKHELPER_3_0@@&$(opkhelper_3_0)&;
.SUFFIXES:
+.SUFFIXES: .sh .sm .1in .1 .3in .3 .ms
+
+# XXX: Support for lists of multiple targets in inference rules doesn't appear
+# to be required by POSIX.1-2008 [1], but it exists in GNU Make and NetBSD
+# pmake. Expand this into separate rules if it is a problem with certain make
+# implementations.
+# [1]: Compare the inference and target rule definitions after fragments
+# <#tag_20_76_13_06> and <#tag_20_76_13_04> in
+# <http://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html>.
+.sh:
+ @printf ' SED %s\n' '$@'
+ @sed '$(script)' '$(srcdir)/$?' >'$@'
+ @chmod 755 '$@'
+.sh.sm .1in.1 .3in.3:
+ @printf ' SED %s\n' '$@'
+ @sed '$(script)' '$(srcdir)/$?' >'$@'
+ @chmod 644 '$@'
+.sh.ms:
+ @printf ' CP %s\n' '$@'
+ @obj='$@'; mkdir -p "$${obj%/*}"
+ @cp '$(srcdir)/$?' '$@'
+ @chmod 644 '$@'
+
+all: all-exec all-data
+all-exec: all-bin all-pkglib all-pkglibpackage all-pkglibmetadata
+all-bin: $(bin)
+all-pkglib: $(pkglib)
+all-pkglibpackage: $(pkglibpackage)
+all-pkglibmetadata: $(pkglibmetadata)
+all-data: all-man1 all-man3 all-locale
+all-man1: $(man1)
+all-man3: $(man3)
+all-locale: $(locale)
+
+clean_cmds = \
+ set -e; \
+ for f in $${files}; do \
+ printf ' RM %s\n' "$${f}"; \
+ rm -f "$${f}"; \
+ done
+clean: clean-exec clean-data
+clean-exec: clean-bin clean-pkglib clean-pkglibpackage clean-pkglibmetadata
+clean-bin:
+ @files='$(bin)'; $(clean_cmds)
+clean-pkglib:
+ @files='$(pkglib)'; $(clean_cmds)
+clean-pkglibpackage:
+ @files='$(pkglibpackage)'; $(clean_cmds)
+clean-pkglibmetadata:
+ @files='$(pkglibmetadata)'; $(clean_cmds)
+clean-data: clean-man1 clean-man3 clean-locale
+clean-man1:
+ @files='$(man1)'; $(clean_cmds)
+clean-man3:
+ @files='$(man3)'; $(clean_cmds)
+clean-locale:
+ @files='$(locale)'; $(clean_cmds)
+
+install_cmds = \
+ set -e; \
+ mkdir -p "$(DESTDIR)/$${dir}"; \
+ for f in $${files}; do \
+ printf ' INSTALL %s\n' "$${f}"; \
+ ff="$$(basename "$${f}")"; \
+ cp "$${f}" "$(DESTDIR)/$${dir}/$${ff}"; \
+ chmod "$${mode}" "$(DESTDIR)/$${dir}/$${ff}"; \
+ done
+install: all install-exec install-data
+install-exec: all-exec install-bin install-pkglib install-pkglibpackage \
+ install-pkglibmetadata
+install-bin:
+ @files='$(bin)'; dir='$(bindir)'; mode='755'; $(install_cmds)
+install-pkglib:
+ @files='$(pkglib)'; dir='$(pkglibdir)'; mode='644'; $(install_cmds)
+install-pkglibpackage:
+ @files='$(pkglibpackage)'; dir='$(pkglibpackagedir)'; \
+ mode='644'; $(install_cmds)
+install-pkglibmetadata:
+ @files='$(pkglibmetadata)'; dir='$(pkglibmetadatadir)'; \
+ mode='644'; $(install_cmds)
+install-data: all-data install-man1 install-man3 install-locale
+install-man1:
+ @files='$(man1)'; dir='$(man1dir)'; mode='644'; $(install_cmds)
+install-man3:
+ @files='$(man3)'; dir='$(man3dir)'; mode='644'; $(install_cmds)
+install-locale:
+ @mkdir -p '$(DESTDIR)/$(localedir)'
+ @set -e; for f in $(locale); do \
+ printf ' INSTALL %s\n' "$${f}"; \
+ ff="$${f#*/}"; \
+ dd="$(DESTDIR)/$(localedir)/$${ff%/?*}/LC_MESSAGES"; \
+ mkdir -p "$${dd}"; \
+ df="$${dd}/$${ff##*/}"; \
+ cp "$${f}" "$${df}"; \
+ chmod 644 "$${df}"; \
+ done
-all:
- @printf 'Making executable files...\n'
- @cd src && $(MAKE) $(MACROS) all
- @printf 'Making library files...\n'
- @cd lib && $(MAKE) $(MACROS) all
- @cd lib/package && $(MAKE) $(MACROS) all
- @cd lib/metadata && $(MAKE) $(MACROS) all
- @printf 'Making locales...\n'
- @cd locale && $(MAKE) $(MACROS) all
- @printf 'Making manual pages...\n'
- @cd man && $(MAKE) $(MACROS) all
-
-clean:
- @printf 'Cleaning executable files...\n'
- @cd src && $(MAKE) $(MACROS) clean
- @printf 'Cleaning library files...\n'
- @cd lib && $(MAKE) $(MACROS) clean
- @cd lib/package && $(MAKE) $(MACROS) clean
- @cd lib/metadata && $(MAKE) $(MACROS) clean
- @printf 'Cleaning locales...\n'
- @cd locale && $(MAKE) $(MACROS) clean
- @printf 'Cleaning manual pages...\n'
- @cd man && $(MAKE) $(MACROS) clean
-
-install: all
- @printf 'Installing executable files...\n'
- @cd src && $(MAKE) $(MACROS) install
- @printf 'Installing libary files...\n'
- @cd lib && $(MAKE) $(MACROS) install
- @cd lib/package && $(MAKE) $(MACROS) install
- @cd lib/metadata && $(MAKE) $(MACROS) install
- @printf 'Installing locales...\n'
- @cd locale && $(MAKE) $(MACROS) install
- @printf 'Installing manual pages...\n'
- @cd man && $(MAKE) $(MACROS) install
-
-uninstall:
- @printf 'Uninstalling executable files...\n'
- @cd src && $(MAKE) $(MACROS) uninstall
- @printf 'Uninstalling library files...\n'
- @cd lib/package && $(MAKE) $(MACROS) uninstall
- @cd lib/metadata && $(MAKE) $(MACROS) uninstall
- @cd lib && $(MAKE) $(MACROS) uninstall
- @printf 'Uninstalling locales...\n'
- @cd locale && $(MAKE) $(MACROS) uninstall
- @printf 'Uninstalling manual pages...\n'
- @cd man && $(MAKE) $(MACROS) uninstall
+uninstall_cmds = \
+ set -e; \
+ for f in $${files}; do \
+ printf ' RM %s\n' "$${f}"; \
+ ff="$$(basename "$${f}")"; \
+ rm -f "$(DESTDIR)/$${dir}/$${ff}"; \
+ done
+uninstall: uninstall-exec uninstall-data
+uninstall-exec: uninstall-bin uninstall-pkglibpackage uninstall-pkglibmetadata \
+ uninstall-pkglib
+uninstall-bin:
+ @files='$(bin)'; dir='$(bindir)'; $(uninstall_cmds)
+uninstall-pkglib:
+ @files='$(pkglib)'; dir='$(pkglibdir)'; $(uninstall_cmds)
+ @rmdir '$(DESTDIR)/$(pkglibdir)'
+uninstall-pkglibpackage:
+ @files='$(pkglibpackage)'; dir='$(pkglibpackagedir)'; \
+ $(uninstall_cmds)
+ @rmdir '$(DESTDIR)/$(pkglibpackagedir)'
+uninstall-pkglibmetadata:
+ @files='$(pkglibmetadata)'; dir='$(pkglibmetadatadir)'; \
+ $(uninstall_cmds)
+ @rmdir '$(DESTDIR)/$(pkglibmetadatadir)'
+uninstall-data: uninstall-man1 uninstall-man3 uninstall-locale
+uninstall-man1:
+ @files='$(man1)'; dir='$(man1dir)'; $(uninstall_cmds)
+uninstall-man3:
+ @files='$(man3)'; dir='$(man3dir)'; $(uninstall_cmds)
+uninstall-locale:
+ @set -e; for f in $(locale); do \
+ printf ' RM %s\n' "$${f}"; \
+ ff="$${f#*/}"; \
+ dd="$(DESTDIR)/$(localedir)/$${ff%/?*}/LC_MESSAGES"; \
+ df="$${dd}/$${ff##*/}"; \
+ rm -f "$${df}"; \
+ done
test: all
- @printf 'Running tests...\n'
- @cd tests && $(MAKE) $(MACROS) test
+ @cd '$(srcdir)/tests'; \
+ all=0; failed=0; \
+ for test in $(tests); do \
+ out="$$($(sh) "$(srcdir)/$${test}" 2>&1)"; \
+ if [ $${?} -eq 0 ]; then \
+ printf 'PASS: %s\n' "$${test}"; \
+ else \
+ printf 'FAIL: %s\n' "$${test}"; \
+ echo "$${out}" | sed 's/^/ /'; \
+ failed=$$(($$failed + 1)); \
+ fi; \
+ all=$$(($$all + 1)); \
+ done; \
+ banner="$$(printf '%d out of %d tests failed' $${failed} $${all})"; \
+ l=$$(echo "$${banner}" | wc -c); \
+ i=1; while [ "$${i}" -lt "$${l}" ]; do \
+ printf '='; \
+ i=$$(($$i + 1)); \
+ done; \
+ printf '\n%s\n' "$${banner}"; \
+ i=1; while [ $${i} -lt $${l} ]; do \
+ printf '='; \
+ i=$$(($$i + 1)); \
+ done; \
+ printf '\n'; \
+ exit $${failed}
$(distdir):
@mkdir -p '$(distdir)'
- @cp -pR $(distfiles) '$(distdir)'
- @cd src && $(MAKE) '../$(distdir)/src'
- @cd lib && $(MAKE) '../$(distdir)/lib'
- @cd lib/package && $(MAKE) '../../$(distdir)/lib/package'
- @cd lib/metadata && $(MAKE) '../../$(distdir)/lib/metadata'
- @cd locale && $(MAKE) '../$(distdir)/locale'
- @cd man && $(MAKE) '../$(distdir)/man'
- @cd tests && $(MAKE) '../$(distdir)/tests'
+ @set -e; for f in $(distfiles); do \
+ mkdir -p "$(distdir)/$$(dirname $${f})"; \
+ cp -p "$${f}" "$(distdir)/$${f}"; \
+ done
dist dist-gzip: $(distdir)
@tar -cf - '$(distdir)' | gzip -9c > '$(distdir).tar.gz'