|
From: | Khemir, Nadim |
Subject: | ANNOUNCE: PBS goes Alpha. |
Date: | Fri, 27 Jun 2003 11:51:04 +0200 |
Hi all,
I take the opportunity to announce a new build system: "PBS"
PBS is a 'rule based' software construction tool written in Perl. Current version of PBS is 0.23, it consists of +/- 300 Kb of perl code in 23 modules.
PBS is not a starting project (hundreds of hours work has already been invested in it) and it builds the system we produce at our job.
PBS is a Meta build system; it is made for you to easily build your system on top of it. A simple and powerful front end (pbs in lower case) exists and does indeed do builds.
Here is a simple example of a Pbsfile:
>>
PbsUse('Configs/gcc_rtos');
PbsUse('Configs/Projects/nailara');
PbsUse('Rules/BuildSystem');
AddRule [VIRTUAL], 'Top-level: all', ['all' => 'os.bin'],
BuildOk("Top-level: all built successfully.") ;
AddRule 'Final link', ['os.elf' => 'nailara.plo'],
[ "LD LDFLAGS -o FILE_TO_BUILD DEPENDENCY_LIST -lc /arm-elf-tools/lib/gcc-lib/arm-rtos/3.2.2/libgcc.a -lc" ];
AddSubDirRules('hal', 'os', 'projects'); # user defined function
<<
An example or two of more advanced rule definitions:
>>
AddRule, 'C_dependencies', \&C_SourceDepender, \&C_Builder ;
sub C_SourceDepender
{
...
<<
>>
ExcludeFromDigestGeneration( 'c_files' => qr/\.c$/) ;
ExcludeFromDigestGeneration( 's_files' => qr/\.s$/) ;
AddRule 's_objects', [ '*/*.o' => '*.s' ], ["AS ASFLAGS -o FILE_TO_BUILD DEPENDENCY_LIST"];
AddRule 'c_objects', [ '*/*.o' => '*.c' ], ["CC CFLAGS CDEFINES CFLAGS_INCLUDE -o FILE_TO_BUILD -c DEPENDENCY_LIST" ] ;
AddRuleTo 'BuiltIn', [META_RULE], 'o_cs_meta', [\&FirstAndOnlyOneOnDisk, ['c_objects', 's_objects'], 'c_objects'] ;
<<
PBS is looking for more people to work on it. Except the boring stuff (documentation, test, installation, web site ...) there are few things to develop and finish:
- Distributed build
- Heterogeneous build environments (ex I need something compiled with a compiler that doesn't work in my OS)
- Parallel build (exists and works but is limited by the threading available in perl)
- Build optimization
- Integration with source control, etc...
- Other ideas we haven't even thought about
If you want to help with the development of PBS, try PBS or simply give tips about what you want to find in a build system, send a mail to address@hidden
[Prev in Thread] | Current Thread | [Next in Thread] |