[fpc-devel] targetandroid - can't build for armv7, hangs on pooledmm.pp

Thomas Schatzl tom_at_work at gmx.at
Wed Aug 1 10:05:09 CEST 2012


Hi,

On Tue, 2012-07-31 at 14:20 +0200, Dennis Spreen wrote:
> I've tested the "new" targetandroid branch, and by using fpc 2.6.0 and
> making a new fpcmake (taken from the targetandroid branch), I'm able to
> compile for armv5:
> 
> make crossinstall OS_TARGET=android CPU_TARGET=arm CROSSOPT="-CfSOFT
> -Cparmv5t -mfloat-abi=soft" CROSSBINDIR=%ANDROID_BIN_ARM%
> BINUTILSPREFIX=arm-linux-androideabi-
> 
> Works well. But if I'm using

That's what's mostly been tested and works as you found out.

> 
> CROSSOPT="-CfVFPV3 -Cparmv7 -mfloat-abi=hard"

Last time I tried compiling with -Cfvfpv2 or 3 the compiler did not
cycle, so I could not test further. Has been some time, and this was
native compilation.

I think -mfloat-abi does nothing, but maybe that changed recently -
there have been many, many changes to the ARM support recently. Further
I am actually surprised that there is hardfp support for fpc. If so, it
is probably in a somewhat experimental state too.

Note that the second android fp ABI is still softfloat, although you can
use the vfp registers. I.e. -Cvfpv3(d16) is the only switch you can use,
in conjunction with -Cfsoft. (and add -Cparmv7).

Note that the other android fp ABI is still softfloat, although you can
use the vfp registers. I.e. -Cvfpv3(d16) is the only switch you should
use as fp related options.

> it hangs during compilation of fcl-base:
> 
> start compiling package fcl-base for target arm-android.
>       Compiling fcl-base\BuildUnit_fcl_base.pp
>       Compiling .\fcl-base\src\ascii85.pp
>       Compiling .\fcl-base\src\avl_tree.pp
>       Compiling .\fcl-base\src\base64.pp
>       Compiling .\fcl-base\src\blowfish.pp
>       Compiling .\fcl-base\src\bufstream.pp
>       Compiling .\fcl-base\src\cachecls.pp
>       Compiling .\fcl-base\src\contnrs.pp
>       Compiling .\fcl-base\src\custapp.pp
>       Compiling .\fcl-base\src\eventlog.pp
>       Compiling .\fcl-base\src\fptimer.pp
>       Compiling .\fcl-base\src\gettext.pp
>       Compiling .\fcl-base\src\idea.pp
>       Compiling .\fcl-base\src\inifiles.pp
>       Compiling .\fcl-base\src\inicol.pp
>       Compiling .\fcl-base\src\iostream.pp
>       Compiling .\fcl-base\src\libtar.pp
>       Compiling .\fcl-base\src\maskutils.pp
>       Compiling .\fcl-base\src\pooledmm.pp
> 
> and now it hangs.
> Does not make any difference if targetandroid branch compiler used for
> the make crossinstall, or the current trunk\.
> 
> Any clues what I've missed there?

At least after removing -mfloat-abi=hard it compiles through here.

(make clean crosszipinstall OS_TARGET=android CPU_TARGET=arm
CROSSOPT="-Cfvfpv3 -mfloat-abi=soft -Cparmv7"  FPC=i386-linux-ppc386
BINUTILSPREFIX=arm-linux-androideabi-)

There is another recent compiler switch to pass options to the assembler
(you want "-march=armv7a" to avoid some warnings) to the assembler, but
atm I do not remember. Maybe somebody else can help?

Note that the targetandroid branch may not support these options yet. I
will merge from trunk again soon'ish.

Thomas




More information about the fpc-devel mailing list