From: Alexander K. <kw...@ah...> - 2001-05-28 16:08:35
|
Andreas Leitner wrote: ... > It will be a property of XACE that external classes (different from all > aproaches done till yet) can be nested. So sub-clusters and libraries > each declare their external dependecies and the resulting build files > will get this information merged together. This solves the problem of > combining differen C dependent libraries. > > The xace tool has the following command line usage: > xace [-DVALUE]* [--se|--ise|--ve|--hact] [options] xace-file > > Where -D defines conditional variables, that serve a similar process > than they do in gepp. I thought a lot about this. But I think going for > it is the best way. Here is an example (not yet in Schema) of how such a > conditional will look like: Only if a variable is defined the cluster > will be included. the same can be done for options and external clauses > of course. For every selected compiler a variable with the compiler > short hand in upper case will be defined automatically. > > -- > <cluster condition="ISE|HACT"> > ... > </cluster> We were planning to introduce the similar XML scheme in VE when "cluster.es" was developed. Unfortunately at that time there were no descent XML parser and Windows INI files did the job. At the moment "cluster.es" in its INI format is still used, but we would like to switch to XML format sometime. It seems that current "cluster.es" works pretty nice for VE, so the future XML need to be functionally as rich as "cluster.es" is. It also would be great if some common format like the proposed XACE will be used. The comparison with "cluster.es" shows that XACE misses the following in its current incarnation: 1. The possibility to specify the source files a) in several paths b) with different file masks (AFAIK this is only supported by VE - all other compilers read only *.e files) c) depending on some additional settings (like the current OS) d) recursively 2. The possibility to specify cluster dependencies taking some settings into account (e.g., OS platform again) 3. The possibility to specify external dependencies (again taking some settings into account). 1c, 2 and 3 all require some general mechanism to make XACE conditional. Using compiler-name variable is OK, but it does not cover all the needs (at least not for VE). Some extension mechanism is also required to allow compiler-specific options to be specified. As to the system settings, usually there are at least two versions of the system - debug and finalized. And it would be rather attractive to switch between different sets of the settings just by specifying a different command-line parameter or by selecting a system type in the GUI environment without the need to modify XACE every time. The same applies to libraries (precompiled clusters). As to two top-level elements ("system" and "library"), there is a possibility that the system/library and cluster reside in the same folder, so the description file can list properties of both of them. In fact nothing prevents one XACE file to specify several related clusters. I still do not have the complete picture of what and how can be specified in XACE-like language, but I do want to see it a cross-platform solution for Eiffel vendors. Looking forward, Alexander Kogtenkov Object Tools, Moscow |