[Lazarus] How to find out why a unit is used in a project?

R.Smith ryansmithhe at gmail.com
Thu Sep 24 12:19:26 CEST 2020


On 2020/09/24 11:04, Sven Barth via lazarus wrote:
> Bo Berglund via lazarus <lazarus at lists.lazarus-ide.org 
> <mailto:lazarus at lists.lazarus-ide.org>> schrieb am Do., 24. Sep. 2020, 
> 08:08:
>
>
>     >If course there is. That's how the unit system is supposed to
>     work after
>     >all.
>     >
>     Yes, I realize that now.
>
>     It means that the client even though it will not interface to the
>     hardware will have all of the code used to do that included in the
>     app, right?
>
>
> The compiler (and linker) only includes code that is used. Thus as 
> long as you don't call the hardware functions anywhere in your program 
> (this includes indirectly or through initialization/finalization 
> sections) then the code won't be in the final binary either.
>
> Regards,
> Sven


Sven, I believe Bo's problem is that even though he won't need the Code 
(which the linker/compiler will surely cleverly disregard), he also do 
not even wish to "need" the physical Unit files to be in view of the 
compiler - at least not the secondary-dependency units - when he 
references a unit file in which he only needs a few declarations visible.

Sadly Bo, the entire premise of the Unit system is that every dependency 
will be in view, the compiler cannot decide BEFORE compiling that it 
would or wouldn't need a unit which appears in a "unit" clause lower 
down the dependency tree. Consider that a used unit may well declare a 
global variable that overrides one from a higher-up unit, for instance. 
So even though the program has all the participating symbols at hand 
without looking at this depended unit with the override, it will produce 
a different program (than when that override IS considered) and so 
cannot simply decide to ignore/not require a unit preemptively before 
actually parsing the physical file.

All units you use, pluse every dependent unit they use, must be 
available and visible to the compiler. That rule is absolute.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20200924/a387b8bb/attachment.html>


More information about the lazarus mailing list