1 апр. 2009 г.

Сборка библиотеки OpenSSL

Сборка с помощью Visual Studio 2005:
set OPTS=no-asm

perl Configure VC-WIN32
perl util\mkfiles.pl >MINFO
perl util\mk1mf.pl %OPTS% debug VC-WIN32 >d32.mak
perl util\mk1mf.pl %OPTS% VC-WIN32 >32.mak
perl util\mk1mf.pl %OPTS% debug dll VC-WIN32 >d32dll.mak
perl util\mk1mf.pl %OPTS% dll VC-WIN32 >32dll.mak
perl util\mkdef.pl 32 libeay > ms\libeay32.def
perl util\mkdef.pl 32 ssleay > ms\ssleay32.def

rem set PATH=%MSSDK6DIR%\VC\Bin;%PATH%
call "c:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"

nmake -f d32.mak
@if errorlevel 1 goto end
nmake -f 32.mak
@if errorlevel 1 goto end
nmake -f d32dll.mak
@if errorlevel 1 goto end
nmake -f 32dll.mak

:end

Сборка с помощью Visual Studio 2008:
set OPTS=no-asm

perl Configure VC-WIN32
perl util\mkfiles.pl >MINFO
perl util\mk1mf.pl %OPTS% debug VC-WIN32 >d32.mak
perl util\mk1mf.pl %OPTS% VC-WIN32 >32.mak
perl util\mk1mf.pl %OPTS% debug dll VC-WIN32 >d32dll.mak
perl util\mk1mf.pl %OPTS% dll VC-WIN32 >32dll.mak
perl util\mkdef.pl 32 libeay > ms\libeay32.def
perl util\mkdef.pl 32 ssleay > ms\ssleay32.def

rem set PATH=%MSSDK6DIR%\VC\Bin;%PATH%
call "c:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"

nmake -f d32.mak
@if errorlevel 1 goto end
nmake -f 32.mak
@if errorlevel 1 goto end
nmake -f d32dll.mak
@if errorlevel 1 goto end
nmake -f 32dll.mak

:end

Сборка с помощью Vista SDK
set OPTS=no-asm

perl Configure VC-WIN32
perl util\mkfiles.pl >MINFO
perl util\mk1mf.pl %OPTS% debug VC-WIN32 >d32.mak
perl util\mk1mf.pl %OPTS% VC-WIN32 >32.mak
perl util\mk1mf.pl %OPTS% debug dll VC-WIN32 >d32dll.mak
perl util\mk1mf.pl %OPTS% dll VC-WIN32 >32dll.mak
perl util\mkdef.pl 32 libeay > ms\libeay32.def
perl util\mkdef.pl 32 ssleay > ms\ssleay32.def

@SET VSINSTALLDIR=c:\Program Files\Microsoft Visual Studio 8
@SET VCINSTALLDIR=%VSINSTALLDIR%\VC
@SET FrameworkDir=c:\WINDOWS\Microsoft.NET\Framework
@SET FrameworkVersion=v2.0.50727
@SET FrameworkSDKDir=%VSINSTALLDIR%\SDK\v2.0
@set DevEnvDir=%VSINSTALLDIR%\Common7\IDE
@set PATH=%MSSDK6DIR%\VC\Bin;%VSINSTALLDIR%\Common7\IDE;%VCINSTALLDIR%\BIN;%VSINSTALLDIR%\Common7\Tools;%VSINSTALLDIR%\Common7\Tools\bin;%VCINSTALLDIR%\PlatformSDK\bin;%VSINSTALLDIR%\SDK\v2.0\bin;c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;%VCINSTALLDIR%\VCPackages;%PATH%
@set INCLUDE=%MSSDK6DIR%\Include;%MSSDK6DIR%\VC\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\PlatformSDK\include;%VSINSTALLDIR%\SDK\v2.0\include;%INCLUDE%
@set LIB=%MSSDK6DIR%\Lib;%MSSDK6DIR%\VC\LIB;%VCINSTALLDIR%\ATLMFC\LIB;%VCINSTALLDIR%\LIB;%VCINSTALLDIR%\PlatformSDK\lib;%VSINSTALLDIR%\SDK\v2.0\lib;%LIB%
@set LIBPATH=c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;%VCINSTALLDIR%\ATLMFC\LIB

nmake -f d32.mak
@if errorlevel 1 goto end
nmake -f 32.mak
@if errorlevel 1 goto end
nmake -f d32dll.mak
@if errorlevel 1 goto end
nmake -f 32dll.mak

:end

Скрипт для инсталла:
set OPENSSL_ROOT=%~dp0
set TOOLSET=%1%

cd %OPENSSL_ROOT%
call :CreateDirectories
call :MoveOutFiles
call :RemoveOldDirectories
goto end

:CreateDirectories
mkdir lib
cd ./lib
mkdir %TOOLSET%
cd ./%TOOLSET%
mkdir debug
cd ./debug
mkdir shared
mkdir static
cd ..
mkdir release
cd ./release
mkdir shared
mkdir static
cd ..
exit /b

:MoveOutFiles
cd %OPENSSL_ROOT%
move %OPENSSL_ROOT%out32\* %OPENSSL_ROOT%lib\%TOOLSET%\release\static\
move %OPENSSL_ROOT%out32dll\* %OPENSSL_ROOT%lib\%TOOLSET%\release\shared\
move %OPENSSL_ROOT%out32.dbg\* %OPENSSL_ROOT%lib\%TOOLSET%\debug\static\
move %OPENSSL_ROOT%out32dll.dbg\* %OPENSSL_ROOT%lib\%TOOLSET%\debug\shared\
cd %OPENSSL_ROOT%
exit /b

:RemoveOldDirectories
del /S /Q %OPENSSL_ROOT%out32\*
del /S /Q %OPENSSL_ROOT%out32dll\*
del /S /Q %OPENSSL_ROOT%out32.dbg\*
del /S /Q %OPENSSL_ROOT%out32dll.dbg\*
del /S /Q %OPENSSL_ROOT%out32
del /S /Q %OPENSSL_ROOT%out32dll
del /S /Q %OPENSSL_ROOT%out32.dbg
del /S /Q %OPENSSL_ROOT%out32dll.dbg
del /S /Q %OPENSSL_ROOT%tmp32\*
del /S /Q %OPENSSL_ROOT%tmp32dll\*
del /S /Q %OPENSSL_ROOT%tmp32.dbg\*
del /S /Q %OPENSSL_ROOT%tmp32dll.dbg\*
del /S /Q %OPENSSL_ROOT%tmp32
del /S /Q %OPENSSL_ROOT%tmp32dll
del /S /Q %OPENSSL_ROOT%tmp32.dbg
del /S /Q %OPENSSL_ROOT%tmp32dll.dbg
exit /b

:end

P.S.: Возможно после конфигурации придётся слегуа поправить make-файлы, поскольку собирают они библиотеку не во всех возможных конфигурациях. Например когда собирается статическая версия OpenSSL, то с С++ CRT она линкуется статически, если же собирается динамическая версия OpenSSL, то она с С++ библиотекой линкуется динамически. Скажем если вы хотите собрать статическую версию OpenSSL, а запользовать её в проекте, линкующимся с CRT динамически, вот тогда и придётся править фалики.


Смотри также: Compiling OpenSSL for Windows, Linux, and Macintosh

2 комментария: