]>
Commit | Line | Data |
---|---|---|
72281370 | 1 | #! /bin/sh |
fff5f7d5 VZ |
2 | # |
3 | # Run 'autoreconf' to build 'configure', 'Makefile.in' and other configure | |
4 | # control files. | |
5 | # | |
6 | # The first time this is run on a GIT checkout the only files that exist are | |
7 | # configure.ac and Makefile.am; all of the autotools support scripts are | |
8 | # missing. They are instantiated with autoreconf --force --install. | |
9 | # | |
10 | # For regular ("tarball") distributions all the files should exist. We do not | |
11 | # want them to be updated *under any circumstances*. It should never be | |
12 | # necessary to rune autogen.sh because ./configure --enable-maintainer-mode says | |
13 | # what to do if Makeile.am or configure.ac are changed. | |
14 | # | |
15 | # It is *probably* OK to update the files on a GIT checkout, because they have | |
16 | # come from the local tools, but leave that to the user who is assumed to know | |
17 | # whether it is ok or required. | |
18 | # | |
19 | # This script is intended to work without arguments, there are, however, hidden | |
20 | # arguments for (a) use while testing the script and (b) to fix up systems that | |
21 | # have been broken. If (b) is required the script prompts for the correct | |
22 | # options. For this reason the options are *NOT* documented in the help; this | |
23 | # is deliberate; UTSL. | |
24 | # | |
25 | clean= | |
26 | maintainer= | |
27 | while test $# -gt 0 | |
28 | do | |
29 | case "$1" in | |
30 | --maintainer) | |
31 | maintainer=1;; | |
32 | ||
33 | --clean) | |
34 | clean=1;; | |
35 | ||
36 | *) | |
37 | exec >&2 | |
38 | echo "$0: usage: ./autogen.sh" | |
39 | if test -d .git | |
40 | then | |
41 | echo " ./autogen.sh generates the configure script and" | |
42 | echo " Makefile.in, or refreshes them after changes to Makefile.am" | |
43 | echo " or configure.ac. You may prefer to just run autoreconf." | |
44 | elif test -z "$maintainer" | |
45 | then | |
46 | echo " DO NOT RUN THIS SCRIPT." | |
47 | echo " If you need to change Makefile.am or configure.ac then you" | |
48 | echo " also need to run ./configure --enable-maintainer-mode and" | |
49 | echo " use the appropriate autotools, *NOT* this script, to update" | |
50 | echo " everything, please check the documentation of autoreconf." | |
51 | echo " WARNING: libpng is intentionally generated with a known," | |
52 | echo " fixed, set of autotools. It is known *NOT* to work with" | |
53 | echo " the collection of autotools distributed on highly reputable" | |
54 | echo " operating systems." | |
55 | echo " Remember: autotools is GNU software, you are expected to" | |
56 | echo " pay for support." | |
57 | else | |
58 | echo " You have run autogen.sh with --maintainer enabled and you" | |
59 | echo " are not using a GIT distribution, then you have given an" | |
60 | echo " unrecognized argument. This is not good. --maintainer" | |
61 | echo " switches off any assumptions that you might not know what" | |
62 | echo " you are doing." | |
63 | fi | |
64 | exit 1;; | |
65 | esac | |
66 | ||
67 | shift | |
68 | done | |
69 | # | |
70 | # First check for a set of the autotools files; if absent then this is assumed | |
71 | # to be a GIT version and the local autotools must be used. If present this | |
72 | # is a tarball distribution and the script should not be used. If partially | |
73 | # present bad things are happening. | |
74 | # | |
75 | # The autotools generated files: | |
76 | libpng_autotools_files="Makefile.in aclocal.m4 config.guess config.h.in\ | |
77 | config.sub configure depcomp install-sh ltmain.sh missing test-driver" | |
78 | # | |
79 | # These are separate because 'maintainer-clean' does not remove them. | |
80 | libpng_libtool_files="scripts/libtool.m4 scripts/ltoptions.m4\ | |
81 | scripts/ltsugar.m4 scripts/ltversion.m4 scripts/lt~obsolete.m4" | |
82 | ||
83 | libpng_autotools_dirs="autom4te.cache" # not required | |
84 | # | |
85 | # The configure generated files: | |
86 | libpng_configure_files="Makefile config.h config.log config.status\ | |
87 | libpng-config libpng.pc libtool stamp-h1" | |
88 | ||
89 | libpng_configure_dirs=".deps" | |
90 | # | |
91 | # We must remove the configure generated files as well as the autotools | |
92 | # generated files if autotools are regenerated because otherwise if configure | |
93 | # has been run without "--enable-maintainer-mode" make can do a partial update | |
94 | # of Makefile. These functions do the two bits of cleaning. | |
95 | clean_autotools(){ | |
96 | rm -rf $libpng_autotools_files $libpng_libtool_files $libpng_autotools_dirs | |
97 | } | |
98 | ||
99 | clean_configure(){ | |
100 | rm -rf $libpng_configure_files $libpng_configure_dirs | |
101 | } | |
102 | # | |
103 | # Clean: remove everything (this is to help with testing) | |
104 | if test -n "$clean" | |
105 | then | |
106 | clean_configure | |
107 | if test -n "$maintainer" | |
108 | then | |
109 | clean_autotools | |
110 | fi | |
111 | ||
112 | exit 0 | |
113 | fi | |
114 | # | |
115 | # Validate the distribution. | |
116 | libpng_autotools_file_found= | |
117 | libpng_autotools_file_missing= | |
118 | for file in $libpng_autotools_files | |
119 | do | |
120 | if test -f "$file" | |
121 | then | |
122 | libpng_autotools_file_found=1 | |
123 | else | |
124 | libpng_autotools_file_missing=1 | |
125 | fi | |
126 | done | |
127 | # | |
128 | # Presence of one of these does not *invalidate* missing, but absence | |
129 | # invalidates found. | |
130 | for file in $libpng_libtool_files | |
131 | do | |
132 | if test ! -f "$file" | |
133 | then | |
134 | libpng_autotools_file_missing=1 | |
135 | fi | |
136 | done | |
137 | # | |
138 | # The cache directory doesn't matter - it will be regenerated and does not exist | |
139 | # anyway in a tarball. | |
140 | # | |
141 | # Either everything is missing or everything is there, the --maintainer option | |
142 | # just changes this so that the mode is set to generate all the files. | |
143 | mode= | |
144 | if test -z "$libpng_autotools_file_found" -o -n "$maintainer" | |
145 | then | |
146 | mode="autoreconf" | |
147 | else | |
148 | if test -n "$libpng_autotools_file_missing" | |
149 | then | |
150 | mode="broken" | |
151 | else | |
152 | mode="configure" | |
153 | fi | |
154 | fi | |
155 | # | |
156 | # So: | |
157 | case "$mode" in | |
158 | autoreconf) | |
159 | # Clean in case configure files exist | |
160 | clean_configure | |
161 | clean_autotools | |
162 | # Everything must be initialized, so use --force | |
163 | if autoreconf --warnings=all --force --install | |
164 | then | |
165 | missing= | |
166 | for file in $libpng_autotools_files | |
167 | do | |
168 | test -f "$file" || missing=1 | |
169 | done | |
170 | # ignore the cache directory | |
171 | test -z "$missing" || { | |
172 | exec >&2 | |
173 | echo "autoreconf was run, but did not produce all the expected" | |
174 | echo "files. It is likely that your autotools installation is" | |
175 | echo "not compatible with that expected by libpng." | |
176 | exit 1 | |
177 | } | |
178 | else | |
179 | exec >&2 | |
180 | echo "autoreconf failed: your version of autotools is incompatible" | |
181 | echo "with this libpng version. Please use a distributed archive" | |
182 | echo "(which includes the autotools generated files) and run configure" | |
183 | echo "instead." | |
184 | exit 1 | |
185 | fi;; | |
186 | ||
187 | configure) | |
188 | if test -d .git | |
189 | then | |
190 | exec >&2 | |
191 | echo "ERROR: running autoreconf on an initialized sytem" | |
192 | echo " This is not necessary; it is only necessary to remake the" | |
193 | echo " autotools generated files if Makefile.am or configure.ac" | |
194 | echo " change and make does the right thing with:" | |
195 | echo | |
196 | echo " ./configure --enable-maintainer-mode." | |
197 | echo | |
198 | echo " You can run autoreconf yourself if you don't like maintainer" | |
199 | echo " mode and you can also just run autoreconf -f -i to initialize" | |
200 | echo " everything in the first place; this script is only for" | |
201 | echo " compatiblity with prior releases." | |
202 | exit 1 | |
203 | else | |
204 | exec >&2 | |
205 | echo "autogen.sh is intended only to generate 'configure' on systems" | |
206 | echo "that do not have it. You have a complete 'configure', if you" | |
207 | echo "need to change Makefile.am or configure.ac you also need to" | |
208 | echo "run configure with the --enable-maintainer-mode option." | |
209 | exit 1 | |
210 | fi;; | |
211 | ||
212 | broken) | |
213 | exec >&2 | |
214 | echo "Your system has a partial set of autotools generated files." | |
215 | echo "autogen.sh is unable to proceed. The full set of files is" | |
216 | echo "contained in the libpng 'tar' distribution archive and you do" | |
217 | echo "not need to run autogen.sh if you use it." | |
218 | exit 1;; | |
219 | esac |