[PATCH] build: Add PROGRAM_PREFIX option

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Aug 2 05:49:52 UTC 2023


Replace --rtems-version with a PROGRAM_PREFIX option.  This allows also
the use of vendor tools.
---
 spec/build/bsps/makeinc.yml            | 16 ++++++++--------
 spec/build/bsps/maketarget.yml         | 22 +++++++++++-----------
 spec/build/bsps/optobjcopy.yml         |  2 +-
 spec/build/cpukit/cpuopts.yml          |  2 ++
 spec/build/cpukit/optgcc.yml           |  8 ++++----
 spec/build/cpukit/optprogramprefix.yml | 18 ++++++++++++++++++
 spec/build/testsuites/ada/optgnat.yml  |  2 +-
 wscript                                | 24 ++----------------------
 8 files changed, 47 insertions(+), 47 deletions(-)
 create mode 100644 spec/build/cpukit/optprogramprefix.yml

diff --git a/spec/build/bsps/makeinc.yml b/spec/build/bsps/makeinc.yml
index ac395f2f02..08fc75a8b9 100644
--- a/spec/build/bsps/makeinc.yml
+++ b/spec/build/bsps/makeinc.yml
@@ -16,14 +16,14 @@ content: |
   prefix = ${PREFIX}
   exec_prefix = $${prefix}/${ARCH}-rtems${__RTEMS_MAJOR__}
 
-  CC_FOR_TARGET = ${ARCH}-rtems${__RTEMS_MAJOR__}-gcc
-  CXX_FOR_TARGET = ${ARCH}-rtems${__RTEMS_MAJOR__}-g++
-  AS_FOR_TARGET = ${ARCH}-rtems${__RTEMS_MAJOR__}-as
-  AR_FOR_TARGET = ${ARCH}-rtems${__RTEMS_MAJOR__}-ar
-  NM_FOR_TARGET = ${ARCH}-rtems${__RTEMS_MAJOR__}-nm
-  LD_FOR_TARGET = ${ARCH}-rtems${__RTEMS_MAJOR__}-ld
-  SIZE_FOR_TARGET = ${ARCH}-rtems${__RTEMS_MAJOR__}-size
-  OBJCOPY_FOR_TARGET = ${ARCH}-rtems${__RTEMS_MAJOR__}-objcopy
+  CC_FOR_TARGET = ${PROGRAM_PREFIX}gcc
+  CXX_FOR_TARGET = ${PROGRAM_PREFIX}g++
+  AS_FOR_TARGET = ${PROGRAM_PREFIX}as
+  AR_FOR_TARGET = ${PROGRAM_PREFIX}ar
+  NM_FOR_TARGET = ${PROGRAM_PREFIX}nm
+  LD_FOR_TARGET = ${PROGRAM_PREFIX}ld
+  SIZE_FOR_TARGET = ${PROGRAM_PREFIX}size
+  OBJCOPY_FOR_TARGET = ${PROGRAM_PREFIX}objcopy
 
   CC= $$(CC_FOR_TARGET)
   CXX= $$(CXX_FOR_TARGET)
diff --git a/spec/build/bsps/maketarget.yml b/spec/build/bsps/maketarget.yml
index 798b64fa22..7a7b0c3d35 100644
--- a/spec/build/bsps/maketarget.yml
+++ b/spec/build/bsps/maketarget.yml
@@ -11,17 +11,17 @@ content: |
   LIBS =
 
   RTEMS_API = ${__RTEMS_MAJOR__}
-  CC = ${ARCH}-rtems${__RTEMS_MAJOR__}-gcc --pipe
-  AS = ${ARCH}-rtems${__RTEMS_MAJOR__}-as
-  AR = ${ARCH}-rtems${__RTEMS_MAJOR__}-ar
-  NM = ${ARCH}-rtems${__RTEMS_MAJOR__}-nm
-  LD = ${ARCH}-rtems${__RTEMS_MAJOR__}-ld
-  SIZE = ${ARCH}-rtems${__RTEMS_MAJOR__}-size
-  STRIP = ${ARCH}-rtems${__RTEMS_MAJOR__}-strip
-  OBJCOPY = ${ARCH}-rtems${__RTEMS_MAJOR__}-objcopy
-  RANLIB = ${ARCH}-rtems${__RTEMS_MAJOR__}-ranlib
-
-  CXX = ${ARCH}-rtems${__RTEMS_MAJOR__}-g++
+  CC = ${PROGRAM_PREFIX}gcc --pipe
+  AS = ${PROGRAM_PREFIX}as
+  AR = ${PROGRAM_PREFIX}ar
+  NM = ${PROGRAM_PREFIX}nm
+  LD = ${PROGRAM_PREFIX}ld
+  SIZE = ${PROGRAM_PREFIX}size
+  STRIP = ${PROGRAM_PREFIX}strip
+  OBJCOPY = ${PROGRAM_PREFIX}objcopy
+  RANLIB = ${PROGRAM_PREFIX}ranlib
+
+  CXX = ${PROGRAM_PREFIX}g++
 
   export CC
   export AS
diff --git a/spec/build/bsps/optobjcopy.yml b/spec/build/bsps/optobjcopy.yml
index 3387e23794..63fab08ac6 100644
--- a/spec/build/bsps/optobjcopy.yml
+++ b/spec/build/bsps/optobjcopy.yml
@@ -1,6 +1,6 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
 actions:
-- set-value: ${ARCH}-rtems${__RTEMS_MAJOR__}-objcopy
+- set-value: ${PROGRAM_PREFIX}objcopy
 - substitute: null
 - find-program: null
 - env-assign: OBJCOPY
diff --git a/spec/build/cpukit/cpuopts.yml b/spec/build/cpukit/cpuopts.yml
index f1b30eec55..1d28ace552 100644
--- a/spec/build/cpukit/cpuopts.yml
+++ b/spec/build/cpukit/cpuopts.yml
@@ -7,6 +7,8 @@ guard: _RTEMS_SCORE_CPUOPTS_H
 include-headers: []
 install-path: ${BSP_INCLUDEDIR}/rtems/score
 links:
+- role: build-dependency
+  uid: optprogramprefix
 - role: build-dependency
   uid: optgcc
 - role: build-dependency
diff --git a/spec/build/cpukit/optgcc.yml b/spec/build/cpukit/optgcc.yml
index 3afb909444..94af494af4 100644
--- a/spec/build/cpukit/optgcc.yml
+++ b/spec/build/cpukit/optgcc.yml
@@ -1,21 +1,21 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
 actions:
-- set-value: ${ARCH}-rtems${__RTEMS_MAJOR__}-gcc
+- set-value: ${PROGRAM_PREFIX}gcc
 - substitute: null
 - find-program: null
 - env-assign: AS
 - env-assign: CC
 - env-assign: LINK_CC
-- set-value: ${ARCH}-rtems${__RTEMS_MAJOR__}-g++
+- set-value: ${PROGRAM_PREFIX}g++
 - substitute: null
 - find-program: null
 - env-assign: CXX
 - env-assign: LINK_CXX
-- set-value: ${ARCH}-rtems${__RTEMS_MAJOR__}-ar
+- set-value: ${PROGRAM_PREFIX}ar
 - substitute: null
 - find-program: null
 - env-assign: AR
-- set-value: ${ARCH}-rtems${__RTEMS_MAJOR__}-ld
+- set-value: ${PROGRAM_PREFIX}ld
 - substitute: null
 - find-program: null
 - env-assign: LD
diff --git a/spec/build/cpukit/optprogramprefix.yml b/spec/build/cpukit/optprogramprefix.yml
new file mode 100644
index 0000000000..73deef79d1
--- /dev/null
+++ b/spec/build/cpukit/optprogramprefix.yml
@@ -0,0 +1,18 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+actions:
+- get-string: null
+- substitute: null
+- env-assign: null
+build-type: option
+copyrights:
+- Copyright (C) 2023 embedded brains GmbH & Co. KG
+default:
+- enabled-by: true
+  value: ${ARCH}-rtems${__RTEMS_MAJOR__}-
+description: |
+  Defines the program prefix of tools (compiler, assembler, linker).
+enabled-by: true
+format: '{}'
+links: []
+name: PROGRAM_PREFIX
+type: build
diff --git a/spec/build/testsuites/ada/optgnat.yml b/spec/build/testsuites/ada/optgnat.yml
index 6d84f64845..449859bde0 100644
--- a/spec/build/testsuites/ada/optgnat.yml
+++ b/spec/build/testsuites/ada/optgnat.yml
@@ -1,6 +1,6 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
 actions:
-- set-value: ${ARCH}-rtems${__RTEMS_MAJOR__}-gnatmake
+- set-value: ${PROGRAM_PREFIX}gnatmake
 - substitute: null
 - find-program: null
 - env-assign: GNATMAKE
diff --git a/wscript b/wscript
index 85600b9e05..a8fca88dcb 100755
--- a/wscript
+++ b/wscript
@@ -1306,12 +1306,6 @@ def options(ctx):
         help=
         "the UID of the top-level group [default: '/grp']; it may be used in the bspdefaults and configure commands",
     )
-    rg.add_option(
-        "--rtems-version",
-        metavar="VALUE",
-        help=
-        "sets the RTEMS major version number; it is intended for RTEMS maintainers and may be used in the bspdefaults and configure commands",
-    )
 
 
 def check_environment(conf):
@@ -1351,12 +1345,6 @@ def configure_version(conf):
                 version[key] = no_unicode(value)
             except configparser.NoOptionError:
                 pass
-    major = conf.options.rtems_version
-    if major is not None:
-        conf.msg("Set __RTEMS_MAJOR__ via command line to:",
-                 major,
-                 color="YELLOW")
-        version["__RTEMS_MAJOR__"] = major
 
 
 def load_config_files(ctx):
@@ -1566,14 +1554,7 @@ def build(bld):
     if not bld.variant:
         check_forbidden_options(
             bld,
-            [
-                "compiler",
-                "config",
-                "specs",
-                "tools",
-                "top_group",
-                "version",
-            ],
+            ["compiler", "config", "specs", "tools", "top_group"],
         )
         load_items(bld, bld.env.SPECS)
         append_variant_builds(bld)
@@ -1662,8 +1643,7 @@ COMPILER = {}""".format(variant, compiler))
 
 def bsplist(ctx):
     """lists base BSP variants"""
-    check_forbidden_options(
-        ctx, ["compiler", "config", "tools", "top_group", "version"])
+    check_forbidden_options(ctx, ["compiler", "config", "tools", "top_group"])
     add_log_filter(ctx.cmd)
     load_items_from_options(ctx)
     white_list = get_white_list(ctx)
-- 
2.35.3



More information about the devel mailing list