summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build-aux/Makefile.each.tail/11-gnu.mk59
-rw-r--r--build-aux/Makefile.once.head/00-gnuconf.mk (renamed from build-aux/Makefile.once.head/11-gnu.mk)94
-rw-r--r--build-aux/Makefile.once.tail/11-gnu.mk17
3 files changed, 50 insertions, 120 deletions
diff --git a/build-aux/Makefile.each.tail/11-gnu.mk b/build-aux/Makefile.each.tail/11-gnu.mk
deleted file mode 100644
index c7cb1cb..0000000
--- a/build-aux/Makefile.each.tail/11-gnu.mk
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (C) 2016 Luke Shumaker
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# 7.2.6: Standard Targets for Users
-# ---------------------------------
-
-std.gen_files += $(foreach f,$(gnu.info_docs), $f.info )
-std.sys_files += $(foreach f,$(gnu.info_docs), $(infodir)/$f.info )
-
-$(foreach d,$(gnu.program_dirs),$(eval $(call _gnu.install_program,$d)))
-$(foreach d,$(gnu.data_dirs) ,$(eval $(call _gnu.install_data,$d)))
-
-#all: std
-#install: std
-$(outdir)/install-html: $(foreach f,$(gnu.info_docs), $(DESTDIR)$(htmldir)/$f.html )
-$(outdir)/install-dvi : $(foreach f,$(gnu.info_docs), $(DESTDIR)$(dvidir)/$f.dvi )
-$(outdir)/install-pdf : $(foreach f,$(gnu.info_docs), $(DESTDIR)$(pdfdir)/$f.pdf )
-$(outdir)/install-ps : $(foreach f,$(gnu.info_docs), $(DESTDIR)$(psdir)/$f.ps )
-#uninstall: std
-$(outdir)/install-strip: install
- $(STRIP) $(filter $(addsuffix /%,$(gnu.program_dirs)),$(std.sys_files/$(@D)))
-#clean: std
-#distclean: std
-#mostlyclean: std
-#maintainer-clean: std
-TAGS: TODO
-$(outdir)/info: $(addsuffix .info,$(gnu.info_docs))
-$(outdir)/dvi : $(addsuffix .dvi ,$(gnu.info_docs))
-$(outdir)/html: $(addsuffix .html,$(gnu.info_docs))
-$(outdir)/pdf : $(addsuffix .pdf ,$(gnu.info_docs))
-$(outdir)/ps : $(addsuffix .ps ,$(gnu.info_docs))
-#dist:dist
-check: TODO
-installcheck: TODO
-#installdirs: std
-
-$(outdir)/%.info: $(srcdir)/%.texi; $(MAKEINFO) -o $(@D) $<
-$(outdir)/%.info: $(outdir)/%.texi; $(MAKEINFO) -o $(@D) $<
-$(outdir)/%.dvi : $(srcdir)/%.texi; $(TEXI2DVI) -o $(@D) $<
-$(outdir)/%.dvi : $(outdir)/%.texi; $(TEXI2DVI) -o $(@D) $<
-$(outdir)/%.html: $(srcdir)/%.texi; $(TEXI2HTML) -o $(@D) $<
-$(outdir)/%.html: $(outdir)/%.texi; $(TEXI2HTML) -o $(@D) $<
-$(outdir)/%.pdf : $(srcdir)/%.texi; $(TEXI2PDF) -o $(@D) $<
-$(outdir)/%.pdf : $(outdir)/%.texi; $(TEXI2PDF) -o $(@D) $<
-$(outdir)/%.ps : $(srcdir)/%.texi; $(TEXI2PS) -o $(@D) $<
-$(outdir)/%.ps : $(outdir)/%.texi; $(TEXI2PS) -o $(@D) $<
-#installdirs: std
diff --git a/build-aux/Makefile.once.head/11-gnu.mk b/build-aux/Makefile.once.head/00-gnuconf.mk
index b704a57..79ecc34 100644
--- a/build-aux/Makefile.once.head/11-gnu.mk
+++ b/build-aux/Makefile.once.head/00-gnuconf.mk
@@ -13,6 +13,14 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# This file is based on ยง7.2 "Makefile Conventions" of the release of
+# the GNU Coding Standards dated April 13, 2016.
+
+gnuconf.pkgname ?= $(PACKAGE)
+ifeq ($(gnuconf.pkgname),)
+$(error gnuconf.pkgname must be set)
+endif
+
# 7.2.2: Utilities in Makefiles
# -----------------------------
@@ -46,22 +54,50 @@ TOUCH ?= touch
TR ?= tr
TRUE ?= true
+# These must be user-configurable
+AR ?= ar
+ARFLAGS ?=
+BISON ?= bison
+BISONFLAGS ?=
+CC ?= cc
+CCFLAGS ?= $(CFLAGS)
+FLEX ?= flex
+FLEXFLAGS ?=
+INSTALL ?= install
+INSTALLFLAGS ?=
+LD ?= ld
+LDFLAGS ?=
+LDCONFIG ?= ldconfig #TODO
+LDCONFIGFLAGS ?=
+LEX ?= lex
+LEXFLAGS ?= $(LFLAGS)
+#MAKE
+MAKEINFO ?= makeinfo
+MAKEINFOFLAGS ?=
+RANLIB ?= ranlib #TODO
+RANLIBFLAGS ?=
+TEXI2DVI ?= texi2dvi
+TEXI2DVIFLAGS ?=
+YACC ?= yacc
+YACCFLAGS ?= $(YFLAGS)
+
+CFLAGS ?=
+LFLAGS ?=
+YFLAGS ?=
+
+LN_S ?= ln -s #TODO
+
+CHGRP ?= chgrp
+CHMOD ?= chmod
+CHOWN ?= chown
+MKNOD ?= mknod
+
# 7.2.3 Variables for Specifying Commands
# ---------------------------------------
-INSTALL ?= install
INSTALL_PROGRAM ?= $(INSTALL)
INSTALL_DATA ?= ${INSTALL} -m 644
-# These aren't specified in the standards, but we use them
-STRIP ?= strip
-MAKEINFO ?= makeinfo
-TEXI2DVI ?= texi2dvi
-TEXI2HTML ?= makeinfo --html
-TEXI2PDF ?= texi2pdf
-TEXI2PS ?= makeinfo --ps
-MKDIR_P ?= mkdir -p
-
# 7.2.5 Variables for Installation Directories
# --------------------------------------------
@@ -72,7 +108,6 @@ exec_prefix ?= $(prefix)
bindir ?= $(exec_prefix)/bin
sbindir ?= $(exec_prefix)/sbin
libexecdir ?= $(exec_prefix)/libexec
-gnu.program_dirs += $(bindir) $(sbindir) $(libexecdir)
# Data files
datarootdir ?= $(prefix)/share
datadir ?= $(datarootdir)
@@ -80,20 +115,18 @@ sysconfdir ?= $(prefix)/etc
sharedstatedir ?= $(prefix)/com
localstatedir ?= $(prefix)/var
runstatedir ?= $(localstatedir)/run
-gnu.data_dirs += $(datarootdir) $(datadir) $(sysconfdir) $(sharedstatedir) $(localstatedir) $(runstatedir)
# Specific types of files
includedir ?= $(prefix)/include
oldincludedir ?= /usr/include
-docdir ?= $(datarootdir)/doc/$(PACKAGE)
+docdir ?= $(datarootdir)/doc/$(gnuconf.pkgname)
infodir ?= $(datarootdir)/info
htmldir ?= $(docdir)
-dvidir ?= $(docdir)
-pdfdir ?= $(docdir)
-psdir ?= $(docdir)
+dvidir ?= $(docdir)
+pdfdir ?= $(docdir)
+psdir ?= $(docdir)
libdir ?= $(exec_prefix)/lib
lispdir ?= $(datarootdir)/emacs/site-lisp
localedir ?= $(datarootdir)/locale
-gnu.data_dirs += $(includedir) $(oldincludedir) $(docdir) $(infodir) $(htmldir) $(dvidir) $(pdfdir) $(psdir) $(libdir) $(lispdir) $(localedir)
mandir ?= $(datarootdir)/man
man1dir ?= $(mandir)/man1
@@ -104,7 +137,6 @@ man5dir ?= $(mandir)/man5
man6dir ?= $(mandir)/man6
man7dir ?= $(mandir)/man7
man8dir ?= $(mandir)/man8
-gnu.data_dirs += $(mandir) $(man1dir) $(man2dir) $(man3dir) $(man4dir) $(man5dir) $(man6dir) $(man7dir) $(man8dir)
manext ?= .1
man1ext ?= .1
@@ -115,29 +147,3 @@ man5ext ?= .5
man6ext ?= .6
man7ext ?= .7
man8ext ?= .8
-
-# srcdir is handled for us by the core
-
-# Other initialization
-gnu.info_docs ?=
-std.dirlocal += gnu.info_docs
-
-define _gnu.install_program
-$$($1)/%: $$(outdir)/$$($1)
- $$(NORMAL_INSTALL)
- $$(INSTALL_PROGRAM)
-$$($1)/%: $$(srcdir)/$$($1)
- $$(NORMAL_INSTALL)
- $$(INSTALL_PROGRAM)
-endef
-
-define _gnu.install_data
-$$($1)/%: $$(outdir)/$$($1)
- $$(NORMAL_INSTALL)
- $$(INSTALL_DATA)
-$$($1)/%: $$(srcdir)/$$($1)
- $$(NORMAL_INSTALL)
- $$(INSTALL_DATA)
-endef
-
-gnu.dirs += $(gnu.program_dirs) $(gnu.data_dirs)
diff --git a/build-aux/Makefile.once.tail/11-gnu.mk b/build-aux/Makefile.once.tail/11-gnu.mk
deleted file mode 100644
index df5f192..0000000
--- a/build-aux/Makefile.once.tail/11-gnu.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2016 Luke Shumaker
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-$(gnu.dirs):
- $(MKDIR_P) $@