From 8bb3ec49a311a5f02a454d7a3e004d635fa95c99 Mon Sep 17 00:00:00 2001 From: Robin Mills Date: Thu, 19 Nov 2015 18:16:20 +0000 Subject: [PATCH] #1041 Getting better. Still not building curl and libssh. --- contrib/cmake/msvc/ReadMe.txt | 14 ++++- contrib/cmake/msvc/build.cmd | 98 ++++++++++++++++++------------- contrib/cmake/msvc/vcvars.bat | 107 +++++++++++----------------------- 3 files changed, 106 insertions(+), 113 deletions(-) diff --git a/contrib/cmake/msvc/ReadMe.txt b/contrib/cmake/msvc/ReadMe.txt index a670037d..c4c8ab31 100755 --- a/contrib/cmake/msvc/ReadMe.txt +++ b/contrib/cmake/msvc/ReadMe.txt @@ -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 @@ -148,7 +148,19 @@ How to use this 7 Running the test suite http://dev.exiv2.org/projects/exiv2/wiki/How_do_I_run_the_test_suite_for_Exiv2 +8 Building with different libraries + You can change the standard libraries. For example, to build with curl-7.39.0 + 1) set _CURL_=curl-7.39.0 + 2) put curl-7.39.0.tar.gz into your build directory + To change the version of openssl: + 1) set _OPENSSL_=openssl-1.0.1j + 2) put openssl-1.0.1j-vs2015.zip into your build directory + + To build a version of openssl-foo-vs2012: + Try to find it online + Building this with Visual Studio is to to be documented + Status: 2015-11-19 "Work in Progress" Added a dependency for 7z.exe to decompress archives. diff --git a/contrib/cmake/msvc/build.cmd b/contrib/cmake/msvc/build.cmd index 36fce9b9..d95e420c 100755 --- a/contrib/cmake/msvc/build.cmd +++ b/contrib/cmake/msvc/build.cmd @@ -30,6 +30,8 @@ if /I "%1" == "--openssl" set "_OPENSSL_=%2"& shift shift if not (%1) EQU () goto GETOPTS +set _VERBOSE_=1 + rem ---- call:echo calling setenv call setenv.cmd @@ -170,20 +172,39 @@ pushd %_INSTALL_% set "_INSTALL_=%CD%" popd call:echo _INSTALL_ = %_INSTALL_% +set "_LIBPATH_=%_INSTALL_%\bin" +set "_INCPATH_=%_INSTALL_%\include" +set "_BINPATH_=%_INSTALL_%\bin" +set _LIBPATH_=%_LIBPATH_:\=/% +set _INCPATH_=%_INCPATH_:\=/% +set _BINPATH_=%_BINPATH_:\=/% + if NOT DEFINED _GENERATOR_ set "_GENERATOR_=%VS_CMAKE%" if /I "%_GENERATOR_%" == "NMake" set "_GENERATOR_=NMake Makefiles" if defined _VIDEO_ set _VIDEO_=-DEXIV2_ENABLE_VIDEO=ON + rem ---- echo. -echo.config = %_CONFIG_% -echo.video = %_VIDEO_% -echo.webready = %_WEBREADY_% -echo.exiv2 = %_EXIV2_%" +echo.config = %_CONFIG_% +echo.video = %_VIDEO_% +echo.webready = %_WEBREADY_% +echo.exiv2 = %_EXIV2_%" +echo.generator = %_GENERATOR_%" +echo.expat = %_EXPAT_% +echo.zlib = %_ZLIB_% +echo.libssh = %_LIBSSH_% +echo.curl = %_CURL_% +echo.openssh = %_OPENSSL_% +echo.libpat = %_LIBPATH_% +echo.incpat = %_INCPATH_% +echo.binpat = %_BINPATH_% +echo. -IF DEFINED _DRYRUN_ exit /b 1 +IF DEFINED _DRYRUN_ exit /b 1 +IF DEFINED _REBUILD_ rmdir/s/q "%_TEMP_%" echo ---------- building ZLIB ------------------ call:buildLib %_ZLIB_% @@ -197,35 +218,44 @@ set TARGET= if DEFINED _WEBREADY_ ( echo ---------- building OPENSSL ----------------- call:getOPENSSL %_OPENSSL_% + if errorlevel 1 set _OPENSSL_= + + echo ---------- building LIBSSH ----------------- + call:buildLib %_LIBSSH_% -DWITH_GSSAPI=OFF -DWITH_ZLIB=ON -DWITH_SFTP=ON -DWITH_SERVER=OFF -DWITH_EXAMPLES=OFF -DWITH_NACL=OFF -DWITH_PCAP=OFF + if errorlevel 1 set _LIBSSH_= echo ---------- building CURL ----------------- - set _CURL_=-DEXIV2_ENABLE_CURL=ON - call:buildLib %_CURL_%" - if errorlevel 1 set _CURL_=-DEXIV2_ENABLE_CURL=OFF + call:buildLib %_CURL_% -DBUILD_CURL_TESTS=OFF -DCMAKE_USE_OPENSSL=ON -DCMAKE_USE_LIBSSH2=OFF + if errorlevel 1 set _CURL_= - echo ---------- building LIBSSH ----------------- - set _SSH_=-DEXIV2_ENABLE_SSH=ON - call:buildLib %_LIBSSH_% - if errorlevel 1 set _SSH_=-DEXIV2_ENABLE_SSH=OFF - - set _WEBREADY_=-DEXIV2_ENABLE_WEBREADY=ON ) else ( set _WEBREADY_=-DEXIV2_ENABLE_WEBREADY=OFF set _CURL_=-DEXIV2_ENABLE_CURL=OFF - set _SSH_=-DEXIV2_ENABLE_SSH=OFF + set _LIBSSH_=-DEXIV2_ENABLE_SSH=OFF ) echo ---------- building EXIV2 ------------------ -set "EXIV_BUILD=%_TEMP_%\exiv2" +set "EXIV_B=%_TEMP_%\exiv2" -if defined _REBUILD_ rmdir/s/q "%EXIV_BUILD%" +rem if defined _REBUILD_ rmdir/s/q "%EXIV_BUILD%" IF NOT EXIST "%EXIV_BUILD%" mkdir "%EXIV_BUILD%" pushd "%EXIV_BUILD%" + set ENABLE_CURL=-DEXIV2_ENABLE_CURL=OFF + set ENABLE_LIBSSH=-DEXIV2_ENABLE_SSH=OFF + set ENABLE_OPENSSL=-DEXIV2_ENABLE_WEBREADY=OFF + set ENABLE_WEBREADY=-DEXIV2_ENABLE_VIDEO=OFF + + if defined %_CURL_% set ENABLE_CURL=-DEXIV2_ENABLE_CURL=ON + if defined %_LIBSSH_% set ENABLE_LIBSSH=-DEXIV2_ENABLE_LIBSSH=ON + if defined %_WEBREADY_% set ENABLE_WEBREADY=-DEXIV2_ENABLE_WEBREADY=ON + if defined %_VIDEO_% set ENABLE_VIDEO=-DEXIV2_ENABLE_VIDEO=ON + call:run cmake -G "%_GENERATOR_%" ^ - "-DCMAKE_INSTALL_PREFIX=%_INSTALL_%" "-DCMAKE_LIBRARY_PATH=%_INSTALL_%\lib" "-DCMAKE_INCLUDE_PATH=%_INSTALL_%\include" ^ - -DEXIV2_ENABLE_NLS=OFF -DEXIV2_ENABLE_BUILD_SAMPLES=ON ^ - -DEXIV2_ENABLE_WIN_UNICODE=OFF -DEXIV2_ENABLE_SHARED=ON ^ - %_WEBREADY_% %_CURL_% %_SSH_% %_VIDEO_% ^ + "-DCMAKE_INSTALL_PREFIX=%_INSTALL_%" "-DCMAKE_LIBRARY_PATH=%_LIBPATH_%" ^ + "-DCMAKE_INCLUDE_PATH=%_INCPATH_%" ^ + -DEXIV2_ENABLE_NLS=OFF -DEXIV2_ENABLE_BUILD_SAMPLES=ON ^ + -DEXIV2_ENABLE_WIN_UNICODE=OFF -DEXIV2_ENABLE_SHARED=ON ^ + %ENABLE_WEBREADY% %ENABLE_CURL% %ENABLE_LIBSSH% %ENABLE_VIDEO% ^ "%_EXIV2_%" IF errorlevel 1 ( @@ -290,14 +320,13 @@ exit /b %_RESULT_% rem ----------------------------------------- :buildLib cd "%_BUILDDIR_%" -set "LIB=%1%" +set "LIB=%1" +shift + 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%" @@ -305,11 +334,11 @@ if NOT EXIST "%LIB_B%" mkdir "%LIB_B%" pushd "%LIB_B%" - call:run cmake -G "%_GENERATOR_%" ^ - "-DCMAKE_INSTALL_PREFIX=%_INSTALL_%" ^ - "-DCMAKE_LIBRARY_PATH=%_INSTALL_%\lib" ^ - "-DCMAKE_INCLUDE_PATH=%_INSTALL_%\include" ^ - ..\..\%LIB% + call:run cmake -G "%_GENERATOR_%" ^ + "-DCMAKE_INSTALL_PREFIX=%_INSTALL_%" ^ + "-DCMAKE_LIBRARY_PATH=%_LIBPATH_%" ^ + "-DCMAKE_INCLUDE_PATH=%_INCPATH_%" ^ + %* ..\..\%LIB% IF errorlevel 1 ( echo "*** cmake errors in %LIB% ***" popd @@ -328,16 +357,12 @@ 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 @@ -354,12 +379,7 @@ 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/vcvars.bat b/contrib/cmake/msvc/vcvars.bat index c032022d..d0709679 100755 --- a/contrib/cmake/msvc/vcvars.bat +++ b/contrib/cmake/msvc/vcvars.bat @@ -5,88 +5,49 @@ if defined VSINSTALLDIR ( goto eof ) -if "%1" EQU "2005_64" ( - pushd "c:\Program Files (x86)\Microsoft Visual Studio 8\VC\bin\amd64\" - call vcvarsamd64.bat - popd +rem help +if "%1" EQU "" ( + echo syntax: %0 [2005 ^| 2008 ^| 2010 ^| 2012 ^| 2013 ^| 2015] [64] goto eof ) -if "%1" EQU "2005" ( +if "%1" EQU "2005" ( + if "%2" EQU "64" ( + pushd "c:\Program Files (x86)\Microsoft Visual Studio 8\VC\bin\amd64\" + call vcvarsamd64.bat + ) else ( pushd "c:\Program Files (x86)\Microsoft Visual Studio 8\VC\bin\" vcvar32.bat - popd - goto eof + ) + popd + goto eof ) -if "%1" EQU "2008_64" ( - pushd "c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\" - vcvarsamd64.bat - popd - goto eof -) +rem set the variable _VC_ +set _VC_= -if "%1" EQU "2008" ( - pushd "c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\" - vcvar32.bat - popd - goto eof -) +if "%1" EQU "2008" set "_VC_=9.0" +if "%1" EQU "2010" set "_VC_=10.0" +if "%1" EQU "2012" set "_VC_=11.0" +if "%1" EQU "2013" set "_VC_=12.0" +if "%1" EQU "2015" set "_VC_=14.0" -if "%1" EQU "2010_64" ( - pushd "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\" - vcvarsall.bat x86_amd - popd - goto eof -) - -if "%1" EQU "2010" ( - pushd "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\" - vcvarsall.bat x86 - popd - goto eof -) - -if "%1" EQU "2012_64" ( - pushd "c:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\" - vcvarsall.bat x86_amd64 - popd - goto eof -) - -if "%1" EQU "2012" ( - pushd "c:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\" - vcvarsall.bat x86 - popd - goto eof -) - -if "%1" EQU "2013_64" ( - pushd "c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\" - vcvarsall.bat x86_amd64 - popd - goto eof -) - -if "%1" EQU "2013" ( - pushd "c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\" - vcvarsall.bat x86 - popd - goto eof -) - -if "%1" EQU "2015_64" ( - pushd "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\" - vcvarsall.bat x86_amd64 - popd - goto eof -) - -if "%1" EQU "2015" ( - pushd "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\" - vcvarsall.bat x86 - popd - goto eof +if DEFINED _VC_ ( + @echo on + pushd "%ProgramFiles(x86)%\Microsoft Visual Studio %_VC_%\VC\" + if "%2" EQU "64" ( + vcvarsall.bat x86_amd64 + ) else ( + vcvarsall.bat x86 + ) + if errorlevel 1 ( + echo.*** error - failed *** + ) else ( + echo Success Environment for Visual Studio %_VC_% = %* + ) + popd +) else ( + echo unknown version of Visual Studio %* ) :eof