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
openSUSE Build Service is sponsored by