[Lazarus] building lazarus from the command line...

waldo kitty wkitty42 at windstream.net
Fri Apr 20 00:58:03 CEST 2012


mattias,

firstly i want to thank you very much for you work in enabling lazarus to be 
built and updated completely from the command line... there's been a lot of 
changes and cleanup done... i am much happier now then i was several weeks ago 
when attempting this before you got to work on it as you did ;)

as you know, i've been working with a "script" (aka .BAT file) to update lazarus 
from the svn and build everything from the command line... i seem to have bumped 
into a discrepancy that i'm at a bit of a loss to explain...

to make sure that i'm at a true default state (eg: first time SVN pull and build 
from the command line), i deleted my existing miscellaneousoptions.xml file and 
then ran my script... yes, this lost me the chmhelp package but that's not a 
part of the problem, i don't think... these tests were done with revision 36911...

here's the results... the files with _r36911 in them are built WITHOUT 
miscellaneousoptions.xml and the ones without the revision number are built WITH 
miscellaneousoptions.xml... all the following files ARE revision 36911...

04/19/2012  15:55          131,025,818 lazarus_r36911-clean_up_build_all.exe
04/19/2012  17:36          131,294,581 lazarus-clean_up_build_all.exe

04/19/2012  15:58          131,025,818 lazarus_r36911-normal.exe
04/19/2012  17:40          131,294,581 lazarus-normal.exe

04/19/2012  16:07          113,273,997 lazarus_r36911-debug.exe
04/19/2012  17:48           76,581,382 lazarus-debug.exe

04/19/2012  16:14           12,728,492 lazarus_r36911-optimized.exe
04/19/2012  17:52           13,444,780 lazarus-optimized.exe


i do understand that the inclusion of the chmhelp package (the only "extra" one 
i have installed) will cause some exe size differences (larger) but i fail to 
understand how the debug flavor alters its size to be so much smaller with the 
use of the miscellaneousoptions.xml file... the only differences i am aware of 
is that the debug flavor WITH miscellaneousoptions.xml does a "clean all and 
build" PLUS it has the DEBUG and VERBOSE defines checked in the 
miscellaneousoptions.xml file...

here is the basic script commands (without all the pretty fluff'n'stuff)...

========== snip ==========
make clean
TortoiseProc /command:update /path:"%myLAZpath%"
make lazbuild lcl ideintf basecomponents starter

lazbuild.exe --build-ide= --build-mode="clean up + build all"
copy lazarus.exe lazarus-clean_up_build_all.exe

lazbuild.exe --build-ide= --build-mode="normal ide"
copy lazarus.exe lazarus-normal.exe

lazbuild.exe --build-ide= --build-mode="debug ide"
copy lazarus.exe lazarus-debug.exe

lazbuild.exe --build-ide= --build-mode="optimized ide"
copy lazarus.exe lazarus-optimized.exe
========== snip ==========


and here is the miscellaneousoptions.xml...

========== snip miscellaneousoptions.xml ==========
<?xml version="1.0"?>
<CONFIG>
   <MiscellaneousOptions>
     <Version Value="2"/>
     <BuildLazarusOptions>
       <Profiles Count="4">
         <Profile0 Name="Normal IDE">
           <LCLPlatform Value="win32"/>
           <IdeBuildMode Value="Build"/>
         </Profile0>
         <Profile1 Name="Debug IDE">
           <LCLPlatform Value="win32"/>
           <IdeBuildMode Value="Clean All + Build"/>
           <Options Count="1">
             <Item1 Value="-gw -gl -godwarfsets -gh -gt -Co -Cr -Ci -Sa"/>
           </Options>
           <Defines Count="2">
             <Item1 Value="Debug"/>
             <Item2 Value="Verbose"/>
           </Defines>
         </Profile1>
         <Profile2 Name="Optimized IDE">
           <LCLPlatform Value="win32"/>
           <IdeBuildMode Value="Build"/>
           <Options Count="1">
             <Item1 Value="-O2 -g- -Xs"/>
           </Options>
         </Profile2>
         <Profile3 Name="Clean Up + Build all">
           <LCLPlatform Value="win32"/>
           <IdeBuildMode Value="Clean + Build"/>
         </Profile3>
       </Profiles>
       <ProfileIndex Value="1"/>
       <AllDefines Count="2">
         <Item1 Value="Debug"/>
         <Item2 Value="Verbose"/>
       </AllDefines>
       <StaticAutoInstallPackages Count="1">
         <Item1 Value="chmhelppkg"/>
       </StaticAutoInstallPackages>
     </BuildLazarusOptions>
   </MiscellaneousOptions>
</CONFIG>
========== snip ==========

i have a log of the compile before using miscellaneousoptions.xml and another 
for after if you want to see them... when i do a side-by-side DIFF of the two 
logs in notepad++, they are virtually identical except for the inclusion of the 
cleaning section in the debug build... of obvious note is that there are now 
lines stating "Compiling Debug Version" which are not there when building the 
debug version WITHOUT the miscellaneousoptions.xml file... i'm starting to 
wonder if the two DEBUG and VERBOSE defines should be included in the base 
defaults when there is NO miscellaneousoptions.xml file...

other than that, i'm at a loss of explanation and am starting to wonder if, due 
to the methodology i'm using, if all four profiles should actually be using 
"clean all and build" so as to ensure that all units and libraries are built 
with the proper settings... but i second guess myself in this because the 
optimized package seems to be relatively close in both instances as do the 
"clean all + build" and "normal" flavors... but i also note that they (the last 
two) are now identical in size where a week or so ago there was a few tens or 
hundreds of Kbytes difference even between them...

the logs are 361K and 451K in size so i will only send them if you deem it 
necessary...





More information about the Lazarus mailing list