-----------------------------------------------------------------------
[24. July, 2001, igor@stud.fh-frankfurt.de] 

And again there are new MSVC project files for libxml2.

You can find the project files for MSVC 6.0 and higher in win32/dsp/
subdirectory of the source tree. You should load the file libxml2.dsw
into the IDE. This is the workspace file which contains all projects
and their interdependencies.

Check the file xmlwin32version.h for optional features and enable or
disable them, as it suits you. The defaults are apropriate for most 
people, so there is usually no need to mess with this.

If you receive few compiler warnings, ignore them. These are harmless
and shall dissapear in the future.

From now on, all object files produced by the compiler end up in the same
directory for each project, no matter if you compile with debugging
turned on or not. This means that a release build shall overwite the 
debug build and vice versa. This makes the dependency tracking easier,
but there are people who don't like this for some reason.

The new project files from win32/dsp/ make any other project files 
obsolete. Previous project files shall remain in their usual location 
for some time and end up removed if noone complains.

-----------------------------------------------------------------------
[January the 16th, 2001, igor@stud.fh-frankfurt.de] 

The following applies only if you use Microsoft Visual C/C++ compiler, 
in combination with Visual C++ IDE. Risk a glance further below for
information on using GNU C compilers, such as Mingw32.

There are two new project files in win32/libxml2:

libxml2_a.dsp:  Use this one to build an object archive, a thing known
                as a static library in the wonderful world of Windows.

libxml2_so.dsp: Use this one to build a shared object, or a DLL if you
                prefer calling it using the dialect mentioned above.

There are few things to note about these project files and their 
differences to the originally supplied project file (libxml2.dsp):

1. C-Runtime is not LIBC anymore. LIBC is fairly old and should be 
considered obsolete today. Microsoft had considered it apropriate to
produce a better C-Runtime library, and indeed, their new one is
called MSVCRT. All decent Win32 systems have this newer library, save
for the oldest incarnations of Win95, which can be ignored safely.
Following that, I changed the dependencies and now both project files
mentioned above use MSVCRT.

2. Both project files cause the resulting binary to depend on a shared 
version of MSVCRT. Yes, that is what I am saying, the C-Runtime is 
linked dynamically, not statically. This enables the programmer to do 
likewise with his libxml2-based software, an action I like to think 
everyone would perform without hesitation.

3. There was a small flaw in the previous project file. The source file
xpointer.c was not included in the project file and that caused a
linkage problem with libxml2-based program, but not with libxml2 
itself, if XPointer feature was enabled. This is now fixed.
-----------------------------------------------------------------------


If you're creating libxml2 with the "mingw" compiler, just copy the
Makefile.mingw to the root directory as "Makefile", edit the PREFIX
value, and run "make".

If you're using MSVC, here are some instructions for how you can
proceed:

The configuration stuff (i.e. what should be enabled/disabled) is in
xmlversion.h I only tested it compiled fine with the current settings
(that is nearly everything disabled, I didn't need many features)

----------------------------

How did I get everything in place so the MSDev project works from the
original archive?

from the cygwin prompt (http://sources.redhat.com/cygwin) :
$ ./configure --disable-corba --without-ftp --without-http --without-html --wit
hout-xpath --without-iconv --without-debug

built the project file for the static library

----------------------------

diff after doing the changes and cleaning up the generated stuff:

[Note: this is out of date]
diff libxml2-2.2.4/xmlversion.h libxml2-2.2.4-reference/xmlversion.h
38c38
< #if 0
---
> #if 1
47c47
< #if 0
---
> #if 1
56c56
< #if 0
---
> #if 1
74c74
< #if 0
---
> #if 1
83c83
< #if 0
---
> #if 1
92c92
< #if 0
---
> #if 1
