Update #4265. --- cpukit/Makefile.am | 1 + cpukit/include/rtems/config.h | 36 +++++++++++++++++++- cpukit/sapi/src/getbuildhash.c | 54 ++++++++++++++++++++++++++++++ spec/build/cpukit/cfgbuildhash.yml | 14 ++++++++ spec/build/cpukit/cfghdr.yml | 2 ++ spec/build/cpukit/librtemscpu.yml | 1 + 6 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 cpukit/sapi/src/getbuildhash.c create mode 100644 spec/build/cpukit/cfgbuildhash.yml
diff --git a/cpukit/Makefile.am b/cpukit/Makefile.am index a31cd31596..8e0c42190b 100644 --- a/cpukit/Makefile.am +++ b/cpukit/Makefile.am @@ -1062,6 +1062,7 @@ librtemscpu_a_SOURCES += sapi/src/extensiondelete.c librtemscpu_a_SOURCES += sapi/src/extensionident.c librtemscpu_a_SOURCES += sapi/src/fatal.c librtemscpu_a_SOURCES += sapi/src/fatalsrctext.c +librtemscpu_a_SOURCES += sapi/src/getbuildhash.c librtemscpu_a_SOURCES += sapi/src/getconfigmax.c librtemscpu_a_SOURCES += sapi/src/getcopyrightnotice.c librtemscpu_a_SOURCES += sapi/src/getversionstring.c diff --git a/cpukit/include/rtems/config.h b/cpukit/include/rtems/config.h index a3eec39584..969a2fddb8 100644 --- a/cpukit/include/rtems/config.h +++ b/cpukit/include/rtems/config.h @@ -10,7 +10,7 @@ */ /* - * Copyright (C) 2009, 2020 embedded brains GmbH (http://www.embedded-brains.de) + * Copyright (C) 2009, 2021 embedded brains GmbH (http://www.embedded-brains.de) * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -93,6 +93,40 @@ extern "C" { * configuration option values, for example rtems_resource_unlimited(). */ +/* Generated from spec:/rtems/config/if/get-build-hash */ + +/** + * @ingroup RTEMSAPIConfig + * + * @brief Gets the RTEMS build hash. + * + * The build hash is calculated from all key-value pairs of the build + * environment. Local file system paths in the values do not contribute to the + * hash value. + * + * @return Returns the pointer to the RTEMS build hash. + * + * @par Notes + * @parblock + * An example of a key-value pair of the build environment are the ``CFLAGS``. + * So, when the optimization compiler option ``-O2`` changes to ``-O0``, the + * build hash changes as well. + * + * The build hash can be used to distinguish test suite results obtained from + * different build environments. + * @endparblock + * + * @par Constraints + * @parblock + * The following constraints apply to this directive: + * + * * The directive may be called from within any runtime context. + * + * * The directive will not cause the calling task to be preempted. + * @endparblock + */ +const char *rtems_get_build_hash( void ); + /* Generated from spec:/rtems/config/if/get-copyright-notice */ /** diff --git a/cpukit/sapi/src/getbuildhash.c b/cpukit/sapi/src/getbuildhash.c new file mode 100644 index 0000000000..51e6dfbf5b --- /dev/null +++ b/cpukit/sapi/src/getbuildhash.c @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSImplClassic + * + * @brief This source file contains the implementation of + * rtems_get_build_hash(). + */ + +/* + * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <rtems/config.h> + +#if HAVE_RTEMS_BUILD_HASH +#include <rtems/build-hash.h> +#endif + +const char *rtems_get_build_hash( void ) +{ +#if HAVE_RTEMS_BUILD_HASH + return RTEMS_BUILD_HASH; +#else + return "default"; +#endif +} diff --git a/spec/build/cpukit/cfgbuildhash.yml b/spec/build/cpukit/cfgbuildhash.yml new file mode 100644 index 0000000000..2413b2b71f --- /dev/null +++ b/spec/build/cpukit/cfgbuildhash.yml @@ -0,0 +1,14 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +actions: +- set-value: true +- define-condition: null +build-type: option +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +default: null +default-by-variant: [] +description: '' +enabled-by: true +links: [] +name: HAVE_RTEMS_BUILD_HASH +type: build diff --git a/spec/build/cpukit/cfghdr.yml b/spec/build/cpukit/cfghdr.yml index 58407fb54b..731a711fc7 100644 --- a/spec/build/cpukit/cfghdr.yml +++ b/spec/build/cpukit/cfghdr.yml @@ -66,5 +66,7 @@ links: uid: cfgsztime - role: build-dependency uid: cfgunistd +- role: build-dependency + uid: cfgbuildhash target: cpukit/include/config.h type: build diff --git a/spec/build/cpukit/librtemscpu.yml b/spec/build/cpukit/librtemscpu.yml index 8bd108bea8..c79d046af1 100644 --- a/spec/build/cpukit/librtemscpu.yml +++ b/spec/build/cpukit/librtemscpu.yml @@ -1338,6 +1338,7 @@ source: - cpukit/sapi/src/extensionident.c - cpukit/sapi/src/fatal.c - cpukit/sapi/src/fatalsrctext.c +- cpukit/sapi/src/getbuildhash.c - cpukit/sapi/src/getconfigmax.c - cpukit/sapi/src/getcopyrightnotice.c - cpukit/sapi/src/getversionstring.c -- 2.26.2 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel