- Fix underlinkage of libraries - Use unified diffs for patches - Remove need for Sample apps wrapper scripts, add 0001-Add-default-for-WM5_PATH.patch - Clean up specfile OBS-URL: https://build.opensuse.org/request/show/999686 OBS-URL: https://build.opensuse.org/package/show/science/wildmagic5?expand=0&rev=2
252 lines
13 KiB
RPMSpec
252 lines
13 KiB
RPMSpec
#
|
|
# spec file for package wildmagic5
|
|
#
|
|
# Copyright (c) 2022 SUSE LLC
|
|
#
|
|
# 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/
|
|
#
|
|
|
|
%{!?__global_ldflags: %global __global_ldflags -Wl,-z,relro}
|
|
|
|
Name: wildmagic5
|
|
Version: 5.17
|
|
Release: 0
|
|
Summary: Wild Magic libraries
|
|
Group: Development/Libraries/C and C++
|
|
License: BSL-1.0
|
|
URL: https://www.geometrictools.com
|
|
Source: https://www.geometrictools.com/Downloads/WildMagic5p17.zip
|
|
# PATCH-FIX-OPENSUSE - Use CWD for sample output instead of readonly data dir
|
|
Patch0: %{name}-fix-SimplePendulum_output_files.patch
|
|
# PATCH-FIX-OPENSUSE - Use CWD for sample output instead of readonly data dir
|
|
Patch1: %{name}-fix-DistancePointEllipseEllipsoid.patch
|
|
# PATCH-FIX-OPENSUSE - Add LDFLAGS when linking sample apps
|
|
Patch2: %{name}-fix_ldflags.patch
|
|
# PATCH-FIX-OPENSUSE
|
|
Patch3: 0001-Add-default-for-WM5_PATH.patch
|
|
BuildRequires: dos2unix
|
|
BuildRequires: gcc-c++
|
|
BuildRequires: libX11-devel
|
|
BuildRequires: libXext-devel
|
|
BuildRequires: libstdc++-devel
|
|
BuildRequires: make
|
|
BuildRequires: pkgconfig(gl)
|
|
BuildRequires: pkgconfig(glu)
|
|
BuildRequires: unzip
|
|
BuildRequires: fdupes
|
|
|
|
%description
|
|
A library of source code for computing in the fields of graphics,
|
|
mathematics, physics, and image analysis.
|
|
Web page documentation:
|
|
geometrictools.com/Documentation/Documentation.html
|
|
|
|
%package devel
|
|
Summary: Development files for WildMagic5
|
|
Requires: %{name} = %{version}
|
|
|
|
%description devel
|
|
The %{name}-devel package contains libraries and header files for
|
|
developing applications that use %{name}.
|
|
|
|
%package samples
|
|
Summary: Samples files for %{name}
|
|
Requires: %{name}-data = %{version}
|
|
|
|
%description samples
|
|
Graphics, Physics, Imagics and Mathematics
|
|
directories containing sample files.
|
|
Execute the sample files in a dedicated directory because
|
|
they generate their own output files.
|
|
Web page documentation:
|
|
geometrictools.com/Documentation/Documentation.html
|
|
|
|
%package data
|
|
Summary: WildMagic5 data files
|
|
BuildArch: noarch
|
|
|
|
%description data
|
|
This package provides the %{name} data files.
|
|
They are generally required when either using the library
|
|
or developing with it or developing it.
|
|
|
|
%prep
|
|
%autosetup -n GeometricTools -N
|
|
|
|
dos2unix WildMagic5/SamplePhysics/SimplePendulum/SimplePendulum.cpp
|
|
dos2unix WildMagic5/SampleMathematics/DistancePointEllipseEllipsoid/DistancePointEllipseEllipsoid.cpp
|
|
dos2unix WildMagic5/SampleGraphics/makeapp.wm5
|
|
dos2unix WildMagic5/SamplePhysics/makeapp.wm5
|
|
dos2unix WildMagic5/SampleImagics/makeapp.wm5
|
|
dos2unix WildMagic5/SampleMathematics/makeapp.wm5
|
|
dos2unix WildMagic5/Documentation/ImFileFormat.txt
|
|
dos2unix WildMagic5/Documentation/StreamingChanges.txt
|
|
%patch0 -p1
|
|
%patch1 -p1
|
|
%patch2 -p1
|
|
%patch3 -p1
|
|
|
|
sed -i 's|CFLAGS += -O2 -DNDEBUG|CFLAGS += %{optflags} -pthread -DNDEBUG|g' WildMagic5/LibGraphics/Renderers/GlxRenderer/makerend.wm5
|
|
sed -i 's|CFLAGS += -O2 -DNDEBUG|CFLAGS += %{optflags} -pthread -DNDEBUG|g' WildMagic5/SamplePhysics/makeapp.wm5
|
|
sed -i 's|@@LDFLAGS@@|%{__global_ldflags}|g' WildMagic5/SamplePhysics/makeapp.wm5
|
|
sed -i 's|CFLAGS += -O2 -DNDEBUG|CFLAGS += %{optflags} -pthread -DNDEBUG|g' WildMagic5/SampleGraphics/makeapp.wm5
|
|
sed -i 's|@@LDFLAGS@@|%{__global_ldflags}|g' WildMagic5/SampleGraphics/makeapp.wm5
|
|
sed -i 's|CFLAGS += -O2 -DNDEBUG|CFLAGS += %{optflags} -pthread -DNDEBUG|g' WildMagic5/SampleImagics/makeapp.wm5
|
|
sed -i 's|@@LDFLAGS@@|%{__global_ldflags}|g' WildMagic5/SampleImagics/makeapp.wm5
|
|
sed -i 's|CFLAGS += -O2 -DNDEBUG|CFLAGS += %{optflags} -pthread -DNDEBUG|g' WildMagic5/SampleMathematics/makeapp.wm5
|
|
sed -i 's|@@LDFLAGS@@|%{__global_ldflags}|g' WildMagic5/SampleMathematics/makeapp.wm5
|
|
|
|
%build
|
|
shopt -s extglob
|
|
pushd WildMagic5
|
|
|
|
mkdir -p SDK/Include
|
|
mkdir -p SDK/Library/releaseDynamic
|
|
|
|
export CFLAGS="%{optflags} -pthread -DNDEBUG"
|
|
export LDFLAGS="%{__global_ldflags} -Wl,--no-undefined -lpthread -LSDK/Library/releaseDynamic"
|
|
|
|
# Build all library objects, but skip linking ("AR=true")
|
|
for lib in LibCore LibMathematics LibPhysics LibImagics LibGraphics; do
|
|
mkdir ${lib}/releaseDynamic
|
|
cp ${lib}/*.h SDK/Include/
|
|
for d in ${lib}/[A-Z]*([A-Za-z23]); do
|
|
if [ $d == "LibGraphics/Renderers" ]; then
|
|
%make_build CC=g++ AR="/usr/bin/true" CFG=releaseDynamic -f makerend.wm5 -C $d/GlxRenderer
|
|
else
|
|
%make_build CC=g++ AR="/usr/bin/true" CFG=releaseDynamic -f ../makeprj.wm5 -C $d
|
|
fi
|
|
done
|
|
done
|
|
|
|
# Manually link each library with appropriate flags, and with correct object order to avoid underlinkage
|
|
/usr/bin/g++ ${LDFLAGS} -shared -fPIC -Wl,-soname,libWm5Core.so.5 LibCore/releaseDynamic/*.o -o SDK/Library/releaseDynamic/libWm5Core.so.5.17 -lpthread
|
|
ln -s libWm5Core.so.5.17 SDK/Library/releaseDynamic/libWm5Core.so.5; ln -s libWm5Core.so.5.17 SDK/Library/releaseDynamic/libWm5Core.so
|
|
/usr/bin/g++ ${LDFLAGS} -shared -fPIC -Wl,-soname,libWm5Mathematics.so.5 LibMathematics/releaseDynamic/*.o -o SDK/Library/releaseDynamic/libWm5Mathematics.so.5.17 -lWm5Core
|
|
ln -s libWm5Mathematics.so.5.17 SDK/Library/releaseDynamic/libWm5Mathematics.so.5; ln -s libWm5Mathematics.so.5.17 SDK/Library/releaseDynamic/libWm5Mathematics.so
|
|
/usr/bin/g++ ${LDFLAGS} -shared -fPIC -Wl,-soname,libWm5Physics.so.5 LibPhysics/releaseDynamic/*.o -o SDK/Library/releaseDynamic/libWm5Physics.so.5.17 -lWm5Core -lWm5Mathematics
|
|
ln -s libWm5Physics.so.5.17 SDK/Library/releaseDynamic/libWm5Physics.so.5; ln -s libWm5Physics.so.5.17 SDK/Library/releaseDynamic/libWm5Physics.so
|
|
/usr/bin/g++ ${LDFLAGS} -shared -fPIC -Wl,-soname,libWm5Imagics.so.5 LibImagics/releaseDynamic/*.o -o SDK/Library/releaseDynamic/libWm5Imagics.so.5.17 -lWm5Core -lWm5Mathematics
|
|
ln -s libWm5Imagics.so.5.17 SDK/Library/releaseDynamic/libWm5Imagics.so.5; ln -s libWm5Imagics.so.5.17 SDK/Library/releaseDynamic/libWm5Imagics.so
|
|
/usr/bin/g++ ${LDFLAGS} -shared -fPIC -Wl,-soname,libWm5Graphics.so.5 LibGraphics/releaseDynamic/*.o -o SDK/Library/releaseDynamic/libWm5Graphics.so.5.17 -lWm5Core -lWm5Mathematics -lGL -LGLU
|
|
ln -s libWm5Graphics.so.5.17 SDK/Library/releaseDynamic/libWm5Graphics.so.5; ln -s libWm5Graphics.so.5.17 SDK/Library/releaseDynamic/libWm5Graphics.so
|
|
|
|
%global WILD_OPT_FLAGS %(echo "-c -D__LINUX__ -DWM5_USE_OPENGL %{optflags} -fPIC -pthread -DNDEBUG")
|
|
%make_build CC=g++ AR="/usr/bin/true" CFG=releaseDynamic -f makefile.wm5 -C LibApplications CFLAGS="%{WILD_OPT_FLAGS}"
|
|
/usr/bin/g++ ${LDFLAGS} -shared -fPIC -Wl,-soname,libWm5Applications.so.5 LibApplications/releaseDynamic/*.o -o SDK/Library/releaseDynamic/libWm5Applications.so.5.17 -lWm5Core -lWm5Mathematics -lWm5Graphics -lX11
|
|
|
|
%make_build CC=g++ CFG=releaseDynamic -f makefile.wm5 -C SampleGraphics
|
|
%make_build CC=g++ CFG=releaseDynamic -f makefile.wm5 -C SamplePhysics
|
|
%make_build CC=g++ CFG=releaseDynamic -f makefile.wm5 -C SampleImagics
|
|
%make_build CC=g++ CFG=releaseDynamic -f makefile.wm5 -C SampleMathematics
|
|
|
|
%install
|
|
mkdir -p %{buildroot}%{_libdir}
|
|
mkdir -p %{buildroot}%{_includedir}/WildMagic
|
|
mkdir -p %{buildroot}%{_datadir}/WildMagic/SampleImagics
|
|
mkdir -p %{buildroot}%{_datadir}/WildMagic/SampleMathematics
|
|
mkdir -p %{buildroot}%{_datadir}/WildMagic/SampleGraphics/BlendedAnimations
|
|
mkdir -p %{buildroot}%{_datadir}/WildMagic/SamplePhysics/SimplePendulum/Data
|
|
cp -a WildMagic5/SDK/Library/releaseDynamic/*.so* %{buildroot}%{_libdir}
|
|
cp -a WildMagic5/SDK/Include/* %{buildroot}%{_includedir}/WildMagic
|
|
cp -a WildMagic5/Data %{buildroot}%{_datadir}/WildMagic
|
|
|
|
mkdir -p %{buildroot}%{_libexecdir}/WildMagic/SampleGraphics
|
|
mkdir -p %{buildroot}%{_libexecdir}/WildMagic/SamplePhysics
|
|
mkdir -p %{buildroot}%{_libexecdir}/WildMagic/SampleImagics
|
|
mkdir -p %{buildroot}%{_libexecdir}/WildMagic/SampleMathematics
|
|
|
|
cp -a WildMagic5/SampleGraphics/BlendedAnimations/Data %{buildroot}%{_datadir}/WildMagic/BlendedAnimations
|
|
cp -a WildMagic5/SampleGraphics/BlendedTerrain/Shaders %{buildroot}%{_datadir}/WildMagic/BlendedTerrain
|
|
cp -a WildMagic5/SampleGraphics/BumpMaps/Shaders %{buildroot}%{_datadir}/WildMagic/BumpMaps
|
|
cp -a WildMagic5/SampleGraphics/Castle/Shaders %{buildroot}%{_datadir}/WildMagic/SampleGraphics/Castle
|
|
cp -a WildMagic5/SampleGraphics/Castle/Geometry %{buildroot}%{_datadir}/WildMagic/SampleGraphics/Castle
|
|
cp -a WildMagic5/SampleGraphics/Castle/Textures %{buildroot}%{_datadir}/WildMagic/SampleGraphics/Castle
|
|
cp -a WildMagic5/SampleGraphics/CubeMaps/Shaders %{buildroot}%{_datadir}/WildMagic/SampleGraphics/CubeMaps
|
|
cp -a WildMagic5/SampleGraphics/CubeMaps/Data %{buildroot}%{_datadir}/WildMagic/SampleGraphics/CubeMaps
|
|
cp -a WildMagic5/SampleGraphics/GlossMaps/Shaders %{buildroot}%{_datadir}/WildMagic/SampleGraphics/GlossMaps
|
|
cp -a WildMagic5/SampleGraphics/MorphControllers/Data %{buildroot}%{_datadir}/WildMagic/SampleGraphics/MorphControllers
|
|
cp -a WildMagic5/SampleGraphics/MorphFaces/Data %{buildroot}%{_datadir}/WildMagic/SampleGraphics/MorphFaces
|
|
cp -a WildMagic5/SampleGraphics/MultipleRenderTargets/Shaders %{buildroot}%{_datadir}/WildMagic/SampleGraphics/MultipleRenderTargets
|
|
cp -a WildMagic5/SampleGraphics/ProjectedTextures/Shaders %{buildroot}%{_datadir}/WildMagic/SampleGraphics/ProjectedTextures
|
|
cp -a WildMagic5/SampleGraphics/ShadowMaps/Shaders %{buildroot}%{_datadir}/WildMagic/SampleGraphics/ShadowMaps
|
|
cp -a WildMagic5/SampleGraphics/SkinnedBiped/Data %{buildroot}%{_datadir}/WildMagic/SampleGraphics/SkinnedBiped
|
|
cp -a WildMagic5/SampleGraphics/Skinning/Shaders %{buildroot}%{_datadir}/WildMagic/SampleGraphics/Skinning
|
|
cp -a WildMagic5/SampleGraphics/SphereMaps/Shaders %{buildroot}%{_datadir}/WildMagic/SampleGraphics/SphereMaps
|
|
mkdir -p %{buildroot}%{_datadir}/WildMagic/SampleGraphics/Terrains/Data
|
|
cp -a WildMagic5/SampleGraphics/Terrains/Data/* %{buildroot}%{_datadir}/WildMagic/SampleGraphics/Terrains/Data
|
|
cp -a WildMagic5/SampleGraphics/Terrains/Shaders %{buildroot}%{_datadir}/WildMagic/SampleGraphics/Terrains
|
|
cp -a WildMagic5/SampleGraphics/VolumeFog/Shaders %{buildroot}%{_datadir}/WildMagic/SampleGraphics/VolumeFog
|
|
cp -a WildMagic5/SampleGraphics/VolumeTextures/Shaders %{buildroot}%{_datadir}/WildMagic/SampleGraphics/VolumeTextures
|
|
|
|
cp -a WildMagic5/SampleImagics/GpuGaussianBlur2/Data %{buildroot}%{_datadir}/WildMagic/SampleImagics/GpuGaussianBlur2
|
|
cp -a WildMagic5/SampleImagics/GpuGaussianBlur2/Shaders %{buildroot}%{_datadir}/WildMagic/SampleImagics/GpuGaussianBlur2
|
|
cp -a WildMagic5/SampleImagics/GpuGaussianBlur3/Data %{buildroot}%{_datadir}/WildMagic/SampleImagics/GpuGaussianBlur3
|
|
cp -a WildMagic5/SampleImagics/GpuGaussianBlur3/Shaders %{buildroot}%{_datadir}/WildMagic/SampleImagics/GpuGaussianBlur3
|
|
|
|
cp -a WildMagic5/SampleMathematics/BSplineFitContinuous/Data %{buildroot}%{_datadir}/WildMagic/SampleMathematics/BSplineFitContinuous
|
|
mkdir -p %{buildroot}%{_datadir}/WildMagic/SampleMathematics/DistancePointEllipseEllipsoid
|
|
|
|
mkdir -p %{buildroot}%{_datadir}/WildMagic/SampleMathematics/NonlocalBlowup/Data
|
|
cp -a WildMagic5/SampleMathematics/NonlocalBlowup/Data/* %{buildroot}%{_datadir}/WildMagic/SampleMathematics/NonlocalBlowup/Data
|
|
|
|
mkdir -p %{buildroot}%{_datadir}/WildMagic/SampleMathematics/GeodesicHeightField/Data
|
|
cp -a WildMagic5/SampleMathematics/GeodesicHeightField/Data/* %{buildroot}%{_datadir}/WildMagic/SampleMathematics/GeodesicHeightField/Data
|
|
|
|
cp -a WildMagic5/SampleGraphics/BlendedAnimations/Data %{buildroot}%{_datadir}/WildMagic/SampleGraphics/BlendedAnimations
|
|
cp -p WildMagic5/SampleGraphics/BlendedTerrain/Shaders/BlendedTerrain.wmfx %{buildroot}%{_datadir}/WildMagic/Data/Im
|
|
cp -p WildMagic5/SampleGraphics/BumpMaps/Shaders/SimpleBumpMap.wmfx %{buildroot}%{_datadir}/WildMagic/Data/Im
|
|
|
|
pushd WildMagic5/SampleGraphics/BlendedAnimations/Data
|
|
find . -type f \( -name "*.bmp" \) -exec cp -a '{}' %{buildroot}%{_datadir}/WildMagic/Data/Bmp \;
|
|
find . -type f \( -name "*.txt" \) -exec cp -a '{}' %{buildroot}%{_datadir}/WildMagic/Data/Wmfx \;
|
|
find . -type f \( -name "*.wmtf" \) -exec cp -a '{}' %{buildroot}%{_datadir}/WildMagic/Data/Wmtf \;
|
|
popd
|
|
|
|
pushd WildMagic5/SampleGraphics/BlendedTerrain/Shaders
|
|
find . -type f \( -name "*.fx" \) -exec cp -a '{}' %{buildroot}%{_datadir}/WildMagic/Data/CgShaders \;
|
|
find . -type f \( -name "*.wmtf" \) -exec cp -a '{}' %{buildroot}%{_datadir}/WildMagic/Data/Wmtf \;
|
|
popd
|
|
pushd WildMagic5/SampleGraphics/BumpMaps/Shaders
|
|
find . -type f \( -name "*.fx" \) -exec cp -a '{}' %{buildroot}%{_datadir}/WildMagic/Data/CgShaders \;
|
|
find . -type f \( -name "*.wmtf" \) -exec cp -a '{}' %{buildroot}%{_datadir}/WildMagic/Data/Wmtf \;
|
|
popd
|
|
|
|
for bin in WildMagic5/Sample*/*/*.releaseDynamic ; do
|
|
install -m 755 -D -T ${bin} %{buildroot}%{_bindir}/WM5_`basename ${bin} .releaseDynamic`
|
|
done
|
|
|
|
%fdupes %{buildroot}%{_datadir}/WildMagic/
|
|
|
|
%post -p /sbin/ldconfig
|
|
%postun -p /sbin/ldconfig
|
|
|
|
%files
|
|
%license WildMagic5/License/LICENSE_1_0.txt
|
|
%doc WildMagic5/Documentation/WildMagic5Overview.pdf
|
|
%{_libdir}/*.so.*
|
|
|
|
%files devel
|
|
%{_includedir}/WildMagic/
|
|
%{_libdir}/*.so
|
|
|
|
%files samples
|
|
%{_bindir}/WM5_*
|
|
|
|
%files data
|
|
%doc WildMagic5/Documentation/*.txt
|
|
%doc WildMagic5/Documentation/Wm5InitTerm.pdf
|
|
%license WildMagic5/License/LICENSE_1_0.txt
|
|
%{_datadir}/WildMagic/
|
|
|
|
%changelog
|