[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.html>
More information about the fpc-pascal
mailing list