build: Changes to support msvc2003/msvc2005/msvc2012 trees

This commit is contained in:
Robin Mills
2013-07-23 00:21:54 +00:00
parent e182a28da8
commit 3ffe71ab3f
74 changed files with 495 additions and 3592 deletions
@@ -1,12 +1,12 @@
Notes about msvc 32 bit build of exiv2
--------------------------------------
Notes about msvc2003 32 bit build of exiv2
------------------------------------------
+-----------------------------------------------------------+
| msvc2012 builds 32bit and 64bit binaries |
| with Visual Studio 2012 |
| msvc64 builds 32bit and 64bit binaries |
| msvc2005 builds 32bit and 64bit binaries |
| with Visual Studio 2005/8/10 |
| msvc builds 32bit binaries |
| msvc2003 builds 32bit binaries |
| with Visual Studio 2003/5/8 |
+-----------------------------------------------------------+
@@ -18,10 +18,7 @@ Tested With: VC7.1, VC8 Pro +SP1, VC9Std running Windows/XP 32bit)
VC10 running on Windows/7 64bit, and Windows/XP 32bit
(VC7.1 = VS/2003 .Net; VC8 = VS/2005; VC9 = VS/2008; VC10 = VS/2010)
I recommend you use the msvc64 environment for VS2010.
VC10/VS 2010 requires a project change which the conversion wizard doesn't handle. See below.
All builds in msvc are 32bit. Use msvc64 for 64bit and 32bit builds.
All builds in msvc2003 are 32bit.
1) Build environments (solution files)
exiv2.sln - this builds the exiv2 libraries (static and dynamic)
@@ -101,7 +98,7 @@ How to build and test exiv2 (with/without organize.exe)
Rattle roll.... less than a minute ...... snap, crackle, pop (lots of warnings)
========== Build: 4 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
4) Open the sln file exiv2\msvc\exiv2.sln
4) Open the sln file exiv2\msvc2003\exiv2.sln
On VS2005 and up, the Wizard will offer to upgrade the project files.
Once more, say yes to everything.
@@ -138,15 +135,15 @@ How to build and test exiv2 (with/without organize.exe)
6) Test from the Command Line (cmd.exe):
cd exiv2\msvc
C:\gnu\exiv2\msvc>runner.bat > new.txt
cd exiv2\msvc2003
C:\gnu\exiv2\msvc2003>runner.bat > new.txt
exiv2.exe: An action must be specified
exiv2.exe: At least one file is required
metacopy.exe: Read and write files must be specified
bla bla white sheep......
C:\gnu\exiv2\msvc>diff.exe runner.txt new.txt (Windows/XP)
C:\gnu\exiv2\msvc>diff.exe runner7.txt new.txt (Windows/7)
C:\gnu\exiv2\msvc2003>diff.exe runner.txt new.txt (Windows/XP)
C:\gnu\exiv2\msvc2003>diff.exe runner7.txt new.txt (Windows/7)
--- no differences should be reported --
The test takes less than 1 minute and runs 200+ different test programs.
@@ -154,8 +151,8 @@ How to build and test exiv2 (with/without organize.exe)
7) Running the test suite
The test suite is a collection of bash scripts and requires a unix-like environment
in which to run. exiv2 msvc and msvc64 builds are tested with cygwin and msys.
Please see the file exiv2/msvc64/ReadMe.txt for more information.
in which to run. exiv2 msvc2003/5/12 builds are tested with cygwin and msys.
Please see the file exiv2/msvc2005/ReadMe.txt for more information.
How to build exiv2+organize
---------------------------
@@ -285,7 +282,7 @@ OR (if you prefer to build from source)
Where are the libraries and executables?
----------------------------------------
exiv2\msvc\bin\{Debug | DebugDLL | Release | ReleaseDLL }
exiv2\msvc2003\bin\{Debug | DebugDLL | Release | ReleaseDLL }
What's been built?
------------------
@@ -340,9 +337,9 @@ http://dev.exiv2.org/projects/exiv2/issues
Support and Questions
---------------------
Information/Documentation : http://www.exiv2.org/index.html
Discussion Forum : http://dev.exiv2.org/wiki/exiv2
The MSVC build environment : Please contact me directly by email.
Information/Documentation : http://www.exiv2.org/index.html
Discussion Forum : http://dev.exiv2.org/wiki/exiv2
The MSVC2003 build environment : Please contact me directly by email.
Robin Mills
robin@clanmills.com
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+34 -34
View File
@@ -1,16 +1,16 @@
exiv2\msvc64\ReadMe.txt
-----------------------
exiv2\msvc2005\ReadMe.txt
-------------------------
+-----------------------------------------------------------+
| msvc2012 builds 32bit and 64bit binaries |
| with Visual Studio 2012 |
| msvc64 builds 32bit and 64bit binaries |
| msvc2005 builds 32bit and 64bit binaries |
| with Visual Studio 2005/8/10 |
| msvc builds 32bit binaries |
| msvc2003 builds 32bit binaries |
| with Visual Studio 2003/5/8 |
+-----------------------------------------------------------+
Updated: 2012-05-07
Updated: 2013-07-22
Robin Mills
http://clanmills.com
@@ -22,7 +22,7 @@ T A B L E o f C O N T E N T S
1 Build Instructions
1.1 Tools
1.2 Install zlib and expat sources.
1.3 Open exiv2\msvc64\exiv2.sln
1.3 Open exiv2\msvc2005\exiv2.sln
1.4 What is build
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)
@@ -64,11 +64,11 @@ T A B L E o f C O N T E N T S
2010-12-02 20:58 <DIR> 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
The URLs from which to obtain zlib and expat are documented in exiv2\msvc2003\ReadMe.txt
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
1.3 Open exiv2\msvc2005\exiv2.sln
Projects are zlib, expat, xmpsdk, exiv2lib, exiv2, addmoddel etc...
Build/Batch build... Select All, Build
- 29 projects (zlib, expat, xmpsdk, exiv2lib, exiv2, addmoddel etc)
@@ -85,14 +85,14 @@ T A B L E o f C O N T E N T S
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
This is discussed in exiv2\msvc2003\ReadMe.txt
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
By default, msvc2005 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\
copy/y exiv2\msvc64\expat201\expat.vcproj exiv2\msvc64\expat
1) copy/y exiv2\msvc2005\zlib123\zlib.vcproj exiv2\msvc2005\zlib\
copy/y exiv2\msvc2005\expat201\expat.vcproj exiv2\msvc2005\expat
2) You will need the sources in a directory parallel to exiv2
c:\gnu>dir
@@ -103,7 +103,7 @@ T A B L E o f C O N T E N T S
2010-12-02 20:58 <DIR> zlib-1.2.7 <--- "vanilla" zlib 1.2.7 source tree
2010-12-02 20:58 <DIR> 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
Please see exiv2\msvc2003\ReadMe.txt for information about obtaining zlib-1.2.3
3) Alter the "AdditionalIncludeDirectories" in the following projects:
xmpsdk.vcproj
@@ -122,7 +122,7 @@ T A B L E o f C O N T E N T S
Before loading the project, use the python script setbuild.py to select Win32:
c:\gnu\exiv2\msvc64>setbuild.py Win32
c:\gnu\exiv2\msvc2005>setbuild.py Win32
setbuild.py is none destructive. If you have a 64 bit compiler, you can:
1) Restore the build environment with: setbuild.py all
@@ -132,7 +132,7 @@ T A B L E o f C O N T E N T S
you can "doctor" to project files manually to remove mentiosn of X64 using an editor:
Cleanup your tree and edit the files.
cd exiv2\msvc64
cd exiv2\msvc2005
call cleaner.bat
for /r %f in (*.vcproj) do notepad %f
for /r %f in (*.sln) do notepad %f
@@ -149,7 +149,7 @@ T A B L E o f C O N T E N T S
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 successfully built and tested a sub-set of exiv2/msvc2005 with DevStudio 11 beta.
I have no plan to support beta versions of DevStudio.
@@ -166,7 +166,7 @@ T A B L E o f C O N T E N T S
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 have created build environments for zlib and expat within exiv2/msvc2005.
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
@@ -177,10 +177,10 @@ T A B L E o f C O N T E N T S
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.vcproj DevStudio files
exiv2\msvc2005\zlib\zlib.vcproj DevStudio files
..\..\..\zlib-1.2.7\ Source code
exiv2\msvc64\expat\expat.vcproj DevStudio files
exiv2\msvc2005\expat\expat.vcproj DevStudio files
..\..\..\expat-2.1.0\ Source code
2.1 Architecture
@@ -198,20 +198,20 @@ 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 Relationship with msvc build environment
msvc64 is similar to msvc.
2.2 Relationship with msvc2003 build environment
msvc2005 is similar to msvc2003.
However there are significant differences:
1) msvc64 supports 64 bit and 32 bit builds
2) msvc64 provides projects to build expat and zlib
3) msvc64 is designed to accomodate new versions of expat and zlib when they become available.
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 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
1) msvc2005 supports 64 bit and 32 bit builds
2) msvc2005 provides projects to build expat and zlib
3) msvc2005 is designed to accomodate new versions of expat and zlib when they become available.
4) msvc2005 supports DevStudio 2005, 2008 and 2010 (no support for 2003)
5) msvc2005 does not require you to build 'vanilla' expat and zlib projects in advance
6) msvc2005 does not support the organize application
7) msvc2005 supports building with zlib1.2.7 (default) or zlib1.2.3/5
7) msvc2005 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.
msvc2003 will continue to be supported for 32 bit builds using DevStudio 2003/05/08,
however there is no plan to enhance or develop msvc2003 going forward.
3 Acknowledgement of prior work
This work is based on work by the following people:
@@ -269,8 +269,8 @@ T A B L E o f C O N T E N T S
export EXIV2_BINDIR=<path-to-directory-with-exiv2.exe>
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
against all the directories in the msvc2005/bin directory:
for d in $(find /c/gnu.2005/exiv2/msvc2005/bin -name exiv2.exe -exec dirname {} ";"); do
export EXIV2_BINDIR=$d
echo ---------------------------------
echo ---- $d ----
@@ -294,7 +294,7 @@ T A B L E o f C O N T E N T S
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.
support dlls) for GNU diff.exe 2.8.7 is provided in msvc2003/diff.exe.
The test suite has been "doctored" on cygwin to modify the path appropriately to
use this preferred version of diff.exe.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+32 -781
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+7 -5
View File
@@ -4,23 +4,25 @@ exiv2\msvc2012\ReadMe.txt
+-----------------------------------------------------------+
| msvc2012 builds 32bit and 64bit binaries |
| with Visual Studio 2012 |
| msvc64 builds 32bit and 64bit binaries |
| msvc2005 builds 32bit and 64bit binaries |
| with Visual Studio 2005/8/10 |
| msvc builds 32bit binaries |
| msvc2003 builds 32bit binaries |
| with Visual Studio 2003/5/8 |
+-----------------------------------------------------------+
Updated: 2012-07-22
The build environment for Visual Studio 2012 is basically the same
as msvc64 and you should consult msvc64\ReadMe.txt.
as msvc2005 and you should consult msvc2005\ReadMe.txt for information
about the build.
The project file convertor for 2012 created a new build environment
which fails to build several of the Release and Debug (static) applications.
The Visual Studio 2012 project file convertor created this new build environment
however the build failed for several of the Release and Debug (static) applications.
The project files in msvc2012 have been hand modified to successfully build
exiv2 and all the sample applications. The environment can build 32bit and 64bit
binaries in four flavors:
Debug and Release (static)
DebugDLL and ReleaseDLL (shared libraries)
+98 -98
View File
@@ -7,65 +7,65 @@ runTest()
local prog=$1
shift
(
cd $here/tmp
if [ ! -z $EXIV2_ECHO ]; then
echoTest $VALGRIND $bin/$prog "$@"
fi
$VALGRIND $bin/$prog "$@"
)
cd $here/tmp
if [ ! -z $EXIV2_ECHO ]; then
echoTest $VALGRIND $bin/$prog "$@"
fi
$VALGRIND $bin/$prog "$@"
)
}
##
# echo commands and arguments
echoTest()
{
local count=1
for i in $@ ; do
echo $((count++)): $i
done
echo -----------------------
local count=1
for i in $@ ; do
echo $((count++)): $i
done
echo -----------------------
}
##
# predictate
existsTest()
{
local prog=$1
result=0
if [ -e $bin/$prog -o -e $bin/$prog.exe ]; then
result=1
fi
echo $result
local prog=$1
result=0
if [ -e $bin/$prog -o -e $bin/$prog.exe ]; then
result=1
fi
echo $result
}
##
# copy file
copy()
{
\cp "$1" "$2"
\cp "$1" "$2"
}
##
# copy file from data to tmp (copyTestFile from to
copyTestFile()
{
if [ $# == 2 ]; then
cp -f "$here/data/$1" "$here/tmp/$2"
elif [ $# == 1 ]; then
cp -f "$here/data/$1" "$here/tmp/$1"
else
echo "*** error copyTestFile: illegal number of inputs = $# ***"
fi
if [ $# == 2 ]; then
cp -f "$here/data/$1" "$here/tmp/$2"
elif [ $# == 1 ]; then
cp -f "$here/data/$1" "$here/tmp/$1"
else
echo "*** error copyTestFile: illegal number of inputs = $# ***"
fi
}
##
# copy 1 or more files from data to tmp
copyTestFiles()
{
for i in "$@" ; do
copyTestFile "$i" "$i"
done
for i in "$@" ; do
copyTestFile "$i" "$i"
done
}
##
@@ -73,7 +73,7 @@ copyTestFiles()
reportTest()
{
cat $results | tr '\\' '/' > ${results}-new
mv -f ${results}-new $results
mv -f ${results}-new $results
if [ ! -z `which dos2unix` ]; then
unix2dos $results >/dev/null 2>&1
fi
@@ -276,12 +276,12 @@ removeTest()
#run tests
runTest iptctest $tmp <<-eoc
r Iptc.Application2.Byline
r Iptc.Application2.Caption
r Iptc.Application2.Keywords
r Iptc.Application2.Keywords
r Iptc.Application2.Keywords
r Iptc.Application2.CountryName
r Iptc.Application2.Byline
r Iptc.Application2.Caption
r Iptc.Application2.Keywords
r Iptc.Application2.Keywords
r Iptc.Application2.Keywords
r Iptc.Application2.CountryName
eoc
runTest iptcprint $tmp > $test
@@ -303,14 +303,14 @@ addModTest()
#run tests
runTest iptctest $tmp <<-eoc
a Iptc.Application2.Headline The headline I am
a Iptc.Application2.Keywords Yet another keyword
m Iptc.Application2.DateCreated 2004-8-3
a Iptc.Application2.Urgency 3
m Iptc.Application2.SuppCategory "bla bla ba"
a Iptc.Envelope.ModelVersion 2
a Iptc.Envelope.TimeSent 14:41:0-05:00
a Iptc.Application2.RasterizedCaption 230 42 34 2 90 84 23 146
a Iptc.Application2.Headline The headline I am
a Iptc.Application2.Keywords Yet another keyword
m Iptc.Application2.DateCreated 2004-8-3
a Iptc.Application2.Urgency 3
m Iptc.Application2.SuppCategory "bla bla ba"
a Iptc.Envelope.ModelVersion 2
a Iptc.Envelope.TimeSent 14:41:0-05:00
a Iptc.Application2.RasterizedCaption 230 42 34 2 90 84 23 146
eoc
runTest iptcprint $tmp > $test
@@ -379,51 +379,51 @@ real_path ()
# prepare temp files and other variables
prepareTest()
{
##
# locale setting
export LC_ALL=C
##
# locale setting
export LC_ALL=C
##
# initialize globals
this=$(basename $0 .sh)
here=$PWD
datapath="../data"
testdir="$here/tmp"
datadir="../data"
##
# initialize globals
this=$(basename $0 .sh)
here=$PWD
datapath="../data"
testdir="$here/tmp"
datadir="../data"
if [ -z "$EXIV2_BINDIR" ] ; then
bin="$here/../bin"
else
bin="$EXIV2_BINDIR"
fi
if [ -z "$EXIV2_BINDIR" ] ; then
bin="$here/../bin"
else
bin="$EXIV2_BINDIR"
fi
os=$(uname)
if [ "${os:0:4}" == "CYGW" ]; then
export PLATFORM=cygwin
else
export PLATFORM=$os
fi
os=$(uname)
if [ "${os:0:4}" == "CYGW" ]; then
export PLATFORM=cygwin
else
export PLATFORM=$os
fi
if [ "$PLATFORM" == cygwin -o "$PLATFORM" == mingw ]; then
exe=.exe
fi
if [ "$PLATFORM" == cygwin -o "$PLATFORM" == mingw ]; then
# We need a private version of diff for linux compatibility
diff()
{
args=()
for i in "$@"; do
if [ ${i:0:1} != '-' ]; then
i="$(cygpath -aw $i)"
fi
args+=($i)
done
DIFF=$(readlink -f "$here/../msvc/diff$exe")
chmod +x "$DIFF"
"$DIFF" ${args[@]}
}
fi
if [ "$PLATFORM" == cygwin -o "$PLATFORM" == mingw ]; then
exe=.exe
fi
if [ "$PLATFORM" == cygwin -o "$PLATFORM" == mingw ]; then
# We need a private version of diff for linux compatibility
diff()
{
args=()
for i in "$@"; do
if [ ${i:0:1} != '-' ]; then
i="$(cygpath -aw $i)"
fi
args+=($i)
done
DIFF=$(readlink -f "$here/../msvc2003/diff$exe")
chmod +x "$DIFF"
"$DIFF" ${args[@]}
}
fi
##
# figure out arguments for diff
@@ -438,19 +438,19 @@ prepareTest()
diffargs=""
fi
tmpfile=tmp/ttt
touch $tmpfile
da1="--strip-trailing-cr"
diff -q $da1 $tmpfile $tmpfile 2>/dev/null
if [ $? -ne 0 ] ; then
da1=""
fi
da2="--ignore-matching-lines=^Usage:.*exiv2"
diff -q $da2 $tmpfile $tmpfile 2>/dev/null
if [ $? -ne 0 ] ; then
da2=""
fi
diffargs="$da1 $da2"
tmpfile=tmp/ttt
touch $tmpfile
da1="--strip-trailing-cr"
diff -q $da1 $tmpfile $tmpfile 2>/dev/null
if [ $? -ne 0 ] ; then
da1=""
fi
da2="--ignore-matching-lines=^Usage:.*exiv2"
diff -q $da2 $tmpfile $tmpfile 2>/dev/null
if [ $? -ne 0 ] ; then
da2=""
fi
diffargs="$da1 $da2"
##
# test that exiv2 and some sample apps are in the bin!