]> git.pld-linux.org Git - packages/fpc.git/blob - fpc.spec
- fixes from fedora, rel 2
[packages/fpc.git] / fpc.spec
1 #
2 # Conditional build:
3 %bcond_without  ide     # FPC IDE
4 %bcond_with     gdb     # GDB support in FPC IDE
5 %bcond_without  doc     # documentation
6
7 Summary:        Free Pascal - 32-bit Pascal compiler
8 Summary(pl.UTF-8):      Free Pascal - 32-bitowy kompilator języka Pascal
9 Summary(ru.UTF-8):      Свободный компилятор Pascal
10 Summary(uk.UTF-8):      Вільний компілятор Pascal
11 Name:           fpc
12 Version:        3.0.2
13 Release:        1
14 License:        GPL v2+
15 Group:          Development/Languages
16 Source0:        ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/source/%{name}build-%{version}.tar.gz
17 # Source0-md5:  c0fc1662dbe45c1e3f66ed780a443849
18 Source1:        ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/i386-linux/%{name}-%{version}.i386-linux.tar
19 # Source1-md5:  a58c3a2d7f8625d434abe9518e4ca38c
20 Source2:        ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/x86_64-linux/%{name}-%{version}.x86_64-linux.tar
21 # Source2-md5:  e5721c1843cff301c5b46abfee17c890
22 Patch0:         %{name}-skip-dev-dot.patch
23 Patch1:         %{name}-link.patch
24 Patch2:         %{name}-gdb.patch
25 Patch3:         fpc-r32374.patch
26 Patch4:         fpcdocs-r1260.patch
27 Patch5:         fpc-man.patch
28 Patch6:         fpc-r34749.patch
29 URL:            http://www.freepascal.org/
30 BuildRequires:  binutils-devel >= 3:2.17.50
31 BuildRequires:  gpm-devel
32 BuildRequires:  ncurses-devel
33 BuildRequires:  rpmbuild(macros) >= 1.213
34 %if %{with ide}
35 BuildRequires:  babeltrace-devel
36 BuildRequires:  expat-devel
37 %{?with_gdb:BuildRequires:      gdb-lib >= 7.2-7}
38 BuildRequires:  guile-devel
39 BuildRequires:  python-devel
40 BuildRequires:  readline-devel
41 BuildRequires:  libselinux-devel
42 BuildRequires:  xz-devel
43 BuildRequires:  zlib-devel
44 %endif
45 %if %{with doc}
46 BuildRequires:  tetex-fonts-jknappen
47 BuildRequires:  tetex-format-pdflatex
48 BuildRequires:  tetex-makeindex
49 BuildRequires:  tetex-metafont
50 BuildRequires:  texlive-xetex
51 %endif
52 Requires:       binutils
53 Provides:       fpc-bootstrap
54 ExclusiveArch:  %{ix86} %{x8664}
55 # TODO:
56 # %{arm} ftp://ftp.freepascal.org/pub/fpc/dist/3.0.0/arm-linux/fpc-3.0.0.arm-linux-raspberry1wq.tar
57 # ppc64 ftp://ftp.freepascal.org/pub/fpc/dist/3.0.0/powerpc64-linux/fpc-3.0.0.powerpc64-linux.tar
58 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
59
60 %description
61 Free Pascal is a 32-bit Pascal compiler. Free Pascal is designed to
62 be, as much as possible, source compatible with Turbo Pascal 7.0 and
63 Delphi 4 (although this goal is not yet attained), but it also
64 enhances these languages with elements like function overloading. And,
65 unlike these ancestors, it supports multiple platforms.
66
67 %description -l pl.UTF-8
68 Free Pascal to 32-bitowy kompilator języka Pascal. Free Pascal został
69 zaprojektowany by być (na ile to tylko możliwe) kompatybilnym z Turbo
70 Pascalem 7.0 oraz Delphi 4. Free Pascal również rozszerza te języki
71 elementami takimi jak przeciążanie funkcji.
72
73 %description -l ru.UTF-8
74 FPC -- 32-битный компилятор Pascal, совместимый с Turbo Pascal 7.0 и
75 Delphi. Поставляется с RTL (библиотекой времени исполнения), FCL
76 (библиотекой свободных компонент), интерфейсами к gtk, ncurses, zlib,
77 mysql, postgres, ibase.
78
79 %description -l uk.UTF-8
80 FPC -- 32-бітний компілятор Pascal, сумісний із Turbo Pascal 7.0 та
81 Delphi. Постачається із RTL (бібліотекою часу виконання), FCL
82 (бібліотекою вільних компонент), інтерфейсами до gtk, ncurses, zlib,
83 mysql, postgres, ibase.
84
85 %package ide
86 Summary:        Free Pascal IDE (integrated development environment)
87 Summary(pl.UTF-8):      Zintegrowane środowisko programistyczne (IDE) Free Pascala
88 Group:          Development/Tools
89 Requires:       %{name} = %{version}-%{release}
90
91 %description ide
92 Free Pascal IDE (integrated development environment).
93
94 %description ide -l pl.UTF-8
95 Zintegrowane środowisko programistyczne (IDE) Free Pascala.
96
97 %package src
98 Summary:        Free Pascal Compiler source files
99 Summary(pl.UTF-8):      Pliki źródłowe kompilatora Free Pascal
100 Group:          Development
101 Requires:       %{name} = %{version}-%{release}
102 Provides:       fpcsrc
103
104 %description src
105 Free Pascal Compiler source files.
106
107 %description src -l pl.UTF-8
108 Pliki źródłowe kompilatora Free Pascal.
109
110 %package examples
111 Summary:        Free Pascal Compiler exaple programs
112 Summary(pl.UTF-8):      Przykładowe programy do kompilatora Free Pascal
113 Group:          Documentation
114 Requires:       %{name} = %{version}-%{release}
115
116 %description examples
117 Free Pascal Compiler exaple programs.
118
119 %description examples -l pl.UTF-8
120 Przykładowe programy do kompilatora Free Pascal.
121
122 %package doc
123 Summary:        Free Pascal Compiler documentation
124 Summary(pl.UTF-8):      Dokumentacja do kompilatora Free Pascal
125 Group:          Documentation
126 # doesn't require base
127
128 %description doc
129 Documentation for fpc in PDF format.
130
131 %description doc -l pl.UTF-8
132 Dokumentacja do fpc w formacie PDF.
133
134 %prep
135 %setup -q -n %{name}build-%{version}
136 %patch0 -p1
137 %patch1 -p1
138 %patch2 -p1
139 %patch3 -p0
140 %patch4 -p0
141 %patch5 -p1
142 %patch6 -p0
143
144 %ifarch %{ix86}
145 tar xf %{SOURCE1}
146 %define _bver %{version}
147 %define _bname 386
148 %define _barch i386
149 %endif
150 %ifarch %{x8664}
151 tar xf %{SOURCE2}
152 %define _bver %{version}
153 %define _bname x64
154 %define _barch x86_64
155 %endif
156 %ifarch %{arm}
157 %define _bver %{version}
158 %define _bname arm
159 %define _barch arm
160 %endif
161 %ifarch ppc
162 %define _bver ?
163 %define _bname ppc
164 %define _barch powerpc
165 %endif
166 %ifarch ppc64
167 %define _bver %{version}
168 %define _bname ppc64
169 %define _barch powerpc64
170 %endif
171 %ifarch sparc sparcv9
172 %define _bver ?
173 %define _bname sparc
174 %define _barch sparc
175 %endif
176
177 cd %{name}-%{version}.%{_barch}-linux
178 tar xf binary.*-linux.tar
179 cd ..
180
181 mkdir bin
182 cd bin
183 for i in ../%{name}-%{version}.%{_barch}-linux/*.tar.gz ; do
184         tar xzf $i
185 done
186 ln -sf `pwd`/lib/%{name}/%{_bver}/ppc* bin
187 cd ..
188
189 find fpcsrc -name Makefile -o -name fpcmake.ini -o -name fpmkunit.pp | \
190         xargs %{__sed} -i -e 's|/usr/lib/|%{_libdir}/|g'
191
192 # remove precompiled objects from fpc-src
193 %{__rm} fpcsrc/rtl/palmos/m68k/{libcrt.a,*.o}
194
195 # save for fpc-src
196 install -d fpc-src
197 cp -af fpcsrc/* fpc-src
198 rm -r fpc-src/{ide,tests}
199
200 %if 0%{?debug:1}
201 find fpcsrc -name Makefile | xargs %{__sed} -i -e 's/-Xs//'
202 %endif
203
204 %build
205 # use ld.bfd
206 [ -d our-ld ] || install -d our-ld
207 ln -sf %{_bindir}/ld.bfd our-ld/ld
208 export PATH=$(pwd)/our-ld:$PATH
209
210 PP=`pwd`/bin/lib/%{name}/%{_bver}/ppc%{_bname}
211 NEWPP=`pwd`/fpcsrc/compiler/ppc%{_bname}
212 NEWFPDOC=`pwd`/fpcsrc/utils/fpdoc/bin/%{_barch}-linux/fpdoc
213 DATA2INC=`pwd`/fpcsrc/utils/bin/%{_barch}-linux/data2inc
214 FPCSRCDIR=`pwd`/fpcsrc
215
216 # DO NOT PUT $RPM_OPT_FLAGS IN OPT, IT DOES NOT WORK - baggins
217 case "%{_build_cpu}" in
218         i386|i486) OPTF="-OG2p1" ;;
219         i586) OPTF="-OG2p2" ;;
220         i686|athlon|pentium3|pentium4|x86_64|amd64|ia32e) OPTF="-Og2p3" ;;
221         *) OPTF="-O2" ;;
222 esac
223
224 %{__make} -C fpcsrc compiler_cycle \
225         OPT="$OPTF %{!?debug:-Xs} -n" \
226         RELEASE="1" \
227         BASEINSTALLDIR=%{_libdir}/%{name}/%{version} \
228         BININSTALLDIR=%{_bindir} \
229         DATA2INC="$DATA2INC" \
230         PP="$PP" \
231         FPC="$PP" \
232         LINKSMART=YES
233
234 %{__make} -C fpcsrc OPT="$OPTF %{!?debug:-Xs} -n" \
235         RELEASE="1" \
236         BASEINSTALLDIR=%{_libdir}/%{name}/%{version} \
237         BININSTALLDIR=%{_bindir} \
238         %{?with_gdb:GDBLIBDIR=%{_libdir}} \
239         %{!?with_gdb:NOGDB=YES} \
240         DATA2INC="$DATA2INC" \
241         PP="$NEWPP" \
242         FPC="$NEWPP" \
243         FPDOC=$NEWFPDOC \
244         LINKSMART=YES \
245         NODOCS=YES \
246         rtl_clean \
247         packages_clean \
248         utils_clean \
249         %{?with_ide: ide_clean installer_clean} \
250         rtl_all \
251         packages_all \
252         utils_all %{?with_ide:ide_all installer_all}
253
254 %if %{with doc}
255 export save_size=10000
256 %{__make} -j1 -C fpcdocs \
257         FPDOC=$NEWFPDOC \
258         FPC="$NEWPP" \
259         FPCSRCDIR="$FPCSRCDIR" \
260         pdf
261 %endif
262
263 %install
264 rm -rf $RPM_BUILD_ROOT
265 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_mandir},%{_datadir}/fpcsrc,%{_examplesdir}/fpc}
266
267 cp -af fpc-src/* $RPM_BUILD_ROOT%{_datadir}/fpcsrc
268
269 NEWPP=`pwd`/fpcsrc/compiler/ppc%{_bname}
270 FPCMAKE=`pwd`/fpcsrc/utils/fpcm/bin/%{_barch}-linux/fpcmake
271 %{__make} -j1 -C fpcsrc \
272         compiler_distinstall \
273         rtl_distinstall \
274         packages_distinstall \
275         %{?with_ide:ide_distinstall} \
276         utils_distinstall \
277         PP="$NEWPP" \
278         FPCMAKE="$FPCMAKE" \
279         SMARTLINK=YES \
280         FPCDIR=%{_libdir}/%{name}/%{version} \
281         INSTALL_PREFIX=$RPM_BUILD_ROOT%{_prefix} \
282         INSTALL_BINDIR=$RPM_BUILD_ROOT%{_bindir} \
283         INSTALL_LIBDIR=$RPM_BUILD_ROOT%{_libdir} \
284         INSTALL_DOCDIR=$RPM_BUILD_ROOT%{_docdir} \
285         INSTALL_MANDIR=$RPM_BUILD_ROOT%{_mandir} \
286         INSTALL_BASEDIR=$RPM_BUILD_ROOT%{_libdir}/%{name}/%{version} \
287         INSTALL_EXAMPLEDIR=$RPM_BUILD_ROOT%{_examplesdir}/%{name} \
288         INSTALL_MANDIR=$RPM_BUILD_ROOT%{_mandir} \
289         CODPATH=$RPM_BUILD_ROOT%{_libdir}/%{name}/lexyacc
290
291 %{__make} -j1 -C install/man installman \
292         INSTALL_MANDIR=$RPM_BUILD_ROOT%{_mandir}
293
294 ln -sf ../%{_lib}/%{name}/%{version}/ppc%{_bname} $RPM_BUILD_ROOT%{_bindir}
295
296 ln -sf %{_bindir}/ld.bfd $RPM_BUILD_ROOT%{_libdir}/%{name}/%{version}/ld
297
298 sh fpc-src/compiler/utils/samplecfg $RPM_BUILD_ROOT%{_libdir}/%{name}/%{version} $RPM_BUILD_ROOT%{_sysconfdir}
299 %{__sed} -i -e "s,$RPM_BUILD_ROOT,,g" $RPM_BUILD_ROOT%{_sysconfdir}/{*.cfg,fppkg/default}
300
301 %if "%{_lib}" != "lib"
302 %{__mv} $RPM_BUILD_ROOT%{_prefix}/lib/%{name}/lexyacc $RPM_BUILD_ROOT%{_libdir}/%{name}
303 %endif
304
305 # Fix examples, make seems to ignore INSTALL_EXAMPLEDIR
306 %{__mv} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/* $RPM_BUILD_ROOT%{_examplesdir}/fpc/
307
308 %ifnarch %{ix86}
309 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/ppc386.1
310 %endif
311 %ifnarch %{arm}
312 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/ppcarm.1
313 %endif
314 %ifnarch ppc ppc64
315 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/ppcppc.1
316 %endif
317 %ifnarch sparc sparcv9
318 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/ppcsparc.1
319 %endif
320 %ifnarch %{x8664}
321 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/ppcx64.1
322 %endif
323
324 %clean
325 rm -rf $RPM_BUILD_ROOT
326
327 %files
328 %defattr(644,root,root,755)
329 %attr(755,root,root) %{_bindir}/bin2obj
330 %attr(755,root,root) %{_bindir}/chmcmd
331 %attr(755,root,root) %{_bindir}/chmls
332 %attr(755,root,root) %{_bindir}/cldrparser
333 %attr(755,root,root) %{_bindir}/data2inc
334 %attr(755,root,root) %{_bindir}/delp
335 %attr(755,root,root) %{_bindir}/fd2pascal
336 %attr(755,root,root) %{_bindir}/fpc*
337 %attr(755,root,root) %{_bindir}/fpdoc
338 %attr(755,root,root) %{_bindir}/fppkg
339 %attr(755,root,root) %{_bindir}/fprcp
340 %attr(755,root,root) %{_bindir}/grab_vcsa
341 %attr(755,root,root) %{_bindir}/h2pas
342 %attr(755,root,root) %{_bindir}/h2paspp
343 %attr(755,root,root) %{_bindir}/instantfpc
344 %attr(755,root,root) %{_bindir}/makeskel
345 %attr(755,root,root) %{_bindir}/mkarmins
346 %attr(755,root,root) %{_bindir}/mkinsadd
347 %attr(755,root,root) %{_bindir}/mkx86ins
348 %attr(755,root,root) %{_bindir}/pas2fpm
349 %attr(755,root,root) %{_bindir}/pas2jni
350 %attr(755,root,root) %{_bindir}/pas2ut
351 %attr(755,root,root) %{_bindir}/plex
352 %attr(755,root,root) %{_bindir}/postw32
353 %attr(755,root,root) %{_bindir}/ppc%{_bname}
354 %attr(755,root,root) %{_bindir}/ppdep
355 %attr(755,root,root) %{_bindir}/ppudump
356 %attr(755,root,root) %{_bindir}/ppufiles
357 %attr(755,root,root) %{_bindir}/ppumove
358 %attr(755,root,root) %{_bindir}/ptop
359 %attr(755,root,root) %{_bindir}/pyacc
360 %attr(755,root,root) %{_bindir}/rmcvsdir
361 %attr(755,root,root) %{_bindir}/rstconv
362 %attr(755,root,root) %{_bindir}/unihelper
363 %attr(755,root,root) %{_bindir}/unitdiff
364 # TODO: move the below files to data dir
365 # - JSON resources(?)
366 %{_bindir}/makeskel.rsj
367 %{_bindir}/ptop.rsj
368 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/fpc.cfg
369 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/fppkg.cfg
370 %dir %{_sysconfdir}/fppkg
371 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/fppkg/default
372 %dir %{_libdir}/%{name}
373 %dir %{_libdir}/%{name}/%{version}
374 %dir %{_libdir}/%{name}/lexyacc
375 %{_libdir}/%{name}/%{version}/msg
376 %{_libdir}/%{name}/%{version}/units
377 %{_libdir}/%{name}/%{version}/fpmkinst
378 %{_libdir}/%{name}/lexyacc/*
379 %attr(755,root,root) %{_libdir}/%{name}/%{version}/ld
380 %attr(755,root,root) %{_libdir}/%{name}/%{version}/ppc%{_bname}
381 %attr(755,root,root) %{_libdir}/%{name}/%{version}/samplecfg
382 %{_mandir}/man1/bin2obj.1*
383 %{_mandir}/man1/chmcmd.1*
384 %{_mandir}/man1/chmls.1*
385 %{_mandir}/man1/data2inc.1*
386 %{_mandir}/man1/delp.1*
387 %{_mandir}/man1/fd2pascal.1*
388 %{_mandir}/man1/fp.1*
389 %{_mandir}/man1/fpc*.1*
390 %{_mandir}/man1/fpdoc.1*
391 %{_mandir}/man1/fppkg.1*
392 %{_mandir}/man1/fprcp.1*
393 %{_mandir}/man1/grab_vcsa.1*
394 %{_mandir}/man1/h2pas.1*
395 %{_mandir}/man1/h2paspp.1*
396 %{_mandir}/man1/makeskel.1*
397 %{_mandir}/man1/pas2fpm.1*
398 %{_mandir}/man1/pas2jni.1*
399 %{_mandir}/man1/pas2ut.1*
400 %{_mandir}/man1/plex.1*
401 %{_mandir}/man1/postw32.1*
402 %ifarch ppc64
403 %{_mandir}/man1/ppcppc.1*
404 %else
405 %{_mandir}/man1/ppc%{_bname}.1*
406 %endif
407 %{_mandir}/man1/ppdep.1*
408 %{_mandir}/man1/ppudump.1*
409 %{_mandir}/man1/ppufiles.1*
410 %{_mandir}/man1/ppumove.1*
411 %{_mandir}/man1/ptop.1*
412 %{_mandir}/man1/pyacc.1*
413 %{_mandir}/man1/rmcvsdir.1*
414 %{_mandir}/man1/rstconv.1*
415 %{_mandir}/man1/unitdiff.1*
416 %{_mandir}/man5/fpc.cfg.5*
417 %{_mandir}/man5/fpcmake.5*
418 %{_mandir}/man5/ptop.cfg.5*
419
420 %if %{with ide}
421 %files ide
422 %defattr(644,root,root,755)
423 %attr(755,root,root) %{_bindir}/fp
424 # TODO: move the below files to data dir
425 # - ANSI art file used by fp binary
426 %{_bindir}/fp.ans
427 # - IDE command templates
428 %{_bindir}/cvsco.tdf
429 %{_bindir}/cvsdiff.tdf
430 %{_bindir}/cvsup.tdf
431 %{_bindir}/grep.tdf
432 %{_bindir}/tpgrep.tdf
433 # - Pascal code skeletons
434 %{_bindir}/gplprog.pt
435 %{_bindir}/gplunit.pt
436 %{_bindir}/program.pt
437 %{_bindir}/unit.pt
438 %{_libdir}/%{name}/%{version}/ide
439 %endif
440
441 %files src
442 %defattr(644,root,root,755)
443 %{_datadir}/fpcsrc
444
445 %files examples
446 %defattr(644,root,root,755)
447 %{_examplesdir}/fpc
448
449 %if %{with doc}
450 %files doc
451 %defattr(644,root,root,755)
452 %doc fpcdocs/*.pdf
453 %endif
This page took 0.078686 seconds and 3 git commands to generate.