]> git.pld-linux.org Git - packages/cmake.git/blob - cmake.spec
up to 3.27.6
[packages/cmake.git] / cmake.spec
1 # TODO:
2 # - system kwiml >= 1.0?
3 # - make lib64/libx32 patch changes applicable everywhere
4 # - any valid CMAKE_BUILD_TYPE causes overriding of our optflags
5 #   (and default non-verbose makefiles are hiding it!)
6 # - rpmldflags/rpmcppflags are not passed through %%cmake macro at all
7 #   (is there any standard way???)
8 # - FindJNI.cmake module is a PoS full of random incorrect paths,
9 #   needs lib64/libx32 awareness
10 #
11 # Conditional build:
12 %bcond_with     bootstrap       # use internal versions of some libraries
13 %bcond_without  gui             # gui package
14 %bcond_with     tests           # perform "make test"
15 %bcond_without  doc             # documentation
16
17 Summary:        Cross-platform, open-source make system
18 Summary(pl.UTF-8):      Wieloplatformowy system make o otwartych źródłach
19 Name:           cmake
20 Version:        3.27.6
21 Release:        1
22 License:        BSD
23 Group:          Development/Building
24 Source0:        https://cmake.org/files/v3.27/%{name}-%{version}.tar.gz
25 # Source0-md5:  900aad400c67bf40238e5c0119128549
26 Patch0:         %{name}-lib64.patch
27 Patch1:         %{name}-libx32.patch
28 Patch2:         %{name}-jni.patch
29 Patch3:         %{name}-findruby.patch
30 Patch4:         %{name}-findruby2.patch
31 Patch5:         disable-completness-check.patch
32 URL:            https://cmake.org/
33 # system zlib,bzip2,xz,zstd used only when without system libarchive
34 %if %{with gui}
35 BuildRequires:  Qt5Core-devel >= 5.0
36 BuildRequires:  Qt5Gui-devel >= 5.0
37 BuildRequires:  Qt5Widgets-devel >= 5.0
38 %endif
39 BuildRequires:  automake
40 BuildRequires:  cppdap-devel
41 BuildRequires:  curl-devel
42 BuildRequires:  expat-devel
43 BuildRequires:  jsoncpp-devel >= 1.6.2-2
44 BuildRequires:  libarchive-devel >= 3.3.3
45 %ifnarch %arch_with_atomics64
46 BuildRequires:  libatomic-devel
47 %endif
48 BuildRequires:  libstdc++-devel >= 6:4.7
49 BuildRequires:  libuv-devel >= 1.28.0
50 BuildRequires:  ncurses-devel > 5.9-3
51 BuildRequires:  ncurses-ext-devel > 5.9-3
52 BuildRequires:  nghttp2-devel
53 %{?with_gui:BuildRequires:      qt5-build >= 5.0}
54 %{?with_gui:BuildRequires:      qt5-qmake >= 5.0}
55 BuildRequires:  rhash-devel
56 BuildRequires:  rpm-build >= 4.6
57 BuildRequires:  rpmbuild(macros) >= 2.025
58 %{?with_doc:BuildRequires:      sphinx-pdg}
59 BuildRequires:  xz-devel
60 BuildRequires:  zlib-devel
61 BuildRequires:  zstd-devel
62 Requires:       filesystem >= 3.0-52
63 Requires:       libarchive >= 3.3.3
64 Requires:       libuv >= 1.28.0
65 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
66
67 %description
68 CMake is used to control the software compilation process using simple
69 platform and compiler independent configuration files. CMake generates
70 native makefiles and workspaces that can be used in the compiler
71 environment of your choice. CMake is quite sophisticated: it is
72 possible to support complex environments requiring system
73 configuration, pre-processor generation, code generation, and template
74 instantiation.
75
76 %description -l pl.UTF-8
77 CMake służy do sterowania procesem kompilacji oprogramowania przy
78 użyciu prostych plików konfiguracyjnych niezależnych od platformy i
79 kompilatora. CMake generuje natywne pliki makefile i workspace,
80 których można używać w wybranym środowisku kompilatora. CMake jest
81 dość wyrafinowany: może obsłużyć złożone środowiska wymagające
82 konfiguracji systemu, generowanie preprocesora, generowanie kodu i
83 dziedziczenie szablonów.
84
85 %package doc-html
86 Summary:        CMake documentation in HTML format
87 Summary(pl.UTF-8):      Dokumentacja do pakietu CMake w formacie HTML
88 Group:          Documentation
89
90 %description doc-html
91 CMake documentation in HTML format.
92
93 %description doc-html -l pl.UTF-8
94 Dokumentacja do pakietu CMake w formacie HTML.
95
96 %package gui
97 Summary:        Qt GUI for CMake
98 Summary(pl.UTF-8):      Graficzny interfejs użytkownika Qt dla CMake
99 Group:          Development/Tools
100 Requires(post,postun):  desktop-file-utils
101 Requires(post,postun):  gtk-update-icon-cache
102 Requires:       %{name} = %{version}-%{release}
103 Requires:       hicolor-icon-theme
104
105 %description gui
106 This package contains the Qt based GUI for CMake.
107
108 %description gui -l pl.UTF-8
109 Ten pakiet zawiera oparty na Qt graficzny interfejs użytkownika dla
110 CMake.
111
112 %package emacs
113 Summary:        Emacs mode for cmake files
114 Summary(pl.UTF-8):      Tryb Emacsa dla plików cmake'a
115 Group:          Development/Tools
116
117 %description emacs
118 Emacs mode for cmake files.
119
120 %description emacs -l pl.UTF-8
121 Tryb Emacsa dla plików cmake'a.
122
123 %package -n bash-completion-%{name}
124 Summary:        bash-completion for cmake
125 Summary(pl.UTF-8):      Bashowe dopełnianie parametrów dla cmake'a
126 Group:          Applications/Shells
127 Requires:       %{name} = %{version}-%{release}
128 Requires:       bash-completion >= 1:2.0
129 BuildArch:      noarch
130
131 %description -n bash-completion-%{name}
132 bash-completion for cmake.
133
134 %description -n bash-completion-%{name} -l pl.UTF-8
135 Bashowe dopełnianie parametrów dla cmake'a.
136
137 %prep
138 %setup -q
139 %if "%{_lib}" == "lib64"
140 %patch0 -p1
141 %endif
142 %if "%{_lib}" == "libx32"
143 %patch1 -p1
144 %endif
145 %patch2 -p1
146 %patch3 -p1
147 %patch4 -p1
148 %patch5 -p1
149
150 %{__sed} -i -e '1s,/usr/bin/env bash,/bin/bash,' \
151         Modules/Compiler/XL-Fortran/cpp
152
153 cat > "init.cmake" <<EOF
154 SET (CURSES_INCLUDE_PATH "/usr/include/ncurses" CACHE PATH " " FORCE)
155 SET (CMAKE_INSTALL_SYSCONFDIR "%{_sysconfdir}" CACHE PATH " " FORCE)
156 SET (CMAKE_INSTALL_DATADIR "%{_datadir}" CACHE PATH " " FORCE)
157 SET (CMAKE_SYSTEM_NAME "Linux" CACHE STRING " " FORCE)
158 SET (CMAKE_SYSTEM_VERSION "%(uname -r)" CACHE STRING " " FORCE)
159 SET (CMAKE_CROSSCOMPILING FALSE CACHE BOOL " " FORCE)
160 %ifarch x32
161 SET (CMAKE_SYSTEM_PROCESSOR "x86_64" CACHE STRING " " FORCE)
162 %else
163 SET (CMAKE_SYSTEM_PROCESSOR "%{_target_cpu}" CACHE STRING " " FORCE)
164 %endif
165 EOF
166
167 # cleanup backups after patching, modules are copied as-is
168 find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
169
170 %build
171 export CC="%{__cc}"
172 export CXX="%{__cxx}"
173 export CFLAGS="%{rpmcflags}"
174 export CXXFLAGS="%{rpmcxxflags}"
175 export LDFLAGS="%{rpmldflags}"
176 ./bootstrap \
177         --prefix=%{_prefix} \
178         --mandir=/share/man \
179         --datadir=/share/cmake \
180         --init=init.cmake \
181         %{!?with_bootstrap:--system-libs} \
182         %{?with_gui:--qt-gui} \
183         --qt-qmake=%{_bindir}/qmake-qt5 \
184         %{?with_doc:--sphinx-html} \
185         %{?with_doc:--sphinx-man} \
186         %{?__jobs:--parallel=%{__jobs}} \
187         --verbose
188
189 %{__make} \
190         VERBOSE=1
191
192 %{?with_tests:%{__make} test}
193
194 %install
195 rm -rf $RPM_BUILD_ROOT
196
197 %{__make} install \
198         DESTDIR=$RPM_BUILD_ROOT
199
200 # just a bit more recent than packaged in vim.spec
201 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/vim
202 # packaged as %doc
203 %{__rm} -r $RPM_BUILD_ROOT%{_prefix}/doc
204
205 %clean
206 rm -rf $RPM_BUILD_ROOT
207
208 %post gui
209 %update_desktop_database_post
210 %update_icon_cache hicolor
211
212 %postun gui
213 %update_desktop_database_postun
214 %update_icon_cache hicolor
215
216 %files
217 %defattr(644,root,root,755)
218 %doc Copyright.txt README.rst *.gif
219 %attr(755,root,root) %{_bindir}/ccmake
220 %attr(755,root,root) %{_bindir}/cmake
221 %attr(755,root,root) %{_bindir}/cpack
222 %attr(755,root,root) %{_bindir}/ctest
223 %if %{with doc}
224 %{_mandir}/man1/ccmake.1*
225 %{_mandir}/man1/cmake.1*
226 %{_mandir}/man1/cpack.1*
227 %{_mandir}/man1/ctest.1*
228 %{_mandir}/man7/cpack-generators.7*
229 %{_mandir}/man7/cmake-buildsystem.7*
230 %{_mandir}/man7/cmake-commands.7*
231 %{_mandir}/man7/cmake-compile-features.7*
232 %{_mandir}/man7/cmake-configure-log.7*
233 %{_mandir}/man7/cmake-developer.7*
234 %{_mandir}/man7/cmake-env-variables.7*
235 %{_mandir}/man7/cmake-file-api.7*
236 %{_mandir}/man7/cmake-generator-expressions.7*
237 %{_mandir}/man7/cmake-generators.7*
238 %{_mandir}/man7/cmake-language.7*
239 %{_mandir}/man7/cmake-modules.7*
240 %{_mandir}/man7/cmake-packages.7*
241 %{_mandir}/man7/cmake-policies.7*
242 %{_mandir}/man7/cmake-presets.7*
243 %{_mandir}/man7/cmake-properties.7*
244 %{_mandir}/man7/cmake-qt.7*
245 %{_mandir}/man7/cmake-server.7*
246 %{_mandir}/man7/cmake-toolchains.7*
247 %{_mandir}/man7/cmake-variables.7*
248 %{_datadir}/cmake/Help
249 %endif
250 # top cmake/Modules dirs belong to filesystem
251 %{_datadir}/cmake/Modules/.NoDartCoverage
252 %{_datadir}/cmake/Modules/*
253 %{_datadir}/cmake/Templates
254 %{_datadir}/cmake/include
255 %{_aclocaldir}/cmake.m4
256
257 %if %{with doc}
258 %files doc-html
259 %defattr(644,root,root,755)
260 %doc Utilities/Sphinx/html/*
261 %endif
262
263 %if %{with gui}
264 %files gui
265 %defattr(644,root,root,755)
266 %attr(755,root,root) %{_bindir}/cmake-gui
267 %{_datadir}/mime/packages/cmakecache.xml
268 %{_desktopdir}/cmake-gui.desktop
269 %{_iconsdir}/hicolor/128x128/apps/CMakeSetup.png
270 %{_iconsdir}/hicolor/32x32/apps/CMakeSetup.png
271 %if %{with doc}
272 %{_mandir}/man1/cmake-gui.1*
273 %endif
274 %endif
275
276 %files emacs
277 %defattr(644,root,root,755)
278 %{_datadir}/emacs/site-lisp/cmake-mode.el
279
280 %files -n bash-completion-%{name}
281 %defattr(644,root,root,755)
282 %{bash_compdir}/cmake
283 %{bash_compdir}/cpack
284 %{bash_compdir}/ctest
This page took 0.049086 seconds and 4 git commands to generate.