@echo off | |
rem *************************************************************************** | |
rem * _ _ ____ _ | |
rem * Project ___| | | | _ \| | | |
rem * / __| | | | |_) | | | |
rem * | (__| |_| | _ <| |___ | |
rem * \___|\___/|_| \_\_____| | |
rem * | |
rem * Copyright (C) 2014 - 2020, 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 | |
rem * are also available at https://curl.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 *************************************************************************** | |
:begin | |
rem Check we are running on a Windows NT derived OS | |
if not "%OS%" == "Windows_NT" goto nodos | |
rem Set our variables | |
setlocal | |
set CHECK_LIB=TRUE | |
set CHECK_SRC=TRUE | |
set CHECK_TESTS=TRUE | |
set CHECK_EXAMPLES=TRUE | |
set SRC_DIR= | |
set CUR_DIR=%cd% | |
set ARG0_DIR=%~dp0 | |
:parseArgs | |
if "%~1" == "" goto prerequisites | |
if /i "%~1" == "-?" ( | |
goto syntax | |
) else if /i "%~1" == "-h" ( | |
goto syntax | |
) else if /i "%~1" == "-help" ( | |
goto syntax | |
) else if /i "%~1" == "lib" ( | |
set CHECK_LIB=TRUE | |
set CHECK_SRC=FALSE | |
set CHECK_TESTS=FALSE | |
set CHECK_EXAMPLES=FALSE | |
) else if /i "%~1" == "src" ( | |
set CHECK_LIB=FALSE | |
set CHECK_SRC=TRUE | |
set CHECK_TESTS=FALSE | |
set CHECK_EXAMPLES=FALSE | |
) else if /i "%~1" == "tests" ( | |
set CHECK_LIB=FALSE | |
set CHECK_SRC=FALSE | |
set CHECK_TESTS=TRUE | |
set CHECK_EXAMPLES=FALSE | |
) else if /i "%~1" == "examples" ( | |
set CHECK_LIB=FALSE | |
set CHECK_SRC=FALSE | |
set CHECK_TESTS=FALSE | |
set CHECK_EXAMPLES=TRUE | |
) else ( | |
if not defined SRC_DIR ( | |
set SRC_DIR=%~1% | |
) else ( | |
goto unknown | |
) | |
) | |
shift & goto parseArgs | |
:prerequisites | |
rem Check we have Perl in our path | |
perl --version <NUL 1>NUL 2>&1 | |
if errorlevel 1 ( | |
rem It isn't so check we have it installed and set the path if it is | |
if exist "%SystemDrive%\Perl" ( | |
set "PATH=%SystemDrive%\Perl\bin;%PATH%" | |
) else ( | |
if exist "%SystemDrive%\Perl64" ( | |
set "PATH=%SystemDrive%\Perl64\bin;%PATH%" | |
) else ( | |
goto noperl | |
) | |
) | |
) | |
:configure | |
if "%SRC_DIR%" == "" ( | |
rem Are we being executed from the "projects" or main directory? | |
if "%CUR_DIR%\" == "%ARG0_DIR%" ( | |
set SRC_DIR=.. | |
) else if exist projects ( | |
if exist docs ( | |
if exist lib ( | |
if exist src ( | |
if exist tests ( | |
set SRC_DIR=. | |
) | |
) | |
) | |
) | |
) | |
) | |
if not exist "%SRC_DIR%" goto nosrc | |
:start | |
if "%CHECK_SRC%" == "TRUE" ( | |
rem Check the src directory | |
if exist %SRC_DIR%\src ( | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\src\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\src" -Wtool_hugehelp.c "%%i" | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\src\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\src" "%%i" | |
) | |
) | |
if "%CHECK_LIB%" == "TRUE" ( | |
rem Check the lib directory | |
if exist %SRC_DIR%\lib ( | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib" "%%i" | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib" -Wcurl_config.h.cmake -Wcurl_config.h.in -Wcurl_config.h "%%i" | |
) | |
rem Check the lib\vauth directory | |
if exist %SRC_DIR%\lib\vauth ( | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vauth\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vauth" "%%i" | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vauth\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vauth" "%%i" | |
) | |
rem Check the lib\vquic directory | |
if exist %SRC_DIR%\lib\vquic ( | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vquic\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vquic" "%%i" | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vquic\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vquic" "%%i" | |
) | |
rem Check the lib\vssh directory | |
if exist %SRC_DIR%\lib\vssh ( | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vssh\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vssh" "%%i" | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vssh\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vssh" "%%i" | |
) | |
rem Check the lib\vtls directory | |
if exist %SRC_DIR%\lib\vtls ( | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i" | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i" | |
) | |
) | |
if "%CHECK_TESTS%" == "TRUE" ( | |
rem Check the tests\libtest directory | |
if exist %SRC_DIR%\tests\libtest ( | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\libtest\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\libtest" "%%i" | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\libtest\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\libtest" "%%i" | |
) | |
rem Check the tests\unit directory | |
if exist %SRC_DIR%\tests\unit ( | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\unit\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\unit" "%%i" | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\unit\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\unit" "%%i" | |
) | |
rem Check the tests\server directory | |
if exist %SRC_DIR%\tests\server ( | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\server\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\server" "%%i" | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\server\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\server" "%%i" | |
) | |
) | |
if "%CHECK_EXAMPLES%" == "TRUE" ( | |
rem Check the docs\examples directory | |
if exist %SRC_DIR%\docs\examples ( | |
for /f "delims=" %%i in ('dir "%SRC_DIR%\docs\examples\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\docs\examples" -ASNPRINTF "%%i" | |
) | |
) | |
goto success | |
:syntax | |
rem Display the help | |
echo. | |
echo Usage: checksrc [what] [directory] | |
echo. | |
echo What to scan: | |
echo. | |
echo lib - Scan the libcurl source | |
echo src - Scan the command-line tool source | |
echo tests - Scan the library tests and unit tests | |
echo examples - Scan the examples | |
echo. | |
echo directory - Specifies the curl source directory | |
goto success | |
:unknown | |
echo. | |
echo Error: Unknown argument '%1' | |
goto error | |
:nodos | |
echo. | |
echo Error: Only a Windows NT based Operating System is supported | |
goto error | |
:noperl | |
echo. | |
echo Error: Perl is not installed | |
goto error | |
:nosrc | |
echo. | |
echo Error: "%SRC_DIR%" does not exist | |
goto error | |
:error | |
if "%OS%" == "Windows_NT" endlocal | |
exit /B 1 | |
:success | |
endlocal | |
exit /B 0 |