File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / projects / generate.bat
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jun 3 10:01:14 2020 UTC (5 years ago) by misho
Branches: curl, MAIN
CVS tags: v7_70_0p4, HEAD
curl

    1: @echo off
    2: rem ***************************************************************************
    3: rem *                                  _   _ ____  _
    4: rem *  Project                     ___| | | |  _ \| |
    5: rem *                             / __| | | | |_) | |
    6: rem *                            | (__| |_| |  _ <| |___
    7: rem *                             \___|\___/|_| \_\_____|
    8: rem *
    9: rem * Copyright (C) 2014 - 2020, Steve Holme, <steve_holme@hotmail.com>.
   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: :begin
   25:   rem Check we are running on a Windows NT derived OS
   26:   if not "%OS%" == "Windows_NT" goto nodos
   27: 
   28:   rem Set our variables
   29:   setlocal ENABLEEXTENSIONS
   30:   set VERSION=ALL
   31:   set MODE=GENERATE
   32: 
   33:   rem Check we are not running on a network drive
   34:   if "%~d0."=="\\." goto nonetdrv
   35: 
   36:   rem Switch to this batch file's directory
   37:   cd /d "%~0\.." 1>NUL 2>&1
   38: 
   39:   rem Check we are running from a curl git repository
   40:   if not exist ..\GIT-INFO goto norepo
   41: 
   42: :parseArgs
   43:   if "%~1" == "" goto start
   44: 
   45:   if /i "%~1" == "pre" (
   46:     set VERSION=PRE
   47:   ) else if /i "%~1" == "vc6" (
   48:     set VERSION=VC6
   49:   ) else if /i "%~1" == "vc7" (
   50:     set VERSION=VC7
   51:   ) else if /i "%~1" == "vc7.1" (
   52:     set VERSION=VC7.1
   53:   ) else if /i "%~1" == "vc8" (
   54:     set VERSION=VC8
   55:   ) else if /i "%~1" == "vc9" (
   56:     set VERSION=VC9
   57:   ) else if /i "%~1" == "vc10" (
   58:     set VERSION=VC10
   59:   ) else if /i "%~1" == "vc11" (
   60:     set VERSION=VC11
   61:   ) else if /i "%~1" == "vc12" (
   62:     set VERSION=VC12
   63:   ) else if /i "%~1" == "vc14" (
   64:     set VERSION=VC14
   65:   ) else if /i "%~1" == "vc15" (
   66:     set VERSION=VC15
   67:   ) else if /i "%~1" == "-clean" (
   68:     set MODE=CLEAN
   69:   ) else if /i "%~1" == "-?" (
   70:     goto syntax
   71:   ) else if /i "%~1" == "-h" (
   72:     goto syntax
   73:   ) else if /i "%~1" == "-help" (
   74:     goto syntax
   75:   ) else (
   76:     goto unknown
   77:   )
   78: 
   79:   shift & goto parseArgs
   80: 
   81: :start
   82:   if exist ..\buildconf.bat (
   83:     if "%MODE%" == "GENERATE" (
   84:       call ..\buildconf
   85:     ) else if "%VERSION%" == "PRE" (
   86:       call ..\buildconf -clean
   87:     ) else if "%VERSION%" == "ALL" (
   88:       call ..\buildconf -clean
   89:     )
   90:   )
   91:   if "%VERSION%" == "PRE" goto success
   92:   if "%VERSION%" == "VC6" goto vc6
   93:   if "%VERSION%" == "VC7" goto vc7
   94:   if "%VERSION%" == "VC7.1" goto vc71
   95:   if "%VERSION%" == "VC8" goto vc8
   96:   if "%VERSION%" == "VC9" goto vc9
   97:   if "%VERSION%" == "VC10" goto vc10
   98:   if "%VERSION%" == "VC11" goto vc11
   99:   if "%VERSION%" == "VC12" goto vc12
  100:   if "%VERSION%" == "VC14" goto vc14
  101:   if "%VERSION%" == "VC15" goto vc15
  102: 
  103: :vc6
  104:   echo.
  105: 
  106:   if "%MODE%" == "GENERATE" (
  107:     echo Generating VC6 project files
  108:     call :generate dsp Windows\VC6\src\curl.tmpl Windows\VC6\src\curl.dsp
  109:     call :generate dsp Windows\VC6\lib\libcurl.tmpl Windows\VC6\lib\libcurl.dsp
  110:   ) else (
  111:     echo Removing VC6 project files
  112:     call :clean Windows\VC6\src\curl.dsp
  113:     call :clean Windows\VC6\lib\libcurl.dsp
  114:   )
  115: 
  116:   if not "%VERSION%" == "ALL" goto success
  117: 
  118: :vc7
  119:   echo.
  120: 
  121:   if "%MODE%" == "GENERATE" (
  122:     echo Generating VC7 project files
  123:     call :generate vcproj1 Windows\VC7\src\curl.tmpl Windows\VC7\src\curl.vcproj
  124:     call :generate vcproj1 Windows\VC7\lib\libcurl.tmpl Windows\VC7\lib\libcurl.vcproj
  125:   ) else (
  126:     echo Removing VC7 project files
  127:     call :clean Windows\VC7\src\curl.vcproj
  128:     call :clean Windows\VC7\lib\libcurl.vcproj
  129:   )
  130: 
  131:   if not "%VERSION%" == "ALL" goto success
  132: 
  133: :vc71
  134:   echo.
  135: 
  136:   if "%MODE%" == "GENERATE" (
  137:     echo Generating VC7.1 project files
  138:     call :generate vcproj1 Windows\VC7.1\src\curl.tmpl Windows\VC7.1\src\curl.vcproj
  139:     call :generate vcproj1 Windows\VC7.1\lib\libcurl.tmpl Windows\VC7.1\lib\libcurl.vcproj
  140:   ) else (
  141:     echo Removing VC7.1 project files
  142:     call :clean Windows\VC7.1\src\curl.vcproj
  143:     call :clean Windows\VC7.1\lib\libcurl.vcproj
  144:   )
  145: 
  146:   if not "%VERSION%" == "ALL" goto success
  147: 
  148: :vc8
  149:   echo.
  150: 
  151:   if "%MODE%" == "GENERATE" (
  152:     echo Generating VC8 project files
  153:     call :generate vcproj2 Windows\VC8\src\curl.tmpl Windows\VC8\src\curl.vcproj
  154:     call :generate vcproj2 Windows\VC8\lib\libcurl.tmpl Windows\VC8\lib\libcurl.vcproj
  155:   ) else (
  156:     echo Removing VC8 project files
  157:     call :clean Windows\VC8\src\curl.vcproj
  158:     call :clean Windows\VC8\lib\libcurl.vcproj
  159:   )
  160: 
  161:   if not "%VERSION%" == "ALL" goto success
  162: 
  163: :vc9
  164:   echo.
  165: 
  166:   if "%MODE%" == "GENERATE" (
  167:     echo Generating VC9 project files
  168:     call :generate vcproj2 Windows\VC9\src\curl.tmpl Windows\VC9\src\curl.vcproj
  169:     call :generate vcproj2 Windows\VC9\lib\libcurl.tmpl Windows\VC9\lib\libcurl.vcproj
  170:   ) else (
  171:     echo Removing VC9 project files
  172:     call :clean Windows\VC9\src\curl.vcproj
  173:     call :clean Windows\VC9\lib\libcurl.vcproj
  174:   )
  175: 
  176:   if not "%VERSION%" == "ALL" goto success
  177: 
  178: :vc10
  179:   echo.
  180: 
  181:   if "%MODE%" == "GENERATE" (
  182:     echo Generating VC10 project files
  183:     call :generate vcxproj Windows\VC10\src\curl.tmpl Windows\VC10\src\curl.vcxproj
  184:     call :generate vcxproj Windows\VC10\lib\libcurl.tmpl Windows\VC10\lib\libcurl.vcxproj
  185:   ) else (
  186:     echo Removing VC10 project files
  187:     call :clean Windows\VC10\src\curl.vcxproj
  188:     call :clean Windows\VC10\lib\libcurl.vcxproj
  189:   )
  190: 
  191:   if not "%VERSION%" == "ALL" goto success
  192: 
  193: :vc11
  194:   echo.
  195: 
  196:   if "%MODE%" == "GENERATE" (
  197:     echo Generating VC11 project files
  198:     call :generate vcxproj Windows\VC11\src\curl.tmpl Windows\VC11\src\curl.vcxproj
  199:     call :generate vcxproj Windows\VC11\lib\libcurl.tmpl Windows\VC11\lib\libcurl.vcxproj
  200:   ) else (
  201:     echo Removing VC11 project files
  202:     call :clean Windows\VC11\src\curl.vcxproj
  203:     call :clean Windows\VC11\lib\libcurl.vcxproj
  204:   )
  205: 
  206:   if not "%VERSION%" == "ALL" goto success
  207: 
  208: :vc12
  209:   echo.
  210: 
  211:   if "%MODE%" == "GENERATE" (
  212:     echo Generating VC12 project files
  213:     call :generate vcxproj Windows\VC12\src\curl.tmpl Windows\VC12\src\curl.vcxproj
  214:     call :generate vcxproj Windows\VC12\lib\libcurl.tmpl Windows\VC12\lib\libcurl.vcxproj
  215:   ) else (
  216:     echo Removing VC12 project files
  217:     call :clean Windows\VC12\src\curl.vcxproj
  218:     call :clean Windows\VC12\lib\libcurl.vcxproj
  219:   )
  220: 
  221:   if not "%VERSION%" == "ALL" goto success
  222: 
  223: :vc14
  224:   echo.
  225: 
  226:   if "%MODE%" == "GENERATE" (
  227:     echo Generating VC14 project files
  228:     call :generate vcxproj Windows\VC14\src\curl.tmpl Windows\VC14\src\curl.vcxproj
  229:     call :generate vcxproj Windows\VC14\lib\libcurl.tmpl Windows\VC14\lib\libcurl.vcxproj
  230:   ) else (
  231:     echo Removing VC14 project files
  232:     call :clean Windows\VC14\src\curl.vcxproj
  233:     call :clean Windows\VC14\lib\libcurl.vcxproj
  234:   )
  235: 
  236:   if not "%VERSION%" == "ALL" goto success
  237: 
  238: :vc15
  239:   echo.
  240: 
  241:   if "%MODE%" == "GENERATE" (
  242:     echo Generating VC15 project files
  243:     call :generate vcxproj Windows\VC15\src\curl.tmpl Windows\VC15\src\curl.vcxproj
  244:     call :generate vcxproj Windows\VC15\lib\libcurl.tmpl Windows\VC15\lib\libcurl.vcxproj
  245:   ) else (
  246:     echo Removing VC15 project files
  247:     call :clean Windows\VC15\src\curl.vcxproj
  248:     call :clean Windows\VC15\lib\libcurl.vcxproj
  249:   )
  250: 
  251:   goto success
  252: 
  253: rem Main generate function.
  254: rem
  255: rem %1 - Project Type (dsp for VC6, vcproj1 for VC7 and VC7.1, vcproj2 for VC8 and VC9
  256: rem      or vcxproj for VC10, VC11, VC12, VC14 and VC15)
  257: rem %2 - Input template file
  258: rem %3 - Output project file
  259: rem
  260: :generate
  261:   if not exist %2 (
  262:     echo.
  263:     echo Error: Cannot open %2
  264:     exit /B
  265:   )
  266: 
  267:   if exist %3 (
  268:     del %3
  269:   )
  270: 
  271:   echo * %CD%\%3
  272:   for /f "usebackq delims=" %%i in (`"findstr /n ^^ %2"`) do (
  273:     set "var=%%i"
  274:     setlocal enabledelayedexpansion
  275:     set "var=!var:*:=!"
  276: 
  277:     if "!var!" == "CURL_SRC_C_FILES" (
  278:       for /f "delims=" %%c in ('dir /b ..\src\*.c') do call :element %1 src "%%c" %3
  279:     ) else if "!var!" == "CURL_SRC_H_FILES" (
  280:       for /f "delims=" %%h in ('dir /b ..\src\*.h') do call :element %1 src "%%h" %3
  281:     ) else if "!var!" == "CURL_SRC_RC_FILES" (
  282:       for /f "delims=" %%r in ('dir /b ..\src\*.rc') do call :element %1 src "%%r" %3
  283:     ) else if "!var!" == "CURL_SRC_X_C_FILES" (
  284:       call :element %1 lib "strtoofft.c" %3
  285:       call :element %1 lib "nonblock.c" %3
  286:       call :element %1 lib "warnless.c" %3
  287:       call :element %1 lib "curl_ctype.c" %3
  288:     ) else if "!var!" == "CURL_SRC_X_H_FILES" (
  289:       call :element %1 lib "config-win32.h" %3
  290:       call :element %1 lib "curl_setup.h" %3
  291:       call :element %1 lib "strtoofft.h" %3
  292:       call :element %1 lib "nonblock.h" %3
  293:       call :element %1 lib "warnless.h" %3
  294:       call :element %1 lib "curl_ctype.h" %3
  295:     ) else if "!var!" == "CURL_LIB_C_FILES" (
  296:       for /f "delims=" %%c in ('dir /b ..\lib\*.c') do call :element %1 lib "%%c" %3
  297:     ) else if "!var!" == "CURL_LIB_H_FILES" (
  298:       for /f "delims=" %%h in ('dir /b ..\include\curl\*.h') do call :element %1 include\curl "%%h" %3
  299:       for /f "delims=" %%h in ('dir /b ..\lib\*.h') do call :element %1 lib "%%h" %3
  300:     ) else if "!var!" == "CURL_LIB_RC_FILES" (
  301:       for /f "delims=" %%r in ('dir /b ..\lib\*.rc') do call :element %1 lib "%%r" %3
  302:     ) else if "!var!" == "CURL_LIB_VAUTH_C_FILES" (
  303:       for /f "delims=" %%c in ('dir /b ..\lib\vauth\*.c') do call :element %1 lib\vauth "%%c" %3
  304:     ) else if "!var!" == "CURL_LIB_VAUTH_H_FILES" (
  305:       for /f "delims=" %%h in ('dir /b ..\lib\vauth\*.h') do call :element %1 lib\vauth "%%h" %3
  306:     ) else if "!var!" == "CURL_LIB_VQUIC_C_FILES" (
  307:       for /f "delims=" %%c in ('dir /b ..\lib\vquic\*.c') do call :element %1 lib\vquic "%%c" %3
  308:     ) else if "!var!" == "CURL_LIB_VQUIC_H_FILES" (
  309:       for /f "delims=" %%h in ('dir /b ..\lib\vquic\*.h') do call :element %1 lib\vquic "%%h" %3
  310:     ) else if "!var!" == "CURL_LIB_VSSH_C_FILES" (
  311:       for /f "delims=" %%c in ('dir /b ..\lib\vssh\*.c') do call :element %1 lib\vssh "%%c" %3
  312:     ) else if "!var!" == "CURL_LIB_VSSH_H_FILES" (
  313:       for /f "delims=" %%h in ('dir /b ..\lib\vssh\*.h') do call :element %1 lib\vssh "%%h" %3
  314:     ) else if "!var!" == "CURL_LIB_VTLS_C_FILES" (
  315:       for /f "delims=" %%c in ('dir /b ..\lib\vtls\*.c') do call :element %1 lib\vtls "%%c" %3
  316:     ) else if "!var!" == "CURL_LIB_VTLS_H_FILES" (
  317:       for /f "delims=" %%h in ('dir /b ..\lib\vtls\*.h') do call :element %1 lib\vtls "%%h" %3
  318:     ) else (
  319:       echo.!var!>> %3
  320:     )
  321: 
  322:     endlocal
  323:   )
  324:   exit /B
  325: 
  326: rem Generates a single file xml element.
  327: rem
  328: rem %1 - Project Type (dsp for VC6, vcproj1 for VC7 and VC7.1, vcproj2 for VC8 and VC9
  329: rem      or vcxproj for VC10, VC11, VC12, VC14 and VC15)
  330: rem %2 - Directory (src, lib, lib\vauth, lib\vquic, lib\vssh, lib\vtls)
  331: rem %3 - Source filename
  332: rem %4 - Output project file
  333: rem
  334: :element
  335:   set "SPACES=    "
  336:   if "%2" == "lib\vauth" (
  337:     set "TABS=				"
  338:   ) else if "%2" == "lib\vquic" (
  339:     set "TABS=				"
  340:   ) else if "%2" == "lib\vssh" (
  341:     set "TABS=				"
  342:   ) else if "%2" == "lib\vtls" (
  343:     set "TABS=				"
  344:   ) else (
  345:     set "TABS=			"
  346:   )
  347: 
  348:   call :extension %3 ext
  349: 
  350:   if "%1" == "dsp" (
  351:     echo # Begin Source File>> %4
  352:     echo.>> %4
  353:     echo SOURCE=..\..\..\..\%2\%~3>> %4
  354:     echo # End Source File>> %4
  355:   ) else if "%1" == "vcproj1" (
  356:     echo %TABS%^<File>> %4
  357:     echo %TABS%	RelativePath="..\..\..\..\%2\%~3"^>>> %4
  358:     echo %TABS%^</File^>>> %4
  359:   ) else if "%1" == "vcproj2" (
  360:     echo %TABS%^<File>> %4
  361:     echo %TABS%	RelativePath="..\..\..\..\%2\%~3">> %4
  362:     echo %TABS%^>>> %4
  363:     echo %TABS%^</File^>>> %4
  364:   ) else if "%1" == "vcxproj" (
  365:     if "%ext%" == "c" (
  366:       echo %SPACES%^<ClCompile Include=^"..\..\..\..\%2\%~3^" /^>>> %4
  367:     ) else if "%ext%" == "h" (
  368:       echo %SPACES%^<ClInclude Include=^"..\..\..\..\%2\%~3^" /^>>> %4
  369:     ) else if "%ext%" == "rc" (
  370:       echo %SPACES%^<ResourceCompile Include=^"..\..\..\..\%2\%~3^" /^>>> %4
  371:     )
  372:   )
  373: 
  374:   exit /B
  375: 
  376: rem Returns the extension for a given filename.
  377: rem
  378: rem %1 - The filename
  379: rem %2 - The return value
  380: rem
  381: :extension
  382:   set fname=%~1
  383:   set ename=
  384: :loop1
  385:   if "%fname%"=="" (
  386:     set %2=
  387:     exit /B
  388:   )
  389: 
  390:   if not "%fname:~-1%"=="." (
  391:     set ename=%fname:~-1%%ename%
  392:     set fname=%fname:~0,-1%
  393:     goto loop1
  394:   )
  395: 
  396:   set %2=%ename%
  397:   exit /B
  398: 
  399: rem Removes the given project file.
  400: rem
  401: rem %1 - The filename
  402: rem
  403: :clean
  404:   echo * %CD%\%1
  405: 
  406:   if exist %1 (
  407:     del %1
  408:   )
  409: 
  410:   exit /B
  411: 
  412: :syntax
  413:   rem Display the help
  414:   echo.
  415:   echo Usage: generate [what] [-clean]
  416:   echo.
  417:   echo What to generate:
  418:   echo.
  419:   echo pre       - Prerequisites only
  420:   echo vc6       - Use Visual Studio 6
  421:   echo vc7       - Use Visual Studio .NET
  422:   echo vc7.1     - Use Visual Studio .NET 2003
  423:   echo vc8       - Use Visual Studio 2005
  424:   echo vc9       - Use Visual Studio 2008
  425:   echo vc10      - Use Visual Studio 2010
  426:   echo vc11      - Use Visual Studio 2012
  427:   echo vc12      - Use Visual Studio 2013
  428:   echo vc14      - Use Visual Studio 2015
  429:   echo vc15      - Use Visual Studio 2017
  430:   echo.
  431:   echo -clean    - Removes the project files
  432:   goto error
  433: 
  434: :unknown
  435:   echo.
  436:   echo Error: Unknown argument '%1'
  437:   goto error
  438: 
  439: :nodos
  440:   echo.
  441:   echo Error: Only a Windows NT based Operating System is supported
  442:   goto error
  443: 
  444: :nonetdrv
  445:   echo.
  446:   echo Error: This batch file cannot run from a network drive
  447:   goto error
  448: 
  449: :norepo
  450:   echo.
  451:   echo Error: This batch file should only be used from a curl git repository
  452:   goto error
  453: 
  454: :seterr
  455:   rem Set the caller's errorlevel.
  456:   rem %1[opt]: Errorlevel as integer.
  457:   rem If %1 is empty the errorlevel will be set to 0.
  458:   rem If %1 is not empty and not an integer the errorlevel will be set to 1.
  459:   setlocal
  460:   set EXITCODE=%~1
  461:   if not defined EXITCODE set EXITCODE=0
  462:   echo %EXITCODE%|findstr /r "[^0-9\-]" 1>NUL 2>&1
  463:   if %ERRORLEVEL% EQU 0 set EXITCODE=1
  464:   exit /b %EXITCODE%
  465: 
  466: :error
  467:   if "%OS%" == "Windows_NT" endlocal
  468:   exit /B 1
  469: 
  470: :success
  471:   endlocal
  472:   exit /B 0

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