[fpc-devel] Porting FPC to IBM zArch

Sven Barth pascaldragon at googlemail.com
Wed Jul 24 17:54:52 CEST 2013

On 24.07.2013 16:36, Bernd Oppolzer wrote:
> Then I built the RTL for linux, which also worked successfully, as far
> as I saw,
> but when compiling with -Tlinux, I now get the following message:

How did you build it? Building the RTL for Linux should be (assuming 
that your FPC source is at c:\fpc)

cd c:\fpc
make crossall CPU_TARGET=i386 OS_TARGET=linux 
CROSSBINDIR=C:\path\to\linux\binutils BINUTILSPREFIX=i386-linux-

BINUTILSPREFIX could also be something different or empty (then the 
option should be "BINUTILSPREFIX="), it depends on how your 
assembler/linker for Linux is prefixed.

Once that worked you can install the compiler using

make crossinstall CPU_TARGET=i386 OS_TARGET=linux 

You should do a

make all install INSTALL_PREFIX=c:\wherever\fpc\should\be\installed

at first though. You'll also need to adjust a configuration for your new 
compiler (simplest approach is to copy the fpc.cfg from 
c:\whereever\fpc\2.6.2\bin\i386-win32\fpc.cfg to 
c:\wherever\fpc\should\be\installed\bin\i386-win32 and adjust it)

> C:\fpc_test>ppc386 -Tlinux pasform.pas
> Free Pascal Compiler version 2.7.1 [2013/07/24] for i386
> Copyright (c) 1993-2013 by Florian Klaempfl and others
> Target OS: Linux for i386
> Compiling pasform.pas
> PPU Loading C:\fpc\rtl\units\i386-linux\system.ppu
> PPU Invalid Version 135
> Fatal: Can't find unit system used by PASFORM
> Fatal: Compilation aborted
> that is: the system.ppu seems to be found, but there is something wrong
> with the version.

You compiled the RTL using the 2.6.2 compiler, not the 2.7.1 compiler. 
The PPU version of 2.7.1 is already > 160.

> When trying to build the RTL for OS/2 (running make in the os2 subdir of
> fpc/rtl), I get the following messages:
> C:\fpc\rtl\os2>make

This is wrong. You need to build at the toplevel which is c:\fpc\rtl. 
Everything else is not officially supported and not recommended for a 
beginner (no offence).

(Note: You'd need to pass the path to the new compiler otherwise it will 
just use "fpc" or "ppc386" which will use your installed fpc; this can 
be done using the FPC option like this:

make clean all FPC=c:\wherever\ppc386.exe


> C:/lazarus/fpc/2.6.2/bin/i386-win32/gmkdir.exe -p ../../rtl/units/os2
> i386-os2-as -o ../../rtl/units/os2/prt0.o prt0.as
> process_begin: CreateProcess((null), i386-os2-as -o
> ../../rtl/units/os2/prt0.o p
> rt0.as, ...) failed.
> make (e=2): Das System kann die angegebene Datei nicht finden.
> make: *** [prt0.o] Error 2
> apparently, there is no i386-os2-as

You'll need to either find binary assembler and linker for OS/2 or build 
it yourself. As I don't normally cross compile to OS/2 I can't help you 

> when I did the same thing in the linux subdir, it worked (but: see above).
> Do I need a special ASSEMBLER to build the OS/2 RTL?
> Is it possible to download a pre-built OS/2 RTL?

You could try to use the RTL provided with the native OS/2 package, but 
you'd still need an assembler and linker to compile a program.

> No need to invest much time in those questions: I already had some
> insights in the techniques of cross-compiling ... and in any case I'm
> now able
> to build a new compiler from the compiler sources.


PS: Please don't post at the top, but at least answer below the previous 
mail or better use inline answers (like I did here). Thank you.

More information about the fpc-devel mailing list