Sven Barth wrote 23 lines
Bo Berglund via lazarus <
<mailto:>> 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>