File cmake.spec of Package cmake
%define realname cmake
%define realver 3.27.0
%define srcext tar.gz
%bcond_with ninja
%define vermajor %(awk -F. '{printf "%i.%i", $1, $2}' <<< %{realver})
# Vim data directory
%if 0%{?suse_version}
%define vimdir %{_datadir}/vim/site
%else
%define vimdir %{_datadir}/vim/vimfiles
%endif
# turn off the generation of debuginfo rpm (RH9) ??
%global debug_package %{nil}
# Common info
Name: %{realname}
Version: %{realver}
Release: wiz%{?extraver:0.}1%{?dist}
License: BSD-3-Clause
Group: Development/Tools/Building
URL: http://www.cmake.org/
Summary: Cross-Platform Makefile Generator
# Install-time parameters
Requires: pkg-config
Provides: cmake3 = %{version}-%{release}
Obsoletes: cmake3 < %{version}-%{release}
# Build-time parameters
BuildRequires: gcc-c++
BuildRequires: pkg-config
%if %{with ninja}
BuildRequires: ninja
%endif
BuildRequires: zlib-devel xz-devel
BuildRequires: libjsoncpp-devel
BuildRequires: libuv-devel >= 1.10.0
BuildRequires: ncurses-devel
BuildRequires: curl-devel
BuildRequires: libarchive-devel >= 3.1.0
BuildRequires: pkgconfig(Qt5Core) pkgconfig(Qt5Widgets)
%if 0%{?suse_version}
BuildRequires: update-desktop-files fdupes
BuildRequires: libexpat-devel libbz2-devel
%else
BuildRequires: expat-devel bzip2-devel
%endif
BuildRoot: %{_tmppath}/%{name}-root
Source0: https://github.com/Kitware/CMake/releases/download/v%{realver}/%{realname}-%{realver}%{?extraver}.%{srcext}
Source1: cmake.macros
%description
CMake provides developers with a means of building their project on
multiple platforms while writing only one build system configuration.
The developer writes a set of CMakeLists.txt files that are read by
CMake and used to generate a native build system for the current
environment. On unix platforms, Makefiles are generated.
%package gui
Group: Development/Tools/Building
Summary: Qt4 GUI for cmake
Requires: %{name} = %{version}-%{release}
%description gui
Qt4 GUI for cmake
# Preparation step (unpackung and patching if necessary)
%prep
%setup -q -n %{realname}-%{realver}%{?extraver}
%build
SRCDIR=%{_builddir}/%{realname}-%{realver}%{?extraver}
MANDIR="%{_mandir}"
DOCDIR="%{_defaultdocdir}/%{name}"
_CFLAGS='%{optflags} %{?gcc_lto}'
_LDFLAGS='-Wl,--as-needed -Wl,--strip-all -Wl,--no-undefined -Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack %{?gcc_lto}'
export CFLAGS="$_CFLAGS"
export CXXFLAGS="$_CFLAGS"
export LDFLAGS="$_LDFLAGS"
./configure \
--verbose \
--parallel=$(getconf _NPROCESSORS_ONLN) \
%if %{with ninja}
--generator=Ninja \
%endif
--system-libs \
--system-libarchive \
--no-system-librhash \
--qt-gui \
--no-debugger \
--prefix=%{_prefix} \
--docdir=${DOCDIR#%{_prefix}} \
--mandir=${MANDIR#%{_prefix}}
%if %{with ninja}
ninja -v %{?_smp_mflags}
%else
%{__make} %{?_smp_mflags}
%endif
%install
%if %{with ninja}
DESTDIR=%{buildroot} ninja -v install
%else
%{__make} install DESTDIR=%{buildroot}
%endif
%{__install} -m0644 %{S:1} -D %{buildroot}%{_rpmconfigdir}/macros.d/macros.cmake
%{__ln_s} cmake %{buildroot}%{_bindir}/cmake3
%{__install} -d -m755 %{buildroot}%{_libdir}/cmake
%{__install} -d -m755 %{buildroot}%{_datadir}/cmake
[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}%{_datadir}/doc
%if 0%{?suse_version}
%suse_update_desktop_file -G "Cross-platform buildsystem" cmake-gui Building Qt
%fdupes %{buildroot}%{_datadir}
%endif
# Fix schebang
%{__sed} -ri '1 s|#!.+$|#!/bin/bash|' %{buildroot}%{_datadir}/%{name}-%{vermajor}/Modules/Compiler/XL-Fortran/cpp
# Some cleanup
find %{buildroot}%{_datadir} -name \*.orig -print -delete
%clean
[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
%files
%defattr(-,root,root)
%license Copyright.txt
%doc README.rst
%{_rpmconfigdir}/macros.d/macros.cmake
%docdir %{_defaultdocdir}/%{name}/
%{_bindir}/ccmake
%{_bindir}/cmake
%{_bindir}/cmake3
%{_bindir}/cpack
%{_bindir}/ctest
%{_datadir}/%{name}-%{vermajor}/
%dir %{_datadir}/aclocal
%{_datadir}/aclocal/cmake.m4
%{_datadir}/mime/packages/cmakecache.xml
%dir %{_datadir}/bash-completion/completions
%dir %{_datadir}/bash-completion
%{_datadir}/bash-completion/completions/*
%dir %{_datadir}/emacs/site-lisp
%dir %{_datadir}/emacs
%{_datadir}/emacs/site-lisp/*
%dir %{_datadir}/vim/vimfiles/indent
%dir %{_datadir}/vim/vimfiles/syntax
%dir %{_datadir}/vim/vimfiles
%dir %{_datadir}/vim
%{_datadir}/vim/vimfiles/indent/*
%{_datadir}/vim/vimfiles/syntax/*
%dir %{_libdir}/cmake
%dir %{_datadir}/cmake
%exclude %{_datadir}/%{name}-%{vermajor}/Modules/.NoDartCoverage
%files gui
%defattr(-,root,root)
%{_bindir}/cmake-gui
%{_datadir}/applications/cmake-gui.desktop
%dir %{_datadir}/icons/hicolor/128x128/apps
%dir %{_datadir}/icons/hicolor/32x32/apps
%dir %{_datadir}/icons/hicolor/128x128
%dir %{_datadir}/icons/hicolor/32x32
%dir %{_datadir}/icons/hicolor
%{_datadir}/icons/hicolor/128x128/apps/CMakeSetup.png
%{_datadir}/icons/hicolor/32x32/apps/CMakeSetup.png
%changelog