%global commit 725c125a2180d3b61b762540d08222e8baa95df9 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: simbody Version: 3.3.1 Release: 1%{?dist} Summary: Multi-body Physics API License: ASL 2.0 URL: https://simtk.org/home/simbody Source0: https://github.com/%{name}/%{name}/archive/%{commit}/%{name}-%{version}-%{shortcommit}.tar.gz # Remove non-standard permissions from library installation # Not submitted upstream Patch0: %{name}-3.3.1-permissions.patch BuildRequires: blas-devel BuildRequires: cmake BuildRequires: doxygen BuildRequires: freeglut-devel BuildRequires: graphviz BuildRequires: lapack-devel BuildRequires: libXext-devel BuildRequires: libXi-devel BuildRequires: libXmu-devel BuildRequires: mesa-libGL-devel BuildRequires: mesa-libGLU-devel %description This project is a SimTK tool set providing general multi-body dynamics capability, that is, the ability to solve Newton's 2nd law F=ma in any set of generalized coordinates subject to arbitrary constraints. Simbody is provided as an open source, object-oriented C++ API and delivers high-performance, accuracy-controlled science/engineering-quality results. Simbody uses an advanced Featherstone-style formulation of rigid body mechanics to provide results in Order(n) time for any set of n generalized coordinates. This can be used for internal coordinate modeling of molecules, or for coarse-grained models based on larger chunks. It is also useful for large-scale mechanical models, such as neuro-muscular models of human gait, robotics, avatars, and animation. Simbody can also be used in real time interactive applications for bio-simulation as well as for virtual worlds and games. %package devel Summary: Development files for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} %description devel The %{name}-devel package contains libraries and header files for developing applications that use %{name}. %package doc Summary: Documentation for %{name} BuildArch: noarch %description doc The %{name}-doc package contains extensive API documentation for developing applications that use %{name}. %prep %setup -qn %{name}-%{commit} %patch0 -p0 -b .permissions # Get rid of windows dlls rm -fr Platform/Windows # Get rid of spurious executable permissions find ./ -name '*.cpp' -exec chmod -x {} ';' find ./ -name '*.h' -exec chmod -x {} ';' # Get rid of -O3 flags sed -i 's/-O3 //' CMakeLists.txt # Don't use sse cflags if not x86_64 %ifnarch x86_64 sed -i 's/-m${GCC_INST_SET}//g' CMakeLists.txt %endif %build mkdir build cd build %cmake .. \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DSimTK_INSTALL_PREFIX=/usr \ -DCMAKE_SHARED_LINKER_FLAGS="-Wl,--as-needed" \ %if %{_lib} == "lib64" -DLIB64="64" \ %endif %ifarch x86_64 -DBUILD_INST_SET:STRING="sse2" %else -DBUILD_INST_SET:STRING="" %endif cd .. make -C build %{?_smp_mflags} make -C build doxygen doxygen_Simbody doxygen_SimTKmath doxygen_SimTKcommon %{?_smp_mflags} %install make -C build install DESTDIR=%{buildroot} # Get rid of the sample CMakeLists.txt being installed rm -f %{buildroot}%{_datadir}/cmake/SampleCMakeLists.txt # Move FindSimbody.cmake to the correct CMake modules path mkdir -p %{buildroot}%{_datadir}/cmake/Modules mv %{buildroot}%{_datadir}/cmake/FindSimbody.cmake %{buildroot}%{_datadir}/cmake/Modules # Get rid of documentation in non-standard location rm -rf %{buildroot}/usr/doc # Move examples to /usr/share rm -rf %{buildroot}/usr/examples/bin mkdir -p %{buildroot}%{_datadir}/simbody mv %{buildroot}/usr/examples %{buildroot}%{_datadir}/simbody/ %check # Test cases are for informational purposes only make -C build test || /bin/true %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files %doc LICENSE README.md doc/LICENSE.txt %{_libdir}/*.so.* %{_bindir}/VisualizerGUI %files devel %{_libdir}/*.so %{_includedir}/simbody %{_includedir}/simmath %{_includedir}/SimTKcommon %{_includedir}/*.h %{_datadir}/cmake %{_datadir}/simbody %files doc %doc LICENSE %doc Simbody/doc/*.pdf %doc SimTKcommon/doc/*.pdf %doc SimTKmath/doc/*.pdf %changelog * Wed Feb 12 2014 Rich Mattes - 3.3.1-1 - Update to release 3.3.1 * Sat Oct 19 2013 Rich Mattes - 3.3-1 - Initial package