Universal Plug and Play* Software Development Kit for Linux*
Version 1.0.4
Release Notes

Copyright (c) 2000-1 Intel Corporation - All Rights Reserved.
See LICENSE for details.

August 2001

This file contains information about the above product in the following 
sections: 

1.  Release Contents
2.  Package Contents
3.  System Requirements
4.  Build Instructions
5.  Install/Uninstall Instructions
6.  Product Release Notes
7.  Support and Contact Information

1) Release Contents
-------------------------------------------

The Universal Plug and Play (UPnP) Software Development Kit (SDK) v1.0 for 
Linux is an SDK for development of UPnP device and control point applications 
for Linux.  It consists of the core UPnP protocols along with a UPnP-specific
eXtensible Markup Language (XML) parser supporting the Document Object Model 
(DOM) Level 1 API and an optional, integrated mini web server for serving UPnP
related documents.

2) Package Contents
-------------------------------------------

The UPnP SDK v1.0 for Linux contains the following: 

README    This file.  Contains the installation and build instructions, and 
          release notes.

LICENSE   The licensing terms the UPnP SDK for Linux is distributed under.

inc\      The public include files required to use the UPnP SDK for Linux.

src\      The source files comprising the UPnP SDK for Linux, libupnp.so.

sample\   A sample device and control point application, illustrating the
          usage of the UPnP SDK for Linux.

3) System Requirements
-------------------------------------------

The UPnP SDK for Linux is designed to compile and run under the 
Linux operating system.  It does, however, have dependencies on some
packages that may not be installed by default.  All packages that it
requires are listed below.  The name of the package and where it can be 
found is dependent on the version of Linux being used.

libpthread  The header and library are installed as part of the glibc-devel
            package (or equivalent).
libuuid     The Intel UPnP SDK utilizes the UUID library contained in the
            e2fsprogs package.  Note that the e2fsprogs-devel package is
            required for the uuid.h header file.

Additionally, the documentation for the SDK can be auto-generated from 
the UPNP.H header file using DOC++, a documentation system for C, C++, 
IDL, and Java*.  DOC++ generates the documentation in HTML or TeX format.
Using some additional tools, the TeX output can be converted into a
PDF file.  To generate the documentation these tools are required:

DOC++       The homepage for DOC++ is http://linuxsupportline.com/~doc++/.
            The current version as of this release of the SDK is
            version 3.4.4.  DOC++ is the only requirement for generating
            the HTML documentation.
LaTeX/TeX   To generate the PDF documentation, LaTeX and TeX tools are
            necessary.  The tetex and tetex-latex packages provide these
            tools.
dvips       dvips converts the DVI file produced by LaTeX into a PostScript*
            file.  The tetex-dvips package provides this tool.
ps2pdf      The final step to making the PDF is converting the PostStript
            into Portable Document Format.  The ghostscript package provides
            this tool.

For the UPnP library to function correctly, Linux networking must be configured
properly for multicasting.  To do this:

route add -net 239.0.0.0 netmask 255.0.0.0 eth0

where 'eth0' is the network adapter that the UPnP library will use.  Without
this addition, device advertisements and control point searches will not
function.

4) Build Instructions
-------------------------------------------

All pieces of the UPnP SDK for Linux are built using the same makefile in the 
$(UPNP) directory.  A few of options are available:

% cd $(UPNP)
% make

will build a version of the binaries without debug support and

% cd $(UPNP)
% make DEBUG=1

will build a debug version with symbols support.

Note that all targets are created in $(UPNP)/bin.

To build the documentation:

% cd $(UPNP)
% make doc

makes both the HTML and PDF outputs, assuming all the necessary tools are
installed (see section 3).  To make only the HTML output (requiring only 
DOC++):

% cd $(UPNP)
% make html

To generate the PDF file:

% cd $(UPNP)
% make pdf

In this case, tetex, tetex-latex, tetex-dvips, and ghostscript are necessary
(refer to section 3 for details).

To build the library with the optional, integrated mini web server (note
that this is the default):

% cd $(UPNP)
% make WEB=1

To build without:

% cd $(UPNP)
% make WEB=0

Note that the WEB and DEBUG variables may be combined in any order.

The UPnP SDK for Linux also contains some additional helper APIs, declared in
inc/tools/upnptools.h.  If these additional tools are not required, they can
be compiled out:

% cd $(UPNP)
% make TOOLS=0

By default, the tools are included in the library.  Note that the TOOLS,
WEB, and DEBUG variables may be combined in any order.

To further remove code that is not required, the library can be build with or 
with out the control point (client) or device specific code.  To remove this
code:

% cd $(UPNP)
% make CLIENT=0

to remove client only code or:

% cd $(UPNP)
% make DEVICE=0

to remove device only code.

By default, both client and device code is included in the library.  The
integrated web server is automatically removed when building with 
DEVICE=0.  Note that the CLIENT, DEVICE, TOOLS, WEB, and DEBUG variables 
may be combined in any order.

To remove all the targets, object files, and built documentation:

% cd $(UPNP)
% make clean

5) Install/Uninstall Instructions
-------------------------------------------

Install

The top-level makefile for the UPnP SDK contains rules to install the 
necessary components.  To install the SDK, as root:

make install

Or, to install the SDK by hand, the single binary file, libupnp.so, needs to 
be copied (as root) to /lib, /usr/lib, or /usr/local/lib.  Alternatively, the 
LD_LIBRARY_PATH may be changed to include a directory where the binary is 
located.  The SDK header files also need to be copied to a location where 
they can be found.  /usr/include/upnp is a good location for these, 
although it is not necessary.

Uninstall

Likewise, the top-level makefile contains an uninstall rule, reversing 
the steps in the install:

make uninstall

Or, to uninstall the SDK from the machine by hand, remove the binary file 
from where it was placed and remove the directory containing the headers.

6) Product Release Notes
-------------------------------------------

The UPnP SDK v1.0.4 has these known issues:

- The UPnP library may not work with older versions of gcc and libstdc++, 
  causing a segmentation fault when the library loads.  It is recommended
  that gcc version 2.9 or later be used in building library.
- The UPnP library does not work the glibc 2.1.92-14 that ships with
  Red Hat 7.0.  For the library to function, you must updated the glibc
  and glibc-devel packages to 2.1.94-3 or later.  There is some issue with
  libpthreads that has been resolved in the 2.1.94 version.
  
7) Support and Contact Information
-------------------------------------------

Intel is not providing support for the UPnP SDK for Linux.  Two mailing lists
for the UPnP SDK for Linux are available on http://upnp.sourceforge.net/.  
Questions and problems should be addressed on the appropriate mailing list.

If you find this SDK useful, please send an email to upnp@intel.com and let
us know.

* Other brands, names, and trademarks are the property of their respective 
owners.

