I today looked at an issue posted in the lazarus forum:
https://forum.lazarus.freepascal.org/index.php/topic,60790.0.html
the user is unable to use ctrl-space for help because codetools cannot
find the required unit rp2040.
I could not reproduce the issue with my older installation of
lazarus-trunk but when I upgraded to latest trunk from today I saw the
same issue.
Possible reason is that lazarus cannot extract the info about the unit
source file from the output of the -ix format of fpc
I commented out a few log entries and got this result:
TFindDeclarationTool.FindUnitSource
Self="/Users/ring/devel/pico-fpcexamples/blinky/blinky.lpr"
AnUnitName="RP2040" AnUnitInFilename=""
TCTDirectoryCache.FindUnitSourceInCompletePath AUnitName="RP2040"
InFilename="" Directory="/Users/ring/devel/pico-fpcexamples/blinky/"
TCTDirectoryCache.FindUnitSourceInCompletePath unit RP2040 not found in
SrcPath="/Users/ring/devel/pico-fpcexamples/blinky;/Users/ring/devel/pico-fpcexamples/units"
Directory="/Users/ring/devel/pico-fpcexamples/blinky/" searchin in
unitset ...
TCTDirectoryCache.FindUnitInUnitSet
Directory="/Users/ring/devel/pico-fpcexamples/blinky/"
UnitSet="CompilerFilename=/Users/ring/fpcupdeluxe/fpc/bin/x86_64-darwin/fpc.sh
TargetOS=embedded
TargetCPU=arm
Options=
FPCSrcDir=/Users/ring/fpcupdeluxe/fpcsrc/
Stamp=1" AUnitName="RP2040"
TFPCUnitSetCache.GetUnitSrcFile Unit="RP2040" SrcSearchRequiresPPU=False
SkipPPUCheckIfTargetIsSourceOnly=True
TFPCUnitSetCache.GetUnitSrcFile Unit="RP2040" Result=
TCTDirectoryCache.FindUnitInUnitSet
Directory="/Users/ring/devel/pico-fpcexamples/blinky/"
UnitSet="CompilerFilename=/Users/ring/fpcupdeluxe/fpc/bin/x86_64-darwin/fpc.sh#10TargetOS=embedded#10TargetCPU=arm#10Options=#10FPCSrcDir=/Users/ring/fpcupdeluxe/fpcsrc/#10Stamp=1"
AUnitName="RP2040" Result=""
TCTDirectoryCache.FindUnitSourceInCompletePath unit RP2040 not found in
unitlinks. Directory="/Users/ring/devel/pico-fpcexamples/blinky/"
TCTDirectoryCache.FindCompiledUnitInUnitSet
Directory="/Users/ring/devel/pico-fpcexamples/blinky/"
UnitSet="CompilerFilename=/Users/ring/fpcupdeluxe/fpc/bin/x86_64-darwin/fpc.sh
TargetOS=embedded
TargetCPU=arm
Options=
FPCSrcDir=/Users/ring/fpcupdeluxe/fpcsrc/
Stamp=1" AUnitName="RP2040.ppu"
TCTDirectoryCache.FindCompiledUnitInUnitSet
Directory="/Users/ring/devel/pico-fpcexamples/blinky/"
UnitSet="CompilerFilename=/Users/ring/fpcupdeluxe/fpc/bin/x86_64-darwin/fpc.sh#10TargetOS=embedded#10TargetCPU=arm#10Options=#10FPCSrcDir=/Users/ring/fpcupdeluxe/fpcsrc/#10Stamp=1"
AUnitName="RP2040.ppu" Result=""
### TCodeToolManager.HandleException: [20170421200056] "unit not found:
RP2040" in "/Users/ring/devel/pico-fpcexamples/blinky/blinky.lpr"
when I manually run the -ix command with my fpc I receive the hits I
would expect:
~/fpcupdeluxe/fpc/bin/x86_64-darwin/fpc -Tembedded -Parm -ix | grep -i
rp2040
<controllertype name="RP2040" controllerunit="RP2040"/>
<controllertype name="RASPI_PICO" controllerunit="RP2040"/>
<controllertype name="FEATHER_RP2040" controllerunit="RP2040"/>
<controllertype name="ITZYBITZY_RP2040" controllerunit="RP2040"/>
<controllertype name="QTPY_RP2040" controllerunit="RP2040"/>
<controllertype name="TINY_2040" controllerunit="RP2040"/>
and I also find the unit in my fpcsrc directory:
find /Users/ring/fpcupdeluxe/fpcsrc -name "rp2040*"
/Users/ring/fpcupdeluxe/fpcsrc/rtl/embedded/arm/rp2040.pp
I am stuck because I cannot find the correct implementation for
TCTGetCompiledUnitFromSet althoug I searched through all sources for
(const UnitSet, AnUnitName: string)
Michael
Please note that you will not find unit rp2040 in official trunk, only
in my version but the same issue should be there for any other existing
embedded comtrollerunit
--
_______________________________________________
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus