[fpc-pascal] Compile for WinCE 7, target ARM, CPU Cortex-A9

LacaK lacak at zoznam.sk
Tue Apr 9 11:45:50 CEST 2019



>
>>
>>
>>>         Note that you probably don't need two different cross
>>>         compilers if your cpu-OS target is the same
>>
>>         Target CPU family is same: "arm", but Target processor is not
>>         the same: "ARMv4" versus "ARMv7" ...
>>
>>         So I do not know if this requires two pre-compiled
>>         cross-compilers or not?
>>
>>     You only need different compilers if you have different ABIs
>>     (e.g. Soft Float vs. Hard Float). For WinCE that isn't applicable
>>     however.
>>
>     So it does not matter how I build cross-compiler using
>     FpcUpDeluxe: wheter I use "-Cparmv5" or "-Cparmv7A" ?
>
>
> Correct.
>
>     Then there is still problem with precompiled RTL/packages?
>
>     Because when I only change "Target processor" (in Lazarus build
>     using FpcUpDeluxe) I can compile application, but I can not run it
>     on target system (so I guess, that resulting EXE is not compiled
>     for target processor).
>
>     When I add to Custom options: -CfVFPV2 then I get error while
>     compiling: Fatal: Can't find unit system used by Test1
>
>     When I download and install default Lazarus and cross-compiler
>     then when I change "Target processor" to "ARMv5" or "ARMv7A" I
>     get: "project1.lpr(22,0) Error: Error while assembling exitcode 1"
>
>
> As said by Christo you need to select the correct set of compiled 
> units. Also you need to select the correct processor type when 
> building your application.
>
I did this test:

1. I have precompiled units for "-Cparmv5" and "-Cparmv7A"and I have 
saved these precompiled units
2. Then I copy "v5" units to expected directory (of FpcUpDeluxe 
structure) fpc\units\arm-wince
3. Then I run Lazarus and try build for Target processor ARMv5 and run 
on target system ... works

4. Then I have copied "v7" units over prior "v5" units
5. I repeated step 3 ... works on target system with ARMv7 processor

Until now only question is :
Can I set somewhere (in Project Options), in inteligent way, where 
compiler will look for precompiled units ... to be able in one project 
switch between Build modes, where each build mode will look in other 
directory ?

But when I try set also "-CfFPV2" (in Project Options / Custom Options ) 
then I get:

Fatal: Cannot find system used by fcllaz. Make sure all ppu files of a 
package are in its output directory. ppu in wrong 
directory=D:\TEMP\fpcupdeluxe\fpc\units\arm-wince\rtl\system.ppu..

I can resolve this error (beside using precompiled units with same flag 
set) by adding "-CfFPV2" also in fpc.cfg after:
#IFDEF FPC_CROSSCOMPILING
#IFDEF WINCE
#IFDEF CPUARM

So in this use case it is not sufficient only have two (or third) 
distinct sets of precompiled units ...

So can these problems be solved somehow using only Project Options 
without need to modify fpc.cfg ?

Btw. in fpc.cfg I have:
# searchpath for units and other system dependent things
-FuD:\TEMP\fpcupdeluxe\fpc/units/$fpctarget
-FuD:\TEMP\fpcupdeluxe\fpc/units/$fpctarget/*
-FuD:\TEMP\fpcupdeluxe\fpc/units/$fpctarget/rtl

Can this be avoided in fpc.cfg and transfered to Project Options ? (is 
/* supported in Lazarus, becuase Lazarus complains about non-existent 
directory)

TIA

-Laco.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20190409/a23c06fc/attachment.html>


More information about the fpc-pascal mailing list