File solvespace.spec of Package solvespace
%define realname solvespace
%define srcext tar.xz
# Common info
Name: %{realname}
Version: 0
Release: wiz%{?extraver:0.}1%{?dist}
License: GPL-3.0
Group: Productivity/Graphics/CAD
URL: http://solvespace.com/
Summary: Parametric 2d/3d CAD
# Build-time parameters
BuildRequires: cmake >= 3.2.0
BuildRequires: git-core
BuildRequires: pkg-config
BuildRequires: gcc-c++
BuildRequires: gettext
BuildRequires: pkgconfig(zlib)
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(freetype2)
# GUI
BuildRequires: libspnav-devel
BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(fontconfig)
BuildRequires: pkgconfig(json-c)
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(gtkmm-3.0) >= 3.18 pkgconfig(pangomm-1.4) pkgconfig(x11)
%if 0%{?suse_version}
BuildRequires: update-desktop-files
%endif
BuildRoot: %{_tmppath}/%{name}-root
Source0: %{realname}-%{version}.%{srcext}
Source1: libdxfrw-master.%{srcext}
Source2: mimalloc-master.%{srcext}
%description
SOLVESPACE is a free (GPLv3) parametric 3d CAD tool. Applications include:
* modeling 3d parts — draw with extrudes, revolves, and
Boolean (union / difference) operations
* modeling 2d parts — draw the part as a single section,
and export DXF, PDF, SVG; use 3d assembly to verify fit
* 3d-printed parts — export the STL or other triangle mesh
expected by most 3d printers
* preparing CAM data — export 2d vector art for a waterjet machine
or laser cutter; or generate STEP or STL, for import into
third-party CAM software for machining
* mechanism design — use the constraint solver to simulate planar
or spatial linkages, with pin, ball, or slide joints
* plane and solid geometry — replace hand-solved trigonometry
and spreadsheets with a live dimensioned drawing
# Preparation step (unpackung and patching if necessary)
%prep
%setup -q -n %{realname}-%{version}%{?extraver} -a1 -a2
rm -rvf extlib/libdxfrw extlib/mimalloc
%{__ln_s} ../libdxfrw-master extlib/libdxfrw
%{__ln_s} ../mimalloc-master extlib/mimalloc
# Build step (compile/build binaries, documentation, etc)
%build
_CFLAGS='%{optflags} %{?gcc_lto}'
_LDFLAGS='-Wl,--as-needed -Wl,--strip-all -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro %{?gcc_lto}'
mkdir tmp_build
cd tmp_build
cmake .. \
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DCMAKE_INSTALL_LIBDIR=%{_libdir} \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_FLAGS_RELEASE="$_CFLAGS" \
-DCMAKE_C_FLAGS_RELEASE="$_CFLAGS" \
-DCMAKE_EXE_LINKER_FLAGS_RELEASE="$_LDFLAGS" \
-DCMAKE_MODULE_LINKER_FLAGS_RELEASE="$_LDFLAGS" \
-DCMAKE_SHARED_LINKER_FLAGS_RELEASE="$_LDFLAGS" \
-DCMAKE_VERBOSE_MAKEFILE=YES \
\
-DENABLE_TESTS=NO \
-DGUI=gtk3
%{__make} %{?_smp_mflags}
# Install built stuff
%install
%{__make} -C tmp_build install DESTDIR=%{buildroot}
%if 0%{?suse_version}
%suse_update_desktop_file -r -G '2D/3D CAD' %{name} Education Construction GTK
%endif
# Cleanup
%clean
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}
# Files list
%files
%defattr(-,root,root)
%license COPYING.txt
%doc CHANGELOG.md README.md THIRD_PARTIES.txt
%{_bindir}/*
%{_libdir}/libslvs.so.*
%{_datadir}/applications/solvespace.desktop
%{_datadir}/mime/packages/solvespace-slvs.xml
%{_datadir}/icons/hicolor/*/apps/solvespace.*
%{_datadir}/icons/hicolor/*/mimetypes/application.x-solvespace.*
%{_datadir}/pixmaps/solvespace-*.xpm
%{_datadir}/solvespace/
# Development stuff
%exclude %{_includedir}/slvs.h
%exclude %{_libdir}/libslvs.so
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%changelog