[fpc-pascal] Differences between ppc386 and ppcross386
Jonas Maebe
jonas.maebe at elis.ugent.be
Mon Feb 23 12:02:52 CET 2015
On 23 Feb 2015, at 11:40, Mattias Gaertner wrote:
> What are the differences between ppc386 and ppcross386?
ppcross386 gets compiled as part of a cross build (e.g. when
performing "make all OS_TARGET=win32" on a Linux/i386 machine), but
other than that it is the same as ppc386. The reason is that a cross
build always compiles both a cross-compiler (a Linux/i386-native
ppcross386 in the above scenario) and a native compiler for the target
(a Win32/i386-native ppc386 in the above scenario), and obviously both
binaries can't have the same name since they're both located in the
compiler directory after buidling.
> Related question:
> When calling "fpc -Pi386" it searches for ppc386, but not for
> ppcross386. Why is that?
It will search for ppcross386 if the fpc binary has been compiled for
an architecture that is not i386, except on Darwin. From fpc.pp:
{$ifndef darwin}
ppcbin:='ppcross'+cpusuffix;
{$else not darwin}
{ the mach-o format supports "fat"
binaries whereby }
{ a single executable contains machine
code for }
{ several architectures -> it is counter-
intuitive }
{ and non-standard to use different binary
names }
{ for cross-compilers vs. native
compilers }
ppcbin:='ppc'+cpusuffix;
{$endif not darwin}
In hindsight (the above is from 2008), I should have simply changed
this for all platforms, because "fpc" is only used for installed
compilers and it doesn't make sense to install both a native and cross-
compiler into the same prefix (and even if you do, you'd still get
binary name conflicts for e.g. an x86-64 -> ARM and an i386 -> ARM
cross-compiler). It also causes confusion that build their own Darwin
compiler, because make (cross)install will still install ppcross*
(they are renamed by a script I use to package the official releases).
Jonas
More information about the fpc-pascal
mailing list