From 2a2fd6dd5aadf5a892ef1f713d2ab65605f2f4ef Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 22 May 2020 18:33:19 +0200 Subject: spec: Add specification of build items --- spec/spec/bool-or-int-or-str.yml | 19 +++ spec/spec/build-action-check-cc.yml | 31 ++++ spec/spec/build-action-check-cxx.yml | 31 ++++ spec/spec/build-action-list.yml | 16 ++ spec/spec/build-action-set-test-state.yml | 25 ++++ spec/spec/build-action.yml | 225 ++++++++++++++++++++++++++++ spec/spec/build-ada-test-program.yml | 72 +++++++++ spec/spec/build-asflag.yml | 18 +++ spec/spec/build-asflags.yml | 16 ++ spec/spec/build-bsp.yml | 17 ++- spec/spec/build-config-file.yml | 39 +++++ spec/spec/build-config-header.yml | 41 +++++ spec/spec/build-default-by-variant-list.yml | 16 ++ spec/spec/build-default-by-variant.yml | 27 ++++ spec/spec/build-group.yml | 43 ++++++ spec/spec/build-include.yml | 2 +- spec/spec/build-install-path.yml | 17 +++ spec/spec/build-ldflag.yml | 18 +++ spec/spec/build-ldflags.yml | 16 ++ spec/spec/build-library.yml | 50 +++++++ spec/spec/build-objects.yml | 41 +++++ spec/spec/build-option-name.yml | 18 +++ spec/spec/build-option-value.yml | 23 +++ spec/spec/build-option.yml | 59 ++++++++ spec/spec/build-script.yml | 87 +++++++++++ spec/spec/build-start-file.yml | 41 +++++ spec/spec/build-target.yml | 18 +++ spec/spec/build-test-program.yml | 63 ++++++++ spec/spec/build-test-state.yml | 23 +++ spec/spec/build-use-after-list.yml | 16 ++ spec/spec/build-use-after.yml | 18 +++ spec/spec/build-use-before-list.yml | 16 ++ spec/spec/build-use-before.yml | 18 +++ 33 files changed, 1172 insertions(+), 8 deletions(-) create mode 100644 spec/spec/bool-or-int-or-str.yml create mode 100644 spec/spec/build-action-check-cc.yml create mode 100644 spec/spec/build-action-check-cxx.yml create mode 100644 spec/spec/build-action-list.yml create mode 100644 spec/spec/build-action-set-test-state.yml create mode 100644 spec/spec/build-action.yml create mode 100644 spec/spec/build-ada-test-program.yml create mode 100644 spec/spec/build-asflag.yml create mode 100644 spec/spec/build-asflags.yml create mode 100644 spec/spec/build-config-file.yml create mode 100644 spec/spec/build-config-header.yml create mode 100644 spec/spec/build-default-by-variant-list.yml create mode 100644 spec/spec/build-default-by-variant.yml create mode 100644 spec/spec/build-group.yml create mode 100644 spec/spec/build-install-path.yml create mode 100644 spec/spec/build-ldflag.yml create mode 100644 spec/spec/build-ldflags.yml create mode 100644 spec/spec/build-library.yml create mode 100644 spec/spec/build-objects.yml create mode 100644 spec/spec/build-option-name.yml create mode 100644 spec/spec/build-option-value.yml create mode 100644 spec/spec/build-option.yml create mode 100644 spec/spec/build-script.yml create mode 100644 spec/spec/build-start-file.yml create mode 100644 spec/spec/build-target.yml create mode 100644 spec/spec/build-test-program.yml create mode 100644 spec/spec/build-test-state.yml create mode 100644 spec/spec/build-use-after-list.yml create mode 100644 spec/spec/build-use-after.yml create mode 100644 spec/spec/build-use-before-list.yml create mode 100644 spec/spec/build-use-before.yml 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 `. 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 + `_, 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 `. 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 -- cgit v1.2.3