Re: [fpc-devel] Building compiler, rtl, host, target... (cross compiling) (terminology)

2011-04-08 Thread Sven Barth

Am 07.04.2011 11:21, schrieb Skybuck Flying:

Perhaps you look at it from the binary level, but that's not fair, you
should look at it from the source code level.

Single refers to target.

A zero-target cross compiler would be a cross compiler under development
it has the framework to become a cross compiler but it does not yet have
any supported targets.

A single-target cross compiler is probably still a cross compiler under
development but already has support for a single target.

A dual-target cross compiler has support for two targets.

A 6-target cross compiler has support for six targets.

I would define a target as follows:

Target = harware (cpu) + operating system (assembler + linker + rtl (so
that application can hook into basic OS functionality))



By that definition FPC is a multi target compiler, because every FPC 
compiler for CPU A can compile code for all operating systems that are 
supported inside the compiler. E.g. the i386 compiler can compile code 
for Win32, Linux, FreeBSD, DOS, OS/2, Mac OS X, NativeNT, ..., while the 
ARM compiler can compile for WinCE, Linux, Mac OS X, ... .


Regards,
Sven
___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Building compiler, rtl, host, target... (cross compiling) (terminology)

2011-04-07 Thread Skybuck Flying


- Original Message - 
From: Hans-Peter Diettrich drdiettri...@aol.com

To: FPC developers' list fpc-devel@lists.freepascal.org
Sent: Thursday, 7 April, 2011 06:10 AM
Subject: Re: [fpc-devel] Building compiler, rtl, host,target... (cross 
compiling)




Skybuck Flying schrieb:

First of all free pascal compiler is not a multi-target cross 
compiler but it is a dual-target cross compiler (dual meaning host and 
target can be different ;))


FPC is a single target cross compiler. cross indicates that the target 
can be different from the host system.


Perhaps you look at it from the binary level, but that's not fair, you 
should look at it from the source code level.


Single refers to target.

A zero-target cross compiler would be a cross compiler under development it 
has the framework to become a cross compiler but it does not yet have any 
supported targets.


A single-target cross compiler is probably still a cross compiler under 
development but already has support for a single target.


A dual-target cross compiler has support for two targets.

A 6-target cross compiler has support for six targets.

I would define a target as follows:

Target = harware (cpu) + operating system (assembler + linker + rtl (so that 
application can hook into basic OS functionality))



To be able to cross compile from one target to another target actually 
requires two targets.


It requires:

1. A host/local target
2. A guest/remote target


(The source code of the compiler is compiled towards the host target, this 
requires some sort of host rtl.)
(However the source code of the compiler also requires the source code of 
the guest target/rtl.)


So in a way it needs support for both targets otherwise it will somehow not 
fully compile or it can't cross compile.


And thus when I say a dual target cross compiler this would mean it has 
support in it's source code for two targets.



The remaining question is: what is free pascal ?

Free pascal I would describe as:

a x-way self-hosting retarded (/brain-dead) (non-portable) cross compiler.

(Perhaps I should even add internal assemblers etc but let's not for now).

x should be replaced by the number of target-sub-folders.

self-hosting refers to the fact that it can compile itself once it's build.

retarded (/brain dead) refers to it's inability to switch targets during 
runtime.
(only one guest-target seems to be selected during the compiler-self-build 
process).


(non-portable) refers to it's inability of being compiled by other 
compilers.
(For example Delphi can't compile the current state of the free pascal 
compiler source code)


cross-compile refers to it's ability to cross compile to other targets.

I hope I clearified that a little bit for you ! ;) =D

Bye,
 Skybuck. 


___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel