# # RTEMS Kernel. # # This configuration file configure's, make's and install's RTEMS. # # # If a dry-run and with download ignore errors and correct setting for tools # and BSPs. Only after the source to download. # %if %{_dry_run} && %{defined with_download} %log Kenrel configuration errors ignored %define rtems_kernel_error 0 %else %define rtems_kernel_error 1 %endif %if %{rsb_released} %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=-rtems. %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} # # If no tools are provided use the prefix. # %ifn %{defined with_tools} %define with_tools %{_prefix} %endif # # Set the path to the tools. # %{path prepend %{with_tools}/bin} # # Define the package. # package: rtems-%{rtems_version}-%{_target}-%{rtems_bsp}-%{_host}-%{release} # # Package details. # Name: %{_target}-kernel-%{rtems_bsp}-%{release} Summary: RTEMS v%{rtems_kernel_version} for target %{_target} BSP %{rtems_bsp} Version: %{rtems_kernel_version} Release: %{release} URL: https://www.rtems.org/ %include %{_configdir}/checks.cfg %include %{_configdir}/base.cfg %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} %define with_tools %{_prefix} %endif # # Check options. # %if %{defined without_rtems_posix} %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} %error No RTEMS kernel version defined %endif %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 : 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 source_dir_rtems="rtems-%{rtems_kernel_version}" %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 # Build directory support. if test "%{_build}" != "%{_host}" ; then build_dir="build-cxc" else build_dir="build" fi 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} %{__make} %{?_smp_mflags} all cd .. %install %{__rmdir} $SB_BUILD_ROOT cd ${build_dir} %{__make} 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}/ \; %endif cd ..