# This file is a template to be used in creating a Framework Archive Manifest.
# Each entry can be assigned to a string, which is quoted, or to a string that
# spans mutliple lines, which is triple quoted. Lists of strings are placed
# inside of square brackets.
# This file should be passed as a command line argument to the MkFar.py script. 
# It is used to help the user control how the far is created.

# The filename to give the new far.
far.FileName = "my.far"

# The user readable name to give the far.
far.FarName = "My Far"

# The version of the far.
far.Version = "0.3"

# The license terms of the far.
far.License="""This program and the accompanying materials are licensed and made
available under the terms and conditions of the BSD License which accompanies
this distribution.  The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER
THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF
ANY KIND, EITHER EXPRESS OR IMPLIED."""

# Short description.
far.Abstract = "Its a good far."

# Long description.
far.Description="""This Package provides headers and libraries that conform to
my wishes."""

# Copyright string to be placed inside the far.
far.Copyright="Copyright (c) 2006, My Corporation."

# A list of workspace-relative paths to the .spd files that should be
# placed inside this far.
far.SpdFiles=[]

# A list of workspace-relative paths to the .fpd files that should be
# placed inside this far.
far.FpdFiles=[]

# A list of workspace-relative paths to the extra files that should be
# placed inside this far. Extra files are ones that are not part of 
# an spd or msa or fpd.
far.ExtraFiles=["tools_def_for_this_package.template", "setup.sh"]

# vim:syntax=python
