smtp: use the upload buffer size for scratch buffer malloc
[platform/upstream/curl.git] / buildconf.bat
1 @echo off
2 rem ***************************************************************************
3 rem *                                  _   _ ____  _
4 rem *  Project                     ___| | | |  _ \| |
5 rem *                             / __| | | | |_) | |
6 rem *                            | (__| |_| |  _ <| |___
7 rem *                             \___|\___/|_| \_\_____|
8 rem *
9 rem * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
10 rem *
11 rem * This software is licensed as described in the file COPYING, which
12 rem * you should have received as part of this distribution. The terms
13 rem * are also available at https://curl.haxx.se/docs/copyright.html.
14 rem *
15 rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
16 rem * copies of the Software, and permit persons to whom the Software is
17 rem * furnished to do so, under the terms of the COPYING file.
18 rem *
19 rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
20 rem * KIND, either express or implied.
21 rem *
22 rem ***************************************************************************
23
24 rem NOTES
25 rem
26 rem This batch file must be used to set up a git tree to build on systems where
27 rem there is no autotools support (i.e. DOS and Windows).
28 rem
29
30 :begin
31   rem Set our variables
32   if "%OS%" == "Windows_NT" setlocal
33   set MODE=GENERATE
34
35   rem Switch to this batch file's directory
36   cd /d "%~0\.." 1>NUL 2>&1
37
38   rem Check we are running from a curl git repository
39   if not exist GIT-INFO goto norepo
40
41   rem Detect programs. HAVE_<PROGNAME>
42   rem When not found the variable is set undefined. The undefined pattern
43   rem allows for statements like "if not defined HAVE_PERL (command)"
44   groff --version <NUL 1>NUL 2>&1
45   if errorlevel 1 (set HAVE_GROFF=) else (set HAVE_GROFF=Y)
46   nroff --version <NUL 1>NUL 2>&1
47   if errorlevel 1 (set HAVE_NROFF=) else (set HAVE_NROFF=Y)
48   perl --version <NUL 1>NUL 2>&1
49   if errorlevel 1 (set HAVE_PERL=) else (set HAVE_PERL=Y)
50   gzip --version <NUL 1>NUL 2>&1
51   if errorlevel 1 (set HAVE_GZIP=) else (set HAVE_GZIP=Y)
52
53 :parseArgs
54   if "%~1" == "" goto start
55
56   if /i "%~1" == "-clean" (
57     set MODE=CLEAN
58   ) else if /i "%~1" == "-?" (
59     goto syntax
60   ) else if /i "%~1" == "-h" (
61     goto syntax
62   ) else if /i "%~1" == "-help" (
63     goto syntax
64   ) else (
65     goto unknown
66   )
67
68   shift & goto parseArgs
69
70 :start
71   if "%MODE%" == "GENERATE" (
72     echo.
73     echo Generating prerequisite files
74
75     call :generate
76     if errorlevel 3 goto nogenhugehelp
77     if errorlevel 2 goto nogenmakefile
78     if errorlevel 1 goto warning
79
80   ) else (
81     echo.
82     echo Removing prerequisite files
83
84     call :clean
85     if errorlevel 2 goto nocleanhugehelp
86     if errorlevel 1 goto nocleanmakefile
87   )
88
89   goto success
90
91 rem Main generate function.
92 rem
93 rem Returns:
94 rem
95 rem 0 - success
96 rem 1 - success with simplified tool_hugehelp.c 
97 rem 2 - failed to generate Makefile
98 rem 3 - failed to generate tool_hugehelp.c
99 rem
100 :generate
101   if "%OS%" == "Windows_NT" setlocal
102   set BASIC_HUGEHELP=0
103
104   rem Create Makefile
105   echo * %CD%\Makefile
106   if exist Makefile.dist (
107     copy /Y Makefile.dist Makefile 1>NUL 2>&1
108     if errorlevel 1 (
109       if "%OS%" == "Windows_NT" endlocal
110       exit /B 2
111     )
112   )
113
114   rem Create tool_hugehelp.c
115   echo * %CD%\src\tool_hugehelp.c
116   call :genHugeHelp
117   if errorlevel 2 (
118     if "%OS%" == "Windows_NT" endlocal
119     exit /B 3
120   )
121   if errorlevel 1 (
122     set BASIC_HUGEHELP=1
123   )
124   cmd /c exit 0
125
126   rem Setup c-ares git tree
127   if exist ares\buildconf.bat (
128     echo.
129     echo Configuring c-ares build environment
130     cd ares
131     call buildconf.bat
132     cd ..
133   )
134
135   if "%BASIC_HUGEHELP%" == "1" (
136     if "%OS%" == "Windows_NT" endlocal
137     exit /B 1
138   )
139
140   if "%OS%" == "Windows_NT" endlocal
141   exit /B 0
142
143 rem Main clean function.
144 rem
145 rem Returns:
146 rem
147 rem 0 - success
148 rem 1 - failed to clean Makefile
149 rem 2 - failed to clean tool_hugehelp.c
150 rem
151 :clean
152   rem Remove Makefile
153   echo * %CD%\Makefile
154   if exist Makefile (
155     del Makefile 2>NUL
156     if exist Makefile (
157       exit /B 1
158     )
159   )
160
161   rem Remove tool_hugehelp.c
162   echo * %CD%\src\tool_hugehelp.c
163   if exist src\tool_hugehelp.c (
164     del src\tool_hugehelp.c 2>NUL
165     if exist src\tool_hugehelp.c (
166       exit /B 2
167     )
168   )
169
170   exit /B
171
172 rem Function to generate src\tool_hugehelp.c
173 rem
174 rem Returns:
175 rem
176 rem 0 - full tool_hugehelp.c generated
177 rem 1 - simplified tool_hugehelp.c
178 rem 2 - failure
179 rem
180 :genHugeHelp
181   if "%OS%" == "Windows_NT" setlocal
182   set LC_ALL=C
183   set ROFFCMD=
184   set BASIC=1
185
186   if defined HAVE_PERL (
187     if defined HAVE_GROFF (
188       set ROFFCMD=groff -mtty-char -Tascii -P-c -man
189     ) else if defined HAVE_NROFF (
190       set ROFFCMD=nroff -c -Tascii -man
191     )
192   )
193
194   if defined ROFFCMD (
195     echo #include "tool_setup.h"> src\tool_hugehelp.c
196     echo #include "tool_hugehelp.h">> src\tool_hugehelp.c 
197
198     if defined HAVE_GZIP (
199       echo #ifndef HAVE_LIBZ>> src\tool_hugehelp.c
200     )
201
202     %ROFFCMD% docs\curl.1 2>NUL | perl src\mkhelp.pl docs\MANUAL >> src\tool_hugehelp.c
203     if defined HAVE_GZIP (
204       echo #else>> src\tool_hugehelp.c
205       %ROFFCMD% docs\curl.1 2>NUL | perl src\mkhelp.pl -c docs\MANUAL >> src\tool_hugehelp.c
206       echo #endif /^* HAVE_LIBZ ^*/>> src\tool_hugehelp.c
207     )
208
209     set BASIC=0
210   ) else (
211     if exist src\tool_hugehelp.c.cvs (
212       copy /Y src\tool_hugehelp.c.cvs src\tool_hugehelp.c 1>NUL 2>&1
213     ) else (
214       echo #include "tool_setup.h"> src\tool_hugehelp.c
215       echo #include "tool_hugehelp.hd">> src\tool_hugehelp.c
216       echo.>> src\tool_hugehelp.c
217       echo void hugehelp(void^)>> src\tool_hugehelp.c
218       echo {>> src\tool_hugehelp.c
219       echo #ifdef USE_MANUAL>> src\tool_hugehelp.c
220       echo   fputs("Built-in manual not included\n", stdout^);>> src\tool_hugehelp.c
221       echo #endif>> src\tool_hugehelp.c
222       echo }>> src\tool_hugehelp.c
223     )
224   )
225
226   findstr "/C:void hugehelp(void)" src\tool_hugehelp.c 1>NUL 2>&1
227   if errorlevel 1 (
228     if "%OS%" == "Windows_NT" endlocal
229     exit /B 2
230   )
231
232   if "%BASIC%" == "1" (
233     if "%OS%" == "Windows_NT" endlocal
234     exit /B 1
235   )
236
237   if "%OS%" == "Windows_NT" endlocal
238   exit /B 0
239
240 rem Function to clean-up local variables under DOS, Windows 3.x and
241 rem Windows 9x as setlocal isn't available until Windows NT
242 rem
243 :dosCleanup
244   set MODE=
245   set HAVE_GROFF=
246   set HAVE_NROFF=
247   set HAVE_PERL=
248   set HAVE_GZIP=
249   set BASIC_HUGEHELP=
250   set LC_ALL
251   set ROFFCMD=
252   set BASIC=
253
254   exit /B
255
256 :syntax
257   rem Display the help
258   echo.
259   echo Usage: buildconf [-clean]
260   echo.
261   echo -clean    - Removes the files
262   goto error
263
264 :unknown
265   echo.
266   echo Error: Unknown argument '%1'
267   goto error
268
269 :norepo
270   echo.
271   echo Error: This batch file should only be used with a curl git repository
272   goto error
273
274 :nogenmakefile
275   echo.
276   echo Error: Unable to generate Makefile
277   goto error
278
279 :nogenhugehelp
280   echo.
281   echo Error: Unable to generate src\tool_hugehelp.c
282   goto error
283
284 :nocleanmakefile
285   echo.
286   echo Error: Unable to clean Makefile
287   goto error
288
289 :nocleanhugehelp
290   echo.
291   echo Error: Unable to clean src\tool_hugehelp.c
292   goto error
293
294 :warning
295   echo.
296   echo Warning: The curl manual could not be integrated in the source. This means when
297   echo you build curl the manual will not be available (curl --man^). Integration of
298   echo the manual is not required and a summary of the options will still be available
299   echo (curl --help^). To integrate the manual your PATH is required to have
300   echo groff/nroff, perl and optionally gzip for compression.
301   goto success
302
303 :error
304   if "%OS%" == "Windows_NT" (
305     endlocal
306   ) else (
307     call :dosCleanup
308   )
309   exit /B 1
310
311 :success
312   if "%OS%" == "Windows_NT" (
313     endlocal
314   ) else (
315     call :dosCleanup
316   )
317   exit /B 0