summaryrefslogtreecommitdiff
path: root/community-testing/fpc/Makefile-mk382.diff
diff options
context:
space:
mode:
Diffstat (limited to 'community-testing/fpc/Makefile-mk382.diff')
-rw-r--r--community-testing/fpc/Makefile-mk382.diff174
1 files changed, 174 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
+