aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Holme <steve_holme@hotmail.com>2014-05-01 23:02:34 +0100
committerSteve Holme <steve_holme@hotmail.com>2014-05-01 23:23:48 +0100
commitdce748d3f1643cd7f7b95122982a4d603ce1b5af (patch)
tree9c99900409cb85d35fe848658c451b2e2bc8bfc6
parent50b3111b63580473ae733e08a8acb30c4a88c1b8 (diff)
build: Added OpenSSL VC build helper for side-by-side compilations
-rw-r--r--projects/README4
-rw-r--r--projects/build-openssl.bat317
2 files changed, 321 insertions, 0 deletions
diff --git a/projects/README b/projects/README
index df2f3ef1b..c71f96911 100644
--- a/projects/README
+++ b/projects/README
@@ -55,6 +55,10 @@ Dependencies
|_VC <version>
|_<configuration>
+ As OpenSSL doesn't support side-by-side compilation when using different
+ versions of Visual Studio a build helper batch file has been provided to
+ assist with this. Please run "build-openssl -help" for usage details.
+
Building with Visual C++
========================
diff --git a/projects/build-openssl.bat b/projects/build-openssl.bat
new file mode 100644
index 000000000..6bbe5372b
--- /dev/null
+++ b/projects/build-openssl.bat
@@ -0,0 +1,317 @@
+@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 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
+
+: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 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
+
+:error
+ if "%OS%" == "Windows_NT" endlocal
+ exit /B 1
+
+:success
+ cd %SAVED_PATH%
+ endlocal
+ exit /B 0