# You can build the package from Git using something like:
# tar -czf swig-@PACKAGE_VERSION@.tar.gz swig-@PACKAGE_VERSION@ && rpmbuild -tb swig-@PACKAGE_VERSION@.tar.gz
# @configure_input@

%define ver          @PACKAGE_VERSION@
%define rel          1
%define prefix       /usr
%define home_page    http://www.swig.org
%define docprefix    %{prefix}/share

######################################################################
# Usually, nothing needs to be changed below here between releases
######################################################################
Summary: Simplified Wrapper and Interface Generator
Name: swig
Version: %{ver}
Release: %{rel}
URL: %{home_page}
Source0: %{name}-%{version}.tar.gz
License: BSD
Group: Development/Tools
BuildRoot: %{_tmppath}/%{name}-root

%description
SWIG is a software development tool that connects programs written in C and C++
with a variety of high-level programming languages. SWIG is primarily used with
common scripting languages such as Perl, Python, Tcl/Tk, and Ruby, however the
list of supported languages also includes non-scripting languages such as Java,
OCAML and C#. Also several interpreted and compiled Scheme implementations
(Guile, MzScheme, Chicken) are supported. SWIG is most commonly used to create
high-level interpreted or compiled programming environments, user interfaces,
and as a tool for testing and prototyping C/C++ software. SWIG can also export
its parse tree in the form of XML and Lisp s-expressions. 

%prep
%setup -q -n %{name}-%{version}

%build
# so we can build package from Git source too
[ ! -r configure ] && ./autogen.sh
%configure
make

%install
rm -rf ${RPM_BUILD_ROOT}
make DESTDIR=$RPM_BUILD_ROOT install

%clean
rm -rf ${RPM_BUILD_ROOT}

%files
%defattr(-,root,root)
%doc ANNOUNCE CHANGES INSTALL LICENSE LICENSE-GPL LICENSE-UNIVERSITIES README RELEASENOTES
%doc Doc/*
%{_bindir}/*
%{prefix}/share/*

%changelog
* Thu Sep 16 2004 Marcelo Matus <mmatus@acms.arizona.edu>
- Small fixes needed after removing the runtime package
* Tue Jul 20 2004 William Fulton <wsf@fultondesigns.co.uk>
- Update for SWIG-1.3.22 - Removed runtime package
* Wed Mar 03 2004 Robert H De Vries
- Update to work with Fedora Core 1 rpm 4.2.1
* Wed Jul 24 2002 Sam Liddicott <sam@liddicott.com>
- Added runtime package of runtime libs
* Mon Sep 10 2001 Tony Seward <anthony.seward@ieee.org>
- Merge Red Hat's and Dustin Mitchell's .spec files.
- Install all of the examples in the documentation directory.
- Auto create the list of installed files.
