  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

Building the Web Server Connectors
==================================

1) Install the web server

2) Go to the "native" subdirectory

   cd native

3) Proceed with the instructions in BUILDING.txt.


Building the Docs
=================

1) Make sure you have Java and "ant" installed
   and "ant" is found in your PATH

2) Go to the "xdocs" subdirectory

   cd xdocs

3) Call "ant"

   ant

4) The resulting documentation can be in the directory build/docs.
