pld embedded - port pld dla arm9
Radosław Kintzi
radek w rakin.eu.org
Pią, 12 Sie 2005, 09:13:42 CEST
Patrys :: Patryk Zawadzki napisał(a):
>Dnia 11-08-2005, czw o godzinie 16:43 +0200, Radosław Kintzi napisał(a):
>
>>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łąź?
>>
>
>crossarm-*, podobnie jak inne skrośne narzędzia.
>
Tyle, że crossarm-gcc.spec i crossarm-binutils.spect już istnieją.
Różnią się od moich wersjami i zestawem łat. Może dodać brancha
ARM-LINUX-UCLIBC?
>
>>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
>>
>
>rpmbuild --target też nie działa? sprawdź makra rpm
>
Ano nie działa. Wogóle to myślę, że średnio działa ten nasz rpm. Z manuala:
--target PLATFORMA
Podczas budowania pakietu interpretuje PLATFORMĘ jako
arch-ven-
dor-os i ustawia odpowiednio makra %_target,
%_target_cpu oraz
%_target_os.
$ rpmbuild --eval "%{_target} %{_target_cpu} %{_target_os}"
i686-linux i686 linux
$ rpmbuild --target arm-linux-uclibc --eval "%{_target} %{_target_cpu}
%{_target_os}"
i686-linux i686 linux
$ rpmbuild --target arm --eval "%{_target} %{_target_cpu} %{_target_os}"
i686-linux i686 linux
$ rpmbuild --target arm-linux --eval "%{_target} %{_target_cpu}
%{_target_os}"
i686-linux i686 linux
$ rpmbuild --target i386-linux --eval "%{_target} %{_target_cpu}
%{_target_os}"
i686-linux i686 linux
Makro %{_target_base_arch} (używane w %configure) też nie jest podmieniane.
A może PLATFORMĘ specyfikuje się inaczej? Jak?
Co do samych makr rpma - co konkretnie mam sprawdzić. Widzę w
/usr/lib/rpm/macros:
#==============================================================================
# ---- Build system path macros.
#
%__ar ar
%__as as
%__cc i686-pld-linux-gcc
%__cpp i686-pld-linux-gcc -E
%__cxx i686-pld-linux-g++
%__ld /usr/bin/ld
%__nm /usr/bin/nm
%__objcopy /usr/bin/objcopy
%__objdump /usr/bin/objdump
%__ranlib ranlib
%__remsh %{__rsh}
%__strip /usr/bin/strip
oraz:
#==============================================================================
# ---- config.guess platform macros.
# Macro(s) similar to the tokens used by configure.
#
%_build %{_host}
%_build_alias %{_host_alias}
%_build_cpu %{_host_cpu}
%_build_vendor %{_host_vendor}
%_build_os %{_host_os}
%_host i686-pld-linux-gnu
%_host_alias %{nil}
%_host_cpu i686
%_host_vendor pld
%_host_os linux-gnu
%_target %{_host}
%_target_alias %{_host_alias}
%_target_cpu %{_host_cpu}
%_target_vendor %{_host_vendor}
%_target_os %{_host_os}
Te pierwsze jak widać nie zależą od tych drugich. Gdyb np. było:
%__ar %{_target_cpu}-%{target_os}-ar
%__as %{_target_cpu}-%{target_os}-as
%__cc %{_target_cpu}-%{target_os}-gcc
%__cpp %{_target_cpu}-%{target_os}-gcc -E
%__cxx %{_target_cpu}-%{target_os}-g++
%__ld %{_target_cpu}-%{target_os}-ld
%__nm /usr/bin/%{_target_cpu}-%{target_os}-nm
%__objcopy /usr/bin/%{_target_cpu}-%{target_os}-objcopy
%__objdump /usr/bin/%{_target_cpu}-%{target_os}-objdump
%__ranlib %{_target_cpu}-%{target_os}-ranlib
%__remsh %{__rsh}
%__strip /usr/bin/%{_target_cpu}-%{target_os}-strip
(+ ew. %{_target_vendor}) i gdyby --target działało poprawnie (tj.
modyfikowało makra %_target*), to ...
Zresztą nie wiem, czy to jest dobra droga?
Na razię myślę, żeby dodać do specy kilka warunków, np:
%configure \
... \
%ifarch arm
--target=arm-linux-uclibc
%endif
Albo w przypadku zlib.spec:
%ifnarch arm
CFLAGS="-D_REENTRANT -fPIC %{rpmcflags} %{?with_asmopt:-DASMV}" \
CC="%{__cc}" \
%else
CFLAGS= \
CC="arm-linux-uclibc-gcc" \
%endif
./configure \
--prefix=%{_prefix} \
--shared
To nie załatwia sprawy, Mejkfajla, który używa ar do tworzenia
bibliotek. Konieczna będzie jeszcze łata.
Teraz pytanie do deweloperów, czy jak zaczne poprawiać spece w podobny
sposób, to będą bardzo źli?
Radek
Więcej informacji o liście dyskusyjnej pld-devel-pl