[fpc-pascal] Compile for WinCE 7, target ARM, CPU Cortex-A9
Cyrax
evvke at hotmail.com
Wed Apr 10 01:34:32 CEST 2019
On 9.4.2019 12.45, LacaK wrote:
>
>
>>
>>>
>>>
>>>> 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.
>
>
>
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
>
You can use IDE macros in path names at Project Options.
More information about the fpc-pascal
mailing list