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