pld embedded - port pld dla arm9
Radosław Kintzi
radek at rakin.eu.org
Thu Aug 11 16:43:53 CEST 2005
Mam już skrośny kompilator generujący kod dla arm-linux-uclibc. Całość
zamyka się w trzech spacach: arm-binutils.spec, arm-gcc.spec
(--with[out] bootstrap), arm-uClibc.spec. Załączam je do wglądu. Gdzie
mogę je wrzucić do CVSa? - jakie nazwy im nadać? - a może jakaś
specjalna gałąź?
Teraz takie pytanie. Jak zmusić rpma, żeby używał narzędzi
arm-linux-uclibc-{gcc,g++,as,ar,itp} zamiast i686-... Kiedy daję np:
rpmbuild -bb --target arm-linux-uclibc zlib.spec
dostaję zlib-1.2.3-3.arm.rpm ale w środku są binarki dla i686. Musze mu
jeszcze podać --define __cc arm-linux-uclibc-gcc, co też nie załatwia
sprawy, bo używane jest jeszcze ar.
Pozdr,
Radek
-------------- next part --------------
# $Revision: 1.14 $, $Date: 2005/07/24 07:00:01 $
#
# Conditional build:
#
Summary: Cross ARM GNU binary utility development utilities - binutils
Summary(es): Utilitarios para desarrollo de binarios de la GNU - ARM binutils
Summary(fr): Utilitaires de développement binaire de GNU - ARM binutils
Summary(pl): Skrośne narzędzia programistyczne GNU dla ARM - binutils
Summary(pt_BR): Utilitários para desenvolvimento de binários da GNU - ARM binutils
Summary(tr): GNU geliţtirme araçlarý - ARM binutils
Name: arm-binutils
Version: 2.15.94.0.2
Release: 1
License: GPL
Group: Development/Tools
Source0: ftp://ftp.kernel.org/pub/linux/devel/binutils/binutils-%{version}.tar.bz2
# Source0-md5: a87269da4db684da403014b43ec0b89e
Patch0: binutils-uclibc-conf.patch
Patch1: binutils-001_ld_makefile_patch.patch
Patch2: binutils-006_better_file_error.patch
Patch3: binutils-012_check_ldrunpath_length.patch
Patch4: binutils-120_mips_xgot_multigot_workaround.patch
Patch5: binutils-binutils-skip-comments.patch
URL: http://sources.redhat.com/binutils/
BuildRequires: automake
BuildRequires: bash
BuildRequires: bison
BuildRequires: flex
ExcludeArch: arm
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define target arm-linux-uclibc
%define arch %{_prefix}/%{target}
%description
Binutils is a collection of binary utilities, including:
- ar - create, modify and extract from archives,
- nm - lists symbols from object files,
- objcopy - copy and translate object files,
- objdump - display information from object files,
- ranlib - generate an index for the contents of an archive,
- size - list the section sizes of an object or archive file,
- strings - list printable strings from files,
- strip - discard symbols,
- c++filt - a filter for demangling encoded C++ symbols,
- addr2line - convert addresses to file and line,
- nlmconv - convert object code into an NLM.
This package contains the cross version for ARM.
%description -l pl
Pakiet binutils zawiera zestaw narzędzi umożliwiających kompilację
programów. Znajdują się tutaj między innymi assembler, konsolidator
(linker), a także inne narzędzia do manipulowania binarnymi plikami
programów i bibliotek.
Ten pakiet zawiera wersję skrośną generującą kod dla ARM.
%prep
%setup -q -n binutils-%{version}
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%build
cp -f /usr/share/automake/config.sub .
# ldscripts won't be generated properly if SHELL is not bash...
CFLAGS="%{rpmcflags}" \
LDFLAGS="%{rpmldflags}" \
CONFIG_SHELL="/bin/bash" \
./configure \
--prefix=%{_prefix} \
--libdir=%{_libdir} \
--mandir=%{_mandir} \
--infodir=%{_infodir} \
--disable-nls \
--disable-shared \
--disable-werror \
--enable-multilib \
--build=%{_target_base_arch} \
--host=%{_target_base_arch} \
--target=%{target}
%{__make} all \
tooldir=%{_prefix} \
EXEEXT=""
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT%{_prefix}
%{__make} install \
prefix=$RPM_BUILD_ROOT%{_prefix} \
mandir=$RPM_BUILD_ROOT%{_mandir} \
infodir=$RPM_BUILD_ROOT%{_infodir} \
libdir=$RPM_BUILD_ROOT%{_libdir}
# remove these man pages unless we cross-build for win*/netware platforms.
# however, this should be done in Makefiles.
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/{*dlltool,*nlmconv,*windres}.1
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(644,root,root,755)
%doc README
%attr(755,root,root) %{_bindir}/%{target}-*
%dir %{arch}
%dir %{arch}/bin
%attr(755,root,root) %{arch}/bin/*
%{_libdir}/ldscripts
%{_mandir}/man?/%{target}-*
%define date %(echo `LC_ALL="C" date +"%a %b %d %Y"`)
%changelog
* %{date} PLD Team <feedback at pld-linux.org>
All persons listed below can be reached at <cvs_login>@pld-linux.org
$Log: crossarm-binutils.spec,v $
-------------- next part --------------
# $Revision: 1.6 $, $Date: 2004/10/08 04:52:43 $
#
# MUST SEE:
# GCC ARM Improvement Project - http://www.inf.u-szeged.hu/gcc-arm/
#
%bcond_with bootstrap
Summary: Cross ARM GNU binary utility development utilities - gcc
Summary(es): Utilitarios para desarrollo de binarios de la GNU - ARM gcc
Summary(fr): Utilitaires de développement binaire de GNU - ARM gcc
Summary(pl): Skrośne narzędzia programistyczne GNU dla ARM - gcc
Summary(pt_BR): Utilitários para desenvolvimento de binários da GNU - ARM gcc
Summary(tr): GNU geliţtirme araçlarý - ARM gcc
Name: arm-gcc
#define _snap 20040827
Version: 3.4.3
#Release: 0.%{_snap}.1
Release: 1%{?with_bootstrap:bootstrap}
Epoch: 1
License: GPL
Group: Development/Languages
#Source0: ftp://gcc.gnu.org/pub/gcc/snapshots/3.4-%{_snap}/gcc-3.4-%{_snap}.tar.bz2
Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{version}/gcc-%{version}.tar.bz2
# Source0-md5: e744b30c834360fccac41eb7269a3011
%define _llh_ver 2.6.11.2
Source1: http://ep09.pld-linux.org/~mmazur/linux-libc-headers/linux-libc-headers-%{_llh_ver}.tar.bz2
# Source1-md5: 2d21d8e7ff641da74272b114c786464e
%define _uclibc_ver 0.9.27
Source2: http://uclibc.org/downloads/uClibc-%{_uclibc_ver}.tar.bz2
# Source2-md5: 6250bd6524283bd8e7bc976d43a46ec0
Source3: arm-uClibc-config
Patch0: %{name}-uclibc-conf.patch
Patch1: %{name}-uclibc-locale.patch
Patch2: %{name}-libstdc++-pic.patch
Patch3: %{name}-gcc34-arm-ldm-peephole.patch
Patch4: %{name}-gcc34-arm-ldm.patch
Patch5: %{name}-sdk-libstdc++-includes.patch
Patch6: %{name}-pr15068-fix.patch
Patch7: %{name}-arm-bigendian.patch
Patch8: %{name}-arm-bigendian-uclibc.patch
BuildRequires: arm-binutils
BuildRequires: flex
BuildRequires: bison
BuildRequires: autoconf
BuildRequires: /bin/bash
Requires: arm-binutils
Requires: gcc-dirs
%{?with_eabi:Provides: %{name}(bootstrap)}
Conflicts: %{name}(bootstrap)
ExcludeArch: arm
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define target arm-linux-uclibc
%define arch %{_prefix}/%{target}
%define gccarch %{_libdir}/gcc/%{target}
%define gcclib %{gccarch}/%{version}
%define _noas1 .*%{gcclib}.*/libg.*\\.a
%define _noas2 .*arm-linux-uclibc/lib/lib.*
%define _noautostrip \\(%{_noas1}\\|%{_noas2}\\)
%description
This package contains a cross-gcc which allows the creation of
binaries to be run on ARM linux (architecture arm-linux) on
other machines.
%description -l de
Dieses Paket enthält einen Cross-gcc, der es erlaubt, auf einem
anderem Rechner Code für arm-Linux zu generieren.
%description -l pl
Ten pakiet zawiera skrośny gcc pozwalający na robienie na innych
maszynach binariów do uruchamiania na ARM (architektura
arm-linux).
%if %{without bootstrap}
%package c++
Summary: C++ support for crossarm-gcc
Summary(pl): Obsługa C++ dla crossarm-gcc
Group: Development/Languages
Requires: %{name} = %{epoch}:%{version}-%{release}
%description c++
This package adds C++ support to the GNU Compiler Collection for ARM.
%description c++ -l pl
Ten pakiet dodaje obsługę C++ do kompilatora gcc dla ARM.
%package -n arm-libstdc++
Summary: GNU C++ library
Summary(es): Biblioteca C++ de GNU
Summary(pl): Biblioteki GNU C++
Summary(pt_BR): Biblioteca C++ GNU
License: GPL v2+ with free software exception
Group: Libraries
Obsoletes: libg++
Obsoletes: libstdc++3
%description -n arm-libstdc++
This is the GNU implementation of the standard C++ libraries, along
with additional GNU tools. This package includes the shared libraries
necessary to run C++ applications.
%package -n arm-libstdc++-devel
Summary: Header files and documentation for C++ development
Summary(de): Header-Dateien zur Entwicklung mit C++
Summary(es): Ficheros de cabecera y documentación para desarrollo C++
Summary(fr): Fichiers d'en-tęte et biblitothčques pour développer en C++
Summary(pl): Pliki nagłówkowe i dokumentacja do biblioteki standardowej C++
Summary(pt_BR): Arquivos de inclusăo e bibliotecas para o desenvolvimento em C++
Summary(tr): C++ ile program geliţtirmek için gerekli dosyalar
License: GPL v2+ with free software exception
Group: Development/Libraries
Requires: %{name}-c++ = %{epoch}:%{version}-%{release}
Requires: arm-libstdc++ = %{epoch}:%{version}-%{release}
Obsoletes: libg++-devel
Obsoletes: libstdc++3-devel
%description -n arm-libstdc++-devel
This is the GNU implementation of the standard C++ libraries. This
package includes the header files needed for C++ development and
library documentation.
%package -n arm-libstdc++-static
Summary: Static C++ standard library
Summary(es): Biblioteca estándar estática de C++
Summary(pl): Statyczna biblioteka standardowa C++
License: GPL v2+ with free software exception
Group: Development/Libraries
Requires: libstdc++-devel = %{epoch}:%{version}-%{release}
%description -n arm-libstdc++-static
Static C++ standard library.
%endif
%prep
#setup -q -n gcc-3.4-%{_snap}
%setup -q -n gcc-%{version} -a1 -a2
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%build
PATH=%{_prefix}/bin/:$PATH
%if %{with bootstrap}
cd linux-libc-headers-%{_llh_ver}/include/
ln -s asm-arm asm
cd -
KS=`pwd`/linux-libc-headers-%{_llh_ver}
FAKE_ROOT=$PWD/fake-root
rm -rf $FAKE_ROOT
mkdir -p $FAKE_ROOT%{_lib},
mkdir -p $FAKE_ROOT%{_libdir},
mkdir -p $FAKE_ROOT%{_includedir}
cd uClibc-%{_uclibc_ver}
install %{SOURCE3} .config
%{__make} pregen install_dev \
PREFIX=$FAKE_ROOT/ \
RUNTIME_PREFIX=$FAKE_ROOT/ \
DEVEL_PREFIX=/usr/ \
HOSTCC=%{__cc} \
KERNEL_SOURCE=${KS}
cd -
%endif
rm -rf obj-%{target}
install -d obj-%{target}
cd obj-%{target}
CFLAGS="%{rpmcflags}" \
CXXFLAGS="%{rpmcflags}" \
TEXCONFIG=false \
../configure \
--prefix=%{_prefix} \
--infodir=%{_infodir} \
--mandir=%{_mandir} \
--bindir=%{_bindir} \
--libdir=%{_libdir} \
--libexecdir=%{_libdir} \
--target=%{target} \
--host=%{_target_platform} \
--build=%{_target_platform} \
--enable-languages="c%{!?with_bootstrap:,c++}" \
%{?with_bootstrap:--disable-shared} \
%{!?with_bootstrap:--enable-shared} \
%{?with_bootstrap:--with-sysroot=$FAKE_ROOT} \
%{!?with_bootstrap:--with-gxx-include-dir=%{_prefix}/%{target}/include/c++/%{version}} \
--disable-__cxa_atexit \
--enable-target-optspace \
--with-gnu-as \
--with-gnu-ld \
--with-system-zlib \
--disable-nls \
--enable-multilib
%{__make}
%install
rm -rf $RPM_BUILD_ROOT
%{__make} -C obj-%{target} install \
DESTDIR=$RPM_BUILD_ROOT
# don't want this here
rm -f $RPM_BUILD_ROOT%{_libdir}/libiberty.a
%{target}-strip -g $RPM_BUILD_ROOT%{gcclib}/libgcov.a
%if 0%{!?debug:1}
%{target}-strip -g $RPM_BUILD_ROOT%{gcclib}/libgcc.a
%endif
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/%{target}-cpp
%attr(755,root,root) %{_bindir}/%{target}-gcc*
%attr(755,root,root) %{_bindir}/%{target}-gcov
%dir %{gccarch}
%dir %{gcclib}
%attr(755,root,root) %{gcclib}/cc1
%attr(755,root,root) %{gcclib}/collect2
%{gcclib}/crt*.o
%{gcclib}/libgcc.a
%{gcclib}/libgcov.a
%if %{without bootstrap}
%{gcclib}/libgcc_eh.a
%attr(755,root,root) %{_prefix}/%{target}/%{_lib}/libgcc_s.so.1
%endif
%{gcclib}/specs*
%dir %{gcclib}/include
%{gcclib}/include/*.h
%{_mandir}/man1/%{target}-gcc.1*
%if %{without bootstrap}
%files c++
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/%{target}-[cg]++
%attr(755,root,root) %{gcclib}/cc1plus
%attr(755,root,root) %{_prefix}/%{target}/%{_lib}/libsupc++.a
%attr(755,root,root) %{_prefix}/%{target}/%{_lib}/libsupc++.la
%{_mandir}/man1/%{target}-g++.1*
%files -n arm-libstdc++
%attr(755,root,root) %{_prefix}/%{target}/%{_lib}/libstdc++.so.*.*.*
%files -n arm-libstdc++-devel
%attr(755,root,root) %{_prefix}/%{target}/%{_lib}/libstdc++.la
%attr(755,root,root) %{_prefix}/%{target}/%{_lib}/libstdc++.so
%{_prefix}/%{target}/include/c++
%files -n arm-libstdc++-static
%attr(755,root,root) %{_prefix}/%{target}/%{_lib}/libstdc++.a
%endif
%define date %(echo `LC_ALL="C" date +"%a %b %d %Y"`)
%changelog
* %{date} PLD Team <feedback at pld-linux.org>
All persons listed below can be reached at <cvs_login>@pld-linux.org
$Log: crossarm-gcc.spec,v $
-------------- next part --------------
# $Revision: 1.111 $, $Date: 2005/02/16 23:19:22 $
%bcond_without ARM920T
%define rname uClibc
%define target arm-linux-uclibc
%define snap 20050811
Summary: C library optimized for size
Summary(pl): Biblioteka C zoptymalizowana na rozmiar
Name: arm-%{rname}
Version: 0.9.27
Release: 0.%{snap}.1
Epoch: 3
License: LGPL
Group: Libraries
Source0: http://uclibc.org/downloads/snapshots/%{rname}-%{snap}.tar.bz2
# Source0-md5: ad2905f1d621a153fddcdedbfff195fb
Source1: %{name}-config
# Source1-md5: b701bcbe365b9ca2341a602394634c9d
%define _llh_ver 2.6.11.2
Source2: http://ep09.pld-linux.org/~mmazur/linux-libc-headers/linux-libc-headers-%{_llh_ver}.tar.bz2
URL: http://uclibc.org/
BuildRequires: gcc >= 3.0
BuildRequires: sed >= 4.0
BuildRequires: which
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
# note: the 2nd '\' is needed (some shell expansions?)
%define TARGET_ARCH arm
%define _noautostrip .*/lib.*\\.\\(so\\|a\\|o\\)
%description
Small libc for building embedded applications.
%description -l pl
Mała libc do budowania aplikacji wbudowanych.
%package devel
Summary: Development files for uClibc
Summary(pl): Pliki dla programistów uClibc
Group: Development/Libraries
Requires: %{name} = %{epoch}:%{version}-%{release}
Requires: binutils
Requires: linux-libc-headers
%requires_eq gcc
%description devel
Small libc for building embedded applications.
%description devel -l pl
Mała libc do budowania aplikacji wbudowanych.
%package static
Summary: Static uClibc libratries
Summary(pl): Biblioteki statyczne uClibc
Group: Development/Libraries
Requires: %{name}-devel = %{epoch}:%{version}-%{release}
Provides: libc-static
%description static
Static uClibc libratries.
%description static -l pl
Biblioteki statyczne uClibc.
%prep
%setup -q -n %{rname} -a2
rm -f linux-libc-headers-2.6.11.2/include/asm
touch linux-libc-headers-2.6.11.2/include/linux/autoconf.h;
install %{SOURCE1} .config
%if %{with ARM920T}
sed -i .config -e "
s/^.*\(CONFIG_GENERIC_ARM\).*$/\#\ \1\ is\ not\ set/
s/^.*\(CONFIG_ARM920T\).*$/\1=y/
"
sed -i extra/Configs/Config.in -e "
s/default TARGET_i386/default TARGET_arm/
"
%endif
%build
KS=`pwd`/linux-libc-headers-2.6.11.2
%{__make} oldconfig \
TARGET_CPU=%{target} \
PREFIX= \
RUNTIME_PREFIX=/ \
DEVEL_PREFIX=%{_prefix}/ \
KERNEL_SOURCE=$KS \
HOSTCC=%{__cc} \
CROSS=%{target}-
# note: defconfig and all must be run in separate make process because of macros
%{__make} all \
TARGET_CPU=%{target} \
PREFIX=%{_prefix}/%{target} \
KERNEL_SOURCE=$KS \
CC="%{target}-gcc" \
CPU_CFLAGS="-mcpu=arm920t" \
HOSTCC="%{__cc}" \
CROSS=%{target}-
%{__make} -C utils hostutils
TARGET_CPU=%{target} \
PREFIX=%{_prefix}/%{target} \
KERNEL_SOURCE=$KS \
CC="%{target}-gcc" \
HOSTCC="%{__cc}" \
CROSS=%{target}-
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT%{_bindir}
%{__make} install_runtime \
TARGET_CPU=%{target} \
NATIVE_CC=%{__cc} \
PREFIX=$RPM_BUILD_ROOT/%{_prefix}/%{target} \
DEVEL_PREFIX=/ \
RUNTIME_PREFIX=/ \
cross=%{target}-
%{__make} install_dev \
TARGET_CPU=%{target} \
NATIVE_CC=%{__cc} \
PREFIX=$RPM_BUILD_ROOT/%{_prefix}/%{target} \
DEVEL_PREFIX=/ \
RUNTIME_PREFIX=/ \
cross=%{target}-
install -d $RPM_BUILD_ROOT/%{_prefix}/%{target}/bin/
install utils/ldd.host $RPM_BUILD_ROOT/%{_prefix}/%{target}/bin/ldd
install utils/ldconfig.host $RPM_BUILD_ROOT/%{_prefix}/%{target}/bin/ldconfig
install utils/readelf.host $RPM_BUILD_ROOT/%{_prefix}/%{target}/bin/readelf
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(644,root,root,755)
%attr(755,root,root) %{_prefix}/%{target}/%{_lib}/*
%attr(755,root,root) %{_prefix}/%{target}/bin/*
%files devel
%defattr(644,root,root,755)
%doc README TODO docs/threads.txt docs/uclibc.org/*.html
%attr(755,root,root) %{_prefix}/%{target}/%{_lib}/*
%{_prefix}/%{target}/include
%files static
%defattr(644,root,root,755)
%{_prefix}/%{target}/%{_lib}/lib*.a
%define date %(echo `LC_ALL="C" date +"%a %b %d %Y"`)
%changelog
* %{date} PLD Team <feedback at pld-linux.org>
All persons listed below can be reached at <cvs_login>@pld-linux.org
$Log: uClibc.spec,v $
More information about the pld-devel-pl
mailing list