summaryrefslogtreecommitdiff
path: root/community/fpc
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2011-08-09 23:14:31 +0000
committerroot <root@rshg054.dnsready.net>2011-08-09 23:14:31 +0000
commita306c2530354c1c02351c4cc02eefa53c8d23eac (patch)
tree85f473f0abb92a80a4a400a7c07eed79d83880bd /community/fpc
parent5135b52f901206bbb365152084e82e92c120e0be (diff)
Tue Aug 9 23:14:31 UTC 2011
Diffstat (limited to 'community/fpc')
-rw-r--r--community/fpc/Makefile-mk382.diff174
-rw-r--r--community/fpc/PKGBUILD21
2 files changed, 191 insertions, 4 deletions
diff --git a/community/fpc/Makefile-mk382.diff b/community/fpc/Makefile-mk382.diff
new file mode 100644
index 000000000..00909766d
--- /dev/null
+++ b/community/fpc/Makefile-mk382.diff
@@ -0,0 +1,174 @@
+--- Makefile.fpc.orig 2011-04-02 01:15:34.000000000 +0400
++++ Makefile.fpc 2011-08-05 22:29:44.000000000 +0400
+@@ -4,7 +4,7 @@
+
+ [package]
+ name=compiler
+-version=2.4.4
++version=2.5.1
+
+ [target]
+ programs=pp
+@@ -32,7 +32,7 @@
+ unexport FPC_VERSION FPC_COMPILERINFO
+
+ # Which platforms are ready for inclusion in the cycle
+-CYCLETARGETS=i386 powerpc sparc arm x86_64 powerpc64 m68k armeb # mipsel mips
++CYCLETARGETS=i386 powerpc sparc arm x86_64 powerpc64 m68k armeb mipsel mips avr
+
+ # All supported targets used for clean
+ ALLTARGETS=$(CYCLETARGETS)
+@@ -148,6 +148,12 @@
+ ifeq ($(CPC_TARGET),arm)
+ CPUSUF=arm
+ endif
++ifeq ($(CPC_TARGET),mips)
++CPUSUF=mips
++endif
++ifeq ($(CPC_TARGET),mipsel)
++CPUSUF=mipsel
++endif
+
+ # Do not define the default -d$(CPU_TARGET) because that
+ # will conflict with our -d$(CPC_TARGET)
+@@ -224,12 +230,39 @@
+ override LOCALOPT+=
+ endif
+
++# mipsel specific
++ifeq ($(PPC_TARGET),mipsel)
++override LOCALOPT+=-Fumips
++endif
++
++
++OPTWPOCOLLECT=-OWdevirtcalls,optvmts -FW$(BASEDIR)/pp1.wpo
++OPTWPOPERFORM=-Owdevirtcalls,optvmts -Fw$(BASEDIR)/pp1.wpo
++# symbol liveness WPO requires nm, smart linking and no stripping (the latter
++# is forced by the Makefile when necessary)
++ifneq ($(findstring $(OS_TARGET),darwin linux freebsd solaris),)
++ifdef LINKSMART
++ifdef CREATESMART
++OPTWPOCOLLECT+=-OWsymbolliveness -Xs-
++OPTWPOPERFORM+=-Owsymbolliveness
++endif
++endif
++endif
++
++
+ [rules]
+ #####################################################################
+ # Setup Targets
+ #####################################################################
+
+ ifeq ($(OS_TARGET),win32)
++USE_CMP_FOR_DIFF=1
++endif
++ifeq ($(OS_TARGET),win64)
++USE_CMP_FOR_DIFF=1
++endif
++
++ifdef USE_CMP_FOR_DIFF
+ ifdef CMP
+ override DIFF:=$(CMP) -i218
+ endif
+@@ -267,6 +300,8 @@
+ TEMPNAME1=ppc1$(EXEEXT)
+ TEMPNAME2=ppc2$(EXEEXT)
+ TEMPNAME3=ppc3$(EXEEXT)
++TEMPWPONAME1=ppcwpo1$(EXEEXT)
++TEMPWPONAME2=ppcwpo2$(EXEEXT)
+ MAKEDEP=ppdep$(EXEEXT)
+ MSG2INC=./msg2inc$(EXEEXT)
+ ifdef CROSSINSTALL
+@@ -327,15 +362,15 @@
+ -$(DEL) $(addsuffix /*$(PPUEXT),$(COMPILERSOURCEDIR))
+
+ tempclean:
+- -$(DEL) $(PPCROSSNAME) $(TEMPNAME) $(TEMPNAME1) $(TEMPNAME2) $(TEMPNAME3) $(MSG2INC)
++ -$(DEL) $(PPCROSSNAME) $(TEMPNAME) $(TEMPNAME1) $(TEMPNAME2) $(TEMPNAME3) $(MSG2INC) pp1.wpo pp2.wpo
+
+ execlean :
+- -$(DEL) ppc386$(EXEEXT) ppcaxp$(EXEEXT) ppc68k$(EXEEXT) ppcx64$(EXEEXT) ppcppc$(EXEEXT) ppcsparc$(EXEEXT) $(EXENAME)
++ -$(DEL) ppc386$(EXEEXT) ppc68k$(EXEEXT) ppcx64$(EXEEXT) ppcppc$(EXEEXT) ppcsparc$(EXEEXT) ppcppc64$(EXEEXT) ppcarm$(EXEEXT) ppcmips$(EXEEXT) ppcmipsel$(EXEEXT) $(EXENAME) $(TEMPWPONAME1) $(TEMPWPONAME2)
+
+ $(addsuffix _clean,$(ALLTARGETS)):
+ -$(DELTREE) $(addprefix $(subst _clean,,$@),/units)
+ -$(DEL) $(addprefix $(subst _clean,,$@)/,*$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT))
+- -$(DEL) $(addprefix $(subst _clean,,$@)/,ppc386$(EXEEXT) ppcaxp$(EXEEXT) ppc68k$(EXEEXT) ppcx64$(EXEEXT) ppcppc$(EXEEXT) ppcppc$(EXEEXT) $(EXENAME))
++ -$(DEL) $(addprefix $(subst _clean,,$@)/,ppc386$(EXEEXT) ppc68k$(EXEEXT) ppcx64$(EXEEXT) ppcppc$(EXEEXT) ppcsparc$(EXEEXT) ppcppc64$(EXEEXT) ppcarm$(EXEEXT) ppcmips$(EXEEXT) ppcmipsel$(EXEEXT) $(EXENAME))
+
+ cycleclean: cleanall $(addsuffix _clean,$(CPC_TARGET))
+ -$(DEL) $(EXENAME)
+@@ -444,6 +479,28 @@
+ # Normal cycle
+ #
+
++ifndef NOWPOCYCLE
++ifdef RELEASE
++DOWPOCYCLE=1
++# Two WPO cycles in case of RELEASE=1
++wpocycle:
++# don't use cycle_clean, it will delete the compiler utilities again
++ $(RM) $(EXENAME)
++ $(MAKE) 'FPC=$(BASEDIR)/$(TEMPNAME3)' 'OPT=$(LOCALOPT) $(OPTWPOCOLLECT)' compiler
++ $(RM) $(EXENAME)
++ $(MAKE) 'FPC=$(BASEDIR)/$(TEMPNAME3)' 'OPT=$(RTLOPT) $(OPTWPOPERFORM)' rtlclean rtl
++ $(MAKE) 'FPC=$(BASEDIR)/$(TEMPNAME3)' 'OPT=$(LOCALOPT) $(OPTWPOPERFORM) $(subst pp1.wpo,pp2.wpo,$(OPTWPOCOLLECT))' $(addsuffix _clean,$(ALLTARGETS)) compiler
++ $(MOVE) $(EXENAME) $(TEMPWPONAME1)
++ $(MAKE) 'FPC=$(BASEDIR)/$(TEMPWPONAME1)' 'OPT=$(RTLOPT) $(subst pp1.wpo,pp2.wpo,$(OPTWPOPERFORM))' rtlclean rtl
++ $(MAKE) 'FPC=$(BASEDIR)/$(TEMPWPONAME1)' 'OPT=$(LOCALOPT) $(subst pp1.wpo,pp2.wpo,$(OPTWPOPERFORM))' $(addsuffix _clean,$(ALLTARGETS)) compiler
++ $(COPY) $(EXENAME) $(TEMPWPONAME2)
++endif
++endif
++
++ifndef DOWPOCYCLE
++wpocycle:
++endif
++
+ # Used to avoid unnecessary steps
+ ifdef DIFF
+ ifdef OLDFPC
+@@ -490,6 +547,7 @@
+ $(MAKE) 'FPC=$(BASEDIR)/$(TEMPNAME3)' 'OLDFPC=$(BASEDIR)/$(TEMPNAME2)' next
+ $(DIFF) $(TEMPNAME3) $(EXENAME)
+ $(MAKE) $(addsuffix _all,$(TARGET_DIRS)) 'FPC=$(BASEDIR)/$(EXENAME)'
++ $(MAKE) wpocycle
+ $(MAKE) echotime
+
+ else
+@@ -508,8 +566,11 @@
+ # ppc<ARCH> (target native)
+ ifndef CROSSINSTALL
+ $(MAKE) 'FPC=$(BASEDIR)/$(PPCROSSNAME)' rtlclean rtl
++# building a native compiler for embedded targets is not possible
++ifneq ($(OS_TARGET),embedded)
+ $(MAKE) 'FPC=$(BASEDIR)/$(PPCROSSNAME)' cycleclean compiler
+ endif
++endif
+
+ endif
+
+@@ -523,10 +584,10 @@
+ # ppc3/ppcXXX = native (skipped for cross installation)
+ #
+
++cycle: override FPC=
+ cycle:
+ # ppc (source native)
+ # Clear detected compiler binary, because it can be existing crosscompiler binary, but we need native compiler here
+-override FPC=
+ $(MAKE) OS_TARGET=$(OS_SOURCE) CPU_TARGET=$(CPU_SOURCE) CROSSBINDIR= BINUTILSPREFIX= CROSSCYCLEBOOTSTRAP=1 rtlclean rtl
+ $(MAKE) OS_TARGET=$(OS_SOURCE) CPU_TARGET=$(CPU_SOURCE) EXENAME=$(TEMPNAME) CROSSBINDIR= BINUTILSPREFIX= CROSSCYCLEBOOTSTRAP=1 cycleclean compiler
+ # ppcross<ARCH> (source native)
+@@ -535,8 +596,11 @@
+ # ppc<ARCH> (target native)
+ ifndef CROSSINSTALL
+ $(MAKE) 'FPC=$(BASEDIR)/$(PPCROSSNAME)' 'OPT=$(OPT) $(CROSSOPT)' rtlclean rtl
++# building a native compiler for embedded targets is not possible
++ifneq ($(OS_TARGET),embedded)
+ $(MAKE) 'FPC=$(BASEDIR)/$(PPCROSSNAME)' 'OPT=$(OPT) $(CROSSOPT)' cycleclean compiler
+ endif
++endif
+
+ endif
+
diff --git a/community/fpc/PKGBUILD b/community/fpc/PKGBUILD
index 16dd11444..6402d9213 100644
--- a/community/fpc/PKGBUILD
+++ b/community/fpc/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 48312 2011-05-31 09:49:30Z spupykin $
+# $Id: PKGBUILD 53775 2011-08-08 08:05:51Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor: Valeriy Lyasotskiy <onestep@ukr.net>
# Contributor: Jan Willemson <janwil@hot.ee>
@@ -8,7 +8,7 @@
pkgname=fpc
pkgver=2.4.4
-pkgrel=1
+pkgrel=3
pkgdesc="The Free Pascal Compiler is a Turbo Pascal 7.0 and Delphi compatible 32bit Pascal Compiler. It comes with fully TP 7.0 compatible run-time library."
arch=('i686' 'x86_64')
url="http://www.freepascal.org/"
@@ -17,18 +17,31 @@ backup=("etc/fpc.cfg")
depends=(ncurses)
makedepends=(fpc)
options=(zipman)
-source=(ftp://ftp.freepascal.org/pub/fpc/dist/$pkgver/source/fpcbuild-$pkgver.tar.gz)
-md5sums=('d069dfd3412bd0d26dcd1b81ac998305')
+source=(ftp://ftp.freepascal.org/pub/fpc/dist/$pkgver/source/fpcbuild-$pkgver.tar.gz
+ Makefile-mk382.diff)
+md5sums=('d069dfd3412bd0d26dcd1b81ac998305'
+ 'a2242d261b055d08fa4d70e88ca1d1a7')
build() {
cd ${srcdir}/fpcbuild-$pkgver
+ pushd fpcsrc/compiler
+ patch -uN Makefile.fpc $srcdir/Makefile-mk382.diff
+ fpcmake -Tall
+ popd
make NOGDB=1 build
+# make NOGDB=1 build OS_TARGET=win32 CPU_TARGET=i386
}
package() {
cd ${srcdir}/fpcbuild-$pkgver
+
+ export HOME=$srcdir
+
make -j1 NOGDB=1 PREFIX=${pkgdir}/usr install
+# make NOGDB=1 PREFIX=${pkgdir}/usr crossinstall OS_TARGET=win32 CPU_TARGET=i386
+# ln -s /usr/lib/fpc/$pkgver/ppcross386 $pkgdir/usr/bin/ppcross386
+
# install package license
install -m 755 -d ${pkgdir}/usr/share/licenses/${pkgname}
install -m 644 fpcsrc/rtl/COPYING.FPC ${pkgdir}/usr/share/licenses/${pkgname}/