[fpc-devel] Smarter way of generating ARMHF fpc trunk installation?

Jonas Maebe jonas.maebe at elis.ugent.be
Wed Mar 5 17:06:04 CET 2014


On 03 Mar 2014, at 09:24, Reinier Olislagers wrote:

> make "FPC=/home/odroid/development/fpcbootstrap/arm-linux-ppcarm"
> "--directory=/home/odroid/development/fpctrunk/compiler"
> "CROSSOPT=-dFPC_ARMHF -Cparmv7a -CaEABIHF -CfVFPv3" "OPT=-dFPC_ARMHF"
> "OS_TARGET=linux" "CPU_TARGET=arm" "OVERRIDEVERSIONCHECK=1" "cycle"

I just noticed that you are adding -dFPC_ARMH also to CROSSOPT. That  
does not do anything and can be removed. In combination with your  
remark at http://wiki.lazarus.freepascal.org/ARM_compiler_options that  
"e.g. adding -dFPC_ARMHF when compiling a program will not change  
anything" and the last post of Thaddy also talking about CROSSOPT,  
there seems to a lot of confusion about what this means. It's  
nevertheless very simple:
* the -dXXX command line parameter simply tells the compiler to define  
symbol "XXX" as if there were a {$define XXX} at the top of every  
compiled source file. By definition this does not (and cannot) affect  
code generation. Regarding the statement on the wiki: it's like saying  
that adding "-vl" will not change anything regarding the code  
generation; it's not wrong, but it shouldn't be said either because it  
suggests that under some circumstances these parameters actually could  
change something (for the pedantic nitpickers: -dXXX could change  
something if fpc.cfg contains an "#ifdef XXX" statements, but that's  
not relevant here).
* the compiler contains a bunch of {$ifdef FPC_ARMHF} source blocks.  
When these are enabled and you compile an ARM compiler, then the  
resulting compiler will generate ARM hardfloat ABI code. Adding - 
dFPC_ARMHF to OPT means that this parameter will be used while  
compiling the compiler (both cross and native), and hence the compiled  
ARM compilers (both cross and native) will generate ARM hardfloat ABI  
code
* adding a parameter to CROSSOPT means that it is only specified when  
compiling code using a generated cross-compiler. So if you were to add  
-dFPC_ARMHF to CROSSOPT and not to OPT, then you would first build an  
ARM cross-compiler that generate softfp ABI code, and subsequently the  
makefiles would build a native ARM compiler that itself uses the  
softfp ABI, but which generates hardfloat ABI code. It seems extremely  
unlikely that you would deliberately want your cross-compiler and  
native compiler to generate different code.
* Adding -dFPC_ARMHF both to OPT and CROSSOPT means that -dFPC_ARMHF  
will be passed once while building the cross-compiler and twice while  
building the native compiler. Again, this is not wrong, but it  
shouldn't be done because it suggests that under some circumstances - 
dFPC_ARMHF should be part of CROSSOPT.


Jonas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20140305/fb5d7830/attachment.html>


More information about the fpc-devel mailing list