Base code merged to SPIN 2.4
[platform/upstream/curl.git] / projects / generate.bat
index d7a76f0..a95cc9a 100644 (file)
@@ -6,7 +6,7 @@ rem *                             / __| | | | |_) | |
 rem *                            | (__| |_| |  _ <| |___
 rem *                             \___|\___/|_| \_\_____|
 rem *
-rem * Copyright (C) 2014, Steve Holme, <steve_holme@hotmail.com>
+rem * Copyright (C) 2014, Steve Holme, <steve_holme@hotmail.com>.
 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
@@ -20,95 +20,200 @@ rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 rem * KIND, either express or implied.
 rem *
 rem ***************************************************************************
-setlocal ENABLEDELAYEDEXPANSION
 
-rem Generate VC8 project files
-call :generate vc8 Windows\VC8\src\curlsrc.tmpl Windows\VC8\src\curlsrc.vcproj
-call :generate vc8 Windows\VC8\lib\libcurl.tmpl Windows\VC8\lib\libcurl.vcproj
+:begin
+  rem Check we are running on a Windows NT derived OS
+  if not "%OS%" == "Windows_NT" goto nodos
+  setlocal
 
-rem Generate VC9 project files
-call :generate vc9 Windows\VC9\src\curlsrc.tmpl Windows\VC9\src\curlsrc.vcproj
-call :generate vc9 Windows\VC9\lib\libcurl.tmpl Windows\VC9\lib\libcurl.vcproj
+  rem Display the help
+  if /i "%~1" == "-?" goto syntax
+  if /i "%~1" == "-h" goto syntax
+  if /i "%~1" == "-help" goto syntax
 
-rem Generate VC10 project files
-call :generate vc10 Windows\VC10\src\curlsrc.tmpl Windows\VC10\src\curlsrc.vcxproj
-call :generate vc10 Windows\VC10\lib\libcurl.tmpl Windows\VC10\lib\libcurl.vcxproj
+:parseArgs
+  if "%~1" == "" goto all
 
-goto exit
+  if /i "%~1" == "vc6" (
+    goto vc6
+  ) else if /i "%~1" == "vc7" (
+    goto vc7
+  ) else if /i "%~1" == "vc7.1" (
+    goto vc71
+  ) else if /i "%~1" == "vc8" (
+    goto vc8
+  ) else if /i "%~1" == "vc9" (
+    goto vc9
+  ) else if /i "%~1" == "vc10" (
+    goto vc10
+  ) else if /i "%~1" == "vc11" (
+    goto vc11
+  ) else if /i "%~1" == "vc12" (
+    goto vc12
+  ) else (
+    goto unknown
+  )
+
+:all
+  set ALL=true
+
+:vc6
+  echo.
+  echo Generating VC6 project files
+  call :generate dsp Windows\VC6\src\curlsrc.tmpl Windows\VC6\src\curlsrc.dsp
+  call :generate dsp Windows\VC6\lib\libcurl.tmpl Windows\VC6\lib\libcurl.dsp
+  if not "%ALL%" == "true" goto success
+
+:vc7
+  echo.
+  echo Generating VC7 project files
+  call :generate vcproj1 Windows\VC7\src\curlsrc.tmpl Windows\VC7\src\curlsrc.vcproj
+  call :generate vcproj1 Windows\VC7\lib\libcurl.tmpl Windows\VC7\lib\libcurl.vcproj
+  if not "%ALL%" == "true" goto success
+
+:vc71
+  echo.
+  echo Generating VC7.1 project files
+  call :generate vcproj1 Windows\VC7.1\src\curlsrc.tmpl Windows\VC7.1\src\curlsrc.vcproj
+  call :generate vcproj1 Windows\VC7.1\lib\libcurl.tmpl Windows\VC7.1\lib\libcurl.vcproj
+  if not "%ALL%" == "true" goto success
+
+:vc8
+  echo.
+  echo Generating VC8 project files
+  call :generate vcproj2 Windows\VC8\src\curlsrc.tmpl Windows\VC8\src\curlsrc.vcproj
+  call :generate vcproj2 Windows\VC8\lib\libcurl.tmpl Windows\VC8\lib\libcurl.vcproj
+  if not "%ALL%" == "true" goto success
+
+:vc9
+  echo.
+  echo Generating VC9 project files
+  call :generate vcproj2 Windows\VC9\src\curlsrc.tmpl Windows\VC9\src\curlsrc.vcproj
+  call :generate vcproj2 Windows\VC9\lib\libcurl.tmpl Windows\VC9\lib\libcurl.vcproj
+  if not "%ALL%" == "true" goto success
+
+:vc10
+  echo.
+  echo Generating VC10 project files
+  call :generate vcxproj Windows\VC10\src\curlsrc.tmpl Windows\VC10\src\curlsrc.vcxproj
+  call :generate vcxproj Windows\VC10\lib\libcurl.tmpl Windows\VC10\lib\libcurl.vcxproj
+  if not "%ALL%" == "true" goto success
+
+:vc11
+  echo.
+  echo Generating VC11 project files
+  call :generate vcxproj Windows\VC11\src\curlsrc.tmpl Windows\VC11\src\curlsrc.vcxproj
+  call :generate vcxproj Windows\VC11\lib\libcurl.tmpl Windows\VC11\lib\libcurl.vcxproj
+  if not "%ALL%" == "true" goto success
+
+:vc12
+  echo.
+  echo Generating VC12 project files
+  call :generate vcxproj Windows\VC12\src\curlsrc.tmpl Windows\VC12\src\curlsrc.vcxproj
+  call :generate vcxproj Windows\VC12\lib\libcurl.tmpl Windows\VC12\lib\libcurl.vcxproj
+
+  goto success
 
 rem Main generate function.
 rem
-rem %1 - IDE
+rem %1 - Project Type (dsp for VC6, vcproj1 for VC7 and VC7.1, vcproj2 for VC8 and VC9
+rem      or vcxproj for VC10, VC11 and VC12)
 rem %2 - Input template file
 rem %3 - Output project file
 rem
 :generate
-  echo.
-
   if not exist %2 (
+    echo.
     echo Error: Cannot open %CD%\%2
     exit /B
   )
 
   if exist %3 (  
-    echo Deleting %3
     del %3
   )
 
-  echo Generating %3
-  for /f "delims=" %%i in (%2) do (
-    if "%%i" == "CURL_SRC_C_FILES" (
-      for /f %%c in ('dir /b ..\src\*.c') do call :element %1 src %%c %3
-    ) else if "%%i" == "CURL_SRC_H_FILES" (
-      for /f %%h in ('dir /b ..\src\*.h') do call :element %1 src %%h %3
-    ) else if "%%i" == "CURL_SRC_RC_FILES" (
-      for /f %%r in ('dir /b ..\src\*.rc') do call :element %1 src %%r %3
-    ) else if "%%i" == "CURL_LIB_C_FILES" (
-      for /f %%c in ('dir /b ..\lib\*.c') do call :element %1 lib %%c %3
-    ) else if "%%i" == "CURL_LIB_H_FILES" (
-      for /f %%h in ('dir /b ..\lib\*.h') do call :element %1 lib %%h %3
-    ) else if "%%i" == "CURL_LIB_RC_FILES" (
-      for /f %%r in ('dir /b ..\lib\*.rc') do call :element %1 lib %%r %3
-    ) else if "%%i" == "CURL_LIB_VTLS_C_FILES" (
-      for /f %%c in ('dir /b ..\lib\vtls\*.c') do call :element %1 lib\vtls %%c %3
-    ) else if "%%i" == "CURL_LIB_VTLS_H_FILES" (
-      for /f %%h in ('dir /b ..\lib\vtls\*.h') do call :element %1 lib\vtls %%h %3
+  echo * %CD%\%3
+  for /f "usebackq delims=" %%i in (`"findstr /n ^^ %2"`) do (
+    set "var=%%i"
+    setlocal enabledelayedexpansion
+    set "var=!var:*:=!"
+
+    if "!var!" == "CURL_SRC_C_FILES" (
+      for /f "delims=" %%c in ('dir /b ..\src\*.c') do call :element %1 src "%%c" %3
+    ) else if "!var!" == "CURL_SRC_H_FILES" (
+      for /f "delims=" %%h in ('dir /b ..\src\*.h') do call :element %1 src "%%h" %3
+    ) else if "!var!" == "CURL_SRC_RC_FILES" (
+      for /f "delims=" %%r in ('dir /b ..\src\*.rc') do call :element %1 src "%%r" %3
+    ) else if "!var!" == "CURL_SRC_X_C_FILES" (
+      call :element %1 lib "strtoofft.c" %3
+      call :element %1 lib "rawstr.c" %3
+      call :element %1 lib "nonblock.c" %3
+      call :element %1 lib "warnless.c" %3
+    ) else if "!var!" == "CURL_SRC_X_H_FILES" (
+      call :element %1 lib "config-win32.h" %3
+      call :element %1 lib "curl_setup.h" %3
+      call :element %1 lib "strtoofft.h" %3
+      call :element %1 lib "rawstr.h" %3
+      call :element %1 lib "nonblock.h" %3
+      call :element %1 lib "warnless.h" %3
+    ) else if "!var!" == "CURL_LIB_C_FILES" (
+      for /f "delims=" %%c in ('dir /b ..\lib\*.c') do call :element %1 lib "%%c" %3
+    ) else if "!var!" == "CURL_LIB_H_FILES" (
+      for /f "delims=" %%h in ('dir /b ..\lib\*.h') do call :element %1 lib "%%h" %3
+    ) else if "!var!" == "CURL_LIB_RC_FILES" (
+      for /f "delims=" %%r in ('dir /b ..\lib\*.rc') do call :element %1 lib "%%r" %3
+    ) else if "!var!" == "CURL_LIB_VTLS_C_FILES" (
+      for /f "delims=" %%c in ('dir /b ..\lib\vtls\*.c') do call :element %1 lib\vtls "%%c" %3
+    ) else if "!var!" == "CURL_LIB_VTLS_H_FILES" (
+      for /f "delims=" %%h in ('dir /b ..\lib\vtls\*.h') do call :element %1 lib\vtls "%%h" %3
     ) else (
-      echo %%i>> %3
+      echo.!var!>> %3
     )
+
+    endlocal
   )
   exit /B
 
 rem Generates a single file xml element.
 rem
-rem %1 - IDE
-rem %2 - Directory (eg src, lib or lib\vtls)
+rem %1 - Project Type (dsp for VC6, vcproj1 for VC7 and VC7.1, vcproj2 for VC8 and VC9
+rem      or vcxproj for VC10, VC11 and VC12)
+rem %2 - Directory (src, lib or lib\vtls)
 rem %3 - Source filename
 rem %4 - Output project file
 rem
 :element
   set "SPACES=    "
   if "%2" == "lib\vtls" (
-    set "TABS=        "
+    set "TABS=                         "
   ) else (
-    set "TABS=      "
+    set "TABS=                 "
   )
 
   call :extension %3 ext
 
-  if "%1" == "vc10" (
+  if "%1" == "dsp" (
+    echo # Begin Source File>> %4
+    echo.>> %4
+    echo SOURCE=..\..\..\..\%2\%~3>> %4
+    echo # End Source File>> %4
+  ) else if "%1" == "vcproj1" (
+    echo %TABS%^<File>> %4
+    echo %TABS%        RelativePath="..\..\..\..\%2\%~3"^>>> %4
+    echo %TABS%^</File^>>> %4
+  ) else if "%1" == "vcproj2" (
+    echo %TABS%^<File>> %4
+    echo %TABS%        RelativePath="..\..\..\..\%2\%~3">> %4
+    echo %TABS%^>>> %4
+    echo %TABS%^</File^>>> %4
+  ) else if "%1" == "vcxproj" (
     if "%ext%" == "c" (
-      echo %SPACES%^<ClCompile Include=^"..\..\..\..\%2\%3^" /^>>> %4
+      echo %SPACES%^<ClCompile Include=^"..\..\..\..\%2\%~3^" /^>>> %4
     ) else if "%ext%" == "h" (
-      echo %SPACES%^<ClInclude Include=^"..\..\..\..\%2\%3^" /^>>> %4
+      echo %SPACES%^<ClInclude Include=^"..\..\..\..\%2\%~3^" /^>>> %4
     ) else if "%ext%" == "rc" (
-      echo %SPACES%^<ResourceCompile Include=^"..\..\..\..\%2\%3^" /^>>> %4
+      echo %SPACES%^<ResourceCompile Include=^"..\..\..\..\%2\%~3^" /^>>> %4
     )
-  ) else (
-    echo %TABS%^<File>> %4
-    echo %TABS%  RelativePath="..\..\..\..\%2\%3">> %4
-    echo %TABS%^>>> %4
-    echo %TABS%^</File^>>> %4
   )
 
   exit /B
@@ -119,7 +224,7 @@ rem %1 - The filename
 rem %2 - The return value
 rem
 :extension
-  set fname=%1
+  set fname=%~1
   set ename=
 :loop1
   if "%fname%"=="" (
@@ -136,6 +241,37 @@ rem
   set %2=%ename%
   exit /B
 
-:exit
+:syntax
+  rem Display the help
+  echo.
+  echo Usage: generate [compiler]
+  echo.
+  echo Compiler:
+  echo.
+  echo vc6       - Use Visual Studio 6
+  echo vc7       - Use Visual Studio .NET
+  echo vc7.1     - Use Visual Studio .NET 2003
+  echo vc8       - Use Visual Studio 2005
+  echo vc9       - Use Visual Studio 2008
+  echo vc10      - Use Visual Studio 2010
+  echo vc11      - Use Visual Studio 2012
+  echo vc12      - Use Visual Studio 2013
+  goto error
+
+:unknown
+  echo.
+  echo Error: Unknown argument '%1'
+  goto error
+
+:nodos
   echo.
-  pause
+  echo Error: Only a Windows NT based Operating System is supported
+  goto error
+
+:error
+  endlocal
+  exit /B 1
+
+:success
+  endlocal
+  exit /B 0