diff --git a/msvc64/ReadMe.txt b/msvc64/ReadMe.txt index 8a5f6539..c6933e16 100644 --- a/msvc64/ReadMe.txt +++ b/msvc64/ReadMe.txt @@ -1,23 +1,12 @@ exiv2\msvc64\ReadMe.txt ----------------------- -Updated: 2011-02-25 -This is work in progress. -However this is sufficiently robust to be in current use by a commercial licensee of exiv2. ++-----------------------------------------------------------+ +| the msvc64 environment can build 32bit and 64bit binaries | +| the msvc environment only builds 32bit | ++-----------------------------------------------------------+ -1) Working - Build 32 bit and 64 bit builds of exiv2.exe (and libraries exiv2lib,expat,zlib,xmpsdk). - Builds with VS2005, 2008 and 2010. - Supports zlib-1.2.5 or zlib-1.2.3 - setbuild.py "doctors" the project files for DevStudio Express - buildall.bat batch building script - runner.py build verification script (and binaries/code for depends{32|64}.exe) - -2) TODO (in priority order) - a) Build sample/test applications (exifprint etc) - b) Use .vsprop files to hold "common" project settings - - Assistance appreciated if you wish to become involved. +Updated: 2012-05-05 Robin Mills http://clanmills.com @@ -31,13 +20,13 @@ T A B L E o f C O N T E N T S 1.2 Install zlib and expat sources. 1.3 Open exiv2\msvc64\exiv2.sln 1.4 What is build -1.5 Building with zlib1.2.3 +1.5 Building with zlib1.2.3 (or 1.2.5) and expat 2.0.1 1.6 Express editions of DevStudio (or 32 bit only builds, or 64 bit only builds) +1.7 Support for DevStudio 11 2 Design 2.1 Architecture -2.2 Changing the version of expat/zlib/xmpsdk -2.3 Relationship with msvc build environment +2.2 Relationship with msvc build environment 3 Acknowledgment of prior work 3.1 Differences between inherited project and the exiv2 projects @@ -45,6 +34,7 @@ T A B L E o f C O N T E N T S 4 Batch builds and tests 4.1 buildall.bat 4.2 runner.py +4.3 Running the test suite ## End Table of Contents End ## #### @@ -61,48 +51,52 @@ T A B L E o f C O N T E N T S I use the directory c:\gnu for this purpose, however the name isn't important. c:\gnu>dir - Directory of c:\gnu + Directory of c:\gnu 2010-12-05 10:05 exiv2 <--- this tree - 2010-12-02 21:06 expat-2.0.1 <--- "vanilla" expat 2.0.1 source tree - 2010-12-02 20:58 zlib-1.2.5 <--- "vanilla" zlib 1.2.5 source tree - 2010-12-02 20:58 zlib-1.2.3 OPTIONAL <--- "vanilla" zlib 1.2.3 source tree + 2012-05-04 23:35 expat-2.1.0 <--- "vanilla" expat 2.1.0 source tree + 2012-05-04 23:35 zlib-1.2.7 <--- "vanilla" zlib 1.2.7 source tree + 2010-12-02 21:06 expat-2.0.1 OPTIONAL <--- "vanilla" expat 2.0.1 source tree + 2010-12-02 20:58 zlib-1.2.5 OPTIONAL <--- "vanilla" zlib 1.2.5 source tree + 2010-12-02 20:58 zlib-1.2.3 OPTIONAL <--- "vanilla" zlib 1.2.3 source tree c:\gnu> The URLs from which to obtain zlib and expat are documented in exiv2\msvc\README-MSVC.txt - expat-2.0.1 is available from http://voxel.dl.sourceforge.net/sourceforge/expat/expat-2.0.1.tar.gz - zlib-1.2.5 is available from http://zlib.net/zlib-1.2.5.tar.gz + expat-2.1.0 is available from http://voxel.dl.sourceforge.net/sourceforge/expat/expat-2.1.0.tar.gz + zlib-1.2.7 is available from http://zlib.net/zlib-1.2.7.tar.gz 1.3 Open exiv2\msvc64\exiv2.sln - Projects are zlib, expat, xmpsdk, exiv2lib, exiv2 + Projects are zlib, expat, xmpsdk, exiv2lib, exiv2, addmoddel etc... Build/Batch build... Select All, Build - - 5 projects (zlib, expat, xmpsdk, exiv2lib, exiv2) + - 29 projects (zlib, expat, xmpsdk, exiv2lib, exiv2, addmoddel etc) x 2 Platforms (x64|Win32) x 4 Configurations (Debug|Release|DebugDLL|ReleaseDLL) - = 5x2x4 = 40 builds. + = 29x2x4 = 232 builds. If you haven't installed the x64 compiler, don't select the 64 bit configurations! You may have to hand-edit the vcproj and sln files to hide the 64 bit information. See the notes about DevStudio Express for more information about this. - Build time is 15 minutes on a 2.2GHz Duo Core and consumes 1.0 gBytes of disk space. + Build time is 20 minutes on a 2.2GHz Duo Core and consumes 3.0 gBytes of disk space. 1.4 What is built The DLL builds use the DLL version of the C runtime libraries The Debug|Release builds use static C runtime libraries This is discussed in exiv2\msvc\README-MSVC.txt -1.5 Building with zlib1.2.3 - By default, msvc64 builds with zlib-1.2.5 +1.5 Building with zlib1.2.5 (or 1.2.3) and/or expat 2.0.1 + By default, msvc64 builds with zlib-1.2.7 and expat 2.1.0 You can build with zlib1.2.3. To do this: - 1) copy/y exiv2\msvc64\zlib123\zlib.vcproj exiv2\msvc64\zlib\zlib.vcproj + 1) copy/y exiv2\msvc64\zlib123\zlib.vcproj exiv2\msvc64\zlib\ + copy/y exiv2\msvc64\expat201\expat.vcproj exiv2\msvc64\expat 2) You will need the sources in a directory parallel to exiv2 c:\gnu>dir Directory of c:\gnu 2010-12-05 10:05 exiv2 <--- this tree + 2012-05-04 23:35 expat-2.1.0 <--- "vanilla" expat 2.1.0 source tree 2010-12-02 21:06 expat-2.0.1 <--- "vanilla" expat 2.0.1 source tree - 2010-12-02 20:58 zlib-1.2.5 <--- "vanilla" zlib 1.2.5 source tree + 2010-12-02 20:58 zlib-1.2.7 <--- "vanilla" zlib 1.2.7 source tree 2010-12-02 20:58 zlib-1.2.3 OPTIONAL <--- "vanilla" zlib 1.2.3 source tree c:\gnu> Please see exiv2\msvc\README-MSVC.txt for information about obtaining zlib-1.2.3 @@ -115,6 +109,8 @@ T A B L E o f C O N T E N T S If you have both 1.2.3 and 1.2.5 in your build tree, you'll probably "get away with" not making this change - however this is due to good luck and you should really adjust the vcprojects. + + 4) Alter "AdditionalIncludeDirectories" for expat 2.0.1 1.6 Express editions of DevStudio (or 32 bit only builds, or 64 bit only builds) Express does not provide a 64 bit compiler. @@ -147,30 +143,47 @@ T A B L E o f C O N T E N T S To remove the "memory" of old configurations: setbuild.py reset + +1.7 Support for DevStudio 11 + I have successfully built and tested a sub-set of exiv2/msvc64 with DevStudio 11 beta. + + I have no plan to support beta versions of DevStudio. + + I will need to purchase DevStudio 11 when it's available to support exiv2. + This is a private purchase and will only be used to support exiv2. + I would appreciate a donation of a legal copy of DevStudio 11. + (Any Microsoft employees/contractors with staff software purchase privileges?) 2 Design - expat and zlib do not provide 64 bit builds for DevStudio, - so it has been necessary to create the build environments for exiv2. - However, we don't include the source code for zlib or expat - only the build environment. + expat and zlib1.2.5 (and earlier) do not provide 64 bit builds for DevStudio. + + The projects provided for zlib1.2.7 support 64 bit builds, however it didn't + work cleanly for me. They use different projects for VC9 and VC10. + They don't provide support for VC8 or 11beta. + + I have created build environments for zlib and expat within exiv2/msvc64. + I don't include the source code for zlib or expat - only the build environment. + You are expected to install the "vanilla" expat and zlib libraries in a directory at the same level as exiv2. I personally always build in the directory c:\gnu, however the name/location/spaces of the build directory are all irrelevant, - it's only the relative position of expat-2.0.1 and zlib-1.2.5 that matter. - The names expat-2.0.1 and zlib-1.2.5 fixed (and used by the .vcproj files) + it's only the relative position of expat-2.1.0 and zlib-1.2.7 that matter. + The names expat-2.1.0 and zlib-1.2.7 are fixed (and used by the .vcproj files) zlib and expat - exiv2\msvc64\zlib\zlib.{sln|vcproj} DevStudio files - ..\..\..\zlib-1.2.5\ Source code + exiv2\msvc64\zlib\zlib.vcproj DevStudio files + ..\..\..\zlib-1.2.7\ Source code - exiv2\msvc64\expat\expat.sln expat.vcproj DevStudio files - ..\..\..\expat-2.0.1\ Source code + exiv2\msvc64\expat\expat.vcproj DevStudio files + ..\..\..\expat-2.1.0\ Source code 2.1 Architecture There are directories for every component: The libraries: zlib, expat, xmpsdk, exiv2lib - Applications: exiv2 (exifprint.exe and other sample apps will be added on request) + Applications: exiv2.exe + Sample Apps: exifprint.exe, addmoddel.exe and many more (used by test suite) For each component, there are three build directories: exiv2lib\build intermediate results @@ -181,11 +194,7 @@ T A B L E o f C O N T E N T S bin\{win32|x84}\Win32\{Debug|Release|DebugDLL|ReleaseDLL} include -2.2 Changing the version of expat/zlib/xmpsdk - At the moment, zlib contains references to zlib-1.2.3 and expat to expat-2.0.1 - It is planned to support zlib 1.2.5 shortly and these notes will be updated at that time. - -2.3 Relationship with msvc build environment +2.2 Relationship with msvc build environment msvc64 is similar to msvc. However there are significant differences: 1) msvc64 supports 64 bit and 32 bit builds @@ -194,9 +203,8 @@ T A B L E o f C O N T E N T S 4) msvc64 supports DevStudio 2005, 2008 and 2010 (no support for 2003) 5) msvc64 does not require you to build 'vanilla' expat and zlib projects in advance 6) msvc64 does not support the organize application - 7) msvc64 does not build the sample/test applications (such as exfprint.exe) - 8) msvc64 has no test/build verification scripts - 9) msvc64 supports building with zlib1.2.5 (default) or zlib1.2.3 + 7) msvc64 supports building with zlib1.2.7 (default) or zlib1.2.3/5 + 7) msvc64 supports building with expat2.1.0 (default) or expa2.0.1 msvc will continue to be supported for 32 bit builds using DevStudio 2003/05/08, however there is no plan to enhance or develop msvc going forward. @@ -229,8 +237,6 @@ T A B L E o f C O N T E N T S It doesn't know anything about building only x64 or only Win32. Change the script if you want something special. - I'll probably combine buildall.bat and setbuild.py into a single script one day. - 4.2 runner.py runner.py [Win32|x64|all] @@ -243,6 +249,39 @@ T A B L E o f C O N T E N T S If you have only build Win32 (or x64), you'll have to remove the output from runner.txt for the target that isn't of interest. - + +4.3 Running the test suite + You will need to install cygwin to run the test suite. + + This is a two stage process: + Step1: Build exiv2 for cygwin and run the test suite + Typical Unix type build: + make config + ./configure --disable-visibility + export PKG_CONFIG_PATH=$PWD/config + make clean ; make ; make samples ; make install ; cd test ; make test + + Step2: set the environment variable EXIV2_BINDIR appropriately and rerun make test + export EXIV2_BINDIR= + + I find the following little bash loop very useful. You should test + against all the directories in the msvc64/bin directory: + for d in $(find /c/gnu.2005/exiv2/msvc64/bin -name exiv2.exe -exec dirname {} ";"); do + export EXIV2_BINDIR=$d + echo --------------------------------- + echo ---- $d ---- + echo --------------------------------- + make test + done + + I recommend running listdlls exiv2.exe occasionally during testing to be confident that + the test suite is running the MSVC built versions of exiv2 and libraries. + + Note: Cygwin currently ships diff-utils 2.9.2 which treats binary files differently + from 2.8.7 (on Mac) and 3.2 (on Ubuntu 12.04). For this reason, the executable (and + support dlls for GNU diff.exe 2.8.7 is provided in msvc/diff.exe. + The test suite has been "doctored" on cygwin to modify the path appropriately to + use this preferred version of diff.exe. + # That's all Folks! ## diff --git a/msvc64/addmoddel/addmoddel.vcproj b/msvc64/addmoddel/addmoddel.vcproj index 11a01204..d0412402 100644 --- a/msvc64/addmoddel/addmoddel.vcproj +++ b/msvc64/addmoddel/addmoddel.vcproj @@ -43,7 +43,7 @@ @@ -712,51 +712,51 @@ Filter="h;hpp;hxx;hm;inl" > diff --git a/msvc64/expat201/expat.vcproj b/msvc64/expat201/expat.vcproj new file mode 100644 index 00000000..c95bda71 --- /dev/null +++ b/msvc64/expat201/expat.vcproj @@ -0,0 +1,771 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/msvc64/expat210/expat.vcproj b/msvc64/expat210/expat.vcproj new file mode 100644 index 00000000..2148826d --- /dev/null +++ b/msvc64/expat210/expat.vcproj @@ -0,0 +1,771 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/msvc64/iotest/iotest.vcproj b/msvc64/iotest/iotest.vcproj index 90c13728..58aada8b 100644 --- a/msvc64/iotest/iotest.vcproj +++ b/msvc64/iotest/iotest.vcproj @@ -43,7 +43,7 @@ NUL | grep Original') - os.system(path + " -pt "+Q(png) + '2>NUL | grep Original') - os.system(path + " -pt "+Q(jpg) + '2>NUL | grep Original') - os.system(path + " -pt "+Q(jpg) ) + System(path + " -V") + System(path + " -pt "+Q(tif) + '2>NUL | grep Original') + System(path + " -pt "+Q(png) + '2>NUL | grep Original') + System(path + " -pt "+Q(jpg) + '2>NUL | grep Original') + System(path + " -pt "+Q(jpg) ) ## ## def dll(path,option): """dll - handle a .dll file""" -# print "testing ",path + if os.path.basename(path) in ('exiv2.exe,exiv2.dll','exiv2d.dll','libexpat.dll','zlib1.dll','zlib1d.dll'): +# print "testing ",path - bits=32 if path.find('Win32')>=0 else 64 + bits=32 if path.find('Win32')>=0 else 64 - depends='tools/bin/depends%d.exe' % (bits) - depends=os.path.realpath( depends ) - os.system(depends + ' -q ' + path + ' | sort') + depends='tools/bin/depends%d.exe' % (bits) + depends=os.path.realpath( depends ) + System(depends + ' -q ' + path + ' | sort') ## ## diff --git a/msvc64/runner.txt b/msvc64/runner.txt index efb439f8..d6bab0c7 100644 --- a/msvc64/runner.txt +++ b/msvc64/runner.txt @@ -1028,12 +1028,6 @@ KERNEL32.dll KERNELBASE.dll ntdll.dll zlib1d.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll KERNEL32.dll KERNELBASE.dll libexpat.dll @@ -1056,61 +1050,11 @@ KERNEL32.dll KERNELBASE.dll ntdll.dll zlib1d.dll -exiv2.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -zlib1.dll -exiv2.exe -exiv2d.dll -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1d.dll -exiv2.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -exiv2.dll -exiv2.exe -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll -zlib1.dll -exiv2.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll -exiv2.exe -exiv2d.dll KERNEL32.dll KERNELBASE.dll libexpat.dll ntdll.dll -zlib1d.dll -exiv2.exe KERNEL32.dll KERNELBASE.dll ntdll.dll -exiv2.dll -exiv2.exe -KERNEL32.dll -KERNELBASE.dll -libexpat.dll -ntdll.dll zlib1.dll -exiv2.exe -KERNEL32.dll -KERNELBASE.dll -ntdll.dll diff --git a/msvc64/stringto-test/stringto-test.vcproj b/msvc64/stringto-test/stringto-test.vcproj index ec321292..e58ae027 100644 --- a/msvc64/stringto-test/stringto-test.vcproj +++ b/msvc64/stringto-test/stringto-test.vcproj @@ -43,7 +43,7 @@ @@ -653,67 +653,67 @@ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" > @@ -722,43 +722,43 @@ Filter="h;hpp;hxx;hm;inl" > @@ -767,7 +767,7 @@ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" > diff --git a/msvc64/zlib127/zlib.vcproj b/msvc64/zlib127/zlib.vcproj new file mode 100644 index 00000000..db73555d --- /dev/null +++ b/msvc64/zlib127/zlib.vcproj @@ -0,0 +1,777 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +