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