1@echo off
2echo Configuring GNU Gettext for DJGPP v2.x...
3
4Rem The SmallEnv tests protect against fixed and too small size
5Rem of the environment in stock DOS shell.
6
7Rem Find out if NLS is wanted or not,
8Rem if dependency-tracking is wanted or not,
9Rem if caching is wanted or not
10Rem if static or shared libraries are wanted
11Rem and where the sources are.
12Rem We always default to NLS support,
13Rem no dependency tracking, static library
14Rem and to in place configuration.
15set ARGS=
16set NLS=enabled
17if not "%NLS%" == "enabled" goto SmallEnv
18set CACHING=enabled
19if not "%CACHING%" == "enabled" goto SmallEnv
20set DEPENDENCY_TRACKING=disabled
21if not "%DEPENDENCY_TRACKING%" == "disabled" goto SmallEnv
22set LIBICONV_PREFIX=disabled
23if not "%LIBICONV_PREFIX%" == "disabled" goto SmallEnv
24set LIBINTL_PREFIX=disabled
25if not "%LIBINTL_PREFIX%" == "disabled" goto SmallEnv
26set STATIC_LIBRARY=enabled
27if not "%STATIC_LIBRARY%" == "enabled" goto SmallEnv
28set XSRC=.
29if not "%XSRC%" == "." goto SmallEnv
30
31Rem Loop over all arguments.
32Rem Special arguments are: NLS, XSRC, CACHE, STATIC_LIBS, LIBICONV_PREFIX, LIBINTL_PREFIX and DEPS.
33Rem All other arguments are stored into ARGS.
34:ArgLoop
35if "%1" == "nls" goto NextArgument
36if "%1" == "NLS" goto NextArgument
37if "%1" == "no-nls" goto NoNLS
38if "%1" == "no-NLS" goto NoNLS
39if "%1" == "NO-NLS" goto NoNLS
40goto CachingOption
41:NoNLS
42if "%1" == "no-nls" set NLS=disabled
43if "%1" == "no-NLS" set NLS=disabled
44if "%1" == "NO-NLS" set NLS=disabled
45if not "%NLS%" == "disabled" goto SmallEnv
46goto NextArgument
47:CachingOption
48if "%1" == "cache" goto NextArgument
49if "%1" == "CACHE" goto NextArgument
50if "%1" == "no-cache" goto NoCaching
51if "%1" == "no-CACHE" goto NoCaching
52if "%1" == "NO-CACHE" goto NoCaching
53goto DependencyOption
54:NoCaching
55if "%1" == "no-cache" set CACHING=disabled
56if "%1" == "no-CACHE" set CACHING=disabled
57if "%1" == "NO-CACHE" set CACHING=disabled
58if not "%CACHING%" == "disabled" goto SmallEnv
59goto NextArgument
60:DependencyOption
61if "%1" == "no-dep" goto NextArgument
62if "%1" == "no-DEP" goto NextArgument
63if "%1" == "NO-DEP" goto NextArgument
64if "%1" == "dep" goto DependecyTraking
65if "%1" == "DEP" goto DependecyTraking
66goto LibiconvPrefixOption
67:DependecyTraking
68if "%1" == "dep" set DEPENDENCY_TRACKING=enabled
69if "%1" == "DEP" set DEPENDENCY_TRACKING=enabled
70if not "%DEPENDENCY_TRACKING%" == "enabled" goto SmallEnv
71goto NextArgument
72:LibiconvPrefixOption
73if "%1" == "no-libiconvprefix" goto NextArgument
74if "%1" == "no-LIBICONVPREFIX" goto NextArgument
75if "%1" == "NO-LIBICONVPREFIX" goto NextArgument
76if "%1" == "libiconvprefix" goto WithLibiconvPrefix
77if "%1" == "LIBICONVPREFIX" goto WithLibiconvPrefix
78goto LibintlPrefixOption
79:WithLibiconvPrefix
80if "%1" == "libiconvprefix" set LIBICONV_PREFIX=enabled
81if "%1" == "LIBICONVPREFIX" set LIBICONV_PREFIX=enabled
82if not "%LIBICONV_PREFIX%" == "enabled" goto SmallEnv
83goto NextArgument
84:LibintlPrefixOption
85if "%1" == "no-libiconvprefix" goto NextArgument
86if "%1" == "no-LIBICONVPREFIX" goto NextArgument
87if "%1" == "NO-LIBICONVPREFIX" goto NextArgument
88if "%1" == "libintlprefix" goto _WithLibintlPrefix
89if "%1" == "LIBINTLPREFIX" goto _WithLibintlPrefix
90goto StaticLibraryOption
91:_WithLibintlPrefix
92if "%1" == "libintlprefix" set LIBINTL_PREFIX=enabled
93if "%1" == "LIBINTLPREFIX" set LIBINTL_PREFIX=enabled
94if not "%LIBINTL_PREFIX%" == "enabled" goto SmallEnv
95goto NextArgument
96:StaticLibraryOption
97if "%1" == "static" goto NextArgument
98if "%1" == "STATIC" goto NextArgument
99if "%1" == "shared" goto SharedLibrary
100if "%1" == "SHARED" goto SharedLibrary
101goto SrcDirOption
102:SharedLibrary
103if "%1" == "shared" set STATIC_LIBRARY=disabled
104if "%1" == "SHARED" set STATIC_LIBRARY=disabled
105if not "%STATIC_LIBRARY%" == "disabled" goto SmallEnv
106goto NextArgument
107:SrcDirOption
108echo %1 | grep -q "/"
109if errorlevel 1 goto CollectArgument
110set XSRC=%1
111if not "%XSRC%" == "%1" goto SmallEnv
112goto NextArgument
113:CollectArgument
114set _ARGS=%ARGS% %1
115if not "%_ARGS%" == "%ARGS% %1" if not "%_ARGS%" == "%ARGS%%1" goto SmallEnv
116echo %_ARGS% | grep -q "[^ ]"
117if not errorlevel 0 set ARGS=%_ARGS%
118set _ARGS=
119:NextArgument
120shift
121if not "%1" == "" goto ArgLoop
122
123Rem Create an arguments file for the configure script.
124echo --srcdir=%XSRC% > arguments
125if "%CACHING%" == "enabled"              echo --cache-file=%XSRC%/djgpp/config.cache >> arguments
126if "%DEPENDENCY_TRACKING%" == "enabled"  echo --enable-dependency-tracking >> arguments
127if "%DEPENDENCY_TRACKING%" == "disabled" echo --disable-dependency-tracking >> arguments
128if "%LIBICONV_PREFIX%" == "enabled"      echo --with-libiconv-prefix >> arguments
129if "%LIBICONV_PREFIX%" == "disabled"     echo --without-libiconv-prefix >> arguments
130if "%LIBINTL_PREFIX%" == "enabled"       echo --with-libintl-prefix >> arguments
131if "%LIBINTL_PREFIX%" == "disabled"      echo --without-libintl-prefix >> arguments
132if "%STATIC_LIBRARY%" == "enabled"       echo --enable-static --disable-shared >> arguments
133if "%STATIC_LIBRARY%" == "disabled"      echo --enable-shared --disable-static >> arguments
134if not "%ARGS%" == ""                    echo %ARGS% >> arguments
135set ARGS=
136set CACHING=
137set DEPENDENCY_TRACKING=
138set LIBICONV_PREFIX=
139set LIBINTL_PREFIX=
140set STATIC_LIBRARY=
141
142if "%XSRC%" == "." goto InPlace
143
144:NotInPlace
145redir -e /dev/null update %XSRC%/configure.orig ./configure
146test -f ./configure
147if errorlevel 1 update %XSRC%/configure ./configure
148
149:InPlace
150Rem Update configuration files
151echo Updating configuration scripts...
152test -f ./configure.orig
153if errorlevel 1 update configure configure.orig
154sed -f %XSRC%/djgpp/config.sed configure.orig > configure
155if errorlevel 1 goto SedError
156
157Rem Make sure they have a config.site file
158set CONFIG_SITE=%XSRC%/djgpp/config.site
159if not "%CONFIG_SITE%" == "%XSRC%/djgpp/config.site" goto SmallEnv
160
161Rem Make sure crucial file names are not munged by unpacking
162test -f %XSRC%/config.h.in
163if not errorlevel 1 mv -f %XSRC%/config.h.in %XSRC%/config.h-in
164test -f %XSRC%/configh.in
165if not errorlevel 1 mv -f %XSRC%/config.h.in %XSRC%/config.h-in
166test -f %XSRC%/config.h-in
167if errorlevel 1 mv -f %XSRC%/config.h %XSRC%/config.h-in
168test -f %XSRC%/po/Makefile.in.in
169if not errorlevel 1 mv -f %XSRC%/po/Makefile.in.in %XSRC%/po/Makefile.in-in
170
171Rem While building the binaries in src/ subdir an intermediary
172Rem file called po-gram-gen2.h is generated from po-gram-gen.h.
173Rem Both resolve to the same 8.3 filename. po-gram-gen2.h will
174Rem be renamed to po-gram_gen2.h and src/po-lex.c must be fixed
175Rem accordingly.
176test -f %XSRC%/src/po-lex.orig
177if errorlevel 1 update %XSRC%/src/po-lex.c %XSRC%/src/po-lex.orig
178sed "s/po-gram-gen2.h/po-gram_gen2.h/g" %XSRC%/src/po-lex.orig > po-lex.tmp
179if errorlevel 1 goto SedError
180mv ./po-lex.tmp %XSRC%/src/po-lex.c
181
182Rem Starting with gettext-0.11 posix function unsetenv() is needed.
183Rem As long as djdev204 has not been released, we will provide
184Rem unsetenv.c from djdev204 CVS tree.
185test -f %XSRC%/lib/unsetenv.c
186if errorlevel 1 update %XSRC%/djgpp/unsetenv.c %XSRC%/lib/unsetenv.c
187
188Rem Starting with gettext-0.11 pw_gecos is needed.
189Rem As long as djdev204 has not been released, we will provide
190Rem getpwman.c and pwd.h (djpwd.h) from djdev204 CVS tree.
191test -f %XSRC%/lib/djpwd.h
192if errorlevel 1 update %XSRC%/djgpp/djpwd.h %XSRC%/lib/djpwd.h
193test -f %XSRC%/lib/getpwnam.c
194if errorlevel 1 update %XSRC%/djgpp/getpwnam.c %XSRC%/lib/getpwnam.c
195
196Rem src/msginit.c must use the distributed CVS tree pwd.h
197Rem instead of the system's one.
198test -f %XSRC%/src/msginit.orig
199if errorlevel 1 update %XSRC%/src/msginit.c %XSRC%/src/msginit.orig
200sed -f %XSRC%/djgpp/msginit.sed %XSRC%/src/msginit.orig > msginit.tmp
201if errorlevel 1 goto SedError
202mv ./msginit.tmp %XSRC%/src/msginit.c
203
204Rem POTFILES.in must be adjusted to reflect the changed names
205Rem according to fnchange.lst.
206test -f %XSRC%/po/POTFILES.orig
207if errorlevel 1 update %XSRC%/po/POTFILES.in %XSRC%/po/POTFILES.orig
208sed "s/format-librep/format_librep/;s/format-pascal/format_pascal/" %XSRC%/po/POTFILES.orig > POTFILES.tmp
209if errorlevel 1 goto SedError
210mv ./POTFILES.tmp %XSRC%/po/POTFILES.in
211
212Rem This is required because DOS/Windows are case-insensitive
213Rem to file names, and "make install" will do nothing if Make
214Rem finds a file called `install'.
215if exist INSTALL ren INSTALL INSTALL.txt
216
217Rem Set SHELL to a sane default or some configure tests stop working
218Rem if the package is configured across partitions.
219if not "%SHELL%" == "" goto HomeName
220set SHELL=/bin/sh
221if not "%SHELL%" == "/bin/sh" goto SmallEnv
222echo No SHELL found in the environment, using default value
223
224:HomeName
225Rem Set HOME to a sane default so configure stops complaining.
226if not "%HOME%" == "" goto HostName
227set HOME=%XSRC%/djgpp
228if not "%HOME%" == "%XSRC%/djgpp" goto SmallEnv
229echo No HOME found in the environment, using default value
230
231:HostName
232Rem Set HOSTNAME so it shows in config.status
233if not "%HOSTNAME%" == "" goto hostdone
234if "%windir%" == "" goto msdos
235set OS=MS-Windows
236if not "%OS%" == "MS-Windows" goto SmallEnv
237goto haveos
238:msdos
239set OS=MS-DOS
240if not "%OS%" == "MS-DOS" goto SmallEnv
241:haveos
242if not "%USERNAME%" == "" goto haveuname
243if not "%USER%" == "" goto haveuser
244echo No USERNAME and no USER found in the environment, using default values
245set HOSTNAME=Unknown PC
246if not "%HOSTNAME%" == "Unknown PC" goto SmallEnv
247goto userdone
248:haveuser
249set HOSTNAME=%USER%'s PC
250if not "%HOSTNAME%" == "%USER%'s PC" goto SmallEnv
251goto userdone
252:haveuname
253set HOSTNAME=%USERNAME%'s PC
254if not "%HOSTNAME%" == "%USERNAME%'s PC" goto SmallEnv
255:userdone
256set _HOSTNAME=%HOSTNAME%, %OS%
257if not "%_HOSTNAME%" == "%HOSTNAME%, %OS%" goto SmallEnv
258set HOSTNAME=%_HOSTNAME%
259:hostdone
260set _HOSTNAME=
261set OS=
262
263Rem install-sh is required by the configure script but clashes with the
264Rem various Makefile install-foo targets, so we MUST have it before the
265Rem script runs and rename it afterwards
266test -f %XSRC%/install-sh
267if not errorlevel 1 goto NoRen0
268test -f %XSRC%/install-sh.sh
269if not errorlevel 1 mv -f %XSRC%/install-sh.sh %XSRC%/install-sh
270:NoRen0
271
272if "%NLS%" == "disabled" goto WithoutNLS
273
274:WithNLS
275Rem Recreate the files in the %XSRC%/po subdir with our ported tools.
276redir -e /dev/null rm %XSRC%/po/*.gmo
277redir -e /dev/null rm %XSRC%/po/gettext.pot
278redir -e /dev/null rm %XSRC%/po/cat-id-tbl.c
279redir -e /dev/null rm %XSRC%/po/stamp-cat-id
280
281Rem Update the arguments file for the configure script.
282echo --enable-nls --with-included-gettext >> arguments
283goto ConfigurePackage
284
285:WithoutNLS
286Rem Update the arguments file for the configure script.
287echo --disable-nls >> arguments
288
289:ConfigurePackage
290echo Running the ./configure script...
291sh ./configure @arguments
292if errorlevel 1 goto CfgError
293rm arguments
294echo Done.
295
296:ScriptEditing
297Rem DJGPP specific editing of test scripts.
298test -f %XSRC%/tests/stamp-test
299if not errorlevel 1 goto End
300if "%XSRC%" == "." goto NoDirChange
301cd | sed "s|:.*$|:|" > cd_BuildDir.bat
302cd | sed "s|^.:|cd |" >> cd_BuildDir.bat
303mv -f cd_BuildDir.bat %XSRC%/cd_BuildDir.bat
304echo %XSRC% | sed -e "s|^/dev/||" -e "s|/|:|" -e "s|:.*$|:|g" > cd_SrcDir.bat
305echo %XSRC% | sed -e "s|^/dev/||" -e "s|/|:/|" -e "s|^.*:|cd |" -e "s|^\.\.|cd &|" -e "s|/|\\|g" >> cd_SrcDir.bat
306call cd_SrcDir.bat
307call djgpp\edtests.bat
308call cd_BuildDir.bat
309rm -f cd_SrcDir.bat cd_BuildDir.bat %XSRC%/cd_BuildDir.bat
310goto End
311:NoDirChange
312call djgpp\edtests.bat
313goto End
314
315:SedError
316echo ./configure script editing failed!
317goto End
318
319:CfgError
320echo ./configure script exited abnormally!
321goto End
322
323:SmallEnv
324echo Your environment size is too small.  Enlarge it and run me again.
325echo Configuration NOT done!
326
327:End
328test -f %XSRC%/install-sh.sh
329if not errorlevel 1 goto NoRen1
330test -f %XSRC%/install-sh
331if not errorlevel 1 mv -f %XSRC%/install-sh %XSRC%/install-sh.sh
332:NoRen1
333if "%SHELL%" == "/bin/sh" set SHELL=
334if "%HOME%" == "%XSRC%/djgpp" set HOME=
335set CONFIG_SITE=
336set HOSTNAME=
337set NLS=
338set CACHING=
339set DEPENDENCY_TRACKING=
340set XSRC=
341