[PATCH 10/11] rtems/kernel: Update the confg file support

chrisj at rtems.org chrisj at rtems.org
Thu Sep 8 01:26:04 UTC 2022


From: Chris Johns <chrisj at rtems.org>

- Check for config file tests and install if enabled

- Support buildset BSP options defines if building a single BSP

- Remove bootstrap and autotools fragments
---
 rtems/config/tools/rtems-kernel-common.cfg | 240 +++++++++++----------
 1 file changed, 121 insertions(+), 119 deletions(-)

diff --git a/rtems/config/tools/rtems-kernel-common.cfg b/rtems/config/tools/rtems-kernel-common.cfg
index 6466180..aa424d2 100644
--- a/rtems/config/tools/rtems-kernel-common.cfg
+++ b/rtems/config/tools/rtems-kernel-common.cfg
@@ -20,41 +20,110 @@
 %endif
 
 %if %{defined with_rtems_bsp_config}
- %define _target %(%{_sbdir}/sb/rtems-kernel-config-check -v %{rtems_version} -t %{with_rtems_bsp_config})
- %define rtems_bsp %(%{_sbdir}/sb/rtems-kernel-config-check -b %{with_rtems_bsp_config})
-%endif
-
-#
-# The target. It could be set in rtems_target.
-#
-%if %{defined rtems_target} && !%{defined with_rtems_bsp_config}
- %define _target %{rtems_target}
-%endif
-%if %{_target} == %{nil} && %{rtems_kernel_error}
- %error No RTEMS target specified: --target=<arch>-rtems<ver>.
-%endif
-
-#
-# The BSP.
-#
-%if !%{defined with_rtems_bsp} && %{rtems_kernel_error} && !%{defined with_rtems_bsp_config}
- %error No RTEMS BSP specified: --with-rtems-bsp=bsp
-%endif
-%if !%{defined with_rtems_bsp_config}
- %define rtems_bsp %{with_rtems_bsp}
+ #
+ # A config file can build any BSP from any architecture. No options are
+ # accepted.
+ #
+ %if %{defined with_rtems_target} || %{defined with_rtems_bsp} || \
+     %{defined with_rtems_bspopts} || %{defined enable_cxx} || \
+     %{defined with_rtems_tests} || %{defined with_rtems_smp}
+  %error Options --with-rtems-* are not valid with --with-rtems-bsp-config
+ %endif
+ %if %{defined rtems_posix} || %{defined rtems_tests} || %{defined rtems_bspopts}
+  %error Options rtems_* macros are not valid with --with-rtems-bsp-config
+ %endif
+ %define config_file %(realpath %{with_rtems_bsp_config})
+ %if %(test -f %{config_file}; echo $?) == 1
+  %error Configuration INI file not found: %{config_file}
+ %endif
+ %define rtems_bsp %(%{_sbdir}/sb/rtems-kernel-config-check -c %{with_rtems_bsp_config})
+ %define rtems_bsp_count %(echo %{rtems_bsp} | tr ' ' '\n' | wc -l)
+ %define rtems_tests %(%{_sbdir}/sb/rtems-kernel-config-check -t %{with_rtems_bsp_config})
  # If a list the path gets too long
+ %define rtems_bsp_pkgname %(basename %{with_rtems_bsp_config} | sed -e 's/\..*//g')
+%else
+ #
+ # Backwards compatible command line or deployed build set
+ # options.
+ #
+ %define config_file config.ini
+ %if !%{defined with_rtems_bsp} && %{rtems_kernel_error}
+  %error No RTEMS BSP specified: --with-rtems-bsp=bsp
+ %endif
+ %if %{defined with_rtems_bspopts}
+  %define bspopts %{with_rtems_bspopts}
+ %endif
  %define rtems_bsp_pkgname bsps
+ #
+ # Check the various --with/--without options we support. These are
+ # turned into the internal settings.
+ #
+ # --with-rtems-bsp               : The BSP or list of BSPs
+ # --without-rtems-bsp            : Not supported
+ # --with-rtems-tests             : Supported, samples/yes/no
+ # --without-rtems-tests          : Supported, forced to no
+ # --with-rtems-smp               : Supported
+ # --without-rtems-smp            : Don't care
+ # --with-rtems-legacy-network    : Unsupported
+ # --without-rtems-legacy-network : Don't care
+ %if !%{defined with_rtems_bsp}
+  %error Option --without-rtems-bsp is not found.
+ %endif
+ %if %{defined without_rtems_bsp}
+  %error Option --without-rtems-bsp is not supported.
+ %endif
+ %define rtems_bsp %{with_rtems_bsp}
+ %define rtems_bsp_count %(echo %{rtems_bsp} | tr ' ' '\n' | wc -l)
+ %if %{defined with_rtems_legacy_network}
+  echo "RTEMS legacy network has been removed."
+  echo "Please review and update your configuration."
+  exit 1
+ %endif
+ %if %{defined enable_cxx}
+  echo "CXX has been removed."
+  echo "Please review and update your configuration."
+  exit 1
+ %endif
+ %if %{defined without_rtems_tests}
+  %define rtems_tests False
+  %define rtems_sample_tests False
+ %endif
+ %if %{defined with_rtems_tests}
+  %if %{with_rtems_tests} == 1
+    %define rtems_tests True
+    %define rtems_sample_tests True
+  %endif
+   %if %{with_rtems_tests} == samples
+       %define rtems_tests False
+       %define rtems_sample_tests True
+  %endif
+ %endif
+ %if %{defined with_rtems_smp}
+  %define rtems_smp 1
+ %endif
+ %if %{defined with_rtems_bspopts}
+  %if %{rtems_bsp_count} > 1
+   %error BSP options not supported with more than one BSP builds
+  %endif
+  %define rtems_bspopts %{with_rtems_bspopts}
+ %endif
+ #
+ # Default set up. Override these in a BSP if you want a
+ # specific setup.
+ #
+ %ifn %{defined rtems_posix}
+  %define rtems_posix 1
+ %endif
+ %ifn %{defined rtems_tests}
+  %define rtems_tests False
+  %define rtems_sample_tests True
+ %endif
+ %ifn %{defined rtems_bspopts}
+  %define rtems_bspopts %{nil}
+ %endif
 %endif
 
-#
-# Configuration file used with waf
-#
-%if !%{defined with_rtems_bsp_config}
- %define config_file config.ini
-%else
- %define config_file %{with_rtems_bsp_config}
- %define rtems_bsp_pkgname %(basename %{with_rtems_bsp_config})
-%endif
+%define _target not-used
 
 #
 # If no tools are provided use the prefix.
@@ -71,13 +140,13 @@
 #
 # Define the package.
 #
-package: rtems-%{rtems_version}-%{_target}-%{rtems_bsp_pkgname}-%{_host}-%{release}
+package: rtems-%{rtems_version}-%{rtems_bsp_pkgname}-%{_host}-%{release}
 
 #
 # Package details.
 #
-Name:    %{_target}-kernel-%{rtems_bsp_pkgname}-%{release}
-Summary: RTEMS v%{rtems_kernel_version} for target %{_target} BSP %{rtems_bsp}
+Name:    rtems-kernel-%{rtems_bsp_pkgname}-%{release}
+Summary: RTEMS v%{rtems_kernel_version} for BSP(s) %{rtems_bsp}
 Version: %{rtems_kernel_version}
 Release: %{release}
 URL: 	 https://www.rtems.org/
@@ -100,23 +169,13 @@ URL: 	 https://www.rtems.org/
  %define rtems_posix 0
 %endif
 
-%if %{defined with_rtems_bspopts}
- %define bspopts %{with_rtems_bspopts}
-%endif
-
 #
 # Source
 #
 %if %{rsb_released}
  %define rtems_kernel_file rtems-%{rtems_kernel_version}.tar.xz
- %define rtems_bootstrap 0
 %else
  %define rtems_kernel_file rtems-kernel-%{rtems_kernel_version}.tar.bz2
- #
- # The code in git needs to be bootstrapped. Do each build because we have
- # no way to change what changes may have happened in the code.
- #
- %define rtems_bootstrap 1
 %endif
 
 %if ! %{defined rtems_kernel_version}
@@ -126,70 +185,6 @@ URL: 	 https://www.rtems.org/
 %source set rtems_kernel --rsb-file=%{rtems_kernel_file} \
               https://git.rtems.org/rtems/snapshot/rtems-%{rtems_kernel_version}.tar.bz2
 
-#
-# Check the various --with/--without options we support. These are
-# turned into the internal settings.
-#
-# --target                       : The architecture
-# --with-rtems-bsp               : The BSP
-# --without-rtems-bsp            : Not supported
-# --with-rtems-tests             : Supported, samples/yes/no
-# --without-rtems-tests          : Supported, forced to no
-# --with-rtems-smp               : Supported
-# --without-rtems-smp            : Don't care
-# --with-rtems-legacy-network    : Unsupported
-# --without-rtems-legacy-network : Don't care
-%if %{defined without_rtemsbsp}
- %error Option --without-rtemsbsp is not supported.
-%endif
-%if %{defined with_rtems_legacy_network}
- echo "RTEMS legacy network has been removed."
- echo "Please review and update your configuration."
- exit 1
-%endif
-%if %{defined enable_cxx}
- echo "CXX has been removed."
- echo "Please review and update your configuration."
- exit 1
-%endif
-
-%if %{defined without_rtems_tests}
- %define rtems_tests False
- %define rtems_sample_tests False
-%endif
-%if %{defined with_rtems_tests}
- %if %{with_rtems_tests} == 1
-   %define rtems_tests True
-   %define rtems_sample_tests True
- %endif
-  %if %{with_rtems_tests} == samples
-      %define rtems_tests False
-      %define rtems_sample_tests True
- %endif
-%endif
-%if %{defined with_rtems_smp}
- %define rtems_smp 1
-%endif
-%if %{defined with_rtems_bspopts}
- %define rtems_bspopts %{with_rtems_bspopts}
-%endif
-
-
-#
-# Default set up. Override these in a BSP if you want a
-# specific setup.
-#
-%ifn %{defined rtems_posix}
- %define rtems_posix 1
-%endif
-%ifn %{defined rtems_tests}
- %define rtems_tests False
- %define rtems_sample_tests True
-%endif
-%ifn %{defined rtems_bspopts}
- %define rtems_bspopts %{nil}
-%endif
-
 #
 # Prepare the source code.
 #
@@ -198,11 +193,6 @@ URL: 	 https://www.rtems.org/
   %source setup rtems_kernel -q -c -n %{name}-%{version}
   cd ${source_dir_rtems}
   %patch setup rtems_kernel -p1
-  %if %{rtems_bootstrap}
-    %if %{defined _internal_autotools_path}
-      export PATH="%{_internal_autotools_path}/bin:${PATH}"
-    %endif
-  %endif
   cd ..
 
 %build
@@ -215,7 +205,10 @@ URL: 	 https://www.rtems.org/
 
   cd ${source_dir_rtems}
 
-  %ifn %{defined with_rtems_bsp_config}
+  #
+  # If no user supplied configuration file create one
+  #
+  %if !%{defined with_rtems_bsp_config}
     echo "[DEFAULT]" > %{config_file}
     echo "RTEMS_POSIX_API = %{?rtems_posix:True}%{!?rtems_posix:False}" >> %{config_file}
     echo "RTEMS_SMP = %{?rtems_smp:True}%{!?rtems_smp:False}" >> %{config_file}
@@ -224,7 +217,13 @@ URL: 	 https://www.rtems.org/
     echo "" >> %{config_file}
     for bsp in %{rtems_bsp}
     do
-     echo "[$bsp]" >> %{config_file};
+     echo "[$bsp]" >> %{config_file}
+     %if %{rtems_bsp_count} == 1 && %{defined rtems_bspopts}
+       for opt in $(echo %{rtems_bspopts} | tr ' ' '\n')
+       do
+        echo "$opt" >> %{config_file}
+       done
+     %endif
      echo "" >> %{config_file}
     done
   %endif
@@ -248,10 +247,13 @@ URL: 	 https://www.rtems.org/
   echo "rtems_tests: %{rtems_tests}"
 
   %if %{rtems_tests} != False
-   %define rtems_test_install %{_target}/%{rtems_bsp}/tests
-   mkdir -p $SB_BUILD_ROOT/%{_prefix}/%{rtems_test_install}
-   find . -name \*.exe -and -not -name \*.norun.exe \
-      -exec cp -v \{\} $SB_BUILD_ROOT/%{_prefix}/%{rtems_test_install}/ \;
+   for bsp in %{rtems_bsp}
+   do
+    export bsp
+    mkdir -p $SB_BUILD_ROOT/%{_prefix}/${bsp}-rtems%{rtems_kernel_version}/tests
+    find build/$bsp -name \*.exe -and -not -name \*.norun.exe \
+      -exec sh -c 'cp -v {} $SB_BUILD_ROOT/%{_prefix}/${bsp}-rtems%{rtems_kernel_version}/tests/$(basename {})' \;
+   done
   %endif
 
   cd -
-- 
2.24.1



More information about the devel mailing list