]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/libpng/lib/dist/autogen.sh
b6db4eb1c214d3b6da52ba74d71d0832369b04f2
[l4.git] / l4 / pkg / libpng / lib / dist / autogen.sh
1 #! /bin/sh
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"
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