Annotation of embedaddon/curl/buildconf.bat, revision 1.1

1.1     ! misho       1: @echo off
        !             2: rem ***************************************************************************
        !             3: rem *                                  _   _ ____  _
        !             4: rem *  Project                     ___| | | |  _ \| |
        !             5: rem *                             / __| | | | |_) | |
        !             6: rem *                            | (__| |_| |  _ <| |___
        !             7: rem *                             \___|\___/|_| \_\_____|
        !             8: rem *
        !             9: rem * Copyright (C) 1998 - 2019, 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.h">> 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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>