[fpc-pascal] Is this the correct way to configure fpc for multiple arm-embedded subarchs?

Michael Ring mail at michael-ring.org
Fri Feb 23 10:45:37 CET 2018


I am doing something similar to what you are doing, see below....

I also needed to create a softlink so that fpc can call ppcrossarm, it 
expects to call ppcarm

By using 'INSTALL_UNITDIR' there is no need to copy files at the end.

You will need to do a little tweak in fpc.cfg, after this it is 
transparent to handle the different subarchs, at least for arm and 
mipsel ;-)

Now I can use fpc to select matching arch/subarch and Lazarus works just 
fine.

Michael

fpc-cfg change:

# searchpath for units and other system dependent things
#ifdef embedded
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/$fpcsubarch
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/$fpcsubarch/*
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/$fpcsubarch/rtl
#else
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/*
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/rtl
#endif

--- snip

Buildscript:

   CROSSOPT="-O1 -gw2 -dDEBUG"
   #CROSSOPT="-O1 -gw2 -dDEBUG -godwarfcpp"

   SUBARCH=armv6m
   make clean buildbase CROSSINSTALL=1 OS_TARGET=embedded CPU_TARGET=arm 
SUBARCH=$SUBARCH CROSSOPT="$CROSSOPT" BINUTILSPREFIX=arm-none-eabi- || 
exit 1
   make installbase CROSSINSTALL=1 OS_TARGET=embedded CPU_TARGET=arm 
SUBARCH=$SUBARCH CROSSOPT="$CROSSOPT" BINUTILSPREFIX=arm-none-eabi- 
INSTALL_UNITDIR=/usr/local/lib/fpc/3.1.1/units/arm-embedded/$SUBARCH/rtl 
|| exit 1
   #mv /usr/local/lib/fpc/3.1.1/ppcrossarm 
/usr/local/lib/fpc/3.1.1/ppcrossarm-$SUBARCH

   SUBARCH=armv7m
   make clean buildbase CROSSINSTALL=1 OS_TARGET=embedded CPU_TARGET=arm 
SUBARCH=$SUBARCH CROSSOPT="$CROSSOPT" BINUTILSPREFIX=arm-none-eabi- || 
exit 1
   make installbase CROSSINSTALL=1 OS_TARGET=embedded CPU_TARGET=arm 
SUBARCH=$SUBARCH CROSSOPT="$CROSSOPT" BINUTILSPREFIX=arm-none-eabi- 
INSTALL_UNITDIR=/usr/local/lib/fpc/3.1.1/units/arm-embedded/$SUBARCH/rtl 
|| exit 1
   #mv /usr/local/lib/fpc/3.1.1/ppcrossarm 
/usr/local/lib/fpc/3.1.1/ppcrossarm-$SUBARCH

   SUBARCH=armv7em
   make clean buildbase CROSSINSTALL=1 OS_TARGET=embedded CPU_TARGET=arm 
SUBARCH=$SUBARCH CROSSOPT="$CROSSOPT" BINUTILSPREFIX=arm-none-eabi- || 
exit 1
   make installbase CROSSINSTALL=1 OS_TARGET=embedded CPU_TARGET=arm 
SUBARCH=$SUBARCH CROSSOPT="$CROSSOPT" BINUTILSPREFIX=arm-none-eabi- 
INSTALL_UNITDIR=/usr/local/lib/fpc/3.1.1/units/arm-embedded/$SUBARCH/rtl 
|| exit 1
   #cp /usr/local/lib/fpc/3.1.1/ppcrossarm 
/usr/local/lib/fpc/3.1.1/ppcrossarm-$SUBARCH
   ln -sf /usr/local/lib/fpc/3.1.1/ppcrossarm /usr/local/bin/ppcarm




Am 22.02.18 um 21:35 schrieb Christo:
> On Mon, 2017-12-04 at 08:22 +0100, Michael Ring wrote:
>> Hi Florian!
>>
>> I would like to work on this patch, can you share it with me?
>>
>> Thank you,
>>
>> Michael
>>
>>
>> Am 03.12.17 um 19:05 schrieb Florian Klämpfl:
>>> Am 29.11.2017 um 06:36 schrieb Christo:
>>>> On Sun, 2017-11-26 at 17:19 +0100, Michael Ring wrote:
>>>>> I am looking for an easy way to have all cortex-m compilers available
>>>>> at the same time to be able to do automated building/testing
>>>> There is a similar problem with the AVR target having several
>>>> subarchitectures.  One option I think is to have a subarch defined by
>>>> the compiler, then it would be easy to lay out the compiled unit
>>>> structure in fpc.cfg according to subarch.  I've made an attempt at
>>>> adding a subarch define to my local compiler source for AVR, but
>>>> haven't developed the idea further.  I'm not a compiler dev so there
>>>> may be better options.
>>> Subarch directories are imo the best solution, I have a half-backen patch for this, not yet
>>> finished
>>> though.
> I've made a script file (attached) that iterates through the different subarchitectures
> available for the AVR compiler, calls make and then moves the compiled units to a subdirectory.
> I think the logic of this script should be moved to the existing rtl makefile so that all
> subarchitectures for a target gets generated and sorted in one go.  Of course then the default
> fpc.cfg ideally needs to be updated to reflect the subarch folder structure for ARM and AVR.
>
> I'm putting this out there hoping that someone familiar with the topic and makefile syntax can
> help with a patch for FPC.
>
>
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20180223/233539e6/attachment-0001.html>


More information about the fpc-pascal mailing list