summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2020-05-22 18:33:19 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-05-28 10:38:23 +0200
commit2a2fd6dd5aadf5a892ef1f713d2ab65605f2f4ef (patch)
tree7e8f49cd8b66d0c5bf0973ec8405b33fe38a8405
parent58f5f036bf85a8ded2b75c3af1fe7693b3fdead8 (diff)
spec: Add specification of build items
-rw-r--r--spec/spec/bool-or-int-or-str.yml19
-rw-r--r--spec/spec/build-action-check-cc.yml31
-rw-r--r--spec/spec/build-action-check-cxx.yml31
-rw-r--r--spec/spec/build-action-list.yml16
-rw-r--r--spec/spec/build-action-set-test-state.yml25
-rw-r--r--spec/spec/build-action.yml225
-rw-r--r--spec/spec/build-ada-test-program.yml72
-rw-r--r--spec/spec/build-asflag.yml18
-rw-r--r--spec/spec/build-asflags.yml16
-rw-r--r--spec/spec/build-bsp.yml17
-rw-r--r--spec/spec/build-config-file.yml39
-rw-r--r--spec/spec/build-config-header.yml41
-rw-r--r--spec/spec/build-default-by-variant-list.yml16
-rw-r--r--spec/spec/build-default-by-variant.yml27
-rw-r--r--spec/spec/build-group.yml43
-rw-r--r--spec/spec/build-include.yml2
-rw-r--r--spec/spec/build-install-path.yml17
-rw-r--r--spec/spec/build-ldflag.yml18
-rw-r--r--spec/spec/build-ldflags.yml16
-rw-r--r--spec/spec/build-library.yml50
-rw-r--r--spec/spec/build-objects.yml41
-rw-r--r--spec/spec/build-option-name.yml18
-rw-r--r--spec/spec/build-option-value.yml23
-rw-r--r--spec/spec/build-option.yml59
-rw-r--r--spec/spec/build-script.yml87
-rw-r--r--spec/spec/build-start-file.yml41
-rw-r--r--spec/spec/build-target.yml18
-rw-r--r--spec/spec/build-test-program.yml63
-rw-r--r--spec/spec/build-test-state.yml23
-rw-r--r--spec/spec/build-use-after-list.yml16
-rw-r--r--spec/spec/build-use-after.yml18
-rw-r--r--spec/spec/build-use-before-list.yml16
-rw-r--r--spec/spec/build-use-before.yml18
33 files changed, 1172 insertions, 8 deletions
diff --git a/spec/spec/bool-or-int-or-str.yml b/spec/spec/bool-or-int-or-str.yml
new file mode 100644
index 00000000..ebf2a234
--- /dev/null
+++ b/spec/spec/bool-or-int-or-str.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ bool:
+ description: null
+ int:
+ description: null
+ str:
+ description: null
+spec-name: Boolean or Integer or String
+spec-type: bool-or-int-or-str
+type: spec
diff --git a/spec/spec/build-action-check-cc.yml b/spec/spec/build-action-check-cc.yml
new file mode 100644
index 00000000..3845c280
--- /dev/null
+++ b/spec/spec/build-action-check-cc.yml
@@ -0,0 +1,31 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ fragment:
+ description: |
+ It shall be a code fragment used to check the availability of a
+ certain feature through compilation with the C compiler. The
+ resulting object is not linked to an executable.
+ spec-type: str
+ message:
+ description: |
+ It shall be a description of the feature to check.
+ spec-type: str
+ cflags:
+ description: null
+ spec-type: build-cflags
+ description: |
+ This set of attributes specifies a check done using the C compiler.
+ required-attributes: all
+spec-name: Build Option C Compiler Check Action
+spec-type: build-action-check-cc
+type: spec
diff --git a/spec/spec/build-action-check-cxx.yml b/spec/spec/build-action-check-cxx.yml
new file mode 100644
index 00000000..f10fb84b
--- /dev/null
+++ b/spec/spec/build-action-check-cxx.yml
@@ -0,0 +1,31 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ fragment:
+ description: |
+ It shall be a code fragment used to check the availability of a
+ certain feature through compilation with the C++ compiler. The
+ resulting object is not linked to an executable.
+ spec-type: str
+ message:
+ description: |
+ It shall be a description of the feature to check.
+ spec-type: str
+ cxxflags:
+ description: null
+ spec-type: build-cxxflags
+ description: |
+ This set of attributes specifies a check done using the C++ compiler.
+ required-attributes: all
+spec-name: Build Option C++ Compiler Check Action
+spec-type: build-action-check-cxx
+type: spec
diff --git a/spec/spec/build-action-list.yml b/spec/spec/build-action-list.yml
new file mode 100644
index 00000000..9b681779
--- /dev/null
+++ b/spec/spec/build-action-list.yml
@@ -0,0 +1,16 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ list:
+ description: null
+ spec-type: build-action
+spec-name: Build Option Action List
+spec-type: build-action-list
+type: spec
diff --git a/spec/spec/build-action-set-test-state.yml b/spec/spec/build-action-set-test-state.yml
new file mode 100644
index 00000000..baa29c6d
--- /dev/null
+++ b/spec/spec/build-action-set-test-state.yml
@@ -0,0 +1,25 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes: {}
+ generic-attributes:
+ description: |
+ The keys shall be test program names. The names shall correspond to
+ the name of a :ref:`SpecTypeBuildTestItemType` item. Due to the
+ processing order of items, there is no way to check if the name
+ specified by the attribute key is valid.
+ spec-type: build-test-state
+ description: |
+ This set of attributes specifies test states for a set of test programs.
+ required-attributes: all
+spec-name: Build Option Set Test State Action
+spec-type: build-action-set-test-state
+type: spec
diff --git a/spec/spec/build-action.yml b/spec/spec/build-action.yml
new file mode 100644
index 00000000..914cf4e1
--- /dev/null
+++ b/spec/spec/build-action.yml
@@ -0,0 +1,225 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ append-test-cppflags:
+ description: |
+ It shall be the name of a test program. The action appends the
+ action value to the ``CPPFLAGS`` of the test program. The name shall
+ correspond to the name of a :ref:`SpecTypeBuildTestProgramItemType`
+ item. Due to the processing order of items, there is no way to check
+ if the name specified by the attribute value is valid.
+ spec-type: str
+ assert-aligned:
+ description: |
+ The action asserts that the action value is aligned according to the
+ attribute value.
+ spec-type: int
+ assert-eq:
+ description: |
+ The action asserts that the action value is equal to the attribute
+ value.
+ spec-type: bool-or-int-or-str
+ assert-ne:
+ description: |
+ The action asserts that the action value is not equal to the
+ attribute value.
+ spec-type: bool-or-int-or-str
+ assert-le:
+ description: |
+ The action asserts that the action value is less than or equal to the
+ attribute value.
+ spec-type: int-or-str
+ assert-lt:
+ description: |
+ The action asserts that the action value is less than the attribute
+ value.
+ spec-type: int-or-str
+ assert-ge:
+ description: |
+ The action asserts that the action value is greater than or equal to
+ the attribute value.
+ spec-type: int-or-str
+ assert-gt:
+ description: |
+ The action asserts that the action value is greater than the
+ attribute value.
+ spec-type: int-or-str
+ assert-int8:
+ description: |
+ The action asserts that the action value is a valid signed 8-bit
+ integer.
+ spec-type: none
+ assert-uint8:
+ description: |
+ The action asserts that the action value is a valid unsigned 8-bit
+ integer.
+ spec-type: none
+ assert-int16:
+ description: |
+ The action asserts that the action value is a valid signed 16-bit
+ integer.
+ spec-type: none
+ assert-uint16:
+ description: |
+ The action asserts that the action value is a valid unsigned 16-bit
+ integer.
+ spec-type: none
+ assert-int32:
+ description: |
+ The action asserts that the action value is a valid signed 32-bit
+ integer.
+ spec-type: none
+ assert-uint32:
+ description: |
+ The action asserts that the action value is a valid unsigned 32-bit
+ integer.
+ spec-type: none
+ assert-int64:
+ description: |
+ The action asserts that the action value is a valid signed 64-bit
+ integer.
+ spec-type: none
+ assert-uint64:
+ description: |
+ The action asserts that the action value is a valid unsigned 64-bit
+ integer.
+ spec-type: none
+ assert-power-of-two:
+ description: |
+ The action asserts that the action value is a power of two.
+ spec-type: none
+ check-cc:
+ description: null
+ spec-type: build-action-check-cc
+ check-cxx:
+ description: null
+ spec-type: build-action-check-cxx
+ define-condition:
+ description: |
+ The action adds a conditional define to the configuration set. If
+ the attribute value is present, then it is used as the name of the
+ define, otherwise the ``name`` of the item is used. The value of the
+ define is the action value.
+ spec-type: optional-str
+ define:
+ description: |
+ The action adds a define to the configuration set. If the attribute
+ value is present, then it is used as the name of the define,
+ otherwise the ``name`` of the item is used. The value of the define
+ is the action value. If the action value is a string, then it is
+ quoted.
+ spec-type: optional-str
+ define-unquoted:
+ description: |
+ The action adds a define to the configuration set. If the attribute
+ value is present, then it is used as the name of the define,
+ otherwise the ``name`` of the item is used. The value of the define
+ is the action value. If the action value is a string, then it is not
+ quoted.
+ spec-type: optional-str
+ env-append:
+ description: |
+ The action appends the action value to an environment of the
+ configuration set. If the attribute value is present, then it is
+ used as the name of the environment variable, otherwise the ``name``
+ of the item is used.
+ spec-type: optional-str
+ env-assign:
+ description: |
+ The action assigns the action value to an environment of the
+ configuration set. If the attribute value is present, then it is
+ used as the name of the environment variable, otherwise the ``name``
+ of the item is used.
+ spec-type: optional-str
+ env-enable:
+ description: |
+ If the action value is true, then a name is appended to the
+ ``ENABLE`` environment variable of the configuration set. If the
+ attribute value is present, then it is used as the name, otherwise
+ the ``name`` of the item is used.
+ spec-type: optional-str
+ find-program:
+ description: |
+ The action tries to find the program specified by the action value.
+ Uses the ``${PATH}`` to find the program. Returns the result of the
+ find operation, e.g. a path to the program.
+ spec-type: none
+ find-tool:
+ description: |
+ The action tries to find the tool specified by the action value.
+ Uses the tool paths specified by the ``--rtems-tools`` command line
+ option. Returns the result of the find operation, e.g. a path to the
+ program.
+ spec-type: none
+ format-and-define:
+ description: |
+ The action adds a define to the configuration set. If the attribute
+ value is present, then it is used as the name of the define,
+ otherwise the ``name`` of the item is used. The value of the define
+ is the action value. The value is formatted according to the
+ ``format`` attribute value.
+ spec-type: optional-str
+ get-boolean:
+ description: |
+ The action gets the action value for subsequent actions from a
+ configuration file variable named by the items ``name`` attribute.
+ If no such variable exists in the configuration file, then the
+ default value is used. The value is converted to a boolean.
+ spec-type: none
+ get-integer:
+ description: |
+ The action gets the action value for subsequent actions from a
+ configuration file variable named by the items ``name`` attribute.
+ If no such variable exists in the configuration file, then the
+ default value is used. The value is converted to an integer.
+ spec-type: none
+ get-string:
+ description: |
+ The action gets the action value for subsequent actions from a
+ configuration file variable named by the items ``name`` attribute.
+ If no such variable exists in the configuration file, then the
+ default value is used. The value is converted to a string.
+ spec-type: none
+ get-env:
+ description: |
+ The action gets the action value for subsequent actions from the
+ environment variable of the configuration set named by the attribute
+ value.
+ spec-type: str
+ script:
+ description: |
+ The action executes the attribute value with the Python ``eval()``
+ function in the context of the script action handler.
+ spec-type: str
+ set-test-state:
+ description: null
+ spec-type: build-action-set-test-state
+ set-value:
+ description: |
+ The action sets the action value for subsequent actions to the
+ attribute value.
+ spec-type: build-option-value
+ split:
+ description: |
+ The action splits the action value.
+ spec-type: none
+ substitute:
+ description: |
+ The action Performs a ``${VARIABLE}`` substitution on the action
+ value. Use ``$$`` for a plain ``$`` character.
+ spec-type: none
+ description: |
+ This set of attributes specifies a build option action.
+ required-attributes: exactly-one
+spec-name: Build Option Action
+spec-type: build-action
+type: spec
diff --git a/spec/spec/build-ada-test-program.yml b/spec/spec/build-ada-test-program.yml
new file mode 100644
index 00000000..92272940
--- /dev/null
+++ b/spec/spec/build-ada-test-program.yml
@@ -0,0 +1,72 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+- role: spec-refinement
+ spec-key: build-type
+ spec-value: ada-test-program
+ uid: build
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ ada-main:
+ description: |
+ It shall be the path to the Ada main body file.
+ spec-type: str
+ ada-object-directory:
+ description: |
+ It shall be the path to the Ada object directory (``-D`` option value for ``gnatmake``).
+ spec-type: str
+ adaflags:
+ description: |
+ It shall be a list of options for the Ada compiler.
+ spec-type: list-str
+ adaincludes:
+ description: |
+ It shall be a list of Ada include paths.
+ spec-type: list-str
+ cflags:
+ description: null
+ spec-type: build-cflags
+ cppflags:
+ description: null
+ spec-type: build-cppflags
+ includes:
+ description: null
+ spec-type: build-includes
+ ldflags:
+ description: null
+ spec-type: build-ldflags
+ source:
+ description: null
+ spec-type: build-source-list
+ stlib:
+ description: |
+ It shall be a list of external static library identifiers used to
+ link this test program, e.g. ``m`` for ``libm.a``.
+ spec-type: list-str
+ target:
+ description: null
+ spec-type: build-target
+ use-after:
+ description: null
+ spec-type: build-use-after-list
+ use-before:
+ description: null
+ spec-type: build-use-before-list
+ description: |
+ This set of attributes specifies an Ada test program executable to build.
+ Test programs may use additional objects provided by
+ :ref:`SpecTypeBuildObjectsItemType` items. Test programs have an
+ implicit ``enabled-by`` attribute value which is controlled by the option
+ action :ref:`set-test-state <SpecTypeBuildOptionItemType>`. If the test
+ state is set to ``exclude``, then the test program is not built.
+ required-attributes: all
+spec-name: Build Ada Test Program Item Type
+spec-type: build-ada-test-program
+type: spec
diff --git a/spec/spec/build-asflag.yml b/spec/spec/build-asflag.yml
new file mode 100644
index 00000000..4adfbc7e
--- /dev/null
+++ b/spec/spec/build-asflag.yml
@@ -0,0 +1,18 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ str:
+ description: |
+ It shall be an option for the assembler. The options are used to
+ compile the sources of this item. The options defined by this attribute
+ succeed the options presented to the item by the build item context.
+spec-name: Build Assembler Option
+spec-type: build-asflag
+type: spec
diff --git a/spec/spec/build-asflags.yml b/spec/spec/build-asflags.yml
new file mode 100644
index 00000000..ac08fde9
--- /dev/null
+++ b/spec/spec/build-asflags.yml
@@ -0,0 +1,16 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ list:
+ description: null
+ spec-type: build-asflag
+spec-name: Build Assembler Option List
+spec-type: build-asflags
+type: spec
diff --git a/spec/spec/build-bsp.yml b/spec/spec/build-bsp.yml
index bfe9604a..e08eb0cd 100644
--- a/spec/spec/build-bsp.yml
+++ b/spec/spec/build-bsp.yml
@@ -16,19 +16,22 @@ spec-info:
attributes:
arch:
description: |
- This mandatory attribute defines the target architecture of the BSP.
+ It shall be the target architecture of the BSP.
spec-type: str
bsp:
description: |
- This mandatory attribute defines the base BSP variant name.
+ It shall be the base BSP variant name.
spec-type: str
cflags:
description: null
spec-type: build-cflags
- bsp:
+ cppflags:
+ description: null
+ spec-type: build-cppflags
+ family:
description: |
- This mandatory attribute defines the BSP family name. The name shall
- be the last directory of the path to the BSP sources.
+ It shall be the BSP family name. The name shall be the last
+ directory of the path to the BSP sources.
spec-type: str
includes:
description: null
@@ -40,8 +43,8 @@ spec-info:
description: null
spec-type: build-source-list
description: |
- This set of attributes specifies a BSP build item.
+ This set of attributes specifies a base BSP variant to build.
required-attributes: all
-spec-name: BSP Build Item Type
+spec-name: Build BSP Item Type
spec-type: build-bsp
type: spec
diff --git a/spec/spec/build-config-file.yml b/spec/spec/build-config-file.yml
new file mode 100644
index 00000000..063ad7dd
--- /dev/null
+++ b/spec/spec/build-config-file.yml
@@ -0,0 +1,39 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+- role: spec-refinement
+ spec-key: build-type
+ spec-value: config-file
+ uid: build
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ content:
+ description: |
+ This mandatory attribute defines the content of the configuration
+ file. A ${VARIABLE} substitution is performed during the configure
+ command execution using the variables of the configuration set. Use
+ $$ for a plain $ character. To have all variables from sibling items
+ available for substitution it is recommended to link them in the
+ proper order.
+ spec-type: str
+ install-path:
+ description: null
+ spec-type: build-install-path
+ target:
+ description: null
+ spec-type: build-target
+ description: |
+ This set of attributes specifies a configuration file placed in the build
+ tree. The files are generated during the configure command execution and
+ are placed in the build tree.
+ required-attributes: all
+spec-name: Build Configuration File Item Type
+spec-type: build-config-file
+type: spec
diff --git a/spec/spec/build-config-header.yml b/spec/spec/build-config-header.yml
new file mode 100644
index 00000000..d5be648e
--- /dev/null
+++ b/spec/spec/build-config-header.yml
@@ -0,0 +1,41 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+- role: spec-refinement
+ spec-key: build-type
+ spec-value: config-header
+ uid: build
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ include-headers:
+ description: |
+ It shall be a list of header files to include via ``#include <...>``.
+ spec-type: list-str
+ install-path:
+ description: null
+ spec-type: build-install-path
+ guard:
+ description: |
+ It shall be the header guard define.
+ spec-type: str
+ target:
+ description: null
+ spec-type: build-target
+ description: |
+ This set of attributes specifies configuration header files. The
+ configuration header files are generated during configure command
+ execution and are placed in the build tree. All collected configuration
+ defines are written to the configuration header file during the configure
+ command execution. To have all configuration defines from sibling items
+ available it is recommended to link them in the proper order.
+ required-attributes: all
+spec-name: Build Configuration Header Item Type
+spec-type: build-config-header
+type: spec
diff --git a/spec/spec/build-default-by-variant-list.yml b/spec/spec/build-default-by-variant-list.yml
new file mode 100644
index 00000000..5f53df4f
--- /dev/null
+++ b/spec/spec/build-default-by-variant-list.yml
@@ -0,0 +1,16 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ list:
+ description: null
+ spec-type: build-default-by-variant
+spec-name: Build Option Default by Variant List
+spec-type: build-default-by-variant-list
+type: spec
diff --git a/spec/spec/build-default-by-variant.yml b/spec/spec/build-default-by-variant.yml
new file mode 100644
index 00000000..8b33d4ee
--- /dev/null
+++ b/spec/spec/build-default-by-variant.yml
@@ -0,0 +1,27 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ variants:
+ description: |
+ It shall be a list of Python regular expression matching with the
+ desired variants.
+ spec-type: list-str
+ value:
+ description: |
+ It value shall be the default value for the matching variants.
+ spec-type: build-option-value
+ description: |
+ This set of attributes specifies build option default values by variant.
+ required-attributes: all
+spec-name: Build Option Default by Variant
+spec-type: build-default-by-variant
+type: spec
diff --git a/spec/spec/build-group.yml b/spec/spec/build-group.yml
new file mode 100644
index 00000000..209eb2fd
--- /dev/null
+++ b/spec/spec/build-group.yml
@@ -0,0 +1,43 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+- role: spec-refinement
+ spec-key: build-type
+ spec-value: group
+ uid: build
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ includes:
+ description: null
+ spec-type: build-includes
+ install:
+ description: null
+ spec-type: build-install-list
+ ldflags:
+ description: |
+ This mandatory attribute defines a list of options for the linker.
+ They are used to link programs referenced by this item.
+ spec-type: list-str
+ use-after:
+ description: null
+ spec-type: build-use-after-list
+ use-before:
+ description: null
+ spec-type: build-use-before-list
+ description: |
+ This set of attributes provides a means to aggregate other build items
+ and modify the build item context which is used by referenced build
+ items. The ``includes``, ``ldflags``, ``objects``, and ``use`` variables
+ of the build item context are updated by the corresponding attributes of
+ the build group.
+ required-attributes: all
+spec-name: Build Group Item Type
+spec-type: build-group
+type: spec
diff --git a/spec/spec/build-include.yml b/spec/spec/build-include.yml
index 0858454c..c964906f 100644
--- a/spec/spec/build-include.yml
+++ b/spec/spec/build-include.yml
@@ -20,6 +20,6 @@ spec-info:
:ref:`SpecTypeBuildTestProgramItemType` items the includes are only
visible to the sources specified by the item itself and they do not
propagate to referenced items.
-spec-name: Build Include
+spec-name: Build Include Path
spec-type: build-include
type: spec
diff --git a/spec/spec/build-install-path.yml b/spec/spec/build-install-path.yml
new file mode 100644
index 00000000..ead261be
--- /dev/null
+++ b/spec/spec/build-install-path.yml
@@ -0,0 +1,17 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ none: null
+ str:
+ description: |
+ It shall be the installation path of a :ref:`SpecTypeBuildTarget`.
+spec-name: Build Install Path
+spec-type: build-install-path
+type: spec
diff --git a/spec/spec/build-ldflag.yml b/spec/spec/build-ldflag.yml
new file mode 100644
index 00000000..41ef28f4
--- /dev/null
+++ b/spec/spec/build-ldflag.yml
@@ -0,0 +1,18 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ str:
+ description: |
+ It shall be an option for the linker. The options are used to link
+ executables. The options defined by this attribute succeed the options
+ presented to the item by the build item context.
+spec-name: Build Linker Option
+spec-type: build-ldflag
+type: spec
diff --git a/spec/spec/build-ldflags.yml b/spec/spec/build-ldflags.yml
new file mode 100644
index 00000000..a79cacc8
--- /dev/null
+++ b/spec/spec/build-ldflags.yml
@@ -0,0 +1,16 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ list:
+ description: null
+ spec-type: build-ldflag
+spec-name: Build Linker Option List
+spec-type: build-ldflags
+type: spec
diff --git a/spec/spec/build-library.yml b/spec/spec/build-library.yml
new file mode 100644
index 00000000..8f3e1c5e
--- /dev/null
+++ b/spec/spec/build-library.yml
@@ -0,0 +1,50 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+- role: spec-refinement
+ spec-key: build-type
+ spec-value: library
+ uid: build
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ cflags:
+ description: null
+ spec-type: build-cflags
+ cppflags:
+ description: null
+ spec-type: build-cppflags
+ cxxflags:
+ description: null
+ spec-type: build-cxxflags
+ includes:
+ description: null
+ spec-type: build-includes
+ install:
+ description: null
+ spec-type: build-install-list
+ install-path:
+ description: null
+ spec-type: build-install-path
+ source:
+ description: null
+ spec-type: build-source-list
+ target:
+ description: |
+ It shall be the name of the static library, e.g. ``z`` for
+ ``libz.a``.
+ spec-type: build-target
+ description: |
+ This set of attributes specifies a static library. Library items may use
+ additional objects provided by :ref:`SpecTypeBuildObjectsItemType` items
+ through the build dependency links of the item.
+ required-attributes: all
+spec-name: Build Library Item Type
+spec-type: build-library
+type: spec
diff --git a/spec/spec/build-objects.yml b/spec/spec/build-objects.yml
new file mode 100644
index 00000000..96ac5e5f
--- /dev/null
+++ b/spec/spec/build-objects.yml
@@ -0,0 +1,41 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+- role: spec-refinement
+ spec-key: build-type
+ spec-value: objects
+ uid: build
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ cflags:
+ description: null
+ spec-type: build-cflags
+ cppflags:
+ description: null
+ spec-type: build-cppflags
+ cxxflags:
+ description: null
+ spec-type: build-cxxflags
+ includes:
+ description: null
+ spec-type: build-includes
+ install:
+ description: null
+ spec-type: build-install-list
+ source:
+ description: null
+ spec-type: build-source-list
+ description: |
+ This set of attributes specifies a set of object files used to build
+ static libraries or test programs.
+ required-attributes: all
+spec-name: Build Objects Item Type
+spec-type: build-objects
+type: spec
diff --git a/spec/spec/build-option-name.yml b/spec/spec/build-option-name.yml
new file mode 100644
index 00000000..08831de0
--- /dev/null
+++ b/spec/spec/build-option-name.yml
@@ -0,0 +1,18 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ str:
+ assert:
+ - re: ^[a-zA-Z_][a-zA-Z0-9_]*$
+ description: |
+ It shall be the name of the option.
+spec-name: Build Option Name
+spec-type: build-option-name
+type: spec
diff --git a/spec/spec/build-option-value.yml b/spec/spec/build-option-value.yml
new file mode 100644
index 00000000..c0c07bd7
--- /dev/null
+++ b/spec/spec/build-option-value.yml
@@ -0,0 +1,23 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ bool:
+ description: null
+ int:
+ description: null
+ list:
+ description: null
+ spec-type: str
+ none: null
+ str:
+ description: null
+spec-name: Build Option Value
+spec-type: build-option-value
+type: spec
diff --git a/spec/spec/build-option.yml b/spec/spec/build-option.yml
new file mode 100644
index 00000000..0db645d8
--- /dev/null
+++ b/spec/spec/build-option.yml
@@ -0,0 +1,59 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+- role: spec-refinement
+ spec-key: build-type
+ spec-value: option
+ uid: build
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ actions:
+ description: |
+ Each action operates on the *action value* handed over by a previous
+ action and action-specific attribute values. The actions pass the
+ processed action value to the next action in the list. The first
+ action starts with an action value of ``None``. The actions are
+ carried out during the configure command execution.
+ spec-type: build-action-list
+ default:
+ description: |
+ It shall be the default value of the option if no variant-specific
+ default value is specified. Use ``null`` to specify that no default
+ value exits. The variant-specific default values may be specified by
+ the ``default-by-variant`` attribute.
+ spec-type: build-option-value
+ default-by-variant:
+ description: |
+ The list is processed from top to bottom. If a matching variant is
+ found, then the processing stops.
+ spec-type: build-default-by-variant-list
+ format:
+ description: |
+ It shall be a `Python format string
+ <https://docs.python.org/3/library/string.html#formatstrings>`_, for
+ example ``'{}'`` or ``'{:#010x}'``.
+ spec-type: optional-str
+ name:
+ description: null
+ spec-type: build-option-name
+ description:
+ description: |
+ It shall be the description of the option.
+ spec-type: optional-str
+ description: |
+ This set of attributes specifies a build option.
+ required-attributes:
+ - actions
+ - default
+ - default-by-variant
+ - description
+spec-name: Build Option Item Type
+spec-type: build-option
+type: spec
diff --git a/spec/spec/build-script.yml b/spec/spec/build-script.yml
new file mode 100644
index 00000000..cae05629
--- /dev/null
+++ b/spec/spec/build-script.yml
@@ -0,0 +1,87 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+- role: spec-refinement
+ spec-key: build-type
+ spec-value: script
+ uid: build
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ do-configure:
+ description: |
+ If this script shall execute, then it shall be Python code which is
+ executed via ``exec()`` in the context of the ``do_configure()``
+ method of the :file:`wscript`. A local variable ``conf`` is
+ available with the ``waf`` configuration context. A local variable
+ ``cic`` is available with the configuration item context.
+ spec-type: optional-str
+ do-build:
+ description: |
+ If this script shall execute, then it shall be Python code which is
+ executed via ``exec()`` in the context of the ``do_build()`` method
+ of the :file:`wscript`. A local variable ``bld`` is available with
+ the ``waf`` build context. A local variable ``bic`` is available
+ with the build item context.
+ spec-type: optional-str
+ prepare-configure:
+ description: |
+ If this script shall execute, then it shall be Python code which is
+ executed via ``exec()`` in the context of the ``prepare_configure()``
+ method of the :file:`wscript`. A local variable ``conf`` is
+ available with the ``waf`` configuration context. A local variable
+ ``cic`` is available with the configuration item context.
+ spec-type: optional-str
+ prepare-build:
+ description: |
+ If this script shall execute, then it shall be Python code which is
+ executed via ``exec()`` in the context of the ``prepare_build()``
+ method of the :file:`wscript`. A local variable ``bld`` is available
+ with the ``waf`` build context. A local variable ``bic`` is
+ available with the build item context.
+ spec-type: optional-str
+ stlib:
+ description: |
+ It shall be a list of external static library identifiers used to
+ link this test program, e.g. ``m`` for ``libm.a``.
+ spec-type: list-str
+ use-after:
+ description: null
+ spec-type: build-use-after-list
+ use-before:
+ description: null
+ spec-type: build-use-before-list
+ asflags:
+ description: null
+ spec-type: build-asflags
+ cflags:
+ description: null
+ spec-type: build-cflags
+ cppflags:
+ description: null
+ spec-type: build-cppflags
+ cxxflags:
+ description: null
+ spec-type: build-cxxflags
+ includes:
+ description: null
+ spec-type: build-includes
+ ldflags:
+ description: null
+ spec-type: build-ldflags
+ description: |
+ This set of attributes specifies build scripts.
+ required-attributes:
+ - do-build
+ - do-configure
+ - prepare-build
+ - prepare-configure
+spec-name: Build Script Item Type
+spec-type: build-script
+type: spec
diff --git a/spec/spec/build-start-file.yml b/spec/spec/build-start-file.yml
new file mode 100644
index 00000000..35d64213
--- /dev/null
+++ b/spec/spec/build-start-file.yml
@@ -0,0 +1,41 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+- role: spec-refinement
+ spec-key: build-type
+ spec-value: start-file
+ uid: build
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ asflags:
+ description: null
+ spec-type: build-asflags
+ cppflags:
+ description: null
+ spec-type: build-cppflags
+ includes:
+ description: null
+ spec-type: build-includes
+ install-path:
+ description: null
+ spec-type: build-install-path
+ source:
+ description: null
+ spec-type: build-source-list
+ target:
+ description: null
+ spec-type: build-target
+ description: |
+ This set of attributes specifies a start file to build which is used to
+ link an executable.
+ required-attributes: all
+spec-name: Build Start File Item Type
+spec-type: build-start-file
+type: spec
diff --git a/spec/spec/build-target.yml b/spec/spec/build-target.yml
new file mode 100644
index 00000000..3f10dcd5
--- /dev/null
+++ b/spec/spec/build-target.yml
@@ -0,0 +1,18 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ str:
+ description: |
+ It shall be the target file path. The path to the target file shall be
+ relative to the directory of the :file:`wscript`. The target file is
+ located in the build tree.
+spec-name: Build Target
+spec-type: build-target
+type: spec
diff --git a/spec/spec/build-test-program.yml b/spec/spec/build-test-program.yml
new file mode 100644
index 00000000..6afbcf28
--- /dev/null
+++ b/spec/spec/build-test-program.yml
@@ -0,0 +1,63 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+- role: spec-refinement
+ spec-key: build-type
+ spec-value: test-program
+ uid: build
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes:
+ cflags:
+ description: null
+ spec-type: build-cflags
+ cppflags:
+ description: null
+ spec-type: build-cppflags
+ cxxflags:
+ description: null
+ spec-type: build-cxxflags
+ features:
+ description: |
+ It shall be the ``waf`` build features for this test program.
+ spec-type: str
+ includes:
+ description: null
+ spec-type: build-includes
+ ldflags:
+ description: null
+ spec-type: build-ldflags
+ source:
+ description: null
+ spec-type: build-source-list
+ stlib:
+ description: |
+ It shall be a list of external static library identifiers used to
+ link this test program, e.g. ``m`` for ``libm.a``.
+ spec-type: list-str
+ target:
+ description: null
+ spec-type: build-target
+ use-after:
+ description: null
+ spec-type: build-use-after-list
+ use-before:
+ description: null
+ spec-type: build-use-before-list
+ description: |
+ This set of attributes specifies a test program executable to build.
+ Test programs may use additional objects provided by
+ :ref:`SpecTypeBuildObjectsItemType` items. Test programs have an
+ implicit ``enabled-by`` attribute value which is controlled by the option
+ action :ref:`set-test-state <SpecTypeBuildOptionItemType>`. If the test
+ state is set to ``exclude``, then the test program is not built.
+ required-attributes: all
+spec-name: Build Test Program Item Type
+spec-type: build-test-program
+type: spec
diff --git a/spec/spec/build-test-state.yml b/spec/spec/build-test-state.yml
new file mode 100644
index 00000000..8e72ee40
--- /dev/null
+++ b/spec/spec/build-test-state.yml
@@ -0,0 +1,23 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ str:
+ assert:
+ in:
+ - benchmark
+ - exclude
+ - expected-fail
+ - indeterminate
+ - user-input
+ description: |
+ This string defines a test state.
+spec-name: Build Test State
+spec-type: build-test-state
+type: spec
diff --git a/spec/spec/build-use-after-list.yml b/spec/spec/build-use-after-list.yml
new file mode 100644
index 00000000..32c86b93
--- /dev/null
+++ b/spec/spec/build-use-after-list.yml
@@ -0,0 +1,16 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ list:
+ description: null
+ spec-type: build-use-after
+spec-name: Build Use After List
+spec-type: build-use-after-list
+type: spec
diff --git a/spec/spec/build-use-after.yml b/spec/spec/build-use-after.yml
new file mode 100644
index 00000000..f42c53db
--- /dev/null
+++ b/spec/spec/build-use-after.yml
@@ -0,0 +1,18 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ str:
+ description: |
+ It shall be an internal static library identifier. They are used to link
+ programs referenced by this item, e.g. ``z`` for ``libz.a``. They are
+ placed after the use items of the build item context.
+spec-name: Build Use After Directive
+spec-type: build-use-after
+type: spec
diff --git a/spec/spec/build-use-before-list.yml b/spec/spec/build-use-before-list.yml
new file mode 100644
index 00000000..9f33c541
--- /dev/null
+++ b/spec/spec/build-use-before-list.yml
@@ -0,0 +1,16 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ list:
+ description: null
+ spec-type: build-use-before
+spec-name: Build Use Before List
+spec-type: build-use-before-list
+type: spec
diff --git a/spec/spec/build-use-before.yml b/spec/spec/build-use-before.yml
new file mode 100644
index 00000000..27dfa33e
--- /dev/null
+++ b/spec/spec/build-use-before.yml
@@ -0,0 +1,18 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ str:
+ description: |
+ It shall be an internal static library identifier. They are used to link
+ programs referenced by this item, e.g. ``z`` for ``libz.a``. They are
+ placed before the use items of the build item context.
+spec-name: Build Use Before Directive
+spec-type: build-use-before
+type: spec