Andrei,

This is very nice, I just gave it a try and I love it, thanks a lot.

   Jan.

Andrei Pelinescu-Onciul wrote:
> Latest cvs HEAD comes with an improved, but also heavily modified build
> system.
> Now the configuration one uses to build ser will be saved automatically
> the first time some make command is run on a clean (or better said
> proper) build tree.
> The configuration can be re-generated any time by running make cfg or
> make config. Note that the configuration is deleted by make proper, so
> after a make proper the configuration will also be regenerated.
> The configuration contains the module list and all the compile flags and
> defines (automatically detected by Makefile.defs or manually
> overwritten).
> 
> For example to include mysql in the module list used for compile,
> install, clean a.s.o and to compile in debug mode, one would use one of
> the following equivalent commands:
> 
>  make cfg include_modules=mysql mode=debug ; make all
> 
> or
> 
>  rm config.mak ; make all include_modules=mysql mode=debug 
> 
> All future make commands will use the saved options, unless they
> specifically overwrite them on the command line (e.g. make install
> will install also the mysql module, but make install skip_modules="mysql
> print" will not install the mysql and print modules).
> 
> The main advantages of this approach are convenience (you don't have to
> remember every time to add include_modules=mysql to make's command line)
> and speed (see below).
> 
> The changes should be mostly transparent and all of the old ways of
> running make should still work, just remember that the first
> time you run make after a make proper, on freshly checkout sources or
> after a Makefile.defs change (e.g. changed ser version) the config will be
> rebuilt automatically and all the current options will be saved.
> For example the following command sequence will result in make all
> compiling only the print module, which might be a little unexpected:
> 
> touch Makefile.defs # or cvs update that changes Makefile.defs or make
>                     # proper
> make modules modules=modules/print
> make all # it will compile only the print module because that was saved
>          # in the config
> 
> (to see what modules are going to be compiled, one can use 
> make print-modules)
> 
> Most of the config saved value can be temporarily overwritten without
> changing the config, e.g.:
> 
> make cfg skip_modules=print CPU=athlon64
> # compiles optimized for athlon64, skips the print modules
> make all
> # compiles also the print module 
> make all include_modules=print  
> # compiles only the print module, optimized for pentium-m
> make modules modules=modules/print CPU=pentium-m
> 
> 
> Speed tests:
> 
> 1. make run inside a module (print in this case, because it has very
> little code to compile and we want to measure make and not gcc):
> 
> compared to older ser 2.1: make proper is 11 times faster, make clean 12
> times, make on fresh sources is 1.5 times faster, make on "configured"
> sources is 3 times faster and a do-nothing make (make after make) is 17
> times faster.
> 
> compared to ser 2.0 the numbers are: 10, 10, 1.05, 2.1, 24.
> 
> 2. make from the main directory, with modules=modules/print (only the
> print module + main ser + utils will be included):
> 
> 
> compared to older ser 2.1: make proper is 15.7 times faster, make clean 8.8
> times, make on fresh sources is 1.25 times faster, make on "configured"
> sources is 2.6 times faster and a do-nothing make (make after make) is 8.8
> times faster.
> 
> compared to ser 2.0 the numbers are: 16.6, 10, 0.81, 1.99, 5.17.
> (note that in this case the compile values are not so great, because
> 2.1's core is bigger then 2.0)
> 
> 
> If you find any problems (errors, things that worked before and don't
> work anymore a.s.o), please drop me a mail and don't forget to include
> make's version (make --version or gmake --version) and  config.mak.
> 
> 
> Andrei
> _______________________________________________
> Serdev mailing list
> [email protected]
> http://lists.iptel.org/mailman/listinfo/serdev

_______________________________________________
Serdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/serdev

Reply via email to