MyGUI/MyGUI.spec
Ferdinand Thiessen 4b2828bd8b Accepting request 789453 from home:cgiboudeaux:branches:games
- Run spec-cleaner
- Update to 3.4:
  * Added LanguageManager::getLanguages
  * Fix lost key focus event not being triggered sometimes
  * Fix inconsistency: _riseMouseButtonMove was using Layer
    coordinates (most of the time).
    _riseMouseButtonReleased/Pressed were using absolute coordinates.
  * Other InputManager events fixes.
  * Minor MacOS build fixes.
  * Cleaner and much faster logic for adding and removing
    render items (it was the performance bottleneck when
    working with many items on screen).
  * ScrollBar: Fixed wrong tracking area bug.
  * Button: make Button with key focus (can be set only
    manually through code) have highlighted state.
  * ItemBox: add possibility to not update ItemBox content
    when working with items (huge speed boost, when
    adding/removing many in single frame)
  * EditText: add support for alpha in text and text
    shadow colours (multiplied with widget's alpha).
  * ItemBox: add options to hide ItemBox scroll bars
    (same as for ScrollView and EditBox).
  * MultiListBox: slightly advanced and more flexible
    custom compare function.
  * EditBox: add Ctrl+Left/Right hotkey support (moves
    cursor to next word).
  * MultiListBox: add eventNotifyItem.
  * OpenGL3Platform: Added new rendering platform.
  * OpenGLESPlatform: Added new rendering platform.
  * Emscripten support (works for Ogre and all OpenGL

OBS-URL: https://build.opensuse.org/request/show/789453
OBS-URL: https://build.opensuse.org/package/show/games/MyGUI?expand=0&rev=22
2020-03-29 14:14:26 +00:00

314 lines
9.4 KiB
RPMSpec

#
# spec file for package MyGUI
#
# Copyright (c) 2020 SUSE LLC
# Copyright (c) 2014 B1 Systems GmbH, Vohburg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define capname MYGUI
%define _sover 3_4_0
Name: MyGUI
Version: 3.4.0
Release: 0
Summary: A GUI library for Ogre Rendering Engine
License: MIT
Group: Development/Tools/GUI Builders
URL: http://mygui.info/
Source: https://github.com/MyGUI/mygui/archive/MyGUI%{version}.tar.gz
Source1: %{name}.png
# PATCH-FIX-UPSTREAM MyGUI-lib_suffix.patch
Patch0: %{name}-lib_suffix.patch
# PATCH-FIX-UPSTREAM MyGUI-gcc47-visibility.patch
Patch1: %{name}-gcc47-visibility.patch
# PATCH-FIX-UPSTREAM MyGUI-libCommon-fixup.patch -- https://github.com/MyGUI/mygui/issues/157
Patch2: MyGUI-libCommon-fixup.patch
BuildRequires: cmake
BuildRequires: dejavu
BuildRequires: dos2unix
BuildRequires: doxygen
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: graphviz
BuildRequires: libOIS-devel
BuildRequires: libOgreMain-devel
BuildRequires: libX11-devel
# MyGUI wants to copy plugins.cfg installed by ogre-demos
BuildRequires: ogre-demos
BuildRequires: pkgconfig
BuildRequires: unzip
BuildRequires: update-desktop-files
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(uuid)
%description
MyGUI is a library for creating Graphical User Interfaces (GUIs)
for games and 3D applications.
MyGUI has overlays for text and for simple rectangles, allowing
uniting them in one batch.
The library supports plugins that allow you to create
dynamically-loaded custom controls or subsystems. Most subsystems are
expandable with plugins without the need to touch the core code. All
resources and settings are described in XML files. It is possible to
load resources like fonts, cursors, images, skins, etc. Forms
(layouts) via dynamically by using XML files.
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 is a library for creating Graphical User Interfaces (GUIs)
for games and 3D applications.
This package contains some demo applications for package MyGUI.
%package -n libMyGUIEngine%{_sover}
Summary: Shared library for MyGUI
Group: System/Libraries
%description -n libMyGUIEngine%{_sover}
MyGUI is a library for creating Graphical User Interfaces (GUIs)
for games and 3D applications.
This package contains the shared library for package MyGUI.
%package devel
Summary: Development files for MyGUI
Group: Development/Libraries/C and C++
Requires: libMyGUIEngine%{_sover} = %{version}
Requires: libOIS-devel
Requires: libOgreMain-devel
Requires: pkgconfig
Requires: pkgconfig(freetype2)
Requires: pkgconfig(uuid)
%description devel
MyGUI is a library for creating Graphical User Interfaces (GUIs)
for games and 3D applications.
This subpackage contains libraries and header files for developing
applications that want to make use of MyGUI.
%package devel-doc
Summary: Development documentation for MyGUI
Group: Documentation/HTML
BuildArch: noarch
%description devel-doc
MyGUI is a library for creating Graphical User Interfaces (GUIs)
for games and 3D applications.
This subpackage contains the development documentation for MyGUI.
%prep
%setup -q -n mygui-%{name}%{version}
%autopatch -p1
dos2unix *.txt COPYING.MIT
chmod 644 *.txt COPYING.MIT
%build
install -dm 755 build
# this is probably an error in OGRE packaging... but let's just fix the build.
export OGRE_LIBRARIES="`pkg-config --libs OGRE` -lboost_system"
%cmake \
-DCMAKE_BUILD_TYPE=release \
-DOGRE_LIBRARIES="$OGRE_LIBRARIES" \
-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 \
-DCMAKE_SKIP_RPATH=TRUE \
-DOGRE_CONFIG_DIR=%{_datadir}/OGRE
%cmake_build
pushd ../Docs
doxygen -s -g Doxyfile 2> /dev/null
doxygen Doxyfile
popd
%install
pushd build
%make_install
# Install libCommon manually as cmake does not install it
cp -a %{_lib}/libCommon.so* %{buildroot}%{_libdir}/
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=%{_prefix}/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
# don't ask me where this file went, it vanished with 12.1...
# for now simply ignore the error... :-)
rm Docs/html/installdox || true
%fdupes -s %{buildroot}
%post -n libMyGUIEngine%{_sover} -p /sbin/ldconfig
%postun -n libMyGUIEngine%{_sover} -p /sbin/ldconfig
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%doc *.txt
%license COPYING.MIT
%{_bindir}/%{name}.sh
%{_bindir}/FontEditor
%{_bindir}/ImageEditor
%{_bindir}/LayoutEditor
%{_bindir}/SkinEditor
%{_libdir}/libCommon.so.*
%dir %{_datadir}/%{capname}
%{_datadir}/%{capname}/*.cfg
%{_datadir}/%{capname}/*.xml
%dir %{_datadir}/%{capname}/Media
%{_datadir}/%{capname}/Media/Common/
%{_datadir}/%{capname}/Media/MyGUI_Media/
%dir %{_datadir}/%{capname}/Media/Tools
%dir %{_datadir}/%{capname}/Media/Tools/LayoutEditor
%dir %{_datadir}/%{capname}/Media/Tools/LayoutEditor/CodeTemplates
%{_datadir}/%{capname}/Media/Tools/FontEditor
%{_datadir}/%{capname}/Media/Tools/ImageEditor
%{_datadir}/%{capname}/Media/Tools/EditorFramework
%{_datadir}/%{capname}/Media/Tools/LayoutEditor/B*
%{_datadir}/%{capname}/Media/Tools/LayoutEditor/CodeGeneratorWindow.layout
%{_datadir}/%{capname}/Media/Tools/LayoutEditor/CodeTemplates/BaseLayoutCPP.xml
%{_datadir}/%{capname}/Media/Tools/LayoutEditor/E*
%{_datadir}/%{capname}/Media/Tools/LayoutEditor/I*
%{_datadir}/%{capname}/Media/Tools/LayoutEditor/M*
%{_datadir}/%{capname}/Media/Tools/LayoutEditor/P*
%{_datadir}/%{capname}/Media/Tools/LayoutEditor/S*
%{_datadir}/%{capname}/Media/Tools/LayoutEditor/T*
%{_datadir}/%{capname}/Media/Tools/LayoutEditor/W*
%{_datadir}/%{capname}/Media/Tools/SkinEditor
%{_datadir}/applications/FontViewer.desktop
%{_datadir}/applications/ImageSetViewer.desktop
%{_datadir}/applications/LayoutEditor.desktop
%{_datadir}/pixmaps/*.png
%files devel
%dir %{_includedir}/%{capname}
%{_includedir}/%{capname}/*.h
%{_libdir}/*.so
%{_libdir}/pkgconfig/*.pc
%{_datadir}/%{capname}/Media/Tools/LayoutEditor/CodeTemplates/BaseLayoutTemplate.cpp
%{_datadir}/%{capname}/Media/Tools/LayoutEditor/CodeTemplates/BaseLayoutTemplate.h
%files devel-doc
%doc Docs/html/*
%files -n libMyGUIEngine%{_sover}
%{_libdir}/libMyGUIEngine.so.*
%files demo
%{_bindir}/%{name}-Demo_*
%{_datadir}/%{capname}/Media/Demos/
%changelog