123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- @echo off
- rem ***************************************************************************
- rem * _ _ ____ _
- rem * Project ___| | | | _ \| |
- rem * / __| | | | |_) | |
- rem * | (__| |_| | _ <| |___
- rem * \___|\___/|_| \_\_____|
- rem *
- rem * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- rem *
- rem * This software is licensed as described in the file COPYING, which
- rem * you should have received as part of this distribution. The terms
- rem * are also available at https://curl.haxx.se/docs/copyright.html.
- rem *
- rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- rem * copies of the Software, and permit persons to whom the Software is
- rem * furnished to do so, under the terms of the COPYING file.
- rem *
- rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- rem * KIND, either express or implied.
- rem *
- rem ***************************************************************************
- rem NOTES
- rem
- rem This batch file must be used to set up a git tree to build on systems where
- rem there is no autotools support (i.e. DOS and Windows).
- rem
- :begin
- rem Set our variables
- if "%OS%" == "Windows_NT" setlocal
- set MODE=GENERATE
- rem Switch to this batch file's directory
- cd /d "%~0\.." 1>NUL 2>&1
- rem Check we are running from a curl git repository
- if not exist GIT-INFO goto norepo
- rem Detect programs. HAVE_<PROGNAME>
- rem When not found the variable is set undefined. The undefined pattern
- rem allows for statements like "if not defined HAVE_PERL (command)"
- groff --version <NUL 1>NUL 2>&1
- if errorlevel 1 (set HAVE_GROFF=) else (set HAVE_GROFF=Y)
- nroff --version <NUL 1>NUL 2>&1
- if errorlevel 1 (set HAVE_NROFF=) else (set HAVE_NROFF=Y)
- perl --version <NUL 1>NUL 2>&1
- if errorlevel 1 (set HAVE_PERL=) else (set HAVE_PERL=Y)
- gzip --version <NUL 1>NUL 2>&1
- if errorlevel 1 (set HAVE_GZIP=) else (set HAVE_GZIP=Y)
- :parseArgs
- if "%~1" == "" goto start
- if /i "%~1" == "-clean" (
- set MODE=CLEAN
- ) else if /i "%~1" == "-?" (
- goto syntax
- ) else if /i "%~1" == "-h" (
- goto syntax
- ) else if /i "%~1" == "-help" (
- goto syntax
- ) else (
- goto unknown
- )
- shift & goto parseArgs
- :start
- if "%MODE%" == "GENERATE" (
- echo.
- echo Generating prerequisite files
- call :generate
- if errorlevel 3 goto nogenhugehelp
- if errorlevel 2 goto nogenmakefile
- if errorlevel 1 goto warning
- ) else (
- echo.
- echo Removing prerequisite files
- call :clean
- if errorlevel 2 goto nocleanhugehelp
- if errorlevel 1 goto nocleanmakefile
- )
- goto success
- rem Main generate function.
- rem
- rem Returns:
- rem
- rem 0 - success
- rem 1 - success with simplified tool_hugehelp.c
- rem 2 - failed to generate Makefile
- rem 3 - failed to generate tool_hugehelp.c
- rem
- :generate
- if "%OS%" == "Windows_NT" setlocal
- set BASIC_HUGEHELP=0
- rem Create Makefile
- echo * %CD%\Makefile
- if exist Makefile.dist (
- copy /Y Makefile.dist Makefile 1>NUL 2>&1
- if errorlevel 1 (
- if "%OS%" == "Windows_NT" endlocal
- exit /B 2
- )
- )
- rem Create tool_hugehelp.c
- echo * %CD%\src\tool_hugehelp.c
- call :genHugeHelp
- if errorlevel 2 (
- if "%OS%" == "Windows_NT" endlocal
- exit /B 3
- )
- if errorlevel 1 (
- set BASIC_HUGEHELP=1
- )
- cmd /c exit 0
- rem Setup c-ares git tree
- if exist ares\buildconf.bat (
- echo.
- echo Configuring c-ares build environment
- cd ares
- call buildconf.bat
- cd ..
- )
- if "%BASIC_HUGEHELP%" == "1" (
- if "%OS%" == "Windows_NT" endlocal
- exit /B 1
- )
- if "%OS%" == "Windows_NT" endlocal
- exit /B 0
- rem Main clean function.
- rem
- rem Returns:
- rem
- rem 0 - success
- rem 1 - failed to clean Makefile
- rem 2 - failed to clean tool_hugehelp.c
- rem
- :clean
- rem Remove Makefile
- echo * %CD%\Makefile
- if exist Makefile (
- del Makefile 2>NUL
- if exist Makefile (
- exit /B 1
- )
- )
- rem Remove tool_hugehelp.c
- echo * %CD%\src\tool_hugehelp.c
- if exist src\tool_hugehelp.c (
- del src\tool_hugehelp.c 2>NUL
- if exist src\tool_hugehelp.c (
- exit /B 2
- )
- )
- exit /B
- rem Function to generate src\tool_hugehelp.c
- rem
- rem Returns:
- rem
- rem 0 - full tool_hugehelp.c generated
- rem 1 - simplified tool_hugehelp.c
- rem 2 - failure
- rem
- :genHugeHelp
- if "%OS%" == "Windows_NT" setlocal
- set LC_ALL=C
- set ROFFCMD=
- set BASIC=1
- if defined HAVE_PERL (
- if defined HAVE_GROFF (
- set ROFFCMD=groff -mtty-char -Tascii -P-c -man
- ) else if defined HAVE_NROFF (
- set ROFFCMD=nroff -c -Tascii -man
- )
- )
- if defined ROFFCMD (
- echo #include "tool_setup.h"> src\tool_hugehelp.c
- echo #include "tool_hugehelp.h">> src\tool_hugehelp.c
- if defined HAVE_GZIP (
- echo #ifndef HAVE_LIBZ>> src\tool_hugehelp.c
- )
- %ROFFCMD% docs\curl.1 2>NUL | perl src\mkhelp.pl docs\MANUAL >> src\tool_hugehelp.c
- if defined HAVE_GZIP (
- echo #else>> src\tool_hugehelp.c
- %ROFFCMD% docs\curl.1 2>NUL | perl src\mkhelp.pl -c docs\MANUAL >> src\tool_hugehelp.c
- echo #endif /^* HAVE_LIBZ ^*/>> src\tool_hugehelp.c
- )
- set BASIC=0
- ) else (
- if exist src\tool_hugehelp.c.cvs (
- copy /Y src\tool_hugehelp.c.cvs src\tool_hugehelp.c 1>NUL 2>&1
- ) else (
- echo #include "tool_setup.h"> src\tool_hugehelp.c
- echo #include "tool_hugehelp.h">> src\tool_hugehelp.c
- echo.>> src\tool_hugehelp.c
- echo void hugehelp(void^)>> src\tool_hugehelp.c
- echo {>> src\tool_hugehelp.c
- echo #ifdef USE_MANUAL>> src\tool_hugehelp.c
- echo fputs("Built-in manual not included\n", stdout^);>> src\tool_hugehelp.c
- echo #endif>> src\tool_hugehelp.c
- echo }>> src\tool_hugehelp.c
- )
- )
- findstr "/C:void hugehelp(void)" src\tool_hugehelp.c 1>NUL 2>&1
- if errorlevel 1 (
- if "%OS%" == "Windows_NT" endlocal
- exit /B 2
- )
- if "%BASIC%" == "1" (
- if "%OS%" == "Windows_NT" endlocal
- exit /B 1
- )
- if "%OS%" == "Windows_NT" endlocal
- exit /B 0
- rem Function to clean-up local variables under DOS, Windows 3.x and
- rem Windows 9x as setlocal isn't available until Windows NT
- rem
- :dosCleanup
- set MODE=
- set HAVE_GROFF=
- set HAVE_NROFF=
- set HAVE_PERL=
- set HAVE_GZIP=
- set BASIC_HUGEHELP=
- set LC_ALL
- set ROFFCMD=
- set BASIC=
- exit /B
- :syntax
- rem Display the help
- echo.
- echo Usage: buildconf [-clean]
- echo.
- echo -clean - Removes the files
- goto error
- :unknown
- echo.
- echo Error: Unknown argument '%1'
- goto error
- :norepo
- echo.
- echo Error: This batch file should only be used with a curl git repository
- goto error
- :nogenmakefile
- echo.
- echo Error: Unable to generate Makefile
- goto error
- :nogenhugehelp
- echo.
- echo Error: Unable to generate src\tool_hugehelp.c
- goto error
- :nocleanmakefile
- echo.
- echo Error: Unable to clean Makefile
- goto error
- :nocleanhugehelp
- echo.
- echo Error: Unable to clean src\tool_hugehelp.c
- goto error
- :warning
- echo.
- echo Warning: The curl manual could not be integrated in the source. This means when
- echo you build curl the manual will not be available (curl --man^). Integration of
- echo the manual is not required and a summary of the options will still be available
- echo (curl --help^). To integrate the manual your PATH is required to have
- echo groff/nroff, perl and optionally gzip for compression.
- goto success
- :error
- if "%OS%" == "Windows_NT" (
- endlocal
- ) else (
- call :dosCleanup
- )
- exit /B 1
- :success
- if "%OS%" == "Windows_NT" (
- endlocal
- ) else (
- call :dosCleanup
- )
- exit /B 0
|