summaryrefslogtreecommitdiff
path: root/expat/configure-ac-style.md
blob: 2d718c61de883059f7d5b4355e3edd41e35e99ae (plain)
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
# Style guidelines for `configure.ac`

Version `2019.08.09.21.54`


## Purpose

Define a small set of rules for style used in Expat's `configure.ac`
so that we have a common ground and something documented to refer to
in pull requests, when style is off.


## 1. Quoting
Quote "everything":
```
AC_DEFINE([HAVE_FOO], [1], [Define to 1 if you have the `foo' function.])
```

## 2. Parameter indentation

Parameters to functions either go
- (a) on the the same line or
- (b) align vertically or
- (c) go to the next line, with the first character indented 2 spaces more
  than the first *non-`[`*(!) parent level character,
  i.e. 2 or [3 columns further right](https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Autoconf-Language.html):

```
CALL([parameter], [parameter], [parameter])

CALL([parameter],
     [parameter],
     [parameter])

CALL([parameter], [parameter],
  [CALL(
     [CALL()])])

  ^  ^
  |  2 + 3(!) spaces
  2 spaces
```

## 3. Consecutive call / multi-line indentation

Consecutive calls to macros (= on the the same nesting level) are aligned vertically:

```
CALL([parameter],
  [CALL([])
   CALL([])
   CALL([])])
```

## 4. Closing bracket placement
Closing braces accumulate on the same line in general...

```
CALL(
  [CALL([CALL([])],
        [CALL([])])
   CALL([])])
```

...but can go a new line (e.g. with `AC_LANG_SOURCE`) to match parameter indentation rule (2), i.e. either

```
CALL([CALL([
    one
    two
  ])],
  [CALL()])
```

.. or ..
```
CALL([CALL([
        one
        two
     ])],
     [CALL()])
```


EOF