From 0539dbc96a6b3d87c2b816b1821e7238481cc8d3 Mon Sep 17 00:00:00 2001 From: Robin Mills Date: Thu, 19 Nov 2015 11:09:24 +0000 Subject: [PATCH] #1041. Download prebuilt openssl and updated documentation. --- contrib/cmake/msvc/ReadMe.txt | 48 ++++++++++++++++++++---- contrib/cmake/msvc/build.cmd | 70 +++++++++++++++++++++++++++++++---- contrib/cmake/msvc/setenv.cmd | 6 +-- 3 files changed, 105 insertions(+), 19 deletions(-) diff --git a/contrib/cmake/msvc/ReadMe.txt b/contrib/cmake/msvc/ReadMe.txt index 6f15a14c..a670037d 100755 --- a/contrib/cmake/msvc/ReadMe.txt +++ b/contrib/cmake/msvc/ReadMe.txt @@ -8,12 +8,12 @@ How to use this --------------- 1 Setting up your machine - You need cmake.exe and svn.exe on your PATH. - Please get "Windows" versions of cmake and svn (NOT Cygwin versions) - You need a "Windows" version of perl.exe on the path to build openssl + You need cmake.exe, svn.exe, 7z.exe and curl.exe on your PATH. + + Please get "Windows" versions of cmake etc (NOT Cygwin versions) You should initialize the Visual Studio environment - using the version vcvars32.bat or vcvarsall.bat + using the version of vcvars32.bat or vcvarsall.bat installed with Visual Studio. For example call "C:\Program Files (x86)\Microsoft Visual Studio 8\VC\bin\vcvars32.bat" @@ -21,7 +21,7 @@ How to use this The batch file contrib\cmake\msvc\vcvars.bat is designed to take the pain out of this - provided Visual Studio's installed in c:\Program Files (x86) vcvars 2005 # sets 2005 x86 - vcvars 2010 64 # sets 2010 x86_amd64 + vcvars 2010_64 # sets 2010 x86_amd64 2 Always build "out of source". I recommend: cd @@ -69,7 +69,13 @@ How to use this rem download support libraries svn export svn://dev.exiv2.org/svn/team/libraries/zlib-1.2.8 svn export svn://dev.exiv2.org/svn/team/libraries/expat-2.1.0 - ... for webready, you also need openssl-1.0.1j curl-7.39.0 libssh-0.5.5 + + ... + for webready + you also need curl-7.45.0 libssh-0.7.2 + you will have to install openssl for you compiler before building curl + see note below "About openssl" + ... rem create a temp directory and a dist (distribution) directory mkdir temp # build, compile and link in this directory @@ -95,7 +101,27 @@ How to use this cmake --build . --config Release cmake --build . --config Release --target install -5 Build options +5 About openssl + You cannot build openssl with CMake. However we have prebuilt binaries which + you can download and extract into your build tree. + + You will have to match the version to your compiler. + In this example: vs2015/64 bit + + svn export svn://dev.exiv2.org/svn/team/libraries/openssl-1.0.1p-vs2015.7z + 7z x openssl-1.0.1p-vs2015.7z + xcopy/yesihq openssl-1.0.1p-vs2015\bin64 dist\bin" + xcopy/yesihq openssl-1.0.1p-vs2015\lib64 dist\bin" + xcopy/yesihq openssl-1.0.1p-vs2015\include64 dist\include" + + In this example: vs2008/32 bit + svn export svn://dev.exiv2.org/svn/team/libraries/openssl-1.0.1p-vs2008.7z + 7z x openssl-1.0.1p-vs2015.7z + xcopy/yesihq openssl-1.0.1p-vs2008\bin dist\bin" + xcopy/yesihq openssl-1.0.1p-vs2008\lib dist\bin" + xcopy/yesihq openssl-1.0.1p-vs2008\include dist\include" + +6 Build options You can inspect CMake options by running grep OPTION on CMakeLists.txt in C:\cygwin64\home\rmills\gnu\exiv2\build>cd ..\trunk @@ -119,10 +145,16 @@ How to use this C:\cygwin64\home\rmills\gnu\exiv2\trunk> -6 Running the test suite +7 Running the test suite http://dev.exiv2.org/projects/exiv2/wiki/How_do_I_run_the_test_suite_for_Exiv2 + Status: +2015-11-19 "Work in Progress" + Added a dependency for 7z.exe to decompress archives. + Added downloading openssl + Updated documentation + 2015-11-18 "Work in Progress" Lots of simplification. Removed need for cygwin. diff --git a/contrib/cmake/msvc/build.cmd b/contrib/cmake/msvc/build.cmd index 36e611f0..36fce9b9 100755 --- a/contrib/cmake/msvc/build.cmd +++ b/contrib/cmake/msvc/build.cmd @@ -76,19 +76,25 @@ rem ---- call:echo setting CMake Generator if /I "%VS_PROG_FILES%" == "Microsoft Visual Studio 14" ( set "VS_CMAKE=Visual Studio 14 2015" + set "VS_OPENSSL=vs2015" ) else if /I "%VS_PROG_FILES%" == "Microsoft Visual Studio 12" ( set "VS_CMAKE=Visual Studio 12 2013" + set "VS_OPENSSL=vs2013" ) else if /I "%VS_PROG_FILES%" == "Microsoft Visual Studio 11" ( set "VS_CMAKE=Visual Studio 11 2012" + set "VS_OPENSSL=vs2012" ) else if /I "%VS_PROG_FILES%" == "Microsoft Visual Studio 10" ( set "VS_CMAKE=Visual Studio 10 2010" + set "VS_OPENSSL=vs2010" ) else if /I "%VS_PROG_FILES%" == "Microsoft Visual Studio 9" ( set "VS_CMAKE=Visual Studio 9 2008" + set "VS_OPENSSL=vs2008" ) else if /I "%VS_PROG_FILES%" == "Microsoft Visual Studio 8" ( set "VS_CMAKE=Visual Studio 8 2005" + set "VS_OPENSSL=vs2005" ) else ( - echo "*** Unsupported version of Visual Studio in '%VSINSTALLDIR%' ***" - GOTO error_end + echo "*** Unsupported version of Visual Studio in '%VSINSTALLDIR%' ***" + GOTO error_end ) call:echo testing architecture @@ -128,7 +134,15 @@ rem ---- call:echo testing svn is on path svn --version > NUL IF ERRORLEVEL 1 ( - echo "*** please ensure SVN.exe is on the PATH ***" + echo "*** please ensure svn.exe is on the PATH ***" + GOTO error_end +) + +rem ---- +call:echo testing 7z is on path +7z > NUL +IF ERRORLEVEL 1 ( + echo "*** please ensure 7z.exe is on the PATH ***" GOTO error_end ) @@ -182,7 +196,7 @@ set TARGET= if DEFINED _WEBREADY_ ( echo ---------- building OPENSSL ----------------- - call:buildLib %_OPENSSL_% + call:getOPENSSL %_OPENSSL_% echo ---------- building CURL ----------------- set _CURL_=-DEXIV2_ENABLE_CURL=ON @@ -252,7 +266,7 @@ rem Functions :help echo Options: --help ^| --pause ^| --webready ^| --dryrun ^| --verbose ^| --rebuild ^| --silent ^| --verbose ^| --video echo. --exiv2 directory ^| --temp directory ^| --config name ^| --generator generator -echo. --zlib zlib.1.2.8 ^| --expat expat-2.1.0 ^| --curl curl-7.39.0 ^| --libssh libssh-0.5.5 ^| --openssl openssl-1.0.1j +echo. --zlib zlib.1.2.8 ^| --expat expat-2.1.0 ^| --curl curl-7.45.0 ^| --libssh libssh-0.7.2 ^| --openssl openssl-1.0.1p exit /b 0 :echo @@ -278,10 +292,17 @@ rem ----------------------------------------- cd "%_BUILDDIR_%" set "LIB=%1%" set "LIB_B=%_TEMP_%\%LIB%" +set "LIB_TAR=%LIB%.tar" +set "LIB_TAR_GZ=%LIB_TAR%.gz" + +if defined _REBUILD_ rmdir/s/q "%LIB%" "%LIB_B%" +if defined _REBUILD_ del "%LIB_TAR%" "%LIB_TAR_GZ%" + +IF NOT EXIST "%LIB_TAR_GZ%" svn export svn://dev.exiv2.org/svn/team/libraries/%LIB_TAR_GZ% >NUL +IF NOT EXIST "%LIB_TAR%" 7z x "%LIB_TAR_GZ%" +IF NOT EXIST "%LIB%" 7z x "%LIB_TAR%" +if NOT EXIST "%LIB_B%" mkdir "%LIB_B%" -if defined _REBUILD_ rmdir/s/q "%LIB%" "%LIB_B%" -IF NOT EXIST "%LIB%" svn export svn://dev.exiv2.org/svn/team/libraries/%LIB% >NUL -IF NOT EXIST "%LIB_B%" mkdir "%LIB_B%" pushd "%LIB_B%" call:run cmake -G "%_GENERATOR_%" ^ @@ -307,5 +328,38 @@ pushd "%LIB_B%" popd exit /b 0 + +rem ----------------------------------------- +:getOPENSSL +cd "%_BUILDDIR_%" +set "LIB=%1-%VS_OPENSSL%" +set "LIB_7Z=%LIB%.7z" +@echo on + +if defined _REBUILD_ rmdir/s/q "%LIB%" +if defined _REBUILD_ del "%LIB_7Z%" +IF NOT EXIST "%LIB_7Z%" svn export svn://dev.exiv2.org/svn/team/libraries/%LIB_7Z% >NUL +IF NOT EXIST "%LIB%" 7z x "%LIB_7Z%" >nul + +set BINARY=bin +set LIBRARY=lib +set INCLUDE=include +if /I "%Platform%" == "x64" ( + set "BINARY=%BINARY%64" + set "LIBRARY=%LIBRARY%64" + set "INCLUDE=%INCLUDE%64" +) + +xcopy/yesihq "%LIB%\%BINARY%" "%_INSTALL_%\bin" +xcopy/yesihq "%LIB%\%LIBRARY%" "%_INSTALL_%\lib" +xcopy/yesihq "%LIB%\%INCLUDE%" "%_INSTALL_%\include" + +pause +@echo off + +exit /b 0 + + + rem That's all Folks! rem ----------------------------------------- diff --git a/contrib/cmake/msvc/setenv.cmd b/contrib/cmake/msvc/setenv.cmd index 1ad21f9c..ee95f870 100755 --- a/contrib/cmake/msvc/setenv.cmd +++ b/contrib/cmake/msvc/setenv.cmd @@ -3,9 +3,9 @@ if not defined _CONFIG_ SET _CONFIG_=Release if NOT DEFINED _TEMP_ SET _TEMP_=temp if NOT DEFINED _EXIV2_ SET _EXIV2_=..\trunk -if NOT DEFINED _CURL_ SET _CURL_=curl-7.39.0 -if NOT DEFINED _LIBSSH_ SET _LIBSSH_=libssh-0.5.5 -if NOT DEFINED _OPENSSL_ SET _OPENSSL_=openssl-1.0.1j +if NOT DEFINED _CURL_ SET _CURL_=curl-7.45.0 +if NOT DEFINED _LIBSSH_ SET _LIBSSH_=libssh-0.7.2 +if NOT DEFINED _OPENSSL_ SET _OPENSSL_=openssl-1.0.1p if NOT DEFINED _ZLIB_ SET _ZLIB_=zlib-1.2.8 if NOT DEFINED _EXPAT_ SET _EXPAT_=expat-2.1.0