MyGUI/MyGUI.spec
2011-07-02 13:40:29 +00:00

296 lines
7.9 KiB
RPMSpec

#
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%define capname MYGUI
%define _major 3.0
%define _minor 1
%define _sover 3
Name: MyGUI
Version: %{_major}.%{_minor}
Release: 1
License: LGPLv3
Summary: A GUI library for Ogre Rendering Engine
Url: http://my-gui.sourceforge.net/
Group: Development/Tools/GUI Builders
Source: %{name}_%{version}_source.zip
Source1: %{name}.png
Source90: %{name}-rpmlintrc
Patch0: %{name}-lib_suffix.patch
BuildRequires: Cg
BuildRequires: Cg-devel
BuildRequires: cmake
BuildRequires: dejavu
BuildRequires: dos2unix
BuildRequires: doxygen
BuildRequires: fdupes
BuildRequires: freetype2-devel
BuildRequires: gcc-c++
BuildRequires: graphviz
BuildRequires: libOIS-devel
BuildRequires: libOgreMain-devel
BuildRequires: libuuid-devel
BuildRequires: pkgconfig
BuildRequires: unzip
BuildRequires: update-desktop-files
Requires: dejavu
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
MyGUI, it is a GUI library for Ogre Rendering Engine. We pursue
next targets: GUI have to be fast, flexible and simple in using.
Speed
We are working above productivity. We have already own variant
of Overlays for the text and for the simple rectangles, allowing
uniting them in one batch. In the future it is planned some more
modifications for improvement of result.
Flexibility
The library supports plug-ins that allows to use your own widgets,
which can be loaded in realtime. Loading description of the majority
of parameters, from XML files, and as creation skins in process.
Loading skins, layouts, descriptions of a plane of overlapping,
cursors and fonts. Creation of skins in a code. Support of parsing
of some parameters for widget, for management of a condition widget,
for example, at loading from XML.
Simplicity
The interface for use is done as much as possible clear. Use of
delegates, this disappears necessity for inheritance for reception
of messages. In addition: support an alpha effects. The coloring
text in one line. Skins, consisting from unlimited quantity pieces.
Unlimited quantity of widget condition's (for developers).
This package contains ImageSetViewer and LayoutEditor.
%package demo
Summary: Some demo applications for MyGUI
Group: Development/Tools/GUI Builders
Requires: %{name} = %{version}
%description demo
MyGUI, it is a GUI library for Ogre Rendering Engine. We pursue
next targets: GUI have to be fast, flexible and simple in using.
This package contains some demo applications for package MyGUI.
%package -n libMyGUIEngine%{_sover}
Summary: Shared library for MyGUI
Group: System/Libraries
Provides: libmygui0 = 2.2.3
Obsoletes: libmygui0 < 2.2.3
%description -n libMyGUIEngine%{_sover}
MyGUI, it is a GUI library for Ogre Rendering Engine. We pursue
next targets: GUI have to be fast, flexible and simple in using.
This package contains the shared library for package MyGUI.
%package devel
Summary: Include Files and Libraries mandatory for Development
Group: Development/Libraries/C and C++
Requires: freetype2-devel
Requires: libMyGUIEngine%{_sover} = %{version}
Requires: libOIS-devel
Requires: libOgreMain-devel
Requires: libuuid-devel
%description devel
MyGUI, it is a GUI library for Ogre Rendering Engine. We pursue
next targets: GUI have to be fast, flexible and simple in using.
Include Files and Libraries mandatory for Development with
MyGUI.
%package devel-doc
Summary: Development documentation for MyGUI
Group: Documentation/HTML
%description devel-doc
MyGUI, it is a GUI library for Ogre Rendering Engine. We pursue
next targets: GUI have to be fast, flexible and simple in using.
Development documentation for package MyGUI.
%prep
%setup -q -n %{name}%{_major}
%patch0
dos2unix *.txt COPYING.LESSER
chmod 644 *.txt COPYING.LESSER
%build
install -dm 755 build
pushd build
cmake \
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DCMAKE_SKIP_RPATH=YES \
-DCMAKE_BUILD_TYPE=release \
%ifarch x86_64
-DLIB_SUFFIX=64 \
%endif
-DMYGUI_STATIC=FALSE \
-DMYGUI_USE_FREETYPE=TRUE \
-DMYGUI_BUILD_SAMPLES=TRUE \
-DMYGUI_BUILD_PLUGINS=TRUE \
-DMYGUI_BUILD_TOOLS=TRUE \
-DMYGUI_BUILD_WRAPPER=FALSE \
-DMYGUI_INSTALL_SAMPLES=TRUE \
-DMYGUI_INSTALL_TOOLS=TRUE \
-DMYGUI_INSTALL_DOCS=TRUE \
-DMYGUI_INSTALL_MEDIA=TRUE \
-DMYGUI_INSTALL_SAMPLES_SOURCE=TRUE \
-DMYGUI_FULL_RPATH=FALSE \
..
make %{?_smp_mflags}
popd
pushd Docs
doxygen -u 2> /dev/null
doxygen Doxyfile
popd
%install
pushd build
%make_install
popd
# rename demos to avoid duplicate names with other packages
pushd %{buildroot}%{_bindir}
demos=`ls -1 Demo_*`
for i in $demos; do
mv $i %{name}-$i
done
popd
# move those files to /usr/share/MYGUI
mv %{buildroot}%{_bindir}/plugins.cfg %{buildroot}%{_datadir}/%{capname}
mv %{buildroot}%{_bindir}/resources.xml %{buildroot}%{_datadir}/%{capname}
# adjust OGRE path
sed -i -e 's|PluginFolder=/usr/local/lib/OGRE|%{_libdir}/OGRE|g' %{buildroot}%{_datadir}/%{capname}/plugins.cfg
# wrapper-script for binaries
cat > %{name}.sh <<EOF
#! /bin/bash
if [ -z "\$1" ]; then
echo "missing parameter..."
echo ""
echo "usage:"
echo "\$0 LayoutEditor"
echo "\$0 ImageSetViewer"
echo "\$0 FontViewer"
echo ""
echo "or one of the installed demo applications:"
myDemos=\`ls -1 %{_bindir}/%{name}-Demo_*\`
echo \$myDemos | sed -e 's|%{_bindir}/||g'
exit 1
fi
# create local working directory
mkdir -p \$HOME/.%{name}
# link the resources to local dir
# just in case some new files appear (update)
ln -sf %{_datadir}/%{capname}/Media \$HOME/.%{name}
if [ ! -f \$HOME/.%{name}/plugins.cfg ]; then
# config should be user writeable
cp %{_datadir}/%{capname}/plugins.cfg \$HOME/.%{name}
fi
if [ ! -f \$HOME/.%{name}/resources.xml ]; then
cp %{_datadir}/%{capname}/resources.xml \$HOME/.%{name}
fi
# call binary from local working-directory
cd \$HOME/.%{name}
%{_bindir}/\$1
EOF
install -m 755 %{name}.sh \
%{buildroot}%{_bindir}
# use system fonts
pushd %{buildroot}%{_datadir}/%{capname}/Media/MyGUI_Media
ln -sf %{_datadir}/fonts/truetype/DejaVuSans.ttf .
ln -sf %{_datadir}/fonts/truetype/DejaVuSans-ExtraLight.ttf .
popd
# icon
install -dm 755 %{buildroot}%{_datadir}/pixmaps
install -m 644 %{SOURCE1} \
%{buildroot}%{_datadir}/pixmaps
# menu-entries
for i in LayoutEditor ImageSetViewer FontViewer; do
cat > $i.desktop << EOF
[Desktop Entry]
Name=MyGUI $i
GenericName=MyGUI $i
Comment=%{name} $i
Exec=%{name}.sh $i
Icon=%{name}
Terminal=false
Type=Application
EOF
%suse_update_desktop_file -i $i Development GUIDesigner
done
# remove unwanted files
rm -r %{buildroot}%{_datadir}/%{capname}/Media/UnitTests
rm -r %{buildroot}%{_datadir}/%{capname}/Media/Wrapper/WrapperBaseApp
rm Docs/html/installdox
%fdupes -s %{buildroot}
%post -n libMyGUIEngine%{_sover} -p /sbin/ldconfig
%postun -n libMyGUIEngine%{_sover} -p /sbin/ldconfig
%files
%defattr(-,root,root)
%doc *.txt COPYING.LESSER
%{_bindir}/%{name}.sh
%{_bindir}/FontViewer
%{_bindir}/ImageSetViewer
%{_bindir}/LayoutEditor
%dir %{_datadir}/%{capname}
%{_datadir}/%{capname}/*.cfg
%{_datadir}/%{capname}/*.xml
%dir %{_datadir}/%{capname}/Media
%{_datadir}/%{capname}/Media/Common/
%{_datadir}/%{capname}/Media/MyGUI_Media/
%{_datadir}/%{capname}/Media/Tools/
%{_datadir}/applications/FontViewer.desktop
%{_datadir}/applications/ImageSetViewer.desktop
%{_datadir}/applications/LayoutEditor.desktop
%{_datadir}/pixmaps/*.png
%files devel
%defattr(-,root,root)
%dir %{_includedir}/%{capname}
%{_includedir}/%{capname}/*.h
%{_libdir}/libMyGUIEngine.so
%{_libdir}/libMyGUI.OgrePlatform.a
%{_libdir}/pkgconfig/*.pc
%files devel-doc
%defattr(-,root,root)
%doc Docs/html/*
%files -n libMyGUIEngine%{_sover}
%defattr(-,root,root)
%{_libdir}/libMyGUIEngine.so.*
%files demo
%defattr(-,root,root)
%{_bindir}/%{name}-Demo_*
%{_libdir}/libPlugin_StrangeButton.so
#%dir %{_datadir}/%{capname}
#%dir %{_datadir}/%{capname}/Media
%{_datadir}/%{capname}/Media/Demos/
%changelog