Vincent Snijders wrote:
I would say just replace the macros with {$I %FPCTARGETOS%} and {$I %FPCTARGETCPU%} but how do others feel?

I think that won't work for cross compilation. It returns the targetos where fpmake s running, not the targetos you want to compile too.

Are you shure? I mean once you have cross compiled the compiler, rtl and the lot using FPCTARGETOS or FPCTARGETCPU would yield the right information for that given compiler and rtl and the lot, not? Or do they give the actual system information? (which does not seem logical)

No, I am not sure, feel free to test and proof otherwise.
I can't actually cross compile here, so I will never be able to determine who's right unfortunately.

Suppose I am running on i386-linux and want to compile for i386-win32.

I compile fpmake which has {$I %FPCTARGETOS%} in its source. Suppose I compile fpmake for i386-win32, then it will contain the correct string for the unit path. Unfortunately, I cannot run that fpmake on my linux host, because it is compiled for win32.

So it is necessary to set fpctarget when compiling fpmake to the os of the host compiles the actual project using fpmake (i386-linux). In that case the unit dirs are only correct if you don't cross compile.
Sorry but I don't actually understand what you mean here. Is it that you mean that the following happens?

If Host = i386-linux and Target = i386-win32 then {$I %FPCTARGETOS%} = linux? Instead of the expected {$I %FPCTARGETOS%} = win. Which is ok because the target IS i386-win32.

You never will run a "target" binary on the "host", unless the two are equal (which is normally the case). And therefore the FPC compiler info is always usable.

I'm not posing a proof here, but rather a Lemma ;)

Darius
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to