Another wish.
[users/jgh/exim.git] / src / scripts / Configure-config.h
1 #! /bin/sh
2 # $Cambridge: exim/src/scripts/Configure-config.h,v 1.1 2004/10/06 15:07:40 ph10 Exp $
3
4 # Build the config.h file, using the buildconfig program, first ensuring that
5 # it exists.
6
7 # 22-May-1996: remove the use of the "-a" flag for /bin/sh because it is not
8 # implemented in the FreeBSD shell. Sigh.
9
10 # 12-Mar-1997: add s/#.*$// to the sed script to allow for comments on the
11 # ends of settings - someone got caught.
12
13 # 18-Apr-1997: put the tab character into a variable to stop it getting
14 # lost by accident (which has happened a couple of times).
15
16 # 19-Jan-1998: indented settings in the makefile weren't being handled
17 # correctly; added [$st]* before \\([A-Z] in the pattern, to ignore leading
18 # space. Oddly, the pattern previously read ^\([A-Z which didn't seem to
19 # cause a problem (but did when the new bit was put in).
20
21 make buildconfig || exit 1
22
23 # BEWARE: tab characters needed in the following sed command. They have had
24 # a nasty tendency to get lost in the past, causing a problem if a tab has
25 # actually been present in makefile. Use a variable to hold a space and a
26 # tab to keep the tab in one place. This makes the sed option horrendous to
27 # read, but the whole script is safer.
28
29 st='     '
30
31 (sed -n \
32   "/\\\$/d;s/#.*\$//;s/^[$st]*\\([A-Z][^:$st]*\\)[$st]*=[$st]*\\([^$st]*\\)[$st]*\$/\\1=\\2 export \\1/p" \
33   < Makefile ; echo "./buildconfig") | /bin/sh
34
35 # If buildconfig ends with an error code, it will have output an error
36 # message. Ensure that a broken config.h gets deleted.
37
38 if [ $? != 0 ] ; then
39   rm -f config.h
40   exit 1
41 fi
42
43 # Double-check that config.h is complete.
44
45 if [ "`tail -1 config.h`" != "/* End of config.h */" ] ; then
46   echo "*** config.h appears to be incomplete"
47   echo "*** unexpected failure in buildconfig program"
48   exit 1
49 fi
50
51 echo ">>> config.h built"
52 echo ""
53
54 # End of Configure-config.h