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