The release comes in two forms, source and binary. 

To get both the binary and source distribution, you need libxml2 from http://xmlsoft.org/downloads.html
(NOTE: most Linux systems has libxml2 by default. On Windows you need to download and install libxml2)

Getting Axis2C working with the binary release on Linux.
========================================================
1. Extract the binary tar package to a folder. 
   Set AXIS2C_HOME environment variable pointing to the location where you have extracted Axis2C
        AXIS2C_HOME='/your_path_to_axis2c'
        export AXIS2C_HOME
2. Run the simple axis server:
        cd /your_path_to_axis2c/bin
        ./axis2_http_server
This will start the simple axis server on port 9090. To see the possible command line options run
        ./axis2_http_server -h
NOTE: If you run into shared lib problems, set the LD_LIBRARY_PATH
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your_path_to_axis2c/lib
3. Run the sample clients in a new shell
        cd /your_path_to_axis2c/bin/samples
        ./echo
This will invoke the echo service.
        ./math
This will invoke the math service.
To see the possible command line options for sample clients run them with '-h' option
NOTE: If you run into shared lib problems, set the LD_LIBRARY_PATH
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your_path_to_axis2c/lib

Getting Axis2C working with the source release on Linux.
========================================================
1. Extract the source tar package to a folder. 
2. Set AXIS2C_HOME environment variable pointing to the location where you want to install Axis2C.
        AXIS2C_HOME='/your_desired_path_to_axis2c_installation'
        export AXIS2C_HOME
3. Then go to the folder where you extracted the source
        cd /your_path_to_axis2c_source
4. Set parser location
You need to set the following two environment variables to point to libxml2. 
        LIBXML2_INCLUDE
        LIBXML2_LIB
If you are using the default installation of libxml2, usually those are
LIBXML2_LIB=/usr/lib
LIBXML2_INCLUDE=/usr/include/libxml2

5. Build the source
This can be done using the following command sequence:
        ./configure
        make
        make install
use './configure --help' for options.
NOTE: you may wish to use './configure --prefix=$AXIS2C_HOME' to ensure AXIS2C_HOME and 
intall forlder are the same

If you need to get the samples working, you also need to give the configure option
    --enable-samples=yes

6. go to AXIS2C_HOME
        cd $AXIS2C_HOME

7. Start simple axis server
        cd $AXIS2C_HOME/bin
        ./axis2_http_server
This will start the simple axis server on port 9090. To see the posible command line options run:
        ./axis2_http_server -h
8. Run the sample clients in a new shell
        cd $AXIS2C_HOME/bin/samples
        ./echo
This will invoke the echo service.
        ./math
This will invoke the math service.
To see the possible command line options for sample clients run them with '-h' option


Getting Axis2C working with the binary release on Windows.
========================================================

Requirements
------------

* the binaries shipped with this version is compiled with Microsoft visual studio compiler (cl) 
(Note: you can download microsoft VSExpress2005 editon from microsoft website and intall it to run these binaries)

* You also need the following dlls
	- libxml2.dll [http://www.xmlsoft.org - download the version >=  libxml2-2.6.20.win32]
	- iconv.dll [http://www.xmlsoft.org - download the version >= iconv-1.9.1.win32]
	- zlib1.dll [http://www.xmlsoft.org - download the version >= zlib-1.2.3.win32]

Binaries
--------

Extract the binary distribution to a folder of your choice. (example: C:\axis2c-M0.4)

The c:\axis2c-M0.4 folder structure is as follows.

     axis2c-M0.4
	|- bin        - server and other executables
       	|- samples - samples go here
        	|	
 	|- lib	      - library modules
 	|- services   - deployed services 
	|- modules    - deployed modules 
	|- include    - all include files of axis2 
	|- logs       - system and client logs are written to this folder

Copy libxml2.dll, iconv.dll and zlib1.dll downloaded to C:\axis2c-M0.4\lib

Running
-------
You need to set couple of environment variables before you can run the server and samples.

Set the varibale AXIS2C_HOME to the deploy folder (C:\axis2c-M0.4)
Add the path to lib directory to PATH variable (%AXIS2C_HOME%\lib)

Now everything is set to run the server!

C:\axis2c-M0.4\bin>axis2_http_server.exe 

You should see the message
Started Simple Axis2 HTTP Server...

The log is by default created under %AXIS2C_HOME%\logs folder with the name axis2.log.
(Note: you may provide command line options to change the default behaviour. Type "axis2_http_server.exe -h" to learn about  the usage)

Now you can run any sample client deployed under %AXIS2C_HOME%\bin\samples\
Example:
C:\axis2c-M0.4\bin\samples>echo.exe



Getting Axis2C working with the source release on Windows.
========================================================

Requirements
------------

* the makefile shipped with this version needs Microsoft visual studio compiler (cl) and nmake build tool 
(Note: you can download microsoft VSExpress2005 editon and Platform SDK from microsoft website. You will need to add the path  to Platform SDK Include and Lib folders to makefile)

* You also need 
	- libxml2 [http://www.xmlsoft.org - download the version >=  libxml2-2.6.20.win32]
	- iconv [http://www.xmlsoft.org - download the version >= iconv-1.9.1.win32]
	- zlib [http://www.xmlsoft.org - download the version >= zlib-1.2.3.win32]

Configure.in
------------
The default places for libxml2 and iconv are speceficed in configure.in. 

Example:
Default location for libxml2 is C:\libxml2
	You can either extract libxml2 to this folder. Folder structure should look like the following.
	C:\libxml2
		|- include
		|- bin
		|- lib
	Or extract to whatever place of your choice and edit the configure.in accordingly.

You need to have zlib1.dll in a library path. You may copy this dll to libxml2/lib.
	

Compiling the source
--------------------
Extract the source distribution to a folder of your choice. (Example: C:\axis2c)
Open a DOS shell
cd C:\axis2c\build\win32
C:\axis2c\build\win32>vcvars32.bat to access .Net tools (Note: You may need to set the environment PATH variable to  vcvars32.bat if windows complaints that it cannot find this bat)
C:\axis2c\build\win32>nmake install


Thats it! This will build the system and create a directory named deploy under build directory.
The deploy folder structure is as follows.

     deploy
	|- bin        - server and other executables
       	|   |- samples - samples go here
        	|	
 	|- lib	      - library modules
 	|- services   - deployed services 
	|- modules    - deployed modules 
	|- include    - all include files of axis2 
	|- logs       - system and client logs are written to this folder


Running
-------
You need to set couple of environment variables before you can run the server and samples.

Set the varibale AXIS2C_HOME to the deploy folder (C:\axis2c\build\deploy)
Add the path to lib directory to PATH variable (%AXIS2C_HOME%\lib)

Copy libxml2.dll, iconv.dll and zlib1.dll to axis2c lib folder (%AXIS2C_HOME%\lib)

Now everything is set to run the server!

C:\axis2c\build\deploy\bin>axis2_http_server.exe 

You should see the message
Started Simple Axis2 HTTP Server...

The log is by default created under %AXIS2C_HOME%\logs folder with the name axis2.log.
(Note: you may provide command line options to change the default behaviour. Type "axis2_http_server.exe -h" to learn about  the usage)

Now you can run any sample client deployed under %AXIS2C_HOME%\bin\samples\
Example:
C:\axis2c\build\deploy\bin\samples>echo.exe

Hope you would enjoy this first working version of Axis2C soap engine :)
