<br><br><div class="gmail_quote">On Thu, Nov 25, 2010 at 1:50 AM, Mattias Gaertner <span dir="ltr"><<a href="mailto:nc-gaertnma@netcologne.de">nc-gaertnma@netcologne.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

On Thu, 25 Nov 2010 00:44:52 +0300<br>
<div><div></div><div class="h5">Max Vlasov <<a href="mailto:max.vlasov@gmail.com">max.vlasov@gmail.com</a>> wrote:<br>
<br>
> On Thu, Nov 25, 2010 at 12:36 AM, Mattias Gaertner <<br>
> <a href="mailto:nc-gaertnma@netcologne.de">nc-gaertnma@netcologne.de</a>> wrote:<br>
><br>
> > On Thu, 25 Nov 2010 00:03:09 +0300<br>
> > Max Vlasov <<a href="mailto:max.vlasov@gmail.com">max.vlasov@gmail.com</a>> wrote:<br>
> ><br>
> > > Hi,<br>
> > > sometimes it takes time for a Delphi developer to understand the logic of<br>
> > > fpc/lazarus packages and it's indeed content and full. Recently tried to<br>
> > > measure different performance related numbers for a project and finally<br>
> > got<br>
> > > that I should change the level of optimization for packages, not for the<br>
> > > project if performance-related unit is in a package (CMIIW). But just<br>
> > > wondering,.. these options actually consumes time so more often<br>
> > developers<br>
> > > leave optimization to fastest and when the time comes, rebuilds the<br>
> > project<br>
> > > with full optimization on. It looks like there's no single option<br>
> > allowing<br>
> > > do this for a given project in Lazarus, right? But even if there's an<br>
> > option<br>
> > > to rebuild all related packages, I still can't with one click change this<br>
> > > radiobox for every related package. Probably this won't be a problem if I<br>
> > > finally understand the logic and get used to it, just trying to find<br>
> > whether<br>
> > > I miss something<br>
> ><br>
> > You can add a macro (e.g. $(MyOptions) ) to the custom options of<br>
> > a package and set the macro in the project build macros (e.g.<br>
> > MyOptions=-O4). You need 0.9.29 for this.<br>
> ><br>
> ><br>
> ><br>
> ><br>
> Mattias, it looks very promising, but will it affect the logic of "build<br>
> all" command, currently from what I see from output it doesn't care about<br>
> other packages units as long as their dates were not changed.<br>
<br>
</div></div>If the build options changed the package is recompiled.<br>
<div class="im"><br>
<br>
> In other<br>
> words, what is the menu item I should use to "force" fpc compile not only<br>
> units with changed dates, but all units from all packages using and with my<br>
> new  $(MyOptions)?<br>
<br>
</div>No force needed.<br>
<div><div></div><div class="h5"><br></div></div></blockquote></div><br>Mattias, there's still something missing in my understanding. I looked also at <a href="http://wiki.lazarus.freepascal.org/Macros_and_Conditionals">http://wiki.lazarus.freepascal.org/Macros_and_Conditionals</a> and tried to do as suggested. My package now contains macro munilib_optimization with values 'General' and 'Full'<br>

<br>if munilib_optimization = 'General' then<br>  CustomOptions:='-O1'<br>else<br>  CustomOptions:='-O3'<br><br>Then I try to change the value munilib_optimization in the main project Build modes (the project uses this package) . Ctrl-F9 -> Nothing changes (the corresponding .ppu and .o for the unit in question stays the same date regardless of my change), Build All -> Also nothing changes. <br>

<br>The wiki also says that the scope of the changed value includes the package that introduced this option. Does it mean the the Compile button of this package is supposed to have the project compile context? So pressing Compile in the package window with different Macro values in the main project window should lead to different compile results? If so, should the "Show options" button in the package Compile options show context-sensitive computed parameters (now it looks like the macro executed without taking the main project mode setting into consideration). I'm asking because my observation about unexpected build results is based on non-direct symptoms, like different file dates and a sense that the optimization is in effect or not. It would be better to rely on more solid information.<br>

<br>btw, the package window sometimes freezes the IDE when I try to change something (It's when it constantly redraws trying to compile and resaves the corresponding lpk size making it either zero size or actual size. I reported a similar symptoms today about changing compiler message (fully reproducable), but when I experimented today with Build Modes/Macros, compiling the packages several times led to the same freezing behavior.<br>

<br>Max Vlasov<br>