]>
Commit | Line | Data |
---|---|---|
bc88141a | 1 | # TODO |
9556f4c9 ER |
2 | #warning: Installed (but unpackaged) file(s) found: |
3 | # /usr/share/man/man1/lit.1.gz | |
bc88141a | 4 | # |
9556f4c9 ER |
5 | # Conditional build: |
6 | %bcond_without ocaml # ocaml binding | |
7 | %bcond_with apidocs # The doxygen docs are HUGE, so they are not built by default. | |
8 | %bcond_with tests # run tests | |
9 | ||
10 | %ifarch s390 s390x sparc64 | |
11 | # No ocaml on these arches | |
12 | %undefine with_ocaml | |
13 | %endif | |
14 | ||
aa11c230 | 15 | Summary: The Low Level Virtual Machine (An Optimizing Compiler Infrastructure) |
2326a99f | 16 | Summary(pl.UTF-8): Niskopoziomowa maszyna wirtualna (infrastruktura kompilatora optymalizującego) |
aa11c230 | 17 | Name: llvm |
9556f4c9 ER |
18 | Version: 2.8 |
19 | Release: 0.2 | |
aa11c230 | 20 | License: University of Illinois/NCSA Open Source License |
21 | Group: Development/Languages | |
7e30fbbc | 22 | Source0: http://llvm.org/releases/%{version}/%{name}-%{version}.tgz |
9556f4c9 ER |
23 | # Source0-md5: 220d361b4d17051ff4bb21c64abe05ba |
24 | Source1: http://llvm.org/releases/%{version}/clang-%{version}.tgz | |
25 | # Source1-md5: 10e14c901fc3728eecbd5b829e011b59 | |
d997b14b AM |
26 | # Data files should be installed with timestamps preserved |
27 | Patch3: %{name}-2.6-timestamp.patch | |
2326a99f | 28 | URL: http://llvm.org/ |
bc88141a | 29 | BuildRequires: bash |
d997b14b | 30 | BuildRequires: bison |
d997b14b | 31 | BuildRequires: flex |
9556f4c9 ER |
32 | %if %{with apidocs} |
33 | BuildRequires: doxygen | |
d997b14b | 34 | BuildRequires: graphviz |
9556f4c9 ER |
35 | %endif |
36 | %if %{with tests} | |
37 | BuildRequires: dejagnu | |
38 | BuildRequires: python | |
39 | BuildRequires: tcl-devel | |
40 | %endif | |
d997b14b | 41 | BuildRequires: groff |
bc88141a | 42 | BuildRequires: libltdl-devel |
d997b14b AM |
43 | BuildRequires: libstdc++-devel >= 5:3.4 |
44 | BuildRequires: ocaml-ocamldoc | |
356a0bbd ER |
45 | # gcc4 might be installed, but not current __cc |
46 | %if "%(echo %{cc_version} | cut -d. -f1,2)" < "3.4" | |
47 | BuildRequires: __cc >= 3.4 | |
48 | %endif | |
9556f4c9 ER |
49 | # LLVM is not supported on PPC64 |
50 | # http://llvm.org/bugs/show_bug.cgi?id=3729 | |
51 | ExcludeArch: ppc64 | |
aa11c230 | 52 | BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) |
53 | ||
356a0bbd | 54 | %define _sysconfdir /etc/%{name} |
021b3c3d | 55 | |
9556f4c9 ER |
56 | %define specflags_ppc -fno-var-tracking-assignments |
57 | ||
6832a5c5 ER |
58 | # strip corrupts: $RPM_BUILD_ROOT/usr/lib64/llvm-gcc/bin/llvm-c++ ... |
59 | %define _noautostrip .*/\\(libmud.*\\.a\\|bin/llvm-.*\\|lib.*++\\.a\\) | |
60 | ||
aa11c230 | 61 | %description |
62 | LLVM is a compiler infrastructure designed for compile-time, | |
63 | link-time, runtime, and idle-time optimization of programs from | |
64 | arbitrary programming languages. LLVM is written in C++ and has been | |
65 | developed since 2000 at the University of Illinois and Apple. It | |
66 | currently supports compilation of C and C++ programs, using front-ends | |
67 | derived from GCC 4.0.1. A new front-end for the C family of languages | |
68 | is in development. The compiler infrastructure includes mirror sets of | |
69 | programming tools as well as libraries with equivalent functionality. | |
70 | ||
2326a99f JB |
71 | %description -l pl.UTF-8 |
72 | LLVM to infrastruktura kompilatora zaprojektowana do optymalizacji | |
73 | czasu kompilowania, linkowania, działania i bezczynności programów w | |
74 | dowolnych językach programowania. Jest napisana w C++, rozwijana od | |
75 | roku 2000 przez Uniwersytet w Illinois i Apple. Aktualnie obsługuje | |
76 | kompilację programów w C i C++ przy użyciu frontendów wywodzących się | |
77 | z GCC 4.0.1. W trakcie tworzenia jest nowy frontend do języków z | |
78 | rodziny C. Infrastruktura kompilatora zawiera lustrzane zestawy | |
79 | narzędzi programistycznych oraz biblioteki z odpowiadającą narzędziom | |
80 | funkcjonalnością. | |
81 | ||
bc88141a ER |
82 | %package devel |
83 | Summary: Libraries and header files for LLVM | |
84 | Group: Development/Languages | |
85 | Requires: %{name} = %{version}-%{release} | |
86 | Requires: libstdc++-devel >= 6:3.4 | |
87 | ||
88 | %description devel | |
89 | This package contains library and header files needed to develop new | |
90 | native programs that use the LLVM infrastructure. | |
91 | ||
9556f4c9 ER |
92 | %package doc |
93 | Summary: Documentation for LLVM | |
94 | Group: Documentation | |
95 | # does not require base | |
bc88141a | 96 | |
9556f4c9 ER |
97 | %description doc |
98 | Documentation for the LLVM compiler infrastructure. | |
bc88141a | 99 | |
9556f4c9 ER |
100 | %package apidocs |
101 | Summary: API documentation for LLVM | |
102 | Group: Development/Languages | |
103 | Requires: %{name}-doc = %{version}-%{release} | |
bc88141a | 104 | |
9556f4c9 ER |
105 | %description apidocs |
106 | API documentation for the LLVM compiler infrastructure. | |
bc88141a | 107 | |
d997b14b AM |
108 | %package -n clang |
109 | Summary: A C language family frontend for LLVM | |
110 | License: NCSA | |
111 | Group: Development/Languages | |
112 | ||
113 | %description -n clang | |
114 | clang: noun 1. A loud, resonant, metallic sound. 2. The strident call | |
115 | of a crane or goose. 3. C-language family front-end toolkit. | |
116 | ||
117 | The goal of the Clang project is to create a new C, C++, Objective C | |
118 | and Objective C++ front-end for the LLVM compiler. Its tools are built | |
119 | as libraries and designed to be loosely-coupled and extendable. | |
120 | ||
121 | %package -n clang-analyzer | |
122 | Summary: A source code analysis framework | |
123 | License: NCSA | |
124 | Group: Development/Languages | |
125 | Requires: clang = %{version}-%{release} | |
126 | # not picked up automatically since files are currently not instaled | |
127 | # in standard Python hierarchies yet | |
128 | Requires: python | |
129 | ||
130 | %description -n clang-analyzer | |
131 | The Clang Static Analyzer consists of both a source code analysis | |
132 | framework and a standalone tool that finds bugs in C and Objective-C | |
133 | programs. The standalone tool is invoked from the command-line, and is | |
134 | intended to run in tandem with a build of a project or code base. | |
135 | ||
9556f4c9 ER |
136 | %package -n clang-devel |
137 | Summary: Header files for clang | |
138 | Group: Development/Languages | |
139 | Requires: clang = %{version}-%{release} | |
140 | ||
141 | %description -n clang-devel | |
142 | This package contains header files for the Clang compiler. | |
143 | ||
144 | %package -n clang-doc | |
145 | Summary: Documentation for Clang | |
146 | Group: Documentation | |
147 | Requires: %{name} = %{version}-%{release} | |
148 | ||
149 | %description -n clang-doc | |
150 | Documentation for the Clang compiler front-end. | |
151 | ||
152 | %package -n clang-apidocs | |
153 | Summary: API documentation for Clang | |
154 | Group: Development/Languages | |
155 | Requires: clang-doc = %{version}-%{release} | |
156 | ||
157 | %description -n clang-apidocs | |
158 | API documentation for the Clang compiler. | |
159 | ||
160 | %package ocaml | |
161 | Summary: OCaml binding for LLVM | |
162 | Group: Development/Libraries | |
163 | Requires: %{name} = %{version}-%{release} | |
164 | %requires_eq ocaml-runtime | |
165 | ||
166 | %description ocaml | |
167 | OCaml binding for LLVM. | |
168 | ||
169 | %package ocaml-devel | |
170 | Summary: Development files for %{name}-ocaml | |
171 | Group: Development/Libraries | |
172 | Requires: %{name}-devel = %{version}-%{release} | |
173 | Requires: %{name}-ocaml = %{version}-%{release} | |
174 | ||
175 | %description ocaml-devel | |
176 | The llvm-ocaml-devel package contains libraries and signature files | |
177 | for developing applications that use llvm-ocaml. | |
178 | ||
179 | %package ocaml-doc | |
180 | Summary: Documentation for LLVM's OCaml binding | |
181 | Group: Documentation | |
182 | Requires: %{name}-ocaml = %{version}-%{release} | |
183 | ||
184 | %description ocaml-doc | |
185 | HTML documentation for LLVM's OCaml binding. | |
186 | ||
aa11c230 | 187 | %prep |
d997b14b AM |
188 | %setup -q -a1 |
189 | mv clang-*.* tools/clang | |
9556f4c9 ER |
190 | %patch3 -p1 |
191 | ||
192 | install -d obj | |
aa11c230 | 193 | |
194 | %build | |
d997b14b | 195 | # Disabling assertions now, rec. by pure and needed for OpenGTL |
9556f4c9 | 196 | # TESTFIX no PIC on ix86: http://llvm.org/bugs/show_bug.cgi?id=3801 |
d997b14b | 197 | # |
bc88141a | 198 | # bash specific 'test a < b' |
9556f4c9 | 199 | cd obj |
d997b14b | 200 | bash ../%configure \ |
bc88141a ER |
201 | --libdir=%{_libdir}/%{name} \ |
202 | --datadir=%{_datadir}/%{name}-%{version} \ | |
d997b14b AM |
203 | %ifarch %{ix86} |
204 | --enable-pic=no \ | |
9556f4c9 ER |
205 | %endif |
206 | %if %{with apidocs} | |
207 | --enable-doxygen \ | |
d997b14b | 208 | %endif |
bc88141a | 209 | --disable-static \ |
d997b14b | 210 | --disable-assertions \ |
bc88141a ER |
211 | --enable-debug-runtime \ |
212 | --enable-jit \ | |
aa11c230 | 213 | --enable-optimized \ |
bc88141a ER |
214 | --enable-shared \ |
215 | --with-pic | |
216 | ||
d997b14b AM |
217 | # FIXME file this |
218 | # configure does not properly specify libdir | |
219 | sed -i 's|(PROJ_prefix)/lib|(PROJ_prefix)/%{_lib}/%{name}|g' Makefile.config | |
bc88141a | 220 | |
d997b14b AM |
221 | %{__make} \ |
222 | OPTIMIZE_OPTION="%{rpmcflags} %{rpmcppflags}" | |
aa11c230 | 223 | |
9556f4c9 ER |
224 | %if %{with test} |
225 | %{__make} check 2>&1 | tee llvm-testlog.txt | |
226 | %{__make} -C tools/clang test 2>&1 | tee clang-testlog.txt | |
227 | %endif | |
228 | ||
aa11c230 | 229 | %install |
230 | rm -rf $RPM_BUILD_ROOT | |
9556f4c9 | 231 | %{__make} -C obj -j1 install \ |
d997b14b | 232 | PROJ_docsdir=/moredocs \ |
aa11c230 | 233 | DESTDIR=$RPM_BUILD_ROOT |
234 | ||
d997b14b | 235 | # Static analyzer not installed by default: |
9556f4c9 ER |
236 | # http://clang-analyzer.llvm.org/installation#OtherPlatforms |
237 | install -d $RPM_BUILD_ROOT%{_libdir}/clang-analyzer | |
d997b14b AM |
238 | # create launchers |
239 | for f in scan-{build,view}; do | |
9556f4c9 ER |
240 | ln -s %{_libdir}/clang-analyzer/$f/$f $RPM_BUILD_ROOT%{_bindir}/$f |
241 | cp -pr tools/clang/tools/$f $RPM_BUILD_ROOT%{_libdir}/clang-analyzer | |
d997b14b AM |
242 | done |
243 | ||
d997b14b | 244 | # Move documentation back to build directory |
d997b14b AM |
245 | rm -rf moredocs |
246 | mv $RPM_BUILD_ROOT/moredocs . | |
9556f4c9 ER |
247 | rm -fv moredocs/*.tar.gz |
248 | rm -fv moredocs/ocamldoc/html/*.tar.gz | |
249 | ||
250 | # and separate the apidoc | |
251 | %if %{with apidocs} | |
252 | rm -rf apidoc clang-apidoc | |
253 | mv moredocs/html/doxygen apidoc | |
254 | cp -a tools/clang/docs/doxygen/html clang-apidoc | |
255 | %endif | |
d997b14b AM |
256 | |
257 | # And prepare Clang documentation | |
d997b14b | 258 | rm -rf clang-docs |
9556f4c9 | 259 | install -d clang-docs |
d997b14b | 260 | for f in LICENSE.TXT NOTES.txt README.txt TODO.txt; do |
9556f4c9 | 261 | ln tools/clang/$f clang-docs |
d997b14b | 262 | done |
021b3c3d | 263 | |
6832a5c5 | 264 | # Get rid of erroneously installed example files. |
9556f4c9 | 265 | rm -v $RPM_BUILD_ROOT%{_libdir}/%{name}/*LLVMHello.* |
6832a5c5 | 266 | |
d997b14b AM |
267 | # FIXME file this bug |
268 | sed -i 's,ABS_RUN_DIR/lib",ABS_RUN_DIR/%{_lib}/%{name}",' \ | |
269 | $RPM_BUILD_ROOT%{_bindir}/llvm-config | |
6832a5c5 | 270 | |
d997b14b AM |
271 | # remove documentation makefiles: |
272 | # they require the build directory to work | |
9556f4c9 ER |
273 | rm -rf moredocs/examples |
274 | cp -a examples moredocs/examples | |
275 | find moredocs/examples -name Makefile | xargs -0r rm -f | |
6832a5c5 | 276 | |
aa11c230 | 277 | %clean |
278 | rm -rf $RPM_BUILD_ROOT | |
279 | ||
2326a99f JB |
280 | %post -p /sbin/ldconfig |
281 | %postun -p /sbin/ldconfig | |
aa11c230 | 282 | |
283 | %files | |
284 | %defattr(644,root,root,755) | |
bc88141a | 285 | %doc CREDITS.TXT LICENSE.TXT README.txt |
9556f4c9 | 286 | %{?with_tests:%doc llvm-testlog.txt} |
a9beeab5 | 287 | %attr(755,root,root) %{_bindir}/bugpoint |
a9beeab5 JB |
288 | %attr(755,root,root) %{_bindir}/llc |
289 | %attr(755,root,root) %{_bindir}/lli | |
a9beeab5 | 290 | %attr(755,root,root) %{_bindir}/opt |
a8575aac | 291 | %attr(755,root,root) %{_bindir}/llvmc |
bc88141a ER |
292 | %attr(755,root,root) %{_bindir}/llvm-* |
293 | %exclude %attr(755,root,root) %{_bindir}/llvm-config | |
a9beeab5 JB |
294 | %{_mandir}/man1/bugpoint.1* |
295 | %{_mandir}/man1/llc.1* | |
296 | %{_mandir}/man1/lli.1* | |
d997b14b | 297 | %{_mandir}/man1/llvmc.1* |
a9beeab5 | 298 | %{_mandir}/man1/llvm-*.1* |
a9beeab5 JB |
299 | %{_mandir}/man1/llvmgcc.1* |
300 | %{_mandir}/man1/llvmgxx.1* | |
301 | %{_mandir}/man1/opt.1* | |
a8575aac | 302 | #%{_mandir}/man1/stkrc.1* |
a9beeab5 | 303 | %{_mandir}/man1/tblgen.1* |
bc88141a | 304 | |
bc88141a ER |
305 | %files devel |
306 | %defattr(644,root,root,755) | |
307 | %attr(755,root,root) %{_bindir}/llvm-config | |
308 | %{_includedir}/llvm | |
309 | %{_includedir}/llvm-c | |
d997b14b | 310 | %{_libdir}/%{name} |
bc88141a | 311 | |
9556f4c9 ER |
312 | %files doc |
313 | %defattr(644,root,root,755) | |
314 | %doc moredocs/examples moredocs/html | |
315 | ||
316 | %if %{with apidocs} | |
317 | %files apidocs | |
318 | %defattr(644,root,root,755) | |
319 | %doc apidoc/* | |
320 | %endif | |
321 | ||
d997b14b | 322 | %files -n clang |
bc88141a | 323 | %defattr(644,root,root,755) |
d997b14b | 324 | %doc clang-docs/* |
9556f4c9 | 325 | %{?with_tests:%doc clang-testlog.txt} |
d997b14b | 326 | %attr(755,root,root) %{_bindir}/clang* |
d997b14b | 327 | %attr(755,root,root) %{_bindir}/tblgen |
9556f4c9 | 328 | %attr(755,root,root) %{_bindir}/c-index-test |
d997b14b | 329 | %{_prefix}/lib/clang |
d997b14b | 330 | %{_mandir}/man1/clang.1.* |
d997b14b AM |
331 | |
332 | %files -n clang-analyzer | |
bc88141a | 333 | %defattr(644,root,root,755) |
d997b14b AM |
334 | %attr(755,root,root) %{_bindir}/scan-build |
335 | %attr(755,root,root) %{_bindir}/scan-view | |
ae49e501 | 336 | %dir %{_libdir}/clang-analyzer |
d997b14b | 337 | |
9556f4c9 ER |
338 | %dir %{_libdir}/clang-analyzer/scan-view |
339 | %attr(755,root,root) %{_libdir}/clang-analyzer/scan-view/scan-view | |
340 | %{_libdir}/clang-analyzer/scan-view/Resources | |
341 | %{_libdir}/clang-analyzer/scan-view/*.py | |
342 | ||
343 | %dir %{_libdir}/clang-analyzer/scan-build | |
344 | %{_libdir}/clang-analyzer/scan-build/*.css | |
345 | %{_libdir}/clang-analyzer/scan-build/*.js | |
346 | %attr(755,root,root) %{_libdir}/clang-analyzer/scan-build/scan-build | |
347 | %attr(755,root,root) %{_libdir}/clang-analyzer/scan-build/*-analyzer | |
348 | ||
349 | %files -n clang-devel | |
350 | %defattr(644,root,root,755) | |
351 | %{_includedir}/clang | |
352 | %{_includedir}/clang-c | |
353 | ||
354 | %files -n clang-doc | |
355 | %defattr(644,root,root,755) | |
356 | %doc tools/clang/docs/* | |
357 | ||
358 | %if %{with apidocs} | |
359 | %files -n clang-apidocs | |
360 | %defattr(644,root,root,755) | |
361 | %doc clang-apidoc/* | |
362 | %endif | |
363 | ||
364 | %if %{with ocaml} | |
d997b14b AM |
365 | %files ocaml |
366 | %defattr(644,root,root,755) | |
d997b14b AM |
367 | %{_libdir}/ocaml/*.cma |
368 | %{_libdir}/ocaml/*.cmi | |
369 | ||
370 | %files ocaml-devel | |
371 | %defattr(644,root,root,755) | |
372 | %{_libdir}/ocaml/*.a | |
373 | %{_libdir}/ocaml/*.cmx* | |
374 | %{_libdir}/ocaml/*.mli | |
9556f4c9 ER |
375 | |
376 | %files ocaml-doc | |
377 | %defattr(644,root,root,755) | |
378 | %doc moredocs/ocamldoc/html/* | |
379 | %endif |