]> git.pld-linux.org Git - packages/fpc.git/blame - fpc.spec
- disable gdb in IDE, it hasn't bee updated for ages and is broken with gdb 8.0
[packages/fpc.git] / fpc.spec
CommitLineData
d59a3c01
BZ
1#
2# Conditional build:
3e9a31c5 3%bcond_without ide # FPC IDE
86a4b6b9 4%bcond_with gdb # GDB support in FPC IDE
3e9a31c5 5%bcond_without doc # documentation
d59a3c01 6
3e9a31c5
JB
7Summary: Free Pascal - 32-bit Pascal compiler
8Summary(pl.UTF-8): Free Pascal - 32-bitowy kompilator języka Pascal
1d1a4bc8
ER
9Summary(ru.UTF-8): Свободный компилятор Pascal
10Summary(uk.UTF-8): Вільний компілятор Pascal
e8f622a3 11Name: fpc
089b75e2
JR
12Version: 3.0.2
13Release: 1
3c782031 14License: GPL v2+
e8f622a3 15Group: Development/Languages
7ab23651 16Source0: ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/source/%{name}build-%{version}.tar.gz
089b75e2 17# Source0-md5: c0fc1662dbe45c1e3f66ed780a443849
7ab23651 18Source1: ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/i386-linux/%{name}-%{version}.i386-linux.tar
089b75e2 19# Source1-md5: a58c3a2d7f8625d434abe9518e4ca38c
7ab23651 20Source2: ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/x86_64-linux/%{name}-%{version}.x86_64-linux.tar
089b75e2 21# Source2-md5: e5721c1843cff301c5b46abfee17c890
786da423 22Patch0: %{name}-skip-dev-dot.patch
938b52f5 23Patch1: %{name}-link.patch
04dae7e9 24Patch2: %{name}-gdb.patch
1ac879da
JR
25Patch3: fpc-r32374.patch
26Patch4: fpcdocs-r1260.patch
0946044b 27Patch5: fpc-man.patch
dd3f385e 28Patch6: fpc-r34749.patch
e8f622a3 29URL: http://www.freepascal.org/
3c782031 30BuildRequires: binutils-devel >= 3:2.17.50
f5681e7a 31BuildRequires: gpm-devel
41cff313 32BuildRequires: ncurses-devel
3f331815 33BuildRequires: rpmbuild(macros) >= 1.213
938b52f5 34%if %{with ide}
9a6604f5 35BuildRequires: babeltrace-devel
3c782031 36BuildRequires: expat-devel
86a4b6b9 37%{?with_gdb:BuildRequires: gdb-lib >= 7.2-7}
9a6604f5 38BuildRequires: guile-devel
3c782031
JB
39BuildRequires: python-devel
40BuildRequires: readline-devel
41BuildRequires: libselinux-devel
42BuildRequires: xz-devel
43BuildRequires: zlib-devel
938b52f5
JR
44%endif
45%if %{with doc}
46BuildRequires: tetex-fonts-jknappen
47BuildRequires: tetex-format-pdflatex
48BuildRequires: tetex-makeindex
49BuildRequires: tetex-metafont
50BuildRequires: texlive-xetex
51%endif
7da7a711 52Requires: binutils
41cff313 53Provides: fpc-bootstrap
1ac879da 54ExclusiveArch: %{ix86} %{x8664}
0946044b
JB
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
e7e4f882 58BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
e8f622a3
AM
59
60%description
3e9a31c5
JB
61Free Pascal is a 32-bit Pascal compiler. Free Pascal is designed to
62be, as much as possible, source compatible with Turbo Pascal 7.0 and
63Delphi 4 (although this goal is not yet attained), but it also
64enhances these languages with elements like function overloading. And,
65unlike these ancestors, it supports multiple platforms.
e8f622a3 66
6b989699 67%description -l pl.UTF-8
3e9a31c5
JB
68Free Pascal to 32-bitowy kompilator języka Pascal. Free Pascal został
69zaprojektowany by być (na ile to tylko możliwe) kompatybilnym z Turbo
70Pascalem 7.0 oraz Delphi 4. Free Pascal również rozszerza te języki
71elementami takimi jak przeciążanie funkcji.
e8f622a3 72
6b989699
JR
73%description -l ru.UTF-8
74FPC -- 32-битный компилятор Pascal, совместимый с Turbo Pascal 7.0 и
75Delphi. Поставляется с RTL (библиотекой времени исполнения), FCL
76(библиотекой свободных компонент), интерфейсами к gtk, ncurses, zlib,
3c3a6271 77mysql, postgres, ibase.
def44520 78
6b989699
JR
79%description -l uk.UTF-8
80FPC -- 32-бітний компілятор Pascal, сумісний із Turbo Pascal 7.0 та
81Delphi. Постачається із RTL (бібліотекою часу виконання), FCL
82(бібліотекою вільних компонент), інтерфейсами до gtk, ncurses, zlib,
3c3a6271 83mysql, postgres, ibase.
def44520 84
3e9a31c5
JB
85%package ide
86Summary: Free Pascal IDE (integrated development environment)
87Summary(pl.UTF-8): Zintegrowane środowisko programistyczne (IDE) Free Pascala
88Group: Development/Tools
89Requires: %{name} = %{version}-%{release}
90
91%description ide
92Free Pascal IDE (integrated development environment).
93
94%description ide -l pl.UTF-8
95Zintegrowane środowisko programistyczne (IDE) Free Pascala.
96
412a5ed9
KK
97%package src
98Summary: Free Pascal Compiler source files
1d1a4bc8 99Summary(pl.UTF-8): Pliki źródłowe kompilatora Free Pascal
412a5ed9 100Group: Development
412a5ed9 101Requires: %{name} = %{version}-%{release}
41cff313 102Provides: fpcsrc
412a5ed9
KK
103
104%description src
105Free Pascal Compiler source files.
106
6b989699
JR
107%description src -l pl.UTF-8
108Pliki źródłowe kompilatora Free Pascal.
412a5ed9 109
1eee4a0c
JR
110%package examples
111Summary: Free Pascal Compiler exaple programs
1d1a4bc8 112Summary(pl.UTF-8): Przykładowe programy do kompilatora Free Pascal
1eee4a0c 113Group: Documentation
3f331815 114Requires: %{name} = %{version}-%{release}
1eee4a0c
JR
115
116%description examples
117Free Pascal Compiler exaple programs.
118
6b989699
JR
119%description examples -l pl.UTF-8
120Przykładowe programy do kompilatora Free Pascal.
1eee4a0c 121
786da423
JR
122%package doc
123Summary: Free Pascal Compiler documentation
1d1a4bc8 124Summary(pl.UTF-8): Dokumentacja do kompilatora Free Pascal
786da423 125Group: Documentation
7ab23651 126# doesn't require base
786da423
JR
127
128%description doc
129Documentation for fpc in PDF format.
130
6b989699 131%description doc -l pl.UTF-8
786da423
JR
132Dokumentacja do fpc w formacie PDF.
133
e8f622a3 134%prep
d59a3c01 135%setup -q -n %{name}build-%{version}
786da423 136%patch0 -p1
938b52f5 137%patch1 -p1
04dae7e9 138%patch2 -p1
ff731c41 139%patch3 -p0
dd3f385e 140%patch4 -p0
0946044b 141%patch5 -p1
dd3f385e 142%patch6 -p0
d59a3c01 143
d3e9323d 144%ifarch %{ix86}
786da423 145tar xf %{SOURCE1}
4e71325a 146%define _bver %{version}
d3e9323d 147%define _bname 386
04dae7e9 148%define _barch i386
d3e9323d 149%endif
3f331815 150%ifarch %{x8664}
786da423 151tar xf %{SOURCE2}
4e71325a 152%define _bver %{version}
d3e9323d 153%define _bname x64
04dae7e9 154%define _barch x86_64
d3e9323d 155%endif
0946044b
JB
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
d3e9323d 176
04dae7e9 177cd %{name}-%{version}.%{_barch}-linux
786da423 178tar xf binary.*-linux.tar
04dae7e9 179cd ..
786da423
JR
180
181mkdir bin
182cd bin
04dae7e9 183for i in ../%{name}-%{version}.%{_barch}-linux/*.tar.gz ; do
786da423
JR
184 tar xzf $i
185done
4e71325a 186ln -sf `pwd`/lib/%{name}/%{_bver}/ppc* bin
938b52f5 187cd ..
786da423 188
25d5e663
JR
189find fpcsrc -name Makefile -o -name fpcmake.ini -o -name fpmkunit.pp | \
190 xargs %{__sed} -i -e 's|/usr/lib/|%{_libdir}/|g'
191
0946044b
JB
192# remove precompiled objects from fpc-src
193%{__rm} fpcsrc/rtl/palmos/m68k/{libcrt.a,*.o}
194
412a5ed9
KK
195# save for fpc-src
196install -d fpc-src
197cp -af fpcsrc/* fpc-src
add634ff 198rm -r fpc-src/{ide,tests}
412a5ed9 199
008ddcda 200%if 0%{?debug:1}
25d5e663 201find fpcsrc -name Makefile | xargs %{__sed} -i -e 's/-Xs//'
008ddcda
JB
202%endif
203
938b52f5
JR
204%build
205# use ld.bfd
206[ -d our-ld ] || install -d our-ld
207ln -sf %{_bindir}/ld.bfd our-ld/ld
208export PATH=$(pwd)/our-ld:$PATH
209
4e71325a 210PP=`pwd`/bin/lib/%{name}/%{_bver}/ppc%{_bname}
80841e72 211NEWPP=`pwd`/fpcsrc/compiler/ppc%{_bname}
1ac879da
JR
212NEWFPDOC=`pwd`/fpcsrc/utils/fpdoc/bin/%{_barch}-linux/fpdoc
213DATA2INC=`pwd`/fpcsrc/utils/bin/%{_barch}-linux/data2inc
dd3f385e 214FPCSRCDIR=`pwd`/fpcsrc
d3e9323d 215
ca161524 216# DO NOT PUT $RPM_OPT_FLAGS IN OPT, IT DOES NOT WORK - baggins
217case "%{_build_cpu}" in
0946044b 218 i386|i486) OPTF="-OG2p1" ;;
d59a3c01 219 i586) OPTF="-OG2p2" ;;
0946044b 220 i686|athlon|pentium3|pentium4|x86_64|amd64|ia32e) OPTF="-Og2p3" ;;
d59a3c01 221 *) OPTF="-O2" ;;
ca161524 222esac
223
80841e72 224%{__make} -C fpcsrc compiler_cycle \
008ddcda 225 OPT="$OPTF %{!?debug:-Xs} -n" \
d88793f7 226 RELEASE="1" \
e8f622a3
AM
227 BASEINSTALLDIR=%{_libdir}/%{name}/%{version} \
228 BININSTALLDIR=%{_bindir} \
9a6604f5 229 DATA2INC="$DATA2INC" \
1eee4a0c 230 PP="$PP" \
94c54379 231 FPC="$PP" \
d59a3c01 232 LINKSMART=YES
94c54379 233
008ddcda 234%{__make} -C fpcsrc OPT="$OPTF %{!?debug:-Xs} -n" \
d88793f7 235 RELEASE="1" \
5edb3786
SZ
236 BASEINSTALLDIR=%{_libdir}/%{name}/%{version} \
237 BININSTALLDIR=%{_bindir} \
86a4b6b9
JR
238 %{?with_gdb:GDBLIBDIR=%{_libdir}} \
239 %{!?with_gdb:NOGDB=YES} \
9a6604f5 240 DATA2INC="$DATA2INC" \
5edb3786 241 PP="$NEWPP" \
94c54379 242 FPC="$NEWPP" \
d59a3c01 243 FPDOC=$NEWFPDOC \
d59a3c01
BZ
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 \
938b52f5 252 utils_all %{?with_ide:ide_all installer_all}
f5681e7a 253
d59a3c01 254%if %{with doc}
786da423 255export save_size=10000
cbfcda9f 256%{__make} -j1 -C fpcdocs \
786da423
JR
257 FPDOC=$NEWFPDOC \
258 FPC="$NEWPP" \
dd3f385e 259 FPCSRCDIR="$FPCSRCDIR" \
786da423 260 pdf
d59a3c01 261%endif
786da423 262
e8f622a3
AM
263%install
264rm -rf $RPM_BUILD_ROOT
412a5ed9
KK
265install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_mandir},%{_datadir}/fpcsrc,%{_examplesdir}/fpc}
266
267cp -af fpc-src/* $RPM_BUILD_ROOT%{_datadir}/fpcsrc
e8f622a3 268
80841e72 269NEWPP=`pwd`/fpcsrc/compiler/ppc%{_bname}
1ac879da 270FPCMAKE=`pwd`/fpcsrc/utils/fpcm/bin/%{_barch}-linux/fpcmake
7be7bd7e 271%{__make} -j1 -C fpcsrc \
f5681e7a 272 compiler_distinstall \
273 rtl_distinstall \
f5681e7a 274 packages_distinstall \
d59a3c01 275 %{?with_ide:ide_distinstall} \
f5681e7a 276 utils_distinstall \
d3e9323d 277 PP="$NEWPP" \
278 FPCMAKE="$FPCMAKE" \
f5681e7a 279 SMARTLINK=YES \
25d5e663 280 FPCDIR=%{_libdir}/%{name}/%{version} \
8bf0c9cb 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} \
d88793f7 286 INSTALL_BASEDIR=$RPM_BUILD_ROOT%{_libdir}/%{name}/%{version} \
f5681e7a 287 INSTALL_EXAMPLEDIR=$RPM_BUILD_ROOT%{_examplesdir}/%{name} \
7da7a711 288 INSTALL_MANDIR=$RPM_BUILD_ROOT%{_mandir} \
d88793f7 289 CODPATH=$RPM_BUILD_ROOT%{_libdir}/%{name}/lexyacc
d3e9323d 290
7be7bd7e 291%{__make} -j1 -C install/man installman \
80841e72 292 INSTALL_MANDIR=$RPM_BUILD_ROOT%{_mandir}
9a679a53 293
fcc93709
JR
294ln -sf ../%{_lib}/%{name}/%{version}/ppc%{_bname} $RPM_BUILD_ROOT%{_bindir}
295
296ln -sf %{_bindir}/ld.bfd $RPM_BUILD_ROOT%{_libdir}/%{name}/%{version}/ld
e8f622a3 297
2844e15a
JR
298sh 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}
e588518e 300
25d5e663 301%if "%{_lib}" != "lib"
902dd00e 302%{__mv} $RPM_BUILD_ROOT%{_prefix}/lib/%{name}/lexyacc $RPM_BUILD_ROOT%{_libdir}/%{name}
25d5e663
JR
303%endif
304
e996f6a1
JR
305# Fix examples, make seems to ignore INSTALL_EXAMPLEDIR
306%{__mv} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}/* $RPM_BUILD_ROOT%{_examplesdir}/fpc/
307
0946044b
JB
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
e8f622a3
AM
324%clean
325rm -rf $RPM_BUILD_ROOT
326
e8f622a3
AM
327%files
328%defattr(644,root,root,755)
0946044b
JB
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
0946044b
JB
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
3e9a31c5 364# TODO: move the below files to data dir
0946044b
JB
365# - JSON resources(?)
366%{_bindir}/makeskel.rsj
367%{_bindir}/ptop.rsj
3c3a6271 368%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/fpc.cfg
2844e15a
JR
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
e8f622a3
AM
372%dir %{_libdir}/%{name}
373%dir %{_libdir}/%{name}/%{version}
d88793f7 374%dir %{_libdir}/%{name}/lexyacc
e8f622a3 375%{_libdir}/%{name}/%{version}/msg
1eee4a0c 376%{_libdir}/%{name}/%{version}/units
1ac879da 377%{_libdir}/%{name}/%{version}/fpmkinst
d88793f7 378%{_libdir}/%{name}/lexyacc/*
fcc93709 379%attr(755,root,root) %{_libdir}/%{name}/%{version}/ld
d3e9323d 380%attr(755,root,root) %{_libdir}/%{name}/%{version}/ppc%{_bname}
1eee4a0c 381%attr(755,root,root) %{_libdir}/%{name}/%{version}/samplecfg
0946044b
JB
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*
1eee4a0c 419
3e9a31c5
JB
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
412a5ed9
KK
441%files src
442%defattr(644,root,root,755)
443%{_datadir}/fpcsrc
444
1eee4a0c
JR
445%files examples
446%defattr(644,root,root,755)
f5681e7a 447%{_examplesdir}/fpc
786da423 448
d59a3c01 449%if %{with doc}
786da423
JR
450%files doc
451%defattr(644,root,root,755)
452%doc fpcdocs/*.pdf
d59a3c01 453%endif
This page took 0.115735 seconds and 4 git commands to generate.