summaryrefslogtreecommitdiffstats
path: root/rtems/config/tools/rtems-kernel-common.cfg
diff options
context:
space:
mode:
Diffstat (limited to 'rtems/config/tools/rtems-kernel-common.cfg')
-rw-r--r--rtems/config/tools/rtems-kernel-common.cfg305
1 files changed, 151 insertions, 154 deletions
diff --git a/rtems/config/tools/rtems-kernel-common.cfg b/rtems/config/tools/rtems-kernel-common.cfg
index 157c7a4..aa424d2 100644
--- a/rtems/config/tools/rtems-kernel-common.cfg
+++ b/rtems/config/tools/rtems-kernel-common.cfg
@@ -9,7 +9,7 @@
# and BSPs. Only after the source to download.
#
%if %{_dry_run} && %{defined with_download}
- %log Kenrel configuration errors ignored
+ %log Kernel configuration errors ignored
%define rtems_kernel_error 0
%else
%define rtems_kernel_error 1
@@ -19,23 +19,111 @@
%define rtems_kernel_version %{rsb_version}
%endif
-#
-# The target. It could be set in rtems_target.
-#
-%if %{defined rtems_target}
- %define _target %{rtems_target}
-%endif
-%if %{_target} == %{nil} && %{rtems_kernel_error}
- %error No RTEMS target specified: --target=<arch>-rtems<ver>.
+%if %{defined with_rtems_bsp_config}
+ #
+ # 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
-#
-# The BSP.
-#
-%if !%{defined with_rtems_bsp} && %{rtems_kernel_error}
- %error No RTEMS BSP specified: --with-rtems-bsp=bsp
-%endif
-%define rtems_bsp %{with_rtems_bsp}
+%define _target not-used
#
# If no tools are provided use the prefix.
@@ -52,13 +140,13 @@
#
# Define the package.
#
-package: rtems-%{rtems_version}-%{_target}-%{rtems_bsp}-%{_host}-%{release}
+package: rtems-%{rtems_version}-%{rtems_bsp_pkgname}-%{_host}-%{release}
#
# Package details.
#
-Name: %{_target}-kernel-%{rtems_bsp}-%{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/
@@ -68,23 +156,6 @@ URL: https://www.rtems.org/
%include %{_configdir}/versions.cfg
#
-# A magic internal path that would break if changes in the defaults.mc
-# macro file are made.
-#
-%define _internal_autotools_path %{_tmppath}/sb-%{_uid}/${SB_PREFIX_CLEAN}
-
-#
-# Check the version of autoconf. Check autoreconf as it is used.
-#
-%if %{__autoreconf_ver} <= 2.68
- %if %{__autoreconf_bindir_ver} <= 2.68
- %if %{__autoreconf_path_ver} <= 2.68
- %error Autoconf (autoreconf) version 2.69 or higher is needed.
- %endif
- %endif
-%endif
-
-#
# If no tools provided use the prefix.
#
%ifn %{defined with_tools}
@@ -98,31 +169,13 @@ URL: https://www.rtems.org/
%define rtems_posix 0
%endif
-%if %{defined with_rtems_legacy_network}
- %define rtems_networking 1
-%endif
-
-%if %{defined with_rtems_cxx}
- %define rtems_cxx 1
-%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}
@@ -133,75 +186,6 @@ URL: https://www.rtems.org/
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 : Supported
-# --without-rtems-legacy-network : Don't care
-# --with-rtems-bspopts : Supported, quote for a list
-# --without-rtems-bspopts : Don't care
-#
-%if %{defined without_rtemsbsp}
- %error Option --without-rtemsbsp is not supported.
-%endif
-%if %{defined without_rtems_tests}
- %define with_rtems_tests no
-%endif
-%if %{defined with_rtems_tests}
- %if %{with_rtems_tests} == 1
- %define with_rtems_tests yes
- %endif
- %if %{with_rtems_tests} == yes || \
- %{with_rtems_tests} == no || \
- %{with_rtems_tests} == samples
- %define rtems_tests %{with_rtems_tests}
- %endif
-%endif
-%if %{defined with_rtems_smp}
- %define rtems_smp 1
-%endif
-%if %{defined with_rtems_legacy_network}
- %define rtems_networking 1
-%endif
-%if %{defined with_rtems_bspopts}
- %define rtems_bspopts %{with_rtems_bspopts}
-%endif
-
-#
-# If C++ defined for the tool set use it to control RTEMS's setting..
-#
-%if %{defined enable_cxx}
- %define rtems_cxx %{enable_cxx}
-%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_networking}
- %define rtems_networking 0
-%endif
-%ifn %{defined rtems_cxx}
- %define rtems_cxx 1
-%endif
-%ifn %{defined rtems_tests}
- %define rtems_tests samples
-%endif
-%ifn %{defined rtems_bspopts}
- %define rtems_bspopts %{nil}
-%endif
-
-#
# Prepare the source code.
#
%prep
@@ -209,13 +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
- ./bootstrap -c
- ./rtems-bootstrap
- %endif
cd ..
%build
@@ -225,38 +202,58 @@ URL: https://www.rtems.org/
else
build_dir="build"
fi
+
+ cd ${source_dir_rtems}
+
+ #
+ # 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}
+ echo "BUILD_TESTS = %{rtems_tests}" >> %{config_file}
+ echo "BUILD_SAMPLES = %{rtems_sample_tests}" >> %{config_file}
+ echo "" >> %{config_file}
+ for bsp in %{rtems_bsp}
+ do
+ 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
+
mkdir -p ${build_dir}
- cd ${build_dir}
- ../${source_dir_rtems}/configure \
- --build=%{_build} --host=%{_host} \
- --target=%{_target} \
- --enable-rtemsbsp="%{rtems_bsp}" \
- %{?rtems_cxx:--enable-cxx}%{!?rtems_cxx:--disable-cxx} \
- %{?rtems_posix:--enable-posix}%{!?rtems_posix:--disable-posix} \
- %{?rtems_networking:--enable-networking}%{!?rtems_networking:--disable-networking} \
- %{?rtems_tests:--enable-tests=%{rtems_tests}} \
- %{?rtems_smp:--enable-smp} \
- --prefix=%{_prefix} --bindir=%{_bindir} \
- --exec-prefix=%{_exec_prefix} \
- --includedir=%{_includedir} --libdir=%{_libdir} \
- --mandir=%{_mandir} --infodir=%{_infodir} \
- %{rtems_bspopts}
+ ./waf configure \
+ --prefix=%{_prefix} \
+ --rtems-config=%{config_file}
+
+ ./waf %{?_smp_mflags}
- %{__make} %{?_smp_mflags} all
cd ..
%install
%{__rmdir} $SB_BUILD_ROOT
- cd ${build_dir}
- %{__make} DESTDIR=$SB_BUILD_ROOT install
+ cd ${source_dir_rtems}
+ ./waf --destdir=$SB_BUILD_ROOT install
- %if %{rtems_tests} != no
- %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}/ \;
+ echo "rtems_tests: %{rtems_tests}"
+
+ %if %{rtems_tests} != False
+ 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 ..
+ cd -