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