summaryrefslogtreecommitdiff
path: root/community-testing/fpc
diff options
context:
space:
mode:
Diffstat (limited to 'community-testing/fpc')
-rw-r--r--community-testing/fpc/Makefile-mk382.diff174
-rw-r--r--community-testing/fpc/PKGBUILD51
2 files changed, 225 insertions, 0 deletions
diff --git a/community-testing/fpc/Makefile-mk382.diff b/community-testing/fpc/Makefile-mk382.diff
new file mode 100644
index 000000000..00909766d
--- /dev/null
+++ b/community-testing/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-testing/fpc/PKGBUILD b/community-testing/fpc/PKGBUILD
new file mode 100644
index 000000000..16a70055a
--- /dev/null
+++ b/community-testing/fpc/PKGBUILD
@@ -0,0 +1,51 @@
+# $Id: PKGBUILD 61547 2012-01-02 19:53:55Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: Valeriy Lyasotskiy <onestep@ukr.net>
+# Contributor: Jan Willemson <janwil@hot.ee>
+# Contributor: Hugo Ideler <hugoideler@dse.nl>
+# Original PKGBUILD: Andre Naumann <anaumann@SPARCed.org>
+# See http://bbs.archlinux.org/viewtopic.php?t=9318&highlight=fpc
+
+pkgname=fpc
+pkgver=2.6.0
+pkgrel=1
+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/"
+license=('GPL' 'LGPL' 'custom')
+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=('17375e665a4e1311f85812fe2754f609')
+
+build() {
+ cd ${srcdir}/fpcbuild-$pkgver
+ pushd fpcsrc/compiler
+ fpcmake -Tall
+ popd
+ make NOGDB=1 build
+}
+
+package() {
+ cd ${srcdir}/fpcbuild-$pkgver
+
+ export HOME=$srcdir
+
+ make -j1 NOGDB=1 PREFIX=${pkgdir}/usr install
+
+ export PATH=$pkgdir/usr/bin:$PATH
+
+ install -Dm0644 fpcsrc/rtl/COPYING.FPC ${pkgdir}/usr/share/licenses/${pkgname}/COPYING.FPC
+
+ [ "$CARCH" = "i686" ] && ln -s /usr/lib/fpc/${pkgver}/ppc386 ${pkgdir}/usr/bin/
+ [ "$CARCH" = "x86_64" ] && ln -s /usr/lib/fpc/${pkgver}/ppcx64 ${pkgdir}/usr/bin/
+
+ mkdir -p ${pkgdir}/etc
+ ${pkgdir}/usr/lib/fpc/${pkgver}/samplecfg $pkgdir/usr/lib/fpc/${pkgver} ${pkgdir}/etc
+
+ mv $pkgdir/usr/man $pkgdir/usr/share/
+
+ find $pkgdir/etc/ -type f -exec sed -i "s|$pkgdir||g" {} \;
+}