initial load of upstream version 1.06.32
[xmlrpc-c] / Windows / ReadMeWin32.txt
1 Build Instructions For XML-RPC For C/C++ On Windows
2 ---------------------------------------------------
3
4 The following instructions do not fully work in this release.  There
5 is no trivial way to build this release for Windows.  The last release
6 that was known to build without special effort on the part of the user
7 is 1.02.
8
9 Since then, nobody has maintained the code for Windows, and changes that
10 were made for other platforms broke some things for Windows.  Most likely,
11 anyone with a passing knowledge of building C code on Windows could
12 update this code to work on Windows without any in-depth study of it.  If
13 you do so, please contribute your work to save other users the trouble.
14
15 The majority of the work that needs to be done to make the code build on
16 Windows is simply adjusting project files to reflect the fact that files
17 have been created, deleted, and moved since they were written.
18
19
20 This release includes the option to compile an "http.sys" version of an
21 XML-RPC server.  If you do not wish to build in the http.sys server,
22 set the MUST_BUILD_HTTP_SYS_SERVER to 0 in the transport_config_win32.h and/or
23 the transport_config.h file.  Successful conpilation requires installation 
24 of the Microsoft Platform SDK for Windows XP SP2 (or later) to get the latest 
25 header and link libraries required to support this functionality.  After 
26 installation, be sure to properly register the directories as documented 
27 in the Platform SDK help file topic "Installing the Platform SDK with 
28 Visual Studio".  Download the Platform SDK from:
29 http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
30
31 To create the three headers required for Win32 WinInet compilation, run the
32 ConfigureWin32.bat found in the Windows directory.  If you wish to alter the
33 transports that are built to include curl or libwww, adjust the preprocessor
34 definitions at the top of the transport_config_win32.h and/or
35 the transport_config.h files.  See the file UsingCURLinWin32.txt for
36 more information on using the curl transport.  
37
38 To compile, open the xmlrpc.dsw file in Visual Studio 6 or greater.  The 
39 project will convert and work fine in Visual Studio 2003 as well - 
40 other versions of Visual Studio were not tested.
41 NOTE: If you get an error while opening or converting the project files,
42 it is likely due to using WinRar or similar to decompress the distribution
43 tarball.  You can use WinZip or another utility to correctly decompress the
44 .tgz file.
45
46 Suggested testing for evaluation of the library involves a few projects.  
47 Here is a quick getting started guide:
48
49 1) Set the Active Project to query_meerkat and build it in release or debug 
50    modes.  The dependent projects will be built automatically.  In the 
51    project settings dialog, add the argument for what you wish to query 
52    meerkat for - "Windows" is a good query.  Run the project.  This will 
53    query the meerkat server for articles related to windows and output the 
54    results to the console.
55
56 2) Set the Active Project to xmlrpc_sample_add_server and build it in 
57    release or debug modes.  The dependent projects will be built 
58    automatically.  In the project settings dialog, add the argument for 
59    the port to 8080.  This will run the server sample which adds two 
60    numbers and returns a result.  You should run this from a command 
61    prompt instead of through Visual Studio so you may run the sample
62    client as well.
63
64 3) Set the Active Project to xmlrpc_sample_add_sync_client or 
65    xmlrpc_sample_add_async_client and build it in release or debug modes.  
66    The dependent projects will be built automatically.  This will run 
67    the client sample which submits two numbers to be added to the server 
68    application as described above and displays the result.  Note that the 
69    client example comes in the sync and async varieties.
70
71 Steven Bone
72 July 27, 2005
73 sbone@pobox.com
74
75 WIN32 CHANGES
76
77 Changes from the 1.02 release for Win32:
78 1) Option to easily disable the http.sys server for those who do not need
79    it or wish to download the Platform SDK.
80
81 Changes from the 1.01 -> 1.02 release for Win32:
82 1) Project files for gennmtab, xmlparse, and xmltok updated to include the 
83    path to the xmlrpc_config.h file.
84 2) Bugfix for WinInet authentication.
85 3) Supports xmlrpc_xportparms, xmlrpc_wininet_xportparms added
86    *potential breaking change* - now by default we fail on invalid
87    SSL certs, use the xmlrpc_wininet_xportparms option to enable old
88    behavior.
89 4) Added project file for xmlrpc_sample_auth_client
90 5) Added project and src for a http.sys based xmlrpc-c server.  See comments
91    in the source files.  This supports Windows XP SP2 and Windows Server
92    2003 and allows other http.sys based applications to bind to the same
93    port.  In Server 2003, IIS uses http.sys and thus the XML-RPC server
94    can be run on the standard port 80 along with IIS.  The sample also
95    supports https and basic authentication.  It tested OK with
96    http://validator.xmlrpc.com/  Note that the Platform SDK headers and
97    link libraries for Windows XP SP2 or newer are required to compile
98    xmlrpc-c for this module.  If you are not using this server, it is 
99    safe to exclude the xmlrpc_server_w32httpsys.c file from the xmlrpc
100    project and these dependencies will not be required.  You can get the 
101    latest platform SDK at 
102    http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
103    Be sure after installation to choose the program to "register the PSDK
104    directories with Visual Studio" so the newer headers are found.
105 6) Better support for libcurl.  Updated project files, transport_config_win32.h,
106    added documentation UsingCURLinWin32.txt.
107    
108 Changes from the 1.00 -> 1.01 release for Win32:
109 1) Project files now reflect static linking for the expat XML library.
110 2) Example projects were created/updated to keep them in sync with the 
111    distribution.  The project files were moved into the .\Windows 
112    directory
113 3) Projects for the rpc and cpp tests were created.  The 
114    xmlrpc_win32_config.h defines the directory for the test files relative 
115    to the output directory
116 4) Major refactoring of the Wininet Transport.