So we already have the ability to change the compiler program name with the INI configuration variable PROGRAM_PREFIX like so:
[DEFAULT]
PROGRAM_PREFIX = ${ARCH}-gaisler-rtems${__RTEMS_MAJOR__}-
Which is nice because it will take care of cases where you’re building for multiple architectures at once (what I mean by that is cases where you have a single INI file with say a SPARC and a RISC-V BSP defined inside).
Unfortunately, once it’s time to install the newly built kernels, there is no way to set the install path in a similar way so it will copy the files to 7/riscv-rtems7 instead of 7/riscv-gaisler-rtems7
One could set the --destdir flag but, as far as I know, you cannot have it take variables like ${ARCH} so if you’re planning on install for two different architectures at once, this won’t work.
A workaround I found was to modify rtems/kernel/spec/build/cpukit/optinstall.yml to make it more similar to rtems/kernel/spec/build/cpukit/optprogramprefix.yml:
diff --git a/spec/build/cpukit/optinstall.yml b/spec/build/cpukit/optinstall.yml
index 22229f4063..fe4927f6d9 100644
--- a/spec/build/cpukit/optinstall.yml
+++ b/spec/build/cpukit/optinstall.yml
@@ -1,6 +1,6 @@
SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
actions:
-- set-value: ${PREFIX}/${ARCH}-rtems${__RTEMS_MAJOR__}/${BSP_NAME}
+- get-string: null
- substitute: null
- env-assign: BSP_PREFIX
- set-value: ${BSP_PREFIX}/lib
@@ -12,9 +12,12 @@ actions:
build-type: option
copyrights:
- Copyright (C) 2020 embedded brains GmbH & Co. KG
-default: []
+default:
+- enabled-by: true
+ value: ${PREFIX}/${ARCH}-rtems${__RTEMS_MAJOR__}/${BSP_NAME}
description: ''
enabled-by: true
+format: '{}'
links: []
name: INSTALL
type: build
Then the INI file can define the INSTALL variable if needed:
[DEFAULT]
PROGRAM_PREFIX = ${ARCH}-gaisler-rtems${__RTEMS_MAJOR__}-
INSTALL = ${PREFIX}/${ARCH}-gaisler-rtems${__RTEMS_MAJOR__}/${BSP_NAME}
My question would be is there a better way to do this?