Magellan Linux

Contents of /trunk/core/include/multilib.sminc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3671 - (show annotations) (download)
Thu Oct 29 10:40:29 2009 UTC (14 years, 6 months ago) by niro
File size: 8975 byte(s)
-pruned old cruft
1 # $Header: /magellan-cvs/smage/include/multilib.sminc,v 1.33 2007-11-13 15:49:09 niro Exp $
2 # multilib abis
3
4 # do not define EMUL_LINUX_32 after inherit of multlib !!
5 # it may break i*86 builds
6
7 # default ABIs to be build
8 case ${ARCH} in
9 x86_64)
10 : ${MULTILIB_ABIS="m32 m64"}
11 # default false
12 : ${EMUL_LINUX_32="false"}
13
14 # add linux32 to the dependencies
15 if [[ ${EMUL_LINUX_32} = true ]]
16 then
17 EMUL_LINUX_32_SDEPENDS_x86_64=">= dev-util/linux32-1"
18 SPECIAL_VARS="${SPECIAL_VARS} EMUL_LINUX_32_SDEPENDS_x86_64"
19 fi
20 ;;
21 i*86)
22 : ${MULTILIB_ABIS="m32"}
23 # always false
24 EMUL_LINUX_32="false"
25 ;;
26 esac
27
28 # add linux32 to the dependencies
29 if [[ ${EMUL_LINUX_32} = true ]]
30 then
31 # very dirty trick to get the dependencies right
32 # ; is the IFS, tr replaces ; with an crlfs
33 # the var ist decided with our common eval+echo magic
34 if [[ -z ${SDEPEND} ]]
35 then
36 SDEPEND="\$(eval echo \\\$EMUL_LINUX_32_SDEPENDS_\${ARCH/i*86/x86} | tr ';' '\n')"
37 else
38 SDEPEND="${SDEPEND}
39 \$(eval echo \\\$EMUL_LINUX_32_SDEPENDS_\${ARCH/i*86/x86} | tr ';' '\n')"
40 fi
41 fi
42
43 ##
44 # overide some defaults to respect ABI_LIBDIR
45 ##
46 mlibdir()
47 {
48 local libdir=lib
49 [[ ${ARCH} = x86_64 ]] && libdir=lib64
50 [[ -n ${ABI_LIBDIR} ]] && libdir="${ABI_LIBDIR}"
51
52 echo "${libdir}"
53 }
54
55 ##
56 # multilib abi changers
57 ##
58 abi-m32()
59 {
60 export ABI="m32"
61 export CC="gcc -${ABI}"
62 export CXX="g++ -${ABI}"
63 export ABI_LIBDIR="lib"
64 if [[ ${EXPORT_ABI_LDFLAGS} != false ]]
65 then
66 export LDFLAGS="-L/${ABI_LIBDIR} -L/usr/${ABI_LIBDIR}"
67 fi
68 export PKG_CONFIG_PATH="/usr/${ABI_LIBDIR}/pkgconfig"
69
70 echo -e "${COLBLUE}*** ${COLGREEN}running with -${ABI} ABI${COLDEFAULT}"
71 echo -e "${COLBLUE}*** ${COLGREEN} ABI${COLDEFAULT}='${ABI}'"
72 echo -e "${COLBLUE}*** ${COLGREEN} CC${COLDEFAULT}='${CC}'"
73 echo -e "${COLBLUE}*** ${COLGREEN} CXX${COLDEFAULT}='${CXX}'"
74 echo -e "${COLBLUE}*** ${COLGREEN} ABI_LIBDIR${COLDEFAULT}='${ABI_LIBDIR}'"
75 if [[ ${EXPORT_ABI_LDFLAGS} != false ]]
76 then
77 echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${LDFLAGS}'"
78 else
79 echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${COLYELLOW}not exported${COLDEFAULT}'"
80 fi
81 echo -e "${COLBLUE}*** ${COLGREEN} PKG_CONFIG_PATH${COLDEFAULT}='${PKG_CONFIG_PATH}'"
82
83 # configure a linux32 emulated build
84 if [[ ${EMUL_LINUX_32} = true ]]
85 then
86 echo -e "${COLBLUE}*** ${COLGREEN} EMUL_LINUX_32${COLDEFAULT}='${EMUL_LINUX_32}'"
87 uname(){ linux32 uname $@; } && export -f uname
88 ORIG_CHOST="${CHOST}" && export CHOST="i686-pc-linux-gnu"
89 fi
90 echo -e "${COLBLUE}*** ${COLGREEN} CHOST${COLDEFAULT}='${CHOST}'"
91
92 # run any given command
93 eval $@ || die
94
95 unset ABI CC CXX ABI_LIBDIR LDFLAGS PKG_CONFIG_PATH
96
97 # restore original settings
98 if [[ ${EMUL_LINUX_32} = true ]]
99 then
100 unset uname
101 export CHOST="${ORIG_CHOST}" && unset ORIG_CHOST
102 fi
103 }
104
105 abi-m64()
106 {
107 export ABI="m64"
108 export CC="gcc -${ABI}"
109 export CXX="g++ -${ABI}"
110 export ABI_LIBDIR="lib64"
111 if [[ ${EXPORT_ABI_LDFLAGS} != false ]]
112 then
113 export LDFLAGS="-L/${ABI_LIBDIR} -L/usr/${ABI_LIBDIR}"
114 fi
115 export PKG_CONFIG_PATH="/usr/${ABI_LIBDIR}/pkgconfig"
116
117 echo -e "${COLBLUE}*** ${COLGREEN}running with -${ABI} ABI${COLDEFAULT}"
118 echo -e "${COLBLUE}*** ${COLGREEN} ABI${COLDEFAULT}='${ABI}'"
119 echo -e "${COLBLUE}*** ${COLGREEN} CC${COLDEFAULT}='${CC}'"
120 echo -e "${COLBLUE}*** ${COLGREEN} CXX${COLDEFAULT}='${CXX}'"
121 echo -e "${COLBLUE}*** ${COLGREEN} ABI_LIBDIR${COLDEFAULT}='${ABI_LIBDIR}'"
122 if [[ ${EXPORT_ABI_LDFLAGS} != false ]]
123 then
124 echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${LDFLAGS}'"
125 else
126 echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${COLYELLOW}not exported${COLDEFAULT}'"
127 fi
128 echo -e "${COLBLUE}*** ${COLGREEN} CHOST${COLDEFAULT}='${CHOST}'"
129 echo -e "${COLBLUE}*** ${COLGREEN} PKG_CONFIG_PATH${COLDEFAULT}='${PKG_CONFIG_PATH}'"
130
131 # run any given command
132 eval $@ || die
133
134 unset ABI CC CXX ABI_LIBDIR LDFLAGS PKG_CONFIG_PATH
135 }
136
137 only-m32()
138 {
139 local abi=m32
140 local i
141
142 for i in ${MULTILIB_ABIS}
143 do
144 if [[ ${i} = ${abi} ]]
145 then
146 # export this for mpatch etc (to repect only-${abi})
147 export MULTILIB_ONLY_ABI=${abi}
148
149 cd ${SRCDIR}-${abi}
150 abi-${abi} $@ || die
151
152 # unset this is very important
153 unset MULTILIB_ONLY_ABI
154 fi
155 done
156 }
157
158 only-m64()
159 {
160 local abi=m64
161 local i
162
163 for i in ${MULTILIB_ABIS}
164 do
165 if [[ ${i} = ${abi} ]]
166 then
167 # export this for mpatch etc (to repect only-${abi})
168 export MULTILIB_ONLY_ABI=${abi}
169
170 cd ${SRCDIR}-${abi}
171 abi-${abi} $@ || die
172
173 # unset this is very important
174 unset MULTILIB_ONLY_ABI
175 fi
176 done
177 }
178
179 all-abis()
180 {
181 local abi
182 for abi in ${MULTILIB_ABIS}
183 do
184 cd ${SRCDIR}-${abi}
185 abi-${abi} $@ || die
186 done
187 }
188
189 ##
190 # multilib compile functions
191 ##
192
193 if [[ ! -z $(typeset -f mconfigure) ]]
194 then
195 # rename the old one
196 old_mconfigure=old$(typeset -f mconfigure)
197 eval ${old_mconfigure}
198 fi
199 mconfigure()
200 {
201 local abi
202 local abis_to_run="${MULTILIB_ABIS}"
203
204 # respect MULTILIB_ONLY_ABI variable
205 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
206
207 for abi in ${abis_to_run}
208 do
209 cd ${SRCDIR}-${abi}
210 abi-${abi} oldmconfigure $@ || die
211 done
212 }
213
214 if [[ ! -z $(typeset -f munpack) ]]
215 then
216 # rename the old one
217 old_munpack=old$(typeset -f munpack)
218 eval "${old_munpack}"
219 fi
220 munpack()
221 {
222 local abi
223 local abis_to_run="${MULTILIB_ABIS}"
224
225 # respect MULTILIB_ONLY_ABI variable
226 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
227
228 for abi in ${abis_to_run}
229 do
230 echo -e "${COLBLUE}*** ${COLGREEN}unpacking for ABI -${abi}${COLDEFAULT}"
231 oldmunpack ${SRCFILE} || die
232 mv ${SRCDIR} ${SRCDIR}-${abi} || die
233 done
234 }
235
236 if [[ ! -z $(typeset -f mmake) ]]
237 then
238 # rename the old one
239 old_mmake=old$(typeset -f mmake)
240 eval "${old_mmake}"
241 fi
242 mmake()
243 {
244 local abi
245 local abis_to_run="${MULTILIB_ABIS}"
246
247 # respect MULTILIB_ONLY_ABI variable
248 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
249
250 for abi in ${abis_to_run}
251 do
252 echo -e "${COLBLUE}*** ${COLGREEN}compiling for ABI -${abi}${COLDEFAULT}"
253 cd ${SRCDIR}-${abi}
254 abi-${abi} oldmmake $@ || die
255 done
256 }
257
258 if [[ ! -z $(typeset -f minstall) ]]
259 then
260 # rename the old one
261 old_minstall=old$(typeset -f minstall)
262 eval "${old_minstall}"
263 fi
264 minstall()
265 {
266 local abi
267 local abis_to_run="${MULTILIB_ABIS}"
268
269 # respect MULTILIB_ONLY_ABI variable
270 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
271
272 for abi in ${abis_to_run}
273 do
274 echo -e "${COLBLUE}*** ${COLGREEN}installing for ABI -${abi}${COLDEFAULT}"
275 cd ${SRCDIR}-${abi}
276 abi-${abi} oldminstall $@ || die
277 done
278 }
279
280 minstall_destdir()
281 {
282 local abi
283 local abis_to_run="${MULTILIB_ABIS}"
284
285 # respect MULTILIB_ONLY_ABI variable
286 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
287
288 for abi in ${abis_to_run}
289 do
290 echo -e "${COLBLUE}*** ${COLGREEN}installing for ABI -${abi}${COLDEFAULT}"
291 cd ${SRCDIR}-${abi}
292 make DESTDIR=${BINDIR} $@ install || die
293 done
294 }
295
296 if [[ ! -z $(typeset -f mpatch) ]]
297 then
298 # rename the old one
299 old_mpatch=old$(typeset -f mpatch)
300 eval "${old_mpatch}"
301 fi
302 mpatch()
303 {
304 local abi
305 local abis_to_run="${MULTILIB_ABIS}"
306
307 # respect MULTILIB_ONLY_ABI variable
308 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
309
310 for abi in ${abis_to_run}
311 do
312 echo -e "${COLBLUE}*** ${COLGREEN}appling patch for ABI -${abi}${COLDEFAULT}"
313 cd ${SRCDIR}-${abi}
314 oldmpatch $@ || die
315 done
316 }
317
318 if [[ ! -z $(typeset -f mlibtoolize) ]]
319 then
320 # rename the old one
321 old_mlibtoolize=old$(typeset -f mlibtoolize)
322 eval "${old_mlibtoolize}"
323 fi
324 mlibtoolize()
325 {
326 local abi
327 local abis_to_run="${MULTILIB_ABIS}"
328
329 # respect MULTILIB_ONLY_ABI variable
330 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
331
332 for abi in ${abis_to_run}
333 do
334 echo -e "${COLBLUE}*** ${COLGREEN}running mlibtoolize for ABI -${abi}${COLDEFAULT}"
335 cd ${SRCDIR}-${abi}
336 oldmlibtoolize $@ || die
337 done
338 }
339
340 minstalldocs()
341 {
342 local abi
343 local docfiles
344 docfiles="$@"
345
346 local abis_to_run="${MULTILIB_ABIS}"
347
348 # respect MULTILIB_ONLY_ABI variable
349 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
350
351 for abi in ${abis_to_run}
352 do
353 cd ${SRCDIR}-${abi}
354 if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ]
355 then
356 install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs."
357 fi
358
359 for i in ${docfiles}
360 do
361 cat ${SRCDIR}-${abi}/${i} | gzip -9c > ${SRCDIR}-${abi}/${i}.gz || die "gzipping docs."
362 install -m 0644 ${SRCDIR}-${abi}/${i}.gz \
363 ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "coping docs."
364 done
365 done
366 }
367
368 ##
369 # multilib mbuild wrappers
370 ##
371 multilib_src_prepare()
372 {
373 munpack
374 }
375
376 multilib_src_compile()
377 {
378 mconfigure
379 mmake
380 }
381
382 multilib_src_install()
383 {
384 minstall_destdir
385
386 local i
387 for abi in ${MULTILIB_ABIS}
388 do
389 cd ${SRCDIR}-${abi}
390 for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \
391 FAQ LICENSE NEWS README TODO
392 do
393 if [ -f ${SRCDIR}-${abi}/${i} ]
394 then
395 minstalldocs ${i} || die
396 fi
397 done
398 done
399 }
400
401 export_inherits multilib src_prepare src_compile src_install