]> git.pld-linux.org Git - packages/uClibc.git/blob - uClibc.spec
- merge fixes from LINUX_2_6_22 branch
[packages/uClibc.git] / uClibc.spec
1 #
2 # Conditional build:
3 %bcond_without  shared          # don't build shared lib support
4 #
5 %ifarch %{x8664}
6 %undefine       with_shared
7 %endif
8 #
9 Summary:        C library optimized for size
10 Summary(pl.UTF-8):      Biblioteka C zoptymalizowana na rozmiar
11 Name:           uClibc
12 Version:        0.9.29
13 Release:        11
14 Epoch:          2
15 License:        LGPL v2.1
16 Group:          Libraries
17 Source0:        http://uclibc.org/downloads/%{name}-%{version}.tar.bz2
18 # Source0-md5:  61dc55f43b17a38a074f347e74095b20
19 Patch0:         %{name}-newsoname.patch
20 Patch1:         %{name}-toolchain-wrapper.patch
21 Patch2:         %{name}-targetcpu.patch
22 Patch3:         %{name}-debug.patch
23 Patch4:         %{name}-stdio-unhide.patch
24 Patch5:         %{name}-sparc.patch
25 URL:            http://uclibc.org/
26 BuildRequires:  binutils-gasp
27 BuildRequires:  cpp
28 BuildRequires:  gcc >= 5:3.0
29 BuildRequires:  linux-libc-headers >= 7:2.6.24
30 BuildRequires:  sed >= 4.0
31 BuildRequires:  which
32 ExclusiveArch:  alpha %{ix86} ppc sparc sparcv9 %{x8664}
33 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
34
35 %define         uclibc_root     /usr/%{_target_cpu}-linux-uclibc
36 # note: the 2nd '\' is needed (some shell expansions?)
37 %define         TARGET_ARCH     %(echo %{_target_cpu} | sed -e 's/i.86\\|athlon\\|pentium./i386/;s/ppc/powerpc/;s/amd64\\|ia32e/x86_64/')
38
39 %define         specflags       -fgnu89-inline
40
41 %description
42 Small libc for building embedded applications.
43
44 %description -l pl.UTF-8
45 Mała libc do budowania aplikacji wbudowanych.
46
47 %package devel
48 Summary:        Development files for uClibc
49 Summary(pl.UTF-8):      Pliki dla programistów uClibc
50 Group:          Development/Libraries
51 Requires:       %{name} = %{epoch}:%{version}-%{release}
52 Requires:       binutils
53 Requires:       linux-libc-headers >= 7:2.6.24
54 %requires_eq    gcc
55
56 %description devel
57 Small libc for building embedded applications.
58
59 %description devel -l pl.UTF-8
60 Mała libc do budowania aplikacji wbudowanych.
61
62 %package static
63 Summary:        Static uClibc libraries
64 Summary(pl.UTF-8):      Biblioteki statyczne uClibc
65 Group:          Development/Libraries
66 Requires:       %{name}-devel = %{epoch}:%{version}-%{release}
67 Provides:       libc-static
68
69 %description static
70 Static uClibc libraries.
71
72 %description static -l pl.UTF-8
73 Biblioteki statyczne uClibc.
74
75 %prep
76 %setup -q
77 %patch0 -p1
78 %patch1 -p1
79 %patch2 -p1
80 %patch3 -p1
81 %patch4 -p1
82 # check if it's needed now... ldso is broken on sparc anyway
83 #%patch5 -p1
84
85 sed -i -e '
86 %ifarch sparc sparcv9
87         s/default TARGET_i386/default TARGET_sparc/
88 %endif
89 %ifarch alpha
90         s/default TARGET_i386/default TARGET_alpha/
91 %endif
92 %ifarch ppc ppc64
93         s/default TARGET_i386/default TARGET_powerpc/
94 %endif
95 %ifarch %{x8664}
96         s/default TARGET_i386/default TARGET_x86_64/
97 %endif
98         ' extra/Configs/Config.in
99
100 %build
101 %{__make} -j1 defconfig \
102         TARGET_ARCH="%{TARGET_ARCH}" \
103         TARGET_CPU="%{_target_cpu}" \
104         KERNEL_SOURCE=%{_prefix} \
105         HOSTCC="%{__cc}" \
106         HOSTCFLAGS="%{rpmcflags} %{rpmldflags}" \
107         OPTIMIZATION="%{rpmcflags} -Os" \
108         CC="%{__cc}"
109
110 sed -i -e '
111         s/^.*UCLIBC_HAS_IPV6.*$/UCLIBC_HAS_IPV6=y/;
112         s/^.*DO_C99_MATH.*$/DO_C99_MATH=y/;
113         s/^.*UCLIBC_HAS_RPC.*/UCLIBC_HAS_RPC=y\n# UCLIBC_HAS_FULL_RPC is not set\n# UCLIBC_HAS_REENTRANT_RPC is not set/;
114         s/^.*UCLIBC_HAS_SYS_SIGLIST.*$/UCLIBC_HAS_SYS_SIGLIST=y/;
115         s,^SHARED_LIB_LOADER_PREFIX=.*,SHARED_LIB_LOADER_PREFIX="$(RUNTIME_PREFIX)/lib",
116 %if %{with shared}
117         s/^\(HAVE_SHARED\)=y/# \1 is not set/;
118 %endif
119         s/^.*UCLIBC_HAS_PRINTF_M_SPEC.*$/UCLIBC_HAS_PRINTF_M_SPEC=y/;
120         s/^.*UCLIBC_SUSV3_LEGACY.*$/UCLIBC_SUSV3_LEGACY=y\nUCLIBC_SUSV3_LEGACY_MACROS=y/;
121         s/^.*\<DOSTRIP\>.*$/# DOSTRIP is not set/;
122 %{?debug:s/^.*\<DODEBUG\>.*$/DODEBUG=y/;s/^.*SUPPORT_LD_DEBUG\>.*$/SUPPORT_LD_DEBUG=y/;s/^.*SUPPORT_LD_DEBUG_EARLY.*$/SUPPORT_LD_DEBUG_EARLY=y/;}
123 ' .config
124
125 # force regeneration after .config changes
126 rm -f include/bits/uClibc_config.h
127
128 # note: defconfig and all must be run in separate make process because of macros
129 %{__make} -j1 \
130         TARGET_ARCH="%{TARGET_ARCH}" \
131         TARGET_CPU="%{_target_cpu}" \
132         KERNEL_SOURCE=%{_prefix} \
133         HOSTCC="%{__cc}" \
134         HOSTCFLAGS="%{rpmcflags} %{rpmldflags}" \
135         OPTIMIZATION="%{rpmcflags} -Os" \
136         CC="%{__cc}"
137
138 %install
139 rm -rf $RPM_BUILD_ROOT
140 install -d $RPM_BUILD_ROOT%{_bindir}
141
142 %{__make} -j1 install \
143         NATIVE_CC="%{__cc}" \
144         NATIVE_CFLAGS="%{rpmcflags} %{rpmldflags}" \
145         TARGET_ARCH="%{TARGET_ARCH}" \
146         TARGET_CPU="%{_target_cpu}" \
147         CC="%{__cc}" \
148         PREFIX=$RPM_BUILD_ROOT
149
150 %if %{with shared}
151 mv -f $RPM_BUILD_ROOT%{uclibc_root}/usr/lib/{libpthread-uclibc,libpthread}.so
152 ln -sf libpthread-0.9.29.so $RPM_BUILD_ROOT%{uclibc_root}/lib/libpthread.so.0
153 %endif
154
155 # these links are *needed* (by stuff in bin/)
156 for f in $RPM_BUILD_ROOT%{uclibc_root}/bin/*; do
157         if [ -L $f ]; then
158                 l=$(readlink $f)
159                 a=${l##*/}
160                 d=${l%/*}
161                 case "$d" in
162                 %{_bindir})
163                         ln -sf ${l#%{_bindir}/} $RPM_BUILD_ROOT%{_bindir}/${f##*/}
164                         rm -f $f
165                         ;;
166                 $a)
167                         mv -f $f $RPM_BUILD_ROOT%{_bindir}
168                         ;;
169                 *)
170                         exit 1
171                         ;;
172                 esac
173         else
174                 a=${f#*/%{_target_cpu}-uclibc-}
175                 ln -sf %{_bindir}/$(basename $f) $RPM_BUILD_ROOT%{uclibc_root}/usr/bin/$a
176                 mv -f $f $RPM_BUILD_ROOT%{_bindir}
177         fi
178 done
179
180 for f in $RPM_BUILD_ROOT%{uclibc_root}/usr/bin/*; do
181         if [ -L $f ]; then
182                 l=$(readlink $f)
183                 case "${l%/*}" in
184                 %{uclibc_root}/bin)
185                         a=${l#*/%{_target_cpu}-uclibc-}
186                         ln -sf %{_bindir}/$a $f
187                         ;;
188                 %{_bindir})
189                         :
190                         ;;
191                 *)
192                         exit 2
193                         ;;
194                 esac
195         fi
196 done
197
198 rm -rf $RPM_BUILD_ROOT%{uclibc_root}/usr/include/{linux,asm*}
199 ln -sf /usr/include/asm $RPM_BUILD_ROOT%{uclibc_root}/usr/include/asm
200 ln -sf /usr/include/asm-generic $RPM_BUILD_ROOT%{uclibc_root}/usr/include/asm-generic
201 # for future use
202 %ifarch sparc64
203 ln -sf /usr/include/asm-sparc $RPM_BUILD_ROOT%{uclibc_root}/usr/include/asm-sparc
204 ln -sf /usr/include/asm-sparc64 $RPM_BUILD_ROOT%{uclibc_root}/usr/include/asm-sparc64
205 %endif
206 ln -sf /usr/include/linux $RPM_BUILD_ROOT%{uclibc_root}/usr/include/linux
207
208 %clean
209 rm -rf $RPM_BUILD_ROOT
210
211 %files
212 %defattr(644,root,root,755)
213 %doc Changelog* DEDICATION.mjn3 MAINTAINERS README TODO
214 %dir %{uclibc_root}
215 %ifarch %{ix86} %{x8664} ppc sparc sparcv9
216 %if %{with shared}
217 %dir %{uclibc_root}/lib
218 %attr(755,root,root) %{uclibc_root}/lib/*.so*
219 %endif
220 %endif
221
222 %files devel
223 %defattr(644,root,root,755)
224 %doc docs/*.txt
225 %attr(755,root,root) %{_bindir}/*
226 %{uclibc_root}/usr/lib/*.o
227 %dir %{uclibc_root}/usr
228 %dir %{uclibc_root}/usr/bin
229 %attr(755,root,root) %{uclibc_root}/usr/bin/*
230 %dir %{uclibc_root}/usr/lib
231 %if %{with shared}
232 %{uclibc_root}/usr/lib/uclibc_nonshared.a
233 %ifarch %{ix86} %{x8664} ppc sparc sparcv9
234 %attr(755,root,root) %{uclibc_root}/usr/lib/*.so
235 %endif
236 %endif
237 %{uclibc_root}/usr/include
238
239 %files static
240 %defattr(644,root,root,755)
241 %{uclibc_root}/usr/lib/lib*.a
This page took 0.050878 seconds and 3 git commands to generate.