[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: rules, rules, and more (code policy) rules
From: |
Simon Josefsson |
Subject: |
Re: rules, rules, and more (code policy) rules |
Date: |
Sat, 11 Feb 2006 16:16:37 +0100 |
User-agent: |
Gnus/5.110004 (No Gnus v0.4) Emacs/22.0.50 (gnu/linux) |
How about this approach? The Makefile.maint is intentionally minimal.
I'll merge reliable tests from Coreutils Makefile.maint as we move
along.
Maintainers can put additional rules into Makefile.cfg if they want.
I would expect that most of Coreutils' Makefile.maint would go into
Makefile.cfg, if you chose to adopt this module. Perhaps the
per-project file should be called something else? Makefile.local?
Makefile.cfg is an optional file, small projects shouldn't need one.
Makefile.cfg can also define C_SOURCES. Then you can populate it
using cvsu or similar schemes, if you want. The default uses find.
The intention is that this stuff should be non-obtrusive, and easy to
add to any project.
A better name for the gnulib module is also needed. Same for the
makefile target name style. Replace 'sc_' with 'gl_'?
Ok to install?
Index: modules/maintainer-makefile
===================================================================
RCS file: modules/maintainer-makefile
diff -N modules/maintainer-makefile
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ modules/maintainer-makefile 11 Feb 2006 15:15:26 -0000
@@ -0,0 +1,12 @@
+Description:
+Helper GNUmakefile with syntax checks, build improvements, etc.
+
+Files:
+build-aux/GNUmakefile
+build-aux/Makefile.maint
+
+License:
+GPLed build tool
+
+Maintainer:
+all
Index: build-aux/GNUmakefile
===================================================================
RCS file: build-aux/GNUmakefile
diff -N build-aux/GNUmakefile
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ build-aux/GNUmakefile 11 Feb 2006 15:15:26 -0000
@@ -0,0 +1,63 @@
+# Having a separate GNUmakefile lets me `include' the dynamically
+# generated rules created via Makefile.maint as well as Makefile.maint itself.
+# This makefile is used only if you run GNU Make.
+# It is necessary if you want to build targets usually of interest
+# only to the maintainer.
+
+# Copyright (C) 2001, 2003, 2006 Free Software Foundation, Inc.
+#
+# 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
+# the Free Software Foundation; either version 2 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+# Systems where /bin/sh is not the default shell need this. The $(shell)
+# command below won't work with e.g. stock DOS/Windows shells.
+ifeq ($(wildcard /bin/s[h]),/bin/sh)
+SHELL = /bin/sh
+else
+# will be used only with the next shell-test line, then overwritten
+# by a configured-in value
+SHELL = sh
+endif
+
+# Make tar archive easier to reproduce.
+export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
+
+have-Makefile := $(shell test -f Makefile && echo yes)
+
+ifeq ($(have-Makefile),yes)
+
+# Make tar archive easier to reproduce.
+export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
+
+include Makefile
+-include $(srcdir)/Makefile.cfg
+include $(srcdir)/Makefile.maint
+
+else
+
+all: configure Makefile
+ make
+
+Makefile: configure
+ ./configure $(CFGFLAGS)
+
+configure:
+ autoreconf --install
+
+endif
+
+# Tell version 3.79 and up of GNU make to not build goals in this
+# directory in parallel. This is necessary in case someone tries to
+# build multiple targets on one command line.
+.NOTPARALLEL:
Index: build-aux/Makefile.maint
===================================================================
RCS file: build-aux/Makefile.maint
diff -N build-aux/Makefile.maint
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ build-aux/Makefile.maint 11 Feb 2006 15:15:26 -0000
@@ -0,0 +1,44 @@
+# -*-Makefile-*-
+# This Makefile fragment is intended to be useful by any GNU-like project.
+# This file originate from coreutils, CPPI, Bison, and Autoconf.
+
+## Copyright (C) 2001-2006 Free Software Foundation, Inc.
+##
+## 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
+## the Free Software Foundation; either version 2, 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 General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+## 02110-1301, USA.
+
+# List of all C-like source code files that will be tested for
+# stylistic "errors". You may want to define this to something
+# more complex in Makefile.cfg.
+C_SOURCES ?= $(shell find . -name '*.[chly]')
+
+# Add some more files to check, typically set in Makefile.cfg.
+C_SOURCES += $(C_SOURCES_ADD)
+
+# Do not save the original name or timestamp in the .tar.gz file.
+# Use --rsyncable if available.
+gzip_rsyncable := \
+ $(shell gzip --help|grep rsyncable >/dev/null && echo --rsyncable)
+GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
+
+# Prevent programs like 'sort' from considering distinct strings to be equal.
+# Doing it here saves us from having to set LC_ALL elsewhere in this file.
+export LC_ALL = C
+
+# Casting arguments to free is never necessary.
+sc_cast_of_argument_to_free:
+ @grep -nE '\<free *\( *\(' $(C_SOURCES) && \
+ { echo '$(ME): don'\''t cast free argument' 1>&2; \
+ exit 1; } || :
- Re: socket.h, Simon Josefsson, 2006/02/08
- rules, rules, and more (code policy) rules, Jim Meyering, 2006/02/08
- Re: rules, rules, and more (code policy) rules, Simon Josefsson, 2006/02/10
- Re: rules, rules, and more (code policy) rules, Simon Josefsson, 2006/02/10
- Re: rules, rules, and more (code policy) rules, Jim Meyering, 2006/02/10
- Re: rules, rules, and more (code policy) rules, Paul Eggert, 2006/02/11
- Re: rules, rules, and more (code policy) rules, Jim Meyering, 2006/02/11
- Re: rules, rules, and more (code policy) rules,
Simon Josefsson <=
- Re: rules, rules, and more (code policy) rules, Simon Josefsson, 2006/02/11
- Re: rules, rules, and more (code policy) rules, Jim Meyering, 2006/02/12
- Re: rules, rules, and more (code policy) rules, Simon Josefsson, 2006/02/13
- Re: rules, rules, and more (code policy) rules, Simon Josefsson, 2006/02/13
- Re: rules, rules, and more (code policy) rules, Jim Meyering, 2006/02/13
- Re: rules, rules, and more (code policy) rules, Simon Josefsson, 2006/02/14
- Re: rules, rules, and more (code policy) rules, Simon Josefsson, 2006/02/14
- Re: rules, rules, and more (code policy) rules, Jim Meyering, 2006/02/14
- Re: rules, rules, and more (code policy) rules, Simon Josefsson, 2006/02/14
- Re: rules, rules, and more (code policy) rules, Simon Josefsson, 2006/02/16