Add RPM .spec file

Tested on RHEL6.1 (with epel repository for dependencies).

make_release checks that that the version string in the .spec file is in
sync with the rest of the project and reminds the user to bump the
release string if necessary and to build/upload the RPM package.

Change-Id: I5f454f2a7301d1e0e120cb3c0e13a68d03bca917
diff --git a/scripts/ceres-solver.spec b/scripts/ceres-solver.spec
new file mode 100644
index 0000000..f8c7a9d
--- /dev/null
+++ b/scripts/ceres-solver.spec
@@ -0,0 +1,112 @@
+Name:           ceres-solver
+Version:        1.5.0
+# Release candidate versions are messy. Give them a release of
+# e.g. "0.1.0%{?dist}" for RC1 (and remember to adjust the Source0
+# URL). Non-RC releases go back to incrementing integers starting at 1.
+Release:        0.1.0%{?dist}
+Summary:        A non-linear least squares minimizer
+
+Group:          Development/Libraries
+License:        BSD
+URL:            http://code.google.com/p/ceres-solver/
+Source0:        http://%{name}.googlecode.com/files/%{name}-%{version}rc1.tar.gz
+BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+%if (0%{?rhel} <= 6)
+BuildRequires:  cmake28
+%else
+BuildRequires:  cmake
+%endif
+BuildRequires:  eigen3-devel
+BuildRequires:  suitesparse-devel
+# Use atlas for BLAS and LAPACK
+BuildRequires:  atlas-devel
+BuildRequires:  protobuf-devel
+BuildRequires:  gflags-devel
+BuildRequires:  glog-devel
+
+%description
+Ceres Solver is a portable C++ library that allows for modeling and solving
+large complicated nonlinear least squares problems. Features include:
+
+  - A friendly API: build your objective function one term at a time
+  - Automatic differentiation
+  - Robust loss functions
+  - Local parameterizations
+  - Threaded Jacobian evaluators and linear solvers
+  - Levenberg-Marquardt and Dogleg (Powell & Subspace) solvers
+  - Dense QR and Cholesky factorization (using Eigen) for small problems
+  - Sparse Cholesky factorization (using SuiteSparse) for large sparse problems
+  - Specialized solvers for bundle adjustment problems in computer vision
+  - Iterative linear solvers for general sparse and bundle adjustment problems
+  - Runs on Linux, Windows, Mac OS X and Android. An iOS port is underway
+
+Notable use of Ceres Solver is for the image alignment in Google Maps and for
+vehicle pose in Google Street View.
+
+
+%package        devel
+Summary:        A non-linear least squares minimizer
+Group:          Development/Libraries
+Requires:       %{name} = %{version}-%{release}
+
+%description    devel
+The %{name}-devel package contains libraries and header files for
+developing applications that use %{name}.
+
+
+%prep
+%setup -q
+
+%build
+mkdir build
+pushd build
+
+# Disable the compilation flags that rpmbuild macros try to apply to all
+# packages because it breaks the build since release 1.5.0rc1
+%define optflags ""
+%if (0%{?rhel} <= 6)
+%{cmake28} .. \
+%else
+%{cmake} .. \
+%endif
+    -DBLAS_LIB:FILEPATH=%{_libdir}/atlas/libatlas.so \
+    -DLAPACK_LIB:FILEPATH=%{_libdir}/atlas/liblapack.so
+make %{?_smp_mflags}
+
+
+%install
+rm -rf $RPM_BUILD_ROOT
+pushd build
+make install DESTDIR=$RPM_BUILD_ROOT
+find $RPM_BUILD_ROOT -name '*.la' -delete
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+
+%files
+%defattr(-,root,root,-)
+%doc
+%{_libdir}/*.so.*
+
+%files devel
+%defattr(-,root,root,-)
+%doc
+%{_includedir}/*
+%{_libdir}/*.so
+%{_libdir}/*.a
+
+
+%changelog
+* Sun Feb 24 2013 Taylor Braun-Jones <taylor@braun-jones.org> - 1.5.0-0.1.0
+- Bump version.
+
+* Sun Oct 14 2012 Taylor Braun-Jones <taylor@braun-jones.org> - 1.4.0-0
+- Initial creation