3 %bcond_with gdb # GDB support in FPC IDE
4 %bcond_without doc # documentation
6 Summary: Free Pascal - 32-bit Pascal compiler
7 Summary(pl.UTF-8): Free Pascal - 32-bitowy kompilator języka Pascal
8 Summary(ru.UTF-8): Свободный компилятор Pascal
9 Summary(uk.UTF-8): Вільний компілятор Pascal
14 Group: Development/Languages
15 Source0: ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/source/%{name}build-%{version}.tar.gz
16 # Source0-md5: 3681ae4a208be4f64ec65e832a9a702d
17 Source1: ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/i386-linux/%{name}-%{version}.i386-linux.tar
18 # Source1-md5: 18354e51309a34b0efe7702633568a1e
19 Source2: ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/x86_64-linux/%{name}-%{version}.x86_64-linux.tar
20 # Source2-md5: 0186779de0c9caee073fc1394afbee56
21 Patch0: %{name}-skip-dev-dot.patch
22 Patch1: %{name}-link.patch
23 Patch4: fpcdocs-r1260.patch
25 URL: http://www.freepascal.org/
26 BuildRequires: babeltrace-devel
27 BuildRequires: binutils-devel >= 3:2.17.50
28 BuildRequires: expat-devel
29 BuildRequires: gpm-devel
30 BuildRequires: guile-devel
31 BuildRequires: libselinux-devel
32 BuildRequires: ncurses-devel
33 BuildRequires: readline-devel
34 BuildRequires: rpmbuild(macros) >= 1.213
35 BuildRequires: xz-devel
36 BuildRequires: zlib-devel
38 BuildRequires: gdb-lib >= 7.2-7}
39 BuildRequires: python-devel
42 BuildRequires: tetex-fonts-jknappen
43 BuildRequires: tetex-format-pdflatex
44 BuildRequires: tetex-latex-imakeidx
45 BuildRequires: tetex-makeindex
46 BuildRequires: tetex-metafont
47 BuildRequires: texlive-latex-enumitem
48 BuildRequires: texlive-latex-ucs
49 BuildRequires: texlive-tex-xkeyval
50 BuildRequires: texlive-xetex
53 Provides: fpc-bootstrap
54 ExclusiveArch: %{ix86} %{x8664}
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)
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.
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.
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.
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.
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}
92 Free Pascal IDE (integrated development environment).
94 %description ide -l pl.UTF-8
95 Zintegrowane środowisko programistyczne (IDE) Free Pascala.
98 Summary: Free Pascal Compiler source files
99 Summary(pl.UTF-8): Pliki źródłowe kompilatora Free Pascal
101 Requires: %{name} = %{version}-%{release}
105 Free Pascal Compiler source files.
107 %description src -l pl.UTF-8
108 Pliki źródłowe kompilatora Free Pascal.
111 Summary: Free Pascal Compiler exaple programs
112 Summary(pl.UTF-8): Przykładowe programy do kompilatora Free Pascal
114 Requires: %{name} = %{version}-%{release}
116 %description examples
117 Free Pascal Compiler exaple programs.
119 %description examples -l pl.UTF-8
120 Przykładowe programy do kompilatora Free Pascal.
123 Summary: Free Pascal Compiler documentation
124 Summary(pl.UTF-8): Dokumentacja do kompilatora Free Pascal
126 # doesn't require base
129 Documentation for fpc in PDF format.
131 %description doc -l pl.UTF-8
132 Dokumentacja do fpc w formacie PDF.
135 %setup -q -n %{name}build-%{version}
143 %define _bver %{version}
149 %define _bver %{version}
151 %define _barch x86_64
154 %define _bver %{version}
161 %define _barch powerpc
164 %define _bver %{version}
166 %define _barch powerpc64
168 %ifarch sparc sparcv9
174 cd %{name}-%{version}.%{_barch}-linux
175 tar xf binary.*-linux.tar
180 for i in ../%{name}-%{version}.%{_barch}-linux/*.tar.gz ; do
183 ln -sf `pwd`/lib/%{name}/%{_bver}/ppc* bin
186 find fpcsrc -name Makefile -o -name fpcmake.ini -o -name fpmkunit.pp | \
187 xargs %{__sed} -i -e 's|/usr/lib/|%{_libdir}/|g'
189 # remove precompiled objects from fpc-src
190 %{__rm} fpcsrc/rtl/palmos/m68k/{libcrt.a,*.o}
194 cp -af fpcsrc/* fpc-src
198 find fpcsrc -name Makefile | xargs %{__sed} -i -e 's/-Xs//'
201 %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+bash(\s|$),#!/bin/bash\1,' \
202 fpc-src/packages/fpmkunit/examples/ppu2fpmake.sh \
203 fpc-src/packages/gdbint/gen-gdblib-inc.sh \
204 fpc-src/packages/gtk2/src/gtk2x11/scripts/gdkx11_h2pas.sh \
205 fpc-src/rtl/unix/scripts/check_consts.sh \
206 fpc-src/rtl/unix/scripts/check_errno.sh \
207 fpc-src/rtl/unix/scripts/check_errnostr.sh \
208 fpc-src/rtl/unix/scripts/check_sys.sh
211 PP=`pwd`/bin/lib/%{name}/%{_bver}/ppc%{_bname}
212 NEWPP=`pwd`/fpcsrc/compiler/ppc%{_bname}
213 NEWFPDOC=`pwd`/fpcsrc/utils/fpdoc/bin/%{_barch}-linux/fpdoc
214 DATA2INC=`pwd`/fpcsrc/utils/bin/%{_barch}-linux/data2inc
215 FPCSRCDIR=`pwd`/fpcsrc
217 # DO NOT PUT $RPM_OPT_FLAGS IN OPT, IT DOES NOT WORK - baggins
218 case "%{_build_cpu}" in
219 i386|i486) OPTF="-OG2p1" ;;
220 i586) OPTF="-OG2p2" ;;
221 i686|athlon|pentium3|pentium4|x86_64|amd64|ia32e) OPTF="-Og2p3" ;;
225 %{__make} -C fpcsrc compiler_cycle \
226 OPT="$OPTF -k--build-id -gl -gw %{!?debug:-Xs} -n" \
228 BASEINSTALLDIR=%{_libdir}/%{name}/%{version} \
229 BININSTALLDIR=%{_bindir} \
230 DATA2INC="$DATA2INC" \
235 %{__make} -C fpcsrc \
236 OPT="$OPTF -k--build-id -gl -gw %{!?debug:-Xs} -n" \
238 BASEINSTALLDIR=%{_libdir}/%{name}/%{version} \
239 BININSTALLDIR=%{_bindir} \
240 %{?with_gdb:GDBLIBDIR=%{_libdir}} \
241 %{!?with_gdb:NOGDB=YES} \
242 DATA2INC="$DATA2INC" \
258 export save_size=10000
259 %{__make} -j1 -C fpcdocs \
262 FPCSRCDIR="$FPCSRCDIR" \
267 rm -rf $RPM_BUILD_ROOT
268 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_mandir},%{_datadir}/fpcsrc,%{_examplesdir}/fpc}
270 cp -af fpc-src/* $RPM_BUILD_ROOT%{_datadir}/fpcsrc
272 NEWPP=`pwd`/fpcsrc/compiler/ppc%{_bname}
273 FPCMAKE=`pwd`/fpcsrc/utils/fpcm/bin/%{_barch}-linux/fpcmake
274 %{__make} -j1 -C fpcsrc \
275 compiler_distinstall \
277 packages_distinstall \
282 FPCDIR=%{_libdir}/%{name}/%{version} \
283 INSTALL_PREFIX=$RPM_BUILD_ROOT%{_prefix} \
284 INSTALL_BINDIR=$RPM_BUILD_ROOT%{_bindir} \
285 INSTALL_LIBDIR=$RPM_BUILD_ROOT%{_libdir} \
286 INSTALL_DOCDIR=$RPM_BUILD_ROOT%{_docdir} \
287 INSTALL_MANDIR=$RPM_BUILD_ROOT%{_mandir} \
288 INSTALL_BASEDIR=$RPM_BUILD_ROOT%{_libdir}/%{name}/%{version} \
289 INSTALL_EXAMPLEDIR=$RPM_BUILD_ROOT%{_examplesdir}/%{name} \
290 INSTALL_MANDIR=$RPM_BUILD_ROOT%{_mandir} \
291 CODPATH=$RPM_BUILD_ROOT%{_libdir}/%{name}/lexyacc
293 %{__make} -j1 -C install/man installman \
294 INSTALL_MANDIR=$RPM_BUILD_ROOT%{_mandir}
296 ln -sf ../%{_lib}/%{name}/%{version}/ppc%{_bname} $RPM_BUILD_ROOT%{_bindir}
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}
301 %if "%{_lib}" != "lib"
302 %{__mv} $RPM_BUILD_ROOT%{_prefix}/lib/%{name}/lexyacc $RPM_BUILD_ROOT%{_libdir}/%{name}
305 # Fix examples, make seems to ignore INSTALL_EXAMPLEDIR
306 %{__mv} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/* $RPM_BUILD_ROOT%{_examplesdir}/fpc/
309 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/ppc386.1
312 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/ppcarm.1
315 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/ppcppc.1
317 %ifnarch sparc sparcv9
318 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/ppcsparc.1
321 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/ppcx64.1
325 rm -rf $RPM_BUILD_ROOT
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}/compileserver
334 %attr(755,root,root) %{_bindir}/data2inc
335 %attr(755,root,root) %{_bindir}/delp
336 %attr(755,root,root) %{_bindir}/fd2pascal
337 %attr(755,root,root) %{_bindir}/fpc*
338 %attr(755,root,root) %{_bindir}/fpdoc
339 %attr(755,root,root) %{_bindir}/fppkg
340 %attr(755,root,root) %{_bindir}/fprcp
341 %attr(755,root,root) %{_bindir}/grab_vcsa
342 %attr(755,root,root) %{_bindir}/h2pas
343 %attr(755,root,root) %{_bindir}/h2paspp
344 %attr(755,root,root) %{_bindir}/instantfpc
345 %attr(755,root,root) %{_bindir}/json2pas
346 %attr(755,root,root) %{_bindir}/makeskel
347 %attr(755,root,root) %{_bindir}/mka64ins
348 %attr(755,root,root) %{_bindir}/mkarmins
349 %attr(755,root,root) %{_bindir}/mkinsadd
350 %attr(755,root,root) %{_bindir}/mkx86ins
351 %attr(755,root,root) %{_bindir}/pas2fpm
352 %attr(755,root,root) %{_bindir}/pas2jni
353 %attr(755,root,root) %{_bindir}/pas2js
354 %attr(755,root,root) %{_bindir}/pas2ut
355 %attr(755,root,root) %{_bindir}/plex
356 %attr(755,root,root) %{_bindir}/postw32
357 %attr(755,root,root) %{_bindir}/ppc%{_bname}
358 %attr(755,root,root) %{_bindir}/ppdep
359 %attr(755,root,root) %{_bindir}/ppudump
360 %attr(755,root,root) %{_bindir}/ppufiles
361 %attr(755,root,root) %{_bindir}/ppumove
362 %attr(755,root,root) %{_bindir}/ptop
363 %attr(755,root,root) %{_bindir}/pyacc
364 %attr(755,root,root) %{_bindir}/rmcvsdir
365 %attr(755,root,root) %{_bindir}/rstconv
366 %attr(755,root,root) %{_bindir}/unihelper
367 %attr(755,root,root) %{_bindir}/unitdiff
368 %attr(755,root,root) %{_bindir}/webidl2pas
369 # TODO: move the below files to data dir
370 # - JSON resources(?)
371 %{_bindir}/makeskel.rsj
373 %{_bindir}/pas2ut.rsj
374 %{_bindir}/rstconv.rsj
375 %{_bindir}/unitdiff.rsj
376 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/fpc.cfg
377 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/fppkg.cfg
378 %dir %{_sysconfdir}/fppkg
379 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/fppkg/default
380 %dir %{_libdir}/%{name}
381 %dir %{_libdir}/%{name}/%{version}
382 %dir %{_libdir}/%{name}/lexyacc
383 %{_libdir}/%{name}/%{version}/msg
384 %{_libdir}/%{name}/%{version}/units
385 %{_libdir}/%{name}/%{version}/fpmkinst
386 %{_libdir}/%{name}/lexyacc/*
387 %attr(755,root,root) %{_libdir}/%{name}/%{version}/ppc%{_bname}
388 %attr(755,root,root) %{_libdir}/%{name}/%{version}/samplecfg
389 %attr(755,root,root) %{_libdir}/libpas2jslib.so
390 %{_mandir}/man1/bin2obj.1*
391 %{_mandir}/man1/chmcmd.1*
392 %{_mandir}/man1/chmls.1*
393 %{_mandir}/man1/data2inc.1*
394 %{_mandir}/man1/delp.1*
395 %{_mandir}/man1/fd2pascal.1*
396 %{_mandir}/man1/fp.1*
397 %{_mandir}/man1/fpc*.1*
398 %{_mandir}/man1/fpdoc.1*
399 %{_mandir}/man1/fppkg.1*
400 %{_mandir}/man1/fprcp.1*
401 %{_mandir}/man1/grab_vcsa.1*
402 %{_mandir}/man1/h2pas.1*
403 %{_mandir}/man1/h2paspp.1*
404 %{_mandir}/man1/makeskel.1*
405 %{_mandir}/man1/pas2fpm.1*
406 %{_mandir}/man1/pas2jni.1*
407 %{_mandir}/man1/pas2ut.1*
408 %{_mandir}/man1/plex.1*
409 %{_mandir}/man1/postw32.1*
411 %{_mandir}/man1/ppcppc.1*
413 %{_mandir}/man1/ppc%{_bname}.1*
415 %{_mandir}/man1/ppdep.1*
416 %{_mandir}/man1/ppudump.1*
417 %{_mandir}/man1/ppufiles.1*
418 %{_mandir}/man1/ppumove.1*
419 %{_mandir}/man1/ptop.1*
420 %{_mandir}/man1/pyacc.1*
421 %{_mandir}/man1/rmcvsdir.1*
422 %{_mandir}/man1/rstconv.1*
423 %{_mandir}/man1/unitdiff.1*
424 %{_mandir}/man5/fpc.cfg.5*
425 %{_mandir}/man5/fpcmake.5*
426 %{_mandir}/man5/ptop.cfg.5*
429 %defattr(644,root,root,755)
430 %attr(755,root,root) %{_bindir}/fp
431 # TODO: move the below files to data dir
432 # - ANSI art file used by fp binary
435 # - IDE command templates
437 %{_bindir}/cvsdiff.tdf
440 %{_bindir}/tpgrep.tdf
441 # - Pascal code skeletons
442 %{_bindir}/gplprog.pt
443 %{_bindir}/gplunit.pt
444 %{_bindir}/program.pt
446 %{_libdir}/%{name}/%{version}/ide
449 %defattr(644,root,root,755)
453 %defattr(644,root,root,755)
458 %defattr(644,root,root,755)