diff options
Diffstat (limited to 'community-testing/fpc')
-rw-r--r-- | community-testing/fpc/Makefile-mk382.diff | 174 | ||||
-rw-r--r-- | community-testing/fpc/PKGBUILD | 58 |
2 files changed, 232 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..5a1002143 --- /dev/null +++ b/community-testing/fpc/PKGBUILD @@ -0,0 +1,58 @@ +# $Id: PKGBUILD 53690 2011-08-07 20:47:34Z 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.4.4 +pkgrel=2 +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 + 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}/ + + # create symlink for compiler + [ "$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/ + + # install sample config file + mkdir -p ${pkgdir}/etc + ${pkgdir}/usr/lib/fpc/${pkgver}/samplecfg /usr/lib/fpc/${pkgver} ${pkgdir}/etc + + mv $pkgdir/usr/man $pkgdir/usr/share/ +} |