# TODO:
# - check why it builds all static..
-# - doesn't build on ppc/sparc :/ hgw why
+# - repair ide build
+#
+# Conditional build:
+%bcond_with ide # build with ide
+%bcond_without doc # build without doc
+
Summary: 32-bit compiler for the i386 and m68k processors
-Summary(pl): 32 bitowy kompilator dla procesorów i386 i m68k
-Summary(ru): ó×ÏÂÏÄÎÙÊ ËÏÍÐÉÌÑÔÏÒ Pascal
-Summary(uk): ÷¦ÌØÎÉÊ ËÏÍЦÌÑÔÏÒ Pascal
+Summary(pl.UTF-8): 32 bitowy kompilator dla procesorów i386 i m68k
+Summary(ru.UTF-8): Свободный компилятор Pascal
+Summary(uk.UTF-8): Вільний компілятор Pascal
Name: fpc
-Version: 2.0.2
-Release: 0.2
+Version: 2.2.4
+Release: 1
License: GPL
Group: Development/Languages
-Source0: ftp://ftp.freepascal.org/pub/fpc/dist/source-%{version}/%{name}build-%{version}.tar.bz2
-# Source0-md5: b88893bc005c4404197ae55ef3c0de30
+Source0: ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/source/%{name}build-%{version}.tar.gz
+# Source0-md5: 20bb9a4a9f1449e2249c80d7aba7c245
+Source1: ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/i386-linux/%{name}-%{version}.i386-linux.tar
+# Source1-md5: dad8cb132bbefdc52b0f93e56484ea29
+Source2: ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/x86_64-linux/%{name}-%{version}.x86_64-linux.tar
+# Source2-md5: f1c523001cd842308d99b86d211368d2
+Source3: ftp://ftp.freepascal.org/pub/fpc/dist/%{version}/powerpc-linux/%{name}-%{version}.powerpc-linux.tar
+# Source3-md5: 7340cf98dc751d58d899c546bd46b972
+Patch0: %{name}-skip-dev-dot.patch
URL: http://www.freepascal.org/
-BuildRequires: ncurses-devel
+BuildRequires: binutils-static >= 3:2.17.50
+BuildRequires: gdb-lib
BuildRequires: gpm-devel
+BuildRequires: ncurses-devel
+%{?with_ide:BuildRequires: readline-static}
BuildRequires: rpmbuild(macros) >= 1.213
-BuildRequires: fpc
-Provides: fpc-bootstrap
+%{?with_doc:BuildRequires: tetex-fonts-jknappen}
+%{?with_doc:BuildRequires: tetex-format-pdflatex}
+%{?with_doc:BuildRequires: tetex-makeindex}
+%{?with_doc:BuildRequires: tetex-metafont}
Requires: binutils
-ExclusiveArch: %{ix86} %{x8664} ppc sparc
+Provides: fpc-bootstrap
+ExclusiveArch: %{ix86} %{x8664} ppc
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
function overloading. And, unlike these ancestors, it supports
multiple platforms.
-%description -l pl
-Free Pascal to 32 bitowy kompilator dla procesorów i386 oraz m86k.
-Free Pascal zosta³ zaprojektowany by byæ (jak tylko to mo¿liwe)
-kompatybilnym z Turbo Pascal 7.0 oraz Delphi 4. Free Pascal równie¿
-rozszerza te jêzyki elementami takimi jak przeci±¿anie funkcji.
+%description -l pl.UTF-8
+Free Pascal to 32 bitowy kompilator dla procesorów i386 oraz m86k.
+Free Pascal został zaprojektowany by być (jak tylko to możliwe)
+kompatybilnym z Turbo Pascal 7.0 oraz Delphi 4. Free Pascal również
+rozszerza te języki elementami takimi jak przeciążanie funkcji.
-%description -l ru
-FPC -- 32-ÂÉÔÎÙÊ ËÏÍÐÉÌÑÔÏÒ Pascal, ÓÏ×ÍÅÓÔÉÍÙÊ Ó Turbo Pascal 7.0 É
-Delphi. ðÏÓÔÁ×ÌÑÅÔÓÑ Ó RTL (ÂÉÂÌÉÏÔÅËÏÊ ×ÒÅÍÅÎÉ ÉÓÐÏÌÎÅÎÉÑ), FCL
-(ÂÉÂÌÉÏÔÅËÏÊ Ó×ÏÂÏÄÎÙÈ ËÏÍÐÏÎÅÎÔ), ÉÎÔÅÒÆÅÊÓÁÍÉ Ë gtk, ncurses, zlib,
+%description -l ru.UTF-8
+FPC -- 32-битный компилятор Pascal, совместимый с Turbo Pascal 7.0 и
+Delphi. Поставляется с RTL (библиотекой времени исполнения), FCL
+(библиотекой свободных компонент), интерфейсами к gtk, ncurses, zlib,
mysql, postgres, ibase.
-%description -l uk
-FPC -- 32-¦ÔÎÉÊ ËÏÍЦÌÑÔÏÒ Pascal, ÓÕͦÓÎÉÊ ¦Ú Turbo Pascal 7.0 ÔÁ
-Delphi. ðÏÓÔÁÞÁ¤ÔØÓÑ ¦Ú RTL (¦Â̦ÏÔÅËÏÀ ÞÁÓÕ ×ÉËÏÎÁÎÎÑ), FCL
-(¦Â̦ÏÔÅËÏÀ צÌØÎÉÈ ËÏÍÐÏÎÅÎÔ), ¦ÎÔÅÒÆÅÊÓÁÍÉ ÄÏ gtk, ncurses, zlib,
+%description -l uk.UTF-8
+FPC -- 32-бітний компілятор Pascal, сумісний із Turbo Pascal 7.0 та
+Delphi. Постачається із RTL (бібліотекою часу виконання), FCL
+(бібліотекою вільних компонент), інтерфейсами до gtk, ncurses, zlib,
mysql, postgres, ibase.
%package src
Summary: Free Pascal Compiler source files
-Summary(pl): Pliki ¼ród³owe kompilatora Free Pascal
+Summary(pl.UTF-8): Pliki źródłowe kompilatora Free Pascal
Group: Development
-Provides: fpcsrc
Requires: %{name} = %{version}-%{release}
+Provides: fpcsrc
%description src
Free Pascal Compiler source files.
-%description src -l pl
-Pliki ¼ród³owe kompilatora Free Pascal.
+%description src -l pl.UTF-8
+Pliki źródłowe kompilatora Free Pascal.
%package examples
Summary: Free Pascal Compiler exaple programs
-Summary(pl): Przyk³adowe programy do kompilatora Free Pascal
+Summary(pl.UTF-8): Przykładowe programy do kompilatora Free Pascal
Group: Documentation
Requires: %{name} = %{version}-%{release}
%description examples
Free Pascal Compiler exaple programs.
-%description examples -l pl
-Przyk³adowe programy do kompilatora Free Pascal.
+%description examples -l pl.UTF-8
+Przykładowe programy do kompilatora Free Pascal.
+
+%package doc
+Summary: Free Pascal Compiler documentation
+Summary(pl.UTF-8): Dokumentacja do kompilatora Free Pascal
+Group: Documentation
+# doesn't require base
+
+%description doc
+Documentation for fpc in PDF format.
+
+%description doc -l pl.UTF-8
+Dokumentacja do fpc w formacie PDF.
%prep
-%setup -q -n %{name}-src-%{version}
+%setup -q -n %{name}build-%{version}
+%patch0 -p1
+
%ifarch %{ix86}
+tar xf %{SOURCE1}
+%define _bver %{version}
%define _bname 386
%endif
%ifarch %{x8664}
+tar xf %{SOURCE2}
+%define _bver %{version}
%define _bname x64
%endif
%ifarch ppc
+tar xf %{SOURCE3}
+%define _bver %{version}
%define _bname ppc
%endif
-%ifarch sparc
-%define _bname sparc
-%endif
+
+tar xf binary.*-linux.tar
+
+mkdir bin
+cd bin
+for i in ../*.tar.gz ; do
+ tar xzf $i
+done
+ln -sf `pwd`/lib/%{name}/%{_bver}/ppc* bin
%build
# save for fpc-src
install -d fpc-src
cp -af fpcsrc/* fpc-src
-PP=%{_bindir}/ppc%{_bname}
+PP=`pwd`/bin/lib/%{name}/%{_bver}/ppc%{_bname}
NEWPP=`pwd`/fpcsrc/compiler/ppc%{_bname}
NEWFPDOC=`pwd`/fpcsrc/utils/fpdoc/fpdoc
# DO NOT PUT $RPM_OPT_FLAGS IN OPT, IT DOES NOT WORK - baggins
case "%{_build_cpu}" in
- i386,i486)
- OPTF="-OG2p1" ;;
- i586)
- OPTF="-OG2p2" ;;
- i686,athlon)
- OPTF="-Og2p3" ;;
- *)
- OPTF="-O2" ;;
+ i386) OPTF="-OG2p1" ;;
+ i486) OPTF="-OG2p1" ;;
+ i586) OPTF="-OG2p2" ;;
+ i686) OPTF="-Og2p3" ;;
+ athlon) OPTF="-Og2p3" ;;
+ *) OPTF="-O2" ;;
esac
%{__make} -C fpcsrc compiler_cycle \
BININSTALLDIR=%{_bindir} \
PP="$PP" \
FPC="$PP" \
- SMARTLINK=YES
+ LINKSMART=YES
%{__make} -C fpcsrc OPT="$OPTF -Xs -n" \
RELEASE="1" \
BASEINSTALLDIR=%{_libdir}/%{name}/%{version} \
BININSTALLDIR=%{_bindir} \
+ GDBLIBDIR=%{_libdir} \
PP="$NEWPP" \
FPC="$NEWPP" \
+ FPDOC=$NEWFPDOC \
DATA2INC=`pwd`/utils/data2inc \
- SMARTLINK=YES \
- rtl_clean rtl_smart \
- packages_base_smart \
- fcl_smart \
- fv_smart \
- packages_extra_smart \
- ide_all \
- utils_all
+ LINKSMART=YES \
+ NODOCS=YES \
+ rtl_clean \
+ packages_clean \
+ utils_clean \
+ %{?with_ide: ide_clean installer_clean} \
+ rtl_all \
+ packages_all \
+ utils_all %{?with_ide:installer_all}
+
+# %{?with_ide:IDE=YES} \
+%if %{with ide}
+%{__make} -C fpcsrc/ide OPT="$OPTF -Xs -n" \
+ RELEASE="1" \
+ BASEINSTALLDIR=%{_libdir}/%{name}/%{version} \
+ BININSTALLDIR=%{_bindir} \
+ GDBLIBDIR=%{_libdir} \
+ PP="$NEWPP" \
+ FPC="$NEWPP" \
+ FPDOC=$NEWFPDOC \
+ DATA2INC=`pwd`/utils/data2inc \
+ LINKSMART=YES \
+ clean \
+ default \
+ gdb
+%endif
+# %{?with_ide:installer_clean} \
+# %{?with_ide:installer_all}
+
+%if %{with doc}
+export save_size=10000
+%{__make} -C fpcdocs \
+ FPDOC=$NEWFPDOC \
+ FPC="$NEWPP" \
+ pdf
+%endif
%install
rm -rf $RPM_BUILD_ROOT
%{__make} -C fpcsrc \
compiler_distinstall \
rtl_distinstall \
- fcl_distinstall \
- fv_distinstall \
packages_distinstall \
- ide_distinstall \
+ %{?with_ide:ide_distinstall} \
utils_distinstall \
PP="$NEWPP" \
FPCMAKE="$FPCMAKE" \
%dir %{_libdir}/%{name}/lexyacc
%{_libdir}/%{name}/%{version}/msg
%{_libdir}/%{name}/%{version}/units
+%if %{with ide}
%{_libdir}/%{name}/%{version}/ide
+%endif
%{_libdir}/%{name}/lexyacc/*
%attr(755,root,root) %{_libdir}/%{name}/%{version}/ppc%{_bname}
%attr(755,root,root) %{_libdir}/%{name}/%{version}/samplecfg
%files examples
%defattr(644,root,root,755)
%{_examplesdir}/fpc
+
+%if %{with doc}
+%files doc
+%defattr(644,root,root,755)
+%doc fpcdocs/*.pdf
+%endif