|
|
Line 3: |
Line 3: |
| [[Category:Configuration]] | | [[Category:Configuration]] |
| == General ideas == | | == General ideas == |
− | * as much as possible independant from the system (windows/unix) | + | * independant from the platform (windows/unix/.NET) |
| * one file with multiple configurations (eg. debug, release build) | | * one file with multiple configurations (eg. debug, release build) |
− | * include/exclude as regexp pattern | + | * exclude as regexp pattern |
| * global ignore patterns (eg. cvs/svn) | | * global ignore patterns (eg. cvs/svn) |
− | * include other configuration files (eg. to add a library just include the config file of the library) | + | * libraries |
| * relative paths | | * relative paths |
| * actions before/after run/compile (eg. start a server) | | * actions before/after run/compile (eg. start a server) |
− |
| |
− | === Things to implement ideas ===
| |
− | * conditions (if windows then ... elseif unix then ... end)
| |
− | * variables (user and predefined)
| |
− | * inheritance of configuration
| |
− | * C code to compile (when wrapping C API:s or optimizing code)
| |
− | * Flags to C compiler and linker
| |
− |
| |
− | === Other ===
| |
− | * convert old ace files into new format
| |
− | * *.epr vs *.ace
| |
− | * [[ProjectFiles]]
| |
− |
| |
− | == Possible implementation layout ==
| |
− |
| |
− | Some more information are available here: http://www.ise/tools/public_zone/index.php?op=dl&path=/home/patrickr/public_html/Public/project_configuration.pdf (Part with two config files has changed to only one config file.)
| |
− |
| |
− | [[Image:Configuration1.jpg]]
| |
| | | |
| A system consists of multiple targets. A target can extend another target. A target can have some libraries, assemblies, clusters and override clusters. | | A system consists of multiple targets. A target can extend another target. A target can have some libraries, assemblies, clusters and override clusters. |
| A library has an associated target. A cluster can have a parent cluster. An override cluster has a some groups it overrides. | | A library has an associated target. A cluster can have a parent cluster. An override cluster has a some groups it overrides. |
− |
| |
− | <code>[eiffel, N]
| |
− | indexing
| |
− | description: "The configuration system."
| |
− | date: "$Date$"
| |
− | revision: "$Revision$"
| |
− |
| |
− | class
| |
− | CONF_SYSTEM
| |
− |
| |
− | feature
| |
− |
| |
− | name: STRING
| |
− | -- Name of the system.
| |
− |
| |
− | uuid: STRING
| |
− | -- UUID of this system. Used to uniquely identify libraries.
| |
− |
| |
− | targets: LIST [CONF_TARGET]
| |
− | -- The configuration targets.
| |
− |
| |
− | library_target: CONF_TARGET
| |
− | -- The target to use if this is used as a library.
| |
− |
| |
− | compileable_targets: LIST [CONF_TARGET]
| |
− | -- Targets that can be compiled (e.g. have a root feature).
| |
− | end
| |
− | </code>
| |
− |
| |
− | <code>[eiffel, N]
| |
− | indexing
| |
− | description: "A configuration target."
| |
− | date: "$Date$"
| |
− | revision: "$Revision$"
| |
− |
| |
− | class
| |
− | CONF_TARGET
| |
− |
| |
− | feature
| |
− |
| |
− | name: STRING
| |
− | -- Name of the target.
| |
− |
| |
− | version: CONF_VERSION
| |
− | -- Version number of the target.
| |
− |
| |
− | extends: CONF_TARGET
| |
− | -- If we extend another target, this is the other target.
| |
− |
| |
− | libraries: LIST [CONF_LIBRARY]
| |
− | -- The used libraries.
| |
− |
| |
− | overrides: LIST [CONF_OVERRIDE]
| |
− | -- The override clusters.
| |
− |
| |
− | clusters: LIST [CONF_CLUSTER]
| |
− | -- The normal clusters.
| |
− |
| |
− | assemblies: LIST [CONF_ASSEMBLY]
| |
− | -- The assemblies.
| |
− |
| |
− | root: CONF_ROOT
| |
− | -- The root feature.
| |
− |
| |
− | options: CONF_OPTIONS
| |
− | -- The options (assertions, debugs, warnings, ...)
| |
− |
| |
− | file_rule: CONF_FILE_RULE
| |
− | -- Globally exclude/include file rules.
| |
− |
| |
− | external_include: LIST [CONF_EXTERNAL_INCLUDE]
| |
− | -- Global external include files.
| |
− |
| |
− | external_objec: LIST [CONF_EXTERNAL_OBJECT]
| |
− | -- Global external object files.
| |
− |
| |
− | external_ressource: LIST [CONF_EXTERNAL_RESSOURCE]
| |
− | -- Global external ressource files.
| |
− |
| |
− | pre_compile: LIST [CONF_ACTION]
| |
− | -- Actions to be executed before compilation.
| |
− |
| |
− | post_action: LIST [CONF_ACTION]
| |
− | -- Actions to be executed after compilation.
| |
− |
| |
− | variables: LIST [CONF_VARIABLE]
| |
− | -- User defined variables.
| |
− | end
| |
− | </code>
| |
− |
| |
− | <code>[eiffel, N]
| |
− | indexing
| |
− | description: "Base class for configuration groups."
| |
− | date: "$Date$"
| |
− | revision: "$Revision$"
| |
− |
| |
− | class
| |
− | CONF_GROUP
| |
− |
| |
− | inherit
| |
− | CONF_CONDITIONED
| |
− |
| |
− | feature
| |
− |
| |
− | name: STRING
| |
− | -- The name of the group.
| |
− |
| |
− | directory: CONF_DIRECTORY
| |
− | -- The directory of the group.
| |
− |
| |
− | options: CONF_OPTIONS
| |
− | -- The options (assertions, debugs, warnings, ...)
| |
− |
| |
− | name_prefix: STRING
| |
− | -- An optional name prefix for this group.
| |
− |
| |
− | renaming: HASH_TABLE [STRING, STRING]
| |
− | -- Mapping of renamed classes from the old name to the new name.
| |
− |
| |
− | class_options: HASH_TABLE [CONF_OPTION, STRING
| |
− | -- Classes with specific options.
| |
− |
| |
− | end
| |
− | </code>
| |
− |
| |
− | <code>[eiffel, N]
| |
− | indexing
| |
− | description: "A library."
| |
− | date: "$Date$"
| |
− | revision: "$Revision$"
| |
− |
| |
− | class
| |
− | CONF_LIBRARY
| |
− |
| |
− | inherit
| |
− | CONF_GROUP
| |
− |
| |
− | feature
| |
− |
| |
− | library_target: CONF_TARGET
| |
− | -- The library target.
| |
− |
| |
− | end
| |
− | </code>
| |
− |
| |
− | <code>[eiffel, N]
| |
− | indexing
| |
− | description: "A project cluster."
| |
− | date: "$Date$"
| |
− | revision: "$Revision$"
| |
− |
| |
− | class
| |
− | CONF_CLUSTER
| |
− |
| |
− | inherit
| |
− | CONF_GROUP
| |
− |
| |
− | feature
| |
− | is_recursive: BOOLEAN
| |
− | -- Are subdirectories included recursively?
| |
− |
| |
− | parent: CONF_CLUSTER
| |
− | -- An optional parent cluster.
| |
− |
| |
− | dependencies: LIST [CONF_GROUP]
| |
− | -- Dependencies to other groups.
| |
− |
| |
− | file_rule: CONF_FILE_RULE
| |
− | -- Globally exclude/include file rules.
| |
− |
| |
− | is_visible (a_feature, a_class: STRING): BOOLEAN
| |
− | -- Is a feature of this cluster visible?
| |
− | end
| |
− | </code>
| |
− | <code>[eiffel, N]
| |
− | indexing
| |
− | description: "Clusters that override other groups."
| |
− | date: "$Date$"
| |
− | revision: "$Revision$"
| |
− |
| |
− | class
| |
− | CONF_OVERRIDE
| |
− |
| |
− | inherit
| |
− | CONF_CLUSTER
| |
− |
| |
− | feature
| |
− |
| |
− | override: LIST [CONF_GROUP]
| |
− | -- The groups that this cluster overrides.
| |
− |
| |
− | end
| |
− | </code>
| |
− |
| |
− | CONF_CONDITIONED is a class that allows to specify for which platform, build tuple something is enabled. Conditioned are: CONF_ACTION (pre-/postcompile actions), CONF_EXTERNAL_(INCLUDE|OBJECT|RESSOURCE), CONF_GROUP
| |
− |
| |
− | == Pseudocode example configuration ==
| |
− | files/eiffelvision/eiffelvision.ace
| |
− | <pre>
| |
− | system EiffelVision
| |
− |
| |
− | target Library
| |
− | version 2.0.0.1
| |
− | uuid 15ac36b5-2c65-41e9-8309-c504dd430a0b
| |
− |
| |
− | library base
| |
− | files/base/base.ace
| |
− |
| |
− | cluster vision
| |
− | files/vision
| |
− | recursive
| |
− | uses base
| |
− |
| |
− | external_include
| |
− | files/include/common.h [(all, all)]
| |
− | files/include/windows.h [(windows, all)]
| |
− | files/include/gtk [(unix, all)]
| |
− |
| |
− | external_objects
| |
− | files/obj/windows.o [(windows, all)]
| |
− | files/obj/gtk.o [(unix, all)]
| |
− | files/obj/debug.o [(unix, workbench)]
| |
− |
| |
− | target Debug extends Library
| |
− |
| |
− | cluster debug
| |
− | files/debug
| |
− | recursive
| |
− | uses base, vision
| |
− |
| |
− | root debug:ROOT_CLASS:make
| |
− |
| |
− | </pre>
| |
− |
| |
− | files/eiffelstudio/eiffelstudio.ace
| |
− | <pre>
| |
− | system EiffelStudio
| |
− | version 5.0.0.1
| |
− | uuid 9a8d3871-ef44-484c-9029-c52d17df40f0
| |
− |
| |
− | target Common
| |
− |
| |
− | variable gobo_setting="some settings"
| |
− |
| |
− | exclude
| |
− | ^\.svn$
| |
− |
| |
− | library base
| |
− | files/base/base.ace
| |
− |
| |
− | library gobo
| |
− | files/gobo/gobo.ace
| |
− | rename "some_class" as "new_class"
| |
− | prefix "gobo_"
| |
− |
| |
− | cluster compiler
| |
− | files/compiler
| |
− | uses base, gobo
| |
− |
| |
− | root compiler:ROOT_CLASS:make
| |
− |
| |
− | target Console extends Common
| |
− |
| |
− | cluster console
| |
− | files/console
| |
− | uses base, gobo, compiler
| |
− |
| |
− | cluster mysub (console)
| |
− | $/mysub
| |
− |
| |
− | target Workbench extends Common
| |
− |
| |
− | library eiffelvision
| |
− | files/eiffelvision/eiffelvision.ace
| |
− |
| |
− | cluster workbench
| |
− | files/workbench
| |
− | uses base, gobo, eiffelvision, compiler
| |
− | </pre>
| |
| | | |
| == Questions and Problems == | | == Questions and Problems == |
Line 315: |
Line 18: |
| *Specify use of other clusters? '''Yes''' | | *Specify use of other clusters? '''Yes''' |
| *Variables? '''If not defined, take environment variable.''' | | *Variables? '''If not defined, take environment variable.''' |
− | *Path relative to ace file? '''Yes''' | + | *Path relative to ecf file? '''Yes''' |
− | *When are two libraries the same? '''UUID: http://www.famkruithof.net/guid-uuid-random.html''' | + | *When are two libraries the same? '''UUID''' |
| === Multiple library usage === | | === Multiple library usage === |
| ====Problem==== | | ====Problem==== |
Line 390: |
Line 93: |
| </tr> | | </tr> |
| </table> | | </table> |
− |
| |
− | == Configuration file format ==
| |
− | [[ConfigurationFileFormat|Configuration file format page]]
| |
− |
| |
− | == Migration ==
| |
− | [[ConfigurationMigration|Configuration migration]]
| |
− |
| |
− | == Degree 6 ==
| |
− | [[ConfigurationDegree6|Configuration degree 6]]
| |
− |
| |
− | == Ideas for better conditions ==
| |
− | [[ConfigurationConditions|Configuration conditions]]
| |