blob: 157c7a40b8dc35d4a11df558e3358efa2ce1aa47 (
plain) (
tree)
|
|
#
# 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=<arch>-rtems<ver>.
%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 ..
|