1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
# imprimatur.m4 serial 1
dnl This file is part of Imprimatur.
dnl Copyright (C) 2011 Sergey Poznyakoff
dnl
dnl Imprimatur is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 3, or (at your option)
dnl any later version.
dnl
dnl Imprimatur is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with Imprimatur. If not, see <http://www.gnu.org/licenses/>.
dnl The option stuff below is based on the similar code from Automake
# _IMPRIMATUR_MANGLE_OPTION(NAME)
# -------------------------------
# Convert NAME to a valid m4 identifier, by replacing invalid characters
# with underscores, and prepend the _IMPRIMATUR_OPTION_ suffix to it.
AC_DEFUN([_IMPRIMATUR_MANGLE_OPTION],
[[_IMPRIMATUR_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
# _IMPRIMATUR_SET_OPTION(NAME)
# ----------------------------
# Set option NAME. If NAME begins with a digit, treat it as a requested
# Guile version number, and define _IMPRIMATUR_GUILE_VERSION to that number.
# Otherwise, define the option using _IMPRIMATUR_MANGLE_OPTION.
AC_DEFUN([_IMPRIMATUR_SET_OPTION],
[m4_if(m4_bpatsubst($1,^[[0-9]].*,[]),,[m4_define([_IMPRIMATUR_GUILE_VERSION],[$1])],[m4_define(_IMPRIMATUR_MANGLE_OPTION([$1]), 1)])])
# _IMPRIMATUR_IF_OPTION_SET(NAME,IF-SET,IF-NOT-SET)
# -------------------------------------------------
# Check if option NAME is set.
AC_DEFUN([_IMPRIMATUR_IF_OPTION_SET],
[m4_ifset(_IMPRIMATUR_MANGLE_OPTION([$1]),[$2],[$3])])
# _IMPRIMATUR_OPTION_SWITCH(NAME1,IF-SET1,[NAME2,IF-SET2,[...]],[IF-NOT-SET])
# ---------------------------------------------------------------------------
# If NAME1 is set, run IF-SET1. Otherwise, if NAME2 is set, run IF-SET2.
# Continue the process for all name-if-set pairs within [...]. If none
# of the options is set, run IF-NOT-SET.
AC_DEFUN([_IMPRIMATUR_OPTION_SWITCH],
[m4_if([$4],,[_IMPRIMATUR_IF_OPTION_SET($@)],dnl
[$3],,[_IMPRIMATUR_IF_OPTION_SET($@)],dnl
[_IMPRIMATUR_IF_OPTION_SET([$1],[$2],[_IMPRIMATUR_OPTION_SWITCH(m4_shift(m4_shift($@)))])])])
# _IMPRIMATUR_SET_OPTIONS(OPTIONS)
# --------------------------------
# OPTIONS is a space-separated list of IMPRIMATUR options.
AC_DEFUN([_IMPRIMATUR_SET_OPTIONS],
[m4_foreach_w([_IMPRIMATUR_Option], [$1], [_IMPRIMATUR_SET_OPTION(_IMPRIMATUR_Option)])])
# IMPRIMATUR_INIT([DIR],[OPTIONS])
# DIR - Directory in the source tree where imprimatur has been cloned.
# Default is "imptimatur".
# OPTIONS - A whitespace-separated list of options. Valid options are:
# (1) any one of PROOF, DISTRIB or PUBLISH to set the default
# rendition, (2) frenchspacing to declare that French sentence
# spacing should be assumed, (3) makedoc to enable rules for
# building imprimatur documentation, and (4) dist-info to
# build and distribute imprimatur.info file (requires makedoc).
AC_DEFUN([IMPRIMATUR_INIT],[
m4_pushdef([imprimaturdir],[m4_if([$1],,[imprimatur],[$1])])
AC_SUBST([IMPRIMATUR_MODULE_DIR],imprimaturdir)
_IMPRIMATUR_SET_OPTIONS([$2])
AC_SUBST(RENDITION)
_IMPRIMATUR_OPTION_SWITCH([PROOF],[RENDITION=PROOF],
[DISTRIB],[RENDITION=DISTRIB],
[PUBLISH],[RENDITION=PUBLISH],
[
# Doc hints.
# Select a rendition level:
# DISTRIB for stable releases (at most one dot in the version number)
# and maintenance releases (two dots, patchlevel < 50)
# PROOF for alpha releases.
# PUBLISH can only be required manually when running make in doc/
case `echo $VERSION|sed 's/[[^.]]//g'` in
""|".") RENDITION=DISTRIB;;
"..") if test `echo $VERSION | sed 's/.*\.//'` -lt 50; then
RENDITION=DISTRIB
else
RENDITION=PROOF
fi;;
*) RENDITION=PROOF;;
esac
])
AC_SUBST([IMPRIMATUR_MAKEINFOFLAGS],
['-I $(top_srcdir)/imprimaturdir -D $(RENDITION)'])
AM_CONDITIONAL([IMPRIMATUR_COND_MAKEDOC],dnl
[_IMPRIMATUR_IF_OPTION_SET([makedoc],[true],[false])])
AM_CONDITIONAL([IMPRIMATUR_COND_FRENCHSPACING],
[_IMPRIMATUR_IF_OPTION_SET([frenchspacing],[true],[false])])
AM_CONDITIONAL([IMPRIMATUR_COND_DIST_INFO],
[_IMPRIMATUR_IF_OPTION_SET([dist-info],[true],[false])])
AC_CONFIG_FILES(imprimaturdir[/Makefile])
AM_COND_IF([IMPRIMATUR_COND_MAKEDOC],dnl
[AC_MSG_NOTICE([Add imprimaturdir[/Makedoc] to your config files])])
m4_popdef([imprimaturdir])
])
|