006b61eb0b
I use the curl repo mainly on Windows with the typical Windows git checkout which converts the LF line endings in the curl repo to CRLF automatically on checkout. The automatic conversion is not done on files in the repo with mixed line endings. I recently noticed some weird output with projects/build-openssl.bat that I traced back to mixed line endings, so I scanned the repo and there are files (excluding the test data) that have mixed line endings. I used this command below to do the scan. Unfortunately it's not as easy as git grep, at least not on Windows. This gets the names of all the files in the repo's HEAD, gets each of those files raw from HEAD, checks for mixed line endings of both LF and CRLF, and prints the name if mixed. I excluded path tests/data/test* because those can have mixed line endings if I understand correctly. for f in `git ls-tree --name-only --full-tree -r HEAD`; do if [ -n "${f##tests/data/test*}" ]; then git show "HEAD:$f" | \ perl -0777 -ne 'exit 1 if /([^\r]\n.*\r\n)|(\r\n.*[^\r]\n)/'; if [ $? -ne 0 ]; then echo "$f"; fi; fi; done
329 lines
8.3 KiB
Batchfile
329 lines
8.3 KiB
Batchfile
@echo off
|
|
rem ***************************************************************************
|
|
rem * _ _ ____ _
|
|
rem * Project ___| | | | _ \| |
|
|
rem * / __| | | | |_) | |
|
|
rem * | (__| |_| | _ <| |___
|
|
rem * \___|\___/|_| \_\_____|
|
|
rem *
|
|
rem * Copyright (C) 2012 - 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
|
|
rem * are also available at http://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 ***************************************************************************
|
|
|
|
:begin
|
|
rem Check we are running on a Windows NT derived OS
|
|
if not "%OS%" == "Windows_NT" goto nodos
|
|
setlocal
|
|
|
|
rem Display the help
|
|
if /i "%~1" == "" goto syntax
|
|
if /i "%~1" == "-?" goto syntax
|
|
if /i "%~1" == "-h" goto syntax
|
|
if /i "%~1" == "-help" goto syntax
|
|
|
|
:parseArgs
|
|
if "%~1" == "" goto prerequisites
|
|
|
|
if /i "%~1" == "vc6" (
|
|
set VC_VER=6.0
|
|
set VC_DESC=VC6
|
|
set "VC_PATH=Microsoft Visual Studio\VC98"
|
|
) else if /i "%~1" == "vc7" (
|
|
set VC_VER=7.0
|
|
set VC_DESC=VC7
|
|
set "VC_PATH=Microsoft Visual Studio .NET\Vc7"
|
|
) else if /i "%~1" == "vc7.1" (
|
|
set VC_VER=7.1
|
|
set VC_DESC=VC7.1
|
|
set "VC_PATH=Microsoft Visual Studio .NET 2003\Vc7"
|
|
) else if /i "%~1" == "vc8" (
|
|
set VC_VER=8.0
|
|
set VC_DESC=VC8
|
|
set "VC_PATH=Microsoft Visual Studio 8\VC"
|
|
) else if /i "%~1" == "vc9" (
|
|
set VC_VER=9.0
|
|
set VC_DESC=VC9
|
|
set "VC_PATH=Microsoft Visual Studio 9.0\VC"
|
|
) else if /i "%~1" == "vc10" (
|
|
set VC_VER=10.0
|
|
set VC_DESC=VC10
|
|
set "VC_PATH=Microsoft Visual Studio 10.0\VC"
|
|
) else if /i "%~1" == "vc11" (
|
|
set VC_VER=11.0
|
|
set VC_DESC=VC11
|
|
set "VC_PATH=Microsoft Visual Studio 11.0\VC"
|
|
) else if /i "%~1" == "vc12" (
|
|
set VC_VER=12.0
|
|
set VC_DESC=VC12
|
|
set "VC_PATH=Microsoft Visual Studio 12.0\VC"
|
|
) else if /i "%~1%" == "x86" (
|
|
set BUILD_PLATFORM=x86
|
|
) else if /i "%~1%" == "x64" (
|
|
set BUILD_PLATFORM=x64
|
|
) else if /i "%~1%" == "debug" (
|
|
set BUILD_CONFIG=debug
|
|
) else if /i "%~1%" == "release" (
|
|
set BUILD_CONFIG=release
|
|
) else (
|
|
if not defined START_DIR (
|
|
set START_DIR=%~1%
|
|
) else (
|
|
goto unknown
|
|
)
|
|
)
|
|
|
|
shift & goto parseArgs
|
|
|
|
:prerequisites
|
|
rem Default the start directory if one isn't specified
|
|
if not defined START_DIR set START_DIR=..\..\openssl
|
|
|
|
rem Calculate the program files directory
|
|
if defined PROGRAMFILES (
|
|
set "PF=%PROGRAMFILES%"
|
|
set OS_PLATFORM=x86
|
|
)
|
|
if defined PROGRAMFILES(x86) (
|
|
set "PF=%PROGRAMFILES(x86)%"
|
|
set OS_PLATFORM=x64
|
|
)
|
|
|
|
rem Check we have a program files directory
|
|
if not defined PF goto nopf
|
|
|
|
rem Check we have Visual Studio installed
|
|
if not exist "%PF%\%VC_PATH%" goto novc
|
|
|
|
rem Check the start directory exists
|
|
if not exist "%START_DIR%" goto noopenssl
|
|
|
|
:configure
|
|
if "%BUILD_PLATFORM%" == "" (
|
|
if "%VC_VER%" == "6.0" (
|
|
set BUILD_PLATFORM=x86
|
|
) else if "%VC_VER%" == "7.0" (
|
|
set BUILD_PLATFORM=x86
|
|
) else if "%VC_VER%" == "7.1" (
|
|
set BUILD_PLATFORM=x86
|
|
) else (
|
|
set BUILD_PLATFORM=%OS_PLATFORM%
|
|
)
|
|
)
|
|
|
|
if "%BUILD_PLATFORM%" == "x86" (
|
|
set VCVARS_PLATFORM=x86
|
|
) else if "%BUILD_PLATFORM%" == "x64" (
|
|
if "%VC_VER%" == "6.0" goto nox64
|
|
if "%VC_VER%" == "7.0" goto nox64
|
|
if "%VC_VER%" == "7.1" goto nox64
|
|
if "%VC_VER%" == "8.0" set VCVARS_PLATFORM=x86_amd64
|
|
if "%VC_VER%" == "9.0" set VCVARS_PLATFORM=%BUILD_PLATFORM%
|
|
if "%VC_VER%" == "10.0" set VCVARS_PLATFORM=%BUILD_PLATFORM%
|
|
if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64
|
|
if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64
|
|
)
|
|
|
|
:start
|
|
echo.
|
|
if "%VC_VER%" == "6.0" (
|
|
call "%PF%\%VC_PATH%\bin\vcvars32"
|
|
) else if "%VC_VER%" == "7.0" (
|
|
call "%PF%\%VC_PATH%\bin\vcvars32"
|
|
) else if "%VC_VER%" == "7.1" (
|
|
call "%PF%\%VC_PATH%\bin\vcvars32"
|
|
) else (
|
|
call "%PF%\%VC_PATH%\vcvarsall" %VCVARS_PLATFORM%
|
|
)
|
|
|
|
echo.
|
|
set SAVED_PATH=%CD%
|
|
if defined START_DIR CD %START_DIR%
|
|
goto %BUILD_PLATFORM%
|
|
|
|
:x64
|
|
rem Calculate our output directory
|
|
set OUTDIR=build\Win64\%VC_DESC%
|
|
if not exist %OUTDIR% md %OUTDIR%
|
|
|
|
if "%BUILD_CONFIG%" == "release" goto x86release
|
|
|
|
:x64debug
|
|
rem Configuring 64-bit Debug Build
|
|
perl Configure debug-VC-WIN64A --prefix=%CD%
|
|
|
|
rem Perform the build
|
|
call ms\do_win64a
|
|
nmake -f ms\nt.mak
|
|
nmake -f ms\ntdll.mak
|
|
|
|
rem Move the output directories
|
|
move out32.dbg "%OUTDIR%\LIB Debug"
|
|
move out32dll.dbg "%OUTDIR%\DLL Debug"
|
|
|
|
rem Move the PDB files
|
|
move tmp32.dbg\lib.pdb "%OUTDIR%\LIB Debug"
|
|
move tmp32dll.dbg\lib.pdb "%OUTDIR%\DLL Debug"
|
|
|
|
rem Remove the intermediate directories
|
|
rd tmp32.dbg /s /q
|
|
rd tmp32dll.dbg /s /q
|
|
|
|
if "%BUILD_CONFIG%" == "debug" goto success
|
|
|
|
:x64release
|
|
rem Configuring 64-bit Release Build
|
|
perl Configure VC-WIN64A --prefix=%CD%
|
|
|
|
rem Perform the build
|
|
call ms\do_win64a
|
|
nmake -f ms\nt.mak
|
|
nmake -f ms\ntdll.mak
|
|
|
|
rem Move the output directories
|
|
move out32 "%OUTDIR%\LIB Release"
|
|
move out32dll "%OUTDIR%\DLL Release"
|
|
|
|
rem Move the PDB files
|
|
move tmp32\lib.pdb "%OUTDIR%\LIB Release"
|
|
move tmp32dll\lib.pdb "%OUTDIR%\DLL Release"
|
|
|
|
rem Remove the intermediate directories
|
|
rd tmp32 /s /q
|
|
rd tmp32dll /s /q
|
|
|
|
goto success
|
|
|
|
:x86
|
|
rem Calculate our output directory
|
|
set OUTDIR=build\Win32\%VC_DESC%
|
|
if not exist %OUTDIR% md %OUTDIR%
|
|
|
|
if "%BUILD_CONFIG%" == "release" goto x86release
|
|
|
|
:x86debug
|
|
rem Configuring 32-bit Debug Build
|
|
perl Configure debug-VC-WIN32 no-asm --prefix=%CD%
|
|
|
|
rem Perform the build
|
|
call ms\do_ms
|
|
nmake -f ms\nt.mak
|
|
nmake -f ms\ntdll.mak
|
|
|
|
rem Move the output directories
|
|
move out32.dbg "%OUTDIR%\LIB Debug"
|
|
move out32dll.dbg "%OUTDIR%\DLL Debug"
|
|
|
|
rem Move the PDB files
|
|
move tmp32.dbg\lib.pdb "%OUTDIR%\LIB Debug"
|
|
move tmp32dll.dbg\lib.pdb "%OUTDIR%\DLL Debug"
|
|
|
|
rem Remove the intermediate directories
|
|
rd tmp32.dbg /s /q
|
|
rd tmp32dll.dbg /s /q
|
|
|
|
if "%BUILD_CONFIG%" == "debug" goto success
|
|
|
|
:x86release
|
|
rem Configuring 32-bit Release Build
|
|
perl Configure VC-WIN32 no-asm --prefix=%CD%
|
|
|
|
rem Perform the build
|
|
call ms\do_ms
|
|
nmake -f ms\nt.mak
|
|
nmake -f ms\ntdll.mak
|
|
|
|
rem Move the output directories
|
|
move out32 "%OUTDIR%\LIB Release"
|
|
move out32dll "%OUTDIR%\DLL Release"
|
|
|
|
rem Move the PDB files
|
|
move tmp32\lib.pdb "%OUTDIR%\LIB Release"
|
|
move tmp32dll\lib.pdb "%OUTDIR%\DLL Release"
|
|
|
|
rem Remove the intermediate directories
|
|
rd tmp32 /s /q
|
|
rd tmp32dll /s /q
|
|
|
|
goto success
|
|
|
|
:syntax
|
|
rem Display the help
|
|
echo.
|
|
echo Usage: build-openssl ^<compiler^> ^<platform^> [configuration] [directory]
|
|
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
|
|
echo.
|
|
echo Platform:
|
|
echo.
|
|
echo x86 - Perform a 32-bit build
|
|
echo x64 - Perform a 64-bit build
|
|
echo.
|
|
echo Configuration:
|
|
echo.
|
|
echo debug - Perform a debug build
|
|
echo release - Perform a release build
|
|
echo.
|
|
echo Other:
|
|
echo.
|
|
echo directory - Specifies the OpenSSL source directory
|
|
goto error
|
|
|
|
:unknown
|
|
echo.
|
|
echo Error: Unknown argument '%1'
|
|
goto error
|
|
|
|
:nodos
|
|
echo.
|
|
echo Error: Only a Windows NT based Operating System is supported
|
|
goto error
|
|
|
|
:nopf
|
|
echo.
|
|
echo Error: Cannot obtain the directory for Program Files
|
|
goto error
|
|
|
|
:novc
|
|
echo.
|
|
echo Error: %VC_DESC% is not installed
|
|
goto error
|
|
|
|
:nox64
|
|
echo.
|
|
echo Error: %VC_DESC% does not support 64-bit builds
|
|
goto error
|
|
|
|
:noopenssl
|
|
echo.
|
|
echo Error: Cannot locate OpenSSL source directory
|
|
goto error
|
|
|
|
:error
|
|
if "%OS%" == "Windows_NT" endlocal
|
|
exit /B 1
|
|
|
|
:success
|
|
cd %SAVED_PATH%
|
|
endlocal
|
|
exit /B 0
|